{"version":3,"sources":["/node_modules/expo/node_modules/@expo/cli/build/metro-require/require.js","/node_modules/@react-native/js-polyfills/console.js","/node_modules/@react-native/js-polyfills/error-guard.js","\u0000polyfill:external-require","/node_modules/expo/virtual/streams.js","/node_modules/expo/AppEntry.js","/node_modules/expo/src/launch/registerRootComponent.tsx","/node_modules/expo/src/Expo.fx.tsx","/node_modules/expo/src/winter/index.ts","/node_modules/expo/src/winter/runtime.native.ts","/node_modules/expo/src/winter/FormData.ts","/node_modules/expo/src/winter/installGlobal.ts","/node_modules/expo/src/winter/TextDecoder.ts","/node_modules/@babel/runtime/helpers/classCallCheck.js","/node_modules/@babel/runtime/helpers/createClass.js","/node_modules/@babel/runtime/helpers/toPropertyKey.js","/node_modules/@babel/runtime/helpers/typeof.js","/node_modules/@babel/runtime/helpers/toPrimitive.js","/node_modules/expo/src/winter/TextDecoderStream.ts","/node_modules/@babel/runtime/helpers/callSuper.js","/node_modules/@babel/runtime/helpers/getPrototypeOf.js","/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","/node_modules/@babel/runtime/helpers/assertThisInitialized.js","/node_modules/@babel/runtime/helpers/inherits.js","/node_modules/@babel/runtime/helpers/setPrototypeOf.js","/node_modules/@babel/runtime/helpers/wrapNativeSuper.js","/node_modules/@babel/runtime/helpers/isNativeFunction.js","/node_modules/@babel/runtime/helpers/construct.js","/node_modules/expo/src/winter/url.ts","/node_modules/whatwg-url-without-unicode/index.js","/node_modules/whatwg-url-without-unicode/webidl2js-wrapper.js","/node_modules/whatwg-url-without-unicode/lib/URL.js","/node_modules/webidl-conversions/lib/index.js","/node_modules/whatwg-url-without-unicode/lib/utils.js","/node_modules/whatwg-url-without-unicode/lib/URL-impl.js","/node_modules/whatwg-url-without-unicode/lib/url-state-machine.js","/node_modules/buffer/index.js","/node_modules/base64-js/index.js","/node_modules/ieee754/index.js","/node_modules/punycode/punycode.js","/node_modules/whatwg-url-without-unicode/lib/infra.js","/node_modules/whatwg-url-without-unicode/lib/urlencoded.js","/node_modules/@babel/runtime/helpers/slicedToArray.js","/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","/node_modules/@babel/runtime/helpers/nonIterableRest.js","/node_modules/whatwg-url-without-unicode/lib/URLSearchParams.js","/node_modules/whatwg-url-without-unicode/lib/URLSearchParams-impl.js","/node_modules/expo/src/winter/ImportMetaRegistry.ts","/node_modules/expo/src/utils/getBundleUrl.native.ts","/node_modules/react-native/Libraries/NativeModules/specs/NativeSourceCode.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeSourceCode.js","/node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.js","/node_modules/invariant/browser.js","/node_modules/react-native/Libraries/BatchedBridge/NativeModules.js","/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js","/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js","/node_modules/react-native/Libraries/Performance/Systrace.js","/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js","/node_modules/react-native/Libraries/Utilities/stringifySafe.js","/node_modules/react-native/Libraries/Utilities/warnOnce.js","/node_modules/react-native/Libraries/vendor/core/ErrorUtils.js","/node_modules/react-native/Libraries/Utilities/defineLazyObjectProperty.js","/node_modules/@ungap/structured-clone/cjs/index.js","/node_modules/@ungap/structured-clone/cjs/deserialize.js","/node_modules/@ungap/structured-clone/cjs/types.js","/node_modules/@ungap/structured-clone/cjs/serialize.js","/node_modules/expo/src/async-require/index.ts","/node_modules/expo/src/async-require/buildAsyncRequire.ts","/node_modules/@babel/runtime/helpers/asyncToGenerator.js","/node_modules/expo/src/async-require/loadBundle.ts","/node_modules/expo/src/async-require/buildUrlForBundle.native.ts","/node_modules/expo/src/async-require/fetchThenEval.ts","/node_modules/expo/src/async-require/fetchThenEvalJs.ts","/node_modules/expo/src/async-require/errors.ts","/node_modules/expo/src/async-require/fetchAsync.native.ts","/node_modules/react-native/index.js","/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js","/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js","/node_modules/react-native/Libraries/StyleSheet/StyleSheetExports.js","/node_modules/react-native/src/private/styles/composeStyles.js","/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js","/node_modules/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js","/node_modules/react-native/src/private/featureflags/ReactNativeFeatureFlags.js","/node_modules/react-native/src/private/featureflags/ReactNativeFeatureFlagsBase.js","/node_modules/react-native/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js","/node_modules/react-native/Libraries/StyleSheet/processAspectRatio.js","/node_modules/react-native/Libraries/StyleSheet/processBackgroundImage.js","/node_modules/react-native/Libraries/StyleSheet/processColor.js","/node_modules/react-native/Libraries/StyleSheet/normalizeColor.js","/node_modules/@react-native/normalize-colors/index.js","/node_modules/react-native/Libraries/StyleSheet/processBoxShadow.js","/node_modules/react-native/Libraries/StyleSheet/processFilter.js","/node_modules/react-native/Libraries/StyleSheet/processFontVariant.js","/node_modules/react-native/Libraries/StyleSheet/processTransform.js","/node_modules/react-native/Libraries/StyleSheet/processTransformOrigin.js","/node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js","/node_modules/react-native/Libraries/Utilities/PixelRatio.js","/node_modules/react-native/Libraries/Utilities/Dimensions.js","/node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.js","/node_modules/@babel/runtime/helpers/superPropGet.js","/node_modules/@babel/runtime/helpers/get.js","/node_modules/@babel/runtime/helpers/superPropBase.js","/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js","/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js","/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js","/node_modules/react-native/Libraries/Utilities/NativeDeviceInfo.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js","/node_modules/react-native/Libraries/Components/View/View.js","/node_modules/react-native/Libraries/Text/TextAncestorContext.js","/node_modules/react/index.js","/node_modules/react/cjs/react.production.js","/node_modules/react-native/Libraries/Components/View/ViewNativeComponent.js","/node_modules/react-native/Libraries/NativeComponent/NativeComponentRegistry.js","/node_modules/react-native/Libraries/ReactNative/getNativeComponentAttributes.js","/node_modules/react-native/Libraries/Image/resolveAssetSource.js","/node_modules/react-native/Libraries/Image/AssetSourceResolver.js","/node_modules/react-native/Libraries/Image/AssetUtils.js","/node_modules/@react-native/assets-registry/path-support.js","\u0000polyfill:assets-registry","/node_modules/react-native/Libraries/StyleSheet/processColorArray.js","/node_modules/react-native/Libraries/Utilities/differ/insetsDiffer.js","/node_modules/react-native/Libraries/Utilities/differ/matricesDiffer.js","/node_modules/react-native/Libraries/Utilities/differ/pointsDiffer.js","/node_modules/react-native/Libraries/ReactNative/UIManager.js","/node_modules/react-native/Libraries/ReactNative/FabricUIManager.js","/node_modules/nullthrows/nullthrows.js","/node_modules/react-native/Libraries/ReactNative/BridgelessUIManager.js","/node_modules/react-native/Libraries/NativeComponent/NativeComponentRegistryUnstable.js","/node_modules/react-native/Libraries/ReactNative/PaperUIManager.js","/node_modules/react-native/Libraries/ReactNative/NativeUIManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeUIManager.js","/node_modules/react-native/Libraries/ReactNative/UIManagerProperties.js","/node_modules/react-native/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js","/node_modules/react-native/Libraries/NativeComponent/StaticViewConfigValidator.js","/node_modules/react-native/Libraries/NativeComponent/ViewConfig.js","/node_modules/react-native/Libraries/NativeComponent/PlatformBaseViewConfig.js","/node_modules/react-native/Libraries/NativeComponent/ViewConfigIgnore.js","/node_modules/react-native/Libraries/Utilities/codegenNativeCommands.js","/node_modules/react-native/Libraries/ReactNative/RendererProxy.js","/node_modules/react-native/Libraries/ReactNative/RendererImplementation.js","/node_modules/react-native/src/private/renderer/errorhandling/ErrorHandlers.js","/node_modules/react-native/Libraries/Core/ExceptionsManager.js","/node_modules/react-native/Libraries/Core/Devtools/parseErrorStack.js","/node_modules/react-native/Libraries/Core/Devtools/parseHermesStack.js","/node_modules/stacktrace-parser/dist/stack-trace-parser.cjs.js","/node_modules/react-native/Libraries/Core/NativeExceptionsManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.js","/node_modules/react-native/Libraries/Renderer/shims/ReactFabric.js","/node_modules/react-native/Libraries/ReactPrivate/ReactNativePrivateInterface.js","/node_modules/react-native/Libraries/EventEmitter/RCTEventEmitter.js","/node_modules/react-native/Libraries/Core/registerCallableModule.js","/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js","/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js","/node_modules/react-native/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js","/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js","/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js","/node_modules/react-native/Libraries/Core/ReactFiberErrorDialog.js","/node_modules/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js","/node_modules/react-native/Libraries/Core/RawEventEmitter.js","/node_modules/react-native/src/private/webapis/dom/events/CustomEvent.js","/node_modules/react-native/src/private/webapis/dom/events/Event.js","/node_modules/react-native/src/private/webapis/webidl/PlatformObjects.js","/node_modules/react-native/src/private/webapis/dom/events/internals/EventInternals.js","/node_modules/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js","/node_modules/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js","/node_modules/react-native/src/private/webapis/dom/nodes/ReactNativeDocument.js","/node_modules/react-native/src/private/webapis/dom/oldstylecollections/HTMLCollection.js","/node_modules/react-native/src/private/webapis/utils/ArrayLikeUtils.js","/node_modules/react-native/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js","/node_modules/react-native/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js","/node_modules/react-native/src/private/webapis/dom/nodes/ReactNativeElement.js","/node_modules/react-native/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js","/node_modules/react-native/src/private/webapis/dom/nodes/internals/NodeInternals.js","/node_modules/react-native/src/private/webapis/dom/nodes/ReadOnlyElement.js","/node_modules/react-native/src/private/webapis/geometry/DOMRect.js","/node_modules/react-native/src/private/webapis/geometry/DOMRectReadOnly.js","/node_modules/react-native/src/private/webapis/dom/nodes/internals/Traversal.js","/node_modules/react-native/src/private/webapis/dom/nodes/ReadOnlyNode.js","/node_modules/react-native/src/private/webapis/dom/oldstylecollections/NodeList.js","/node_modules/react-native/src/private/webapis/dom/nodes/specs/NativeDOM.js","/node_modules/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js","/node_modules/react-native/src/private/webapis/dom/nodes/ReadOnlyText.js","/node_modules/react-native/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js","/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js","/node_modules/react-native/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js","/node_modules/react-native/Libraries/Core/InitializeCore.js","/node_modules/react-native/src/private/setup/setUpDefaultReactNativeEnvironment.js","/node_modules/react-native/Libraries/Core/setUpGlobals.js","/node_modules/react-native/src/private/setup/setUpDOM.js","/node_modules/react-native/Libraries/Utilities/PolyfillFunctions.js","/node_modules/react-native/src/private/webapis/geometry/DOMRectList.js","/node_modules/react-native/Libraries/Core/setUpPerformance.js","/node_modules/react-native/src/private/webapis/performance/Performance.js","/node_modules/@babel/runtime/helpers/readOnlyError.js","/node_modules/react-native/src/private/webapis/errors/DOMException.js","/node_modules/react-native/src/private/webapis/performance/EventTiming.js","/node_modules/react-native/src/private/webapis/performance/internals/Utilities.js","/node_modules/react-native/src/private/webapis/performance/PerformanceEntry.js","/node_modules/react-native/src/private/webapis/performance/specs/NativePerformance.js","/node_modules/react-native/src/private/webapis/performance/internals/RawPerformanceEntry.js","/node_modules/react-native/src/private/webapis/performance/LongTasks.js","/node_modules/react-native/src/private/webapis/performance/ResourceTiming.js","/node_modules/react-native/src/private/webapis/performance/UserTiming.js","/node_modules/react-native/src/private/webapis/performance/MemoryInfo.js","/node_modules/react-native/src/private/webapis/performance/ReactNativeStartupTiming.js","/node_modules/react-native/Libraries/Core/polyfillPromise.js","/node_modules/react-native/Libraries/Promise.js","/node_modules/promise/setimmediate/es6-extensions.js","/node_modules/promise/setimmediate/core.js","/node_modules/promise/setimmediate/finally.js","/node_modules/react-native/Libraries/Core/setUpTimers.js","/node_modules/react-native/src/private/webapis/microtasks/specs/NativeMicrotasks.js","/node_modules/react-native/Libraries/Core/Timers/immediateShim.js","/node_modules/react-native/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js","/node_modules/react-native/Libraries/Core/Timers/JSTimers.js","/node_modules/react-native/Libraries/Core/Timers/NativeTiming.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeTiming.js","/node_modules/react-native/Libraries/Core/Timers/queueMicrotask.js","/node_modules/react-native/Libraries/Core/setUpErrorHandling.js","/node_modules/react-native/Libraries/Core/setUpRegeneratorRuntime.js","/node_modules/react-native/Libraries/Utilities/FeatureDetection.js","/node_modules/regenerator-runtime/runtime.js","/node_modules/react-native/Libraries/Core/setUpXHR.js","/node_modules/react-native/Libraries/Network/XMLHttpRequest.js","/node_modules/react-native/src/private/webapis/dom/events/EventHandlerAttributes.js","/node_modules/react-native/src/private/webapis/dom/events/EventTarget.js","/node_modules/react-native/src/private/webapis/dom/events/internals/EventTargetInternals.js","/node_modules/react-native/src/private/webapis/xhr/events/ProgressEvent.js","/node_modules/react-native/Libraries/Blob/BlobManager.js","/node_modules/react-native/Libraries/Blob/NativeBlobModule.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeBlobModule.js","/node_modules/react-native/Libraries/Blob/Blob.js","/node_modules/react-native/Libraries/Blob/BlobRegistry.js","/node_modules/react-native/Libraries/Utilities/GlobalPerformanceLogger.js","/node_modules/react-native/Libraries/Utilities/createPerformanceLogger.js","/node_modules/react-native/Libraries/Network/convertRequestBody.js","/node_modules/react-native/Libraries/Utilities/binaryToBase64.js","/node_modules/react-native/Libraries/Network/FormData.js","/node_modules/react-native/Libraries/Network/fetch.js","/node_modules/whatwg-fetch/dist/fetch.umd.js","/node_modules/react-native/Libraries/WebSocket/WebSocket.js","/node_modules/react-native/src/private/webapis/html/events/MessageEvent.js","/node_modules/react-native/src/private/webapis/websockets/events/CloseEvent.js","/node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js","/node_modules/react-native/Libraries/WebSocket/NativeWebSocketModule.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js","/node_modules/react-native/Libraries/Blob/File.js","/node_modules/react-native/Libraries/Blob/FileReader.js","/node_modules/react-native/Libraries/Blob/NativeFileReaderModule.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js","/node_modules/react-native/Libraries/Blob/URL.js","/node_modules/react-native/Libraries/Blob/URLSearchParams.js","/node_modules/abort-controller/dist/abort-controller.mjs","/node_modules/event-target-shim/dist/event-target-shim.mjs","/node_modules/react-native/Libraries/Core/setUpAlert.js","/node_modules/react-native/Libraries/Alert/Alert.js","/node_modules/react-native/Libraries/Core/setUpNavigator.js","/node_modules/react-native/Libraries/Core/setUpBatchedBridge.js","/node_modules/react-native/Libraries/Utilities/RCTLog.js","/node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.js","/node_modules/react-native/Libraries/Utilities/HMRClientProdShim.js","/node_modules/react-native/Libraries/Core/setUpSegmentFetcher.js","/node_modules/react-native/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js","/node_modules/react-native/Libraries/ReactNative/AppRegistry.js","/node_modules/react-native/Libraries/ReactNative/AppRegistryImpl.js","/node_modules/react-native/Libraries/Utilities/SceneTracker.js","/node_modules/react-native/Libraries/ReactNative/DisplayMode.js","/node_modules/react-native/Libraries/ReactNative/HeadlessJsTaskError.js","/node_modules/react-native/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js","/node_modules/react-native/Libraries/ReactNative/renderApplication.js","/node_modules/react-native/Libraries/Utilities/PerformanceLoggerContext.js","/node_modules/react-native/Libraries/ReactNative/AppContainer.js","/node_modules/react-native/Libraries/ReactNative/AppContainer-prod.js","/node_modules/react-native/Libraries/ReactNative/RootTag.js","/node_modules/react/jsx-runtime.js","/node_modules/react/cjs/react-jsx-runtime.production.js","/node_modules/react-native/Libraries/ReactNative/getCachedComponentWithDebugName.js","/node_modules/scheduler/index.native.js","/node_modules/scheduler/cjs/scheduler.native.production.js","/node_modules/react-native/Libraries/Renderer/shims/ReactNative.js","/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js","/node_modules/react-native/Libraries/Utilities/codegenNativeComponent.js","/node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js","/node_modules/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js","/node_modules/react-native/Libraries/Components/Button.js","/node_modules/react-native/Libraries/Text/Text.js","/node_modules/react-native/Libraries/Pressability/PressabilityDebug.js","/node_modules/react-native/Libraries/StyleSheet/Rect.js","/node_modules/react-native/Libraries/Pressability/usePressability.js","/node_modules/react-native/Libraries/Pressability/Pressability.js","/node_modules/react-native/Libraries/Components/Sound/SoundManager.js","/node_modules/react-native/Libraries/Components/Sound/NativeSoundManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeSoundManager.js","/node_modules/react-native/Libraries/ReactNative/ReactNativeFeatureFlags.js","/node_modules/react-native/Libraries/Pressability/HoverState.js","/node_modules/react-native/Libraries/Pressability/PressabilityPerformanceEventEmitter.js","/node_modules/react-native/Libraries/Text/TextNativeComponent.js","/node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js","/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js","/node_modules/react-native/Libraries/Animated/Animated.js","/node_modules/react-native/Libraries/Animated/AnimatedExports.js","/node_modules/react-native/Libraries/Animated/AnimatedImplementation.js","/node_modules/react-native/Libraries/Animated/AnimatedEvent.js","/node_modules/react-native/src/private/animated/NativeAnimatedHelper.js","/node_modules/react-native/Libraries/Animated/NativeAnimatedModule.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js","/node_modules/react-native/Libraries/Animated/shouldUseTurboAnimatedModule.js","/node_modules/react-native/Libraries/Animated/NativeAnimatedTurboModule.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedValue.js","/node_modules/react-native/Libraries/Interaction/InteractionManager.js","/node_modules/react-native/Libraries/Interaction/TaskQueue.js","/node_modules/react-native/Libraries/Interaction/InteractionManagerStub.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js","/node_modules/react-native/src/private/animated/NativeAnimatedValidation.js","/node_modules/react-native/Libraries/Animated/NativeAnimatedAllowlist.js","/node_modules/react-native/Libraries/Animated/Easing.js","/node_modules/react-native/Libraries/Animated/bezier.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedWithChildren.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedNode.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedValueXY.js","/node_modules/react-native/Libraries/Animated/animations/DecayAnimation.js","/node_modules/react-native/Libraries/Animated/animations/Animation.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedObject.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedStyle.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedTransform.js","/node_modules/react-native/Libraries/Animated/animations/SpringAnimation.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedColor.js","/node_modules/react-native/Libraries/Animated/SpringConfig.js","/node_modules/react-native/Libraries/Animated/animations/TimingAnimation.js","/node_modules/react-native/Libraries/Animated/createAnimatedComponent.js","/node_modules/react-native/src/private/animated/createAnimatedPropsHook.js","/node_modules/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js","/node_modules/react-native/Libraries/Utilities/useRefEffect.js","/node_modules/react-native/src/private/animated/createAnimatedPropsMemoHook.js","/node_modules/react-native/Libraries/Utilities/useMergeRefs.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedAddition.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedDiffClamp.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedDivision.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedModulo.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedMultiplication.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedSubtraction.js","/node_modules/react-native/Libraries/Animated/nodes/AnimatedTracking.js","/node_modules/react-native/Libraries/Animated/AnimatedMock.js","/node_modules/react-native/Libraries/Animated/components/AnimatedFlatList.js","/node_modules/react-native/Libraries/Lists/FlatList.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/index.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/VirtualizeUtils.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Utilities/clamp.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Utilities/infoLog.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/CellRenderMask.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/ChildListCollection.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/FillRateHelper.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/ListMetricsAggregator.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/StateSafePureComponent.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/ViewabilityHelper.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/VirtualizedListCellRenderer.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/VirtualizedListContext.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/VirtualizedListProps.js","/node_modules/react-native/node_modules/@react-native/virtualized-lists/Lists/VirtualizedSectionList.js","/node_modules/memoize-one/dist/memoize-one.cjs.js","/node_modules/react-native/Libraries/Animated/components/AnimatedImage.js","/node_modules/react-native/Libraries/Image/ImageAnalyticsTagContext.js","/node_modules/react-native/Libraries/Image/ImageInjection.js","/node_modules/react-native/Libraries/Image/ImageSourceUtils.js","/node_modules/react-native/Libraries/Image/ImageUtils.js","/node_modules/react-native/Libraries/Image/ImageViewNativeComponent.js","/node_modules/react-native/Libraries/Animated/components/AnimatedScrollView.js","/node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.js","/node_modules/react-native/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js","/node_modules/react-native/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js","/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js","/node_modules/react-native/src/private/components/scrollview/HScrollViewNativeComponents.js","/node_modules/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js","/node_modules/react-native/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js","/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js","/node_modules/react-native/src/private/components/scrollview/VScrollViewNativeComponents.js","/node_modules/react-native/Libraries/Interaction/FrameRateLogger.js","/node_modules/react-native/Libraries/Interaction/NativeFrameRateLogger.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js","/node_modules/react-native/Libraries/StyleSheet/splitLayoutProps.js","/node_modules/react-native/Libraries/Utilities/dismissKeyboard.js","/node_modules/react-native/Libraries/Components/Keyboard/Keyboard.js","/node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.js","/node_modules/react-native/Libraries/Components/Keyboard/NativeKeyboardObserver.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js","/node_modules/react-native/Libraries/Components/ScrollView/processDecelerationRate.js","/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewCommands.js","/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewContext.js","/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js","/node_modules/react-native/Libraries/Animated/useAnimatedProps.js","/node_modules/react-native/Libraries/Animated/components/AnimatedSectionList.js","/node_modules/react-native/Libraries/Lists/SectionList.js","/node_modules/react-native/Libraries/Animated/components/AnimatedText.js","/node_modules/react-native/Libraries/Animated/components/AnimatedView.js","/node_modules/react-native/Libraries/Image/ImageBackground.js","/node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.js","/node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.js","/node_modules/react-native/Libraries/Utilities/useWindowDimensions.js","/node_modules/react-native/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js","/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js","/node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js","/node_modules/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js","/node_modules/react-native/Libraries/Components/LayoutConformance/LayoutConformance.js","/node_modules/react-native/Libraries/Components/LayoutConformance/LayoutConformanceNativeComponent.js","/node_modules/react-native/Libraries/Modal/Modal.js","/node_modules/react-native/Libraries/Modal/NativeModalManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeModalManager.js","/node_modules/react-native/Libraries/Modal/RCTModalHostViewNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js","/node_modules/react-native/Libraries/ReactNative/I18nManager.js","/node_modules/react-native/Libraries/ReactNative/NativeI18nManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeI18nManager.js","/node_modules/react-native/Libraries/Components/Pressable/Pressable.js","/node_modules/react-native/Libraries/Components/Pressable/useAndroidRippleForView.js","/node_modules/react-native/Libraries/Components/StatusBar/StatusBar.js","/node_modules/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerAndroid.js","/node_modules/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeStatusBarManagerIOS.js","/node_modules/react-native/Libraries/Components/Switch/Switch.js","/node_modules/react-native/Libraries/Components/Switch/AndroidSwitchNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js","/node_modules/react-native/Libraries/Components/Switch/SwitchNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js","/node_modules/react-native/Libraries/Components/TextInput/TextInput.js","/node_modules/react-native/Libraries/Components/Touchable/Touchable.js","/node_modules/react-native/Libraries/Components/Touchable/BoundingDimensions.js","/node_modules/react-native/Libraries/Components/Touchable/PooledClass.js","/node_modules/react-native/Libraries/Components/Touchable/Position.js","/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js","/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js","/node_modules/react-native/Libraries/Lists/VirtualizedList.js","/node_modules/react-native/Libraries/Lists/VirtualizedSectionList.js","/node_modules/react-native/src/private/components/virtualview/VirtualView.js","/node_modules/react-native/src/private/components/virtualview/VirtualViewNativeComponent.js","/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js","/node_modules/react-native/Libraries/ActionSheetIOS/NativeActionSheetManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js","/node_modules/react-native/Libraries/Utilities/Appearance.js","/node_modules/react-native/Libraries/Utilities/NativeAppearance.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeAppearance.js","/node_modules/react-native/Libraries/AppState/AppState.js","/node_modules/react-native/Libraries/Utilities/logError.js","/node_modules/react-native/Libraries/AppState/NativeAppState.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeAppState.js","/node_modules/react-native/Libraries/Components/Clipboard/Clipboard.js","/node_modules/react-native/Libraries/Components/Clipboard/NativeClipboard.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeClipboard.js","/node_modules/react-native/Libraries/Utilities/DeviceInfo.js","/node_modules/react-native/src/private/devsupport/devmenu/DevMenu.js","/node_modules/react-native/src/private/devsupport/devmenu/specs/NativeDevMenu.js","/node_modules/react-native/Libraries/Utilities/DevSettings.js","/node_modules/react-native/Libraries/NativeModules/specs/NativeDevSettings.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeDevSettings.js","/node_modules/react-native/Libraries/Linking/Linking.js","/node_modules/react-native/Libraries/Linking/NativeIntentAndroid.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js","/node_modules/react-native/Libraries/Linking/NativeLinkingManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js","/node_modules/react-native/Libraries/LogBox/LogBox.js","/node_modules/react-native/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js","/node_modules/react-native/Libraries/Interaction/PanResponder.js","/node_modules/react-native/Libraries/Interaction/TouchHistoryMath.js","/node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js","/node_modules/react-native/Libraries/PermissionsAndroid/NativePermissionsAndroid.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js","/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js","/node_modules/react-native/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js","/node_modules/react-native/Libraries/Share/Share.js","/node_modules/react-native/Libraries/Share/NativeShareModule.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeShareModule.js","/node_modules/react-native/Libraries/Animated/useAnimatedValue.js","/node_modules/react-native/Libraries/Utilities/useColorScheme.js","/node_modules/react-native/Libraries/UTFSequence.js","/node_modules/react-native/Libraries/Vibration/Vibration.js","/node_modules/react-native/Libraries/Vibration/NativeVibration.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeVibration.js","/node_modules/expo-asset/build/index.js","/node_modules/expo-asset/build/Asset.fx.js","/node_modules/expo-asset/build/Asset.js","/node_modules/expo-modules-core/src/index.ts","/node_modules/expo-modules-core/src/sweet/setUpJsLogger.fx.ts","/node_modules/expo-modules-core/src/sweet/NativeJSLogger.ts","/node_modules/expo-modules-core/src/requireNativeModule.ts","/node_modules/expo-modules-core/src/NativeModulesProxy.native.ts","/node_modules/expo-modules-core/src/TurboModuleToExpoModuleProxy.native.ts","/node_modules/expo-modules-core/src/ensureNativeModulesAreInstalled.native.ts","/node_modules/expo-modules-core/src/Platform.ts","/node_modules/expo-modules-core/src/environment/browser.ts","/node_modules/expo-modules-core/src/errors/CodedError.ts","/node_modules/expo-modules-core/src/EventEmitter.ts","/node_modules/expo-modules-core/src/NativeModule.ts","/node_modules/expo-modules-core/src/SharedObject.ts","/node_modules/expo-modules-core/src/SharedRef.ts","/node_modules/expo-modules-core/src/uuid/index.ts","/node_modules/expo-modules-core/src/uuid/lib/bytesToUuid.ts","/node_modules/expo-modules-core/src/uuid/uuid.types.ts","/node_modules/expo-modules-core/src/NativeViewManagerAdapter.native.tsx","/node_modules/expo-modules-core/src/registerWebModule.ts","/node_modules/expo-modules-core/src/PermissionsInterface.ts","/node_modules/expo-modules-core/src/PermissionsHook.ts","/node_modules/expo-modules-core/src/Refs.ts","/node_modules/expo-modules-core/src/hooks/useReleasingSharedObject.ts","/node_modules/expo-modules-core/src/reload.ts","/node_modules/expo-modules-core/src/errors/UnavailabilityError.ts","/node_modules/expo-modules-core/src/LegacyEventEmitter.ts","/node_modules/expo-asset/build/AssetSources.js","/node_modules/expo-asset/build/AssetSourceResolver.native.js","/node_modules/expo-asset/build/PlatformUtils.js","/node_modules/expo-constants/build/Constants.js","/node_modules/expo-constants/build/Constants.types.js","/node_modules/expo-constants/build/ExponentConstants.js","/node_modules/expo-asset/build/AssetUris.js","/node_modules/expo-asset/build/ExpoAsset.js","/node_modules/expo-asset/build/ImageAssets.js","/node_modules/expo-asset/build/LocalAssets.js","/node_modules/expo-asset/build/resolveAssetSource.native.js","/node_modules/expo-asset/build/AssetHooks.js","/node_modules/expo/src/environment/ExpoGo.ts","/node_modules/expo/src/errors/AppEntryNotFound.tsx","/node_modules/expo/src/errors/ExpoErrorManager.native.ts","/App.tsx","/node_modules/expo-status-bar/src/StatusBar.ts","/node_modules/expo-status-bar/src/NativeStatusBarWrapper.tsx","/node_modules/expo-notifications/build/index.js","/node_modules/expo/src/Expo.ts","/node_modules/expo/src/hooks/useEvent.ts","/node_modules/expo-notifications/build/getDevicePushTokenAsync.js","/node_modules/expo-notifications/build/PushTokenManager.native.js","/node_modules/expo-notifications/build/warnOfExpoGoPushUsage.js","/node_modules/expo-notifications/build/unregisterForNotificationsAsync.js","/node_modules/expo-notifications/build/getExpoPushTokenAsync.js","/node_modules/expo-application/build/Application.js","/node_modules/expo-application/build/Application.types.js","/node_modules/expo-application/build/ExpoApplication.js","/node_modules/expo-notifications/build/DevicePushTokenAutoRegistration.fx.js","/node_modules/abort-controller/polyfill.mjs","/node_modules/expo-notifications/build/ServerRegistrationModule.native.js","/node_modules/expo-notifications/build/TokenEmitter.js","/node_modules/expo-notifications/build/utils/updateDevicePushTokenAsync.js","/node_modules/@ide/backoff/build/backoff.js","/node_modules/assert/build/assert.js","/node_modules/assert/build/internal/errors.js","/node_modules/util/util.js","/node_modules/util/support/types.js","/node_modules/is-arguments/index.js","/node_modules/has-tostringtag/shams.js","/node_modules/has-symbols/shams.js","/node_modules/call-bound/index.js","/node_modules/get-intrinsic/index.js","/node_modules/es-object-atoms/index.js","/node_modules/es-errors/index.js","/node_modules/es-errors/eval.js","/node_modules/es-errors/range.js","/node_modules/es-errors/ref.js","/node_modules/es-errors/syntax.js","/node_modules/es-errors/type.js","/node_modules/es-errors/uri.js","/node_modules/math-intrinsics/abs.js","/node_modules/math-intrinsics/floor.js","/node_modules/math-intrinsics/max.js","/node_modules/math-intrinsics/min.js","/node_modules/math-intrinsics/pow.js","/node_modules/math-intrinsics/round.js","/node_modules/math-intrinsics/sign.js","/node_modules/math-intrinsics/isNaN.js","/node_modules/gopd/index.js","/node_modules/gopd/gOPD.js","/node_modules/es-define-property/index.js","/node_modules/has-symbols/index.js","/node_modules/get-proto/index.js","/node_modules/get-proto/Reflect.getPrototypeOf.js","/node_modules/get-proto/Object.getPrototypeOf.js","/node_modules/dunder-proto/get.js","/node_modules/call-bind-apply-helpers/index.js","/node_modules/function-bind/index.js","/node_modules/function-bind/implementation.js","/node_modules/call-bind-apply-helpers/functionCall.js","/node_modules/call-bind-apply-helpers/actualApply.js","/node_modules/call-bind-apply-helpers/functionApply.js","/node_modules/call-bind-apply-helpers/reflectApply.js","/node_modules/hasown/index.js","/node_modules/is-generator-function/index.js","/node_modules/safe-regex-test/index.js","/node_modules/is-regex/index.js","/node_modules/generator-function/index.js","/node_modules/which-typed-array/index.js","/node_modules/for-each/index.js","/node_modules/is-callable/index.js","/node_modules/available-typed-arrays/index.js","/node_modules/possible-typed-array-names/index.js","/node_modules/call-bind/index.js","/node_modules/set-function-length/index.js","/node_modules/define-data-property/index.js","/node_modules/has-property-descriptors/index.js","/node_modules/call-bind-apply-helpers/applyBind.js","/node_modules/is-typed-array/index.js","/node_modules/util/support/isBufferBrowser.js","/node_modules/inherits/inherits_browser.js","/node_modules/assert/build/internal/assert/assertion_error.js","/node_modules/object.assign/polyfill.js","/node_modules/object.assign/implementation.js","/node_modules/object-keys/index.js","/node_modules/object-keys/isArguments.js","/node_modules/object-keys/implementation.js","/node_modules/object-is/polyfill.js","/node_modules/object-is/implementation.js","/node_modules/call-bind/callBound.js","/node_modules/assert/build/internal/util/comparisons.js","/node_modules/object-is/index.js","/node_modules/define-properties/index.js","/node_modules/object-is/shim.js","/node_modules/is-nan/index.js","/node_modules/is-nan/implementation.js","/node_modules/is-nan/polyfill.js","/node_modules/is-nan/shim.js","/node_modules/expo-notifications/build/getPresentedNotificationsAsync.js","/node_modules/expo-notifications/build/NotificationPresenterModule.native.js","/node_modules/expo-notifications/build/utils/mapNotificationResponse.js","/node_modules/expo-notifications/build/dismissNotificationAsync.js","/node_modules/expo-notifications/build/dismissAllNotificationsAsync.js","/node_modules/expo-notifications/build/getBadgeCountAsync.js","/node_modules/expo-notifications/build/BadgeModule.native.js","/node_modules/expo-notifications/build/setBadgeCountAsync.js","/node_modules/expo-notifications/build/getAllScheduledNotificationsAsync.js","/node_modules/expo-notifications/build/NotificationScheduler.native.js","/node_modules/expo-notifications/build/scheduleNotificationAsync.js","/node_modules/expo-notifications/build/Notifications.types.js","/node_modules/expo-notifications/build/hasValidTriggerObject.js","/node_modules/expo-notifications/build/cancelScheduledNotificationAsync.js","/node_modules/expo-notifications/build/cancelAllScheduledNotificationsAsync.js","/node_modules/expo-notifications/build/getNotificationCategoriesAsync.js","/node_modules/expo-notifications/build/NotificationCategoriesModule.native.js","/node_modules/expo-notifications/build/setNotificationCategoryAsync.js","/node_modules/expo-notifications/build/deleteNotificationCategoryAsync.js","/node_modules/expo-notifications/build/getNextTriggerDateAsync.js","/node_modules/expo-notifications/build/useLastNotificationResponse.js","/node_modules/expo-notifications/build/NotificationsEmitter.js","/node_modules/expo-notifications/build/NotificationsEmitterModule.native.js","/node_modules/expo-notifications/build/registerTaskAsync.js","/node_modules/expo-notifications/build/BackgroundNotificationTasksModule.native.js","/node_modules/expo-notifications/build/unregisterTaskAsync.js","/node_modules/expo-notifications/build/NotificationsHandler.js","/node_modules/expo-notifications/build/NotificationsHandlerModule.native.js","/node_modules/expo-notifications/build/NotificationPermissions.js","/node_modules/expo-notifications/build/NotificationPermissionsModule.native.js","/node_modules/expo-notifications/build/NotificationChannelManager.types.js","/node_modules/expo-notifications/build/NotificationPermissions.types.js","/node_modules/@react-navigation/native/lib/module/index.js","/node_modules/@react-navigation/native/lib/module/createStaticNavigation.js","/node_modules/@react-navigation/core/lib/module/index.js","/node_modules/@react-navigation/core/lib/module/BaseNavigationContainer.js","/node_modules/@react-navigation/routers/lib/module/index.js","/node_modules/@react-navigation/routers/lib/module/CommonActions.js","/node_modules/@react-navigation/routers/lib/module/BaseRouter.js","/node_modules/nanoid/non-secure/index.js","/node_modules/@react-navigation/routers/lib/module/DrawerRouter.js","/node_modules/@react-navigation/routers/lib/module/TabRouter.js","/node_modules/@react-navigation/routers/lib/module/createParamsFromAction.js","/node_modules/@react-navigation/routers/lib/module/StackRouter.js","/node_modules/@react-navigation/routers/lib/module/createRouteFromAction.js","/node_modules/@react-navigation/routers/lib/module/types.js","/node_modules/use-latest-callback/esm.mjs","/node_modules/use-latest-callback/lib/src/index.js","/node_modules/@react-navigation/core/lib/module/checkDuplicateRouteNames.js","/node_modules/@react-navigation/core/lib/module/checkSerializable.js","/node_modules/@react-navigation/core/lib/module/createNavigationContainerRef.js","/node_modules/@react-navigation/core/lib/module/DeprecatedNavigationInChildContext.js","/node_modules/@react-navigation/core/lib/module/EnsureSingleNavigator.js","/node_modules/@react-navigation/core/lib/module/findFocusedRoute.js","/node_modules/@react-navigation/core/lib/module/NavigationBuilderContext.js","/node_modules/@react-navigation/core/lib/module/NavigationContainerRefContext.js","/node_modules/@react-navigation/core/lib/module/NavigationIndependentTreeContext.js","/node_modules/@react-navigation/core/lib/module/NavigationStateContext.js","/node_modules/@react-navigation/core/lib/module/theming/ThemeProvider.js","/node_modules/@react-navigation/core/lib/module/theming/ThemeContext.js","/node_modules/@react-navigation/core/lib/module/UnhandledActionContext.js","/node_modules/@react-navigation/core/lib/module/useChildListeners.js","/node_modules/@react-navigation/core/lib/module/useEventEmitter.js","/node_modules/@react-navigation/core/lib/module/useKeyedChildListeners.js","/node_modules/@react-navigation/core/lib/module/useNavigationIndependentTree.js","/node_modules/@react-navigation/core/lib/module/useOptionsGetters.js","/node_modules/@react-navigation/core/lib/module/useSyncState.js","/node_modules/@react-navigation/core/lib/module/deepFreeze.js","/node_modules/@react-navigation/core/lib/module/createNavigatorFactory.js","/node_modules/@react-navigation/core/lib/module/Group.js","/node_modules/@react-navigation/core/lib/module/Screen.js","/node_modules/@react-navigation/core/lib/module/StaticNavigation.js","/node_modules/@react-navigation/core/node_modules/react-is/index.js","/node_modules/@react-navigation/core/node_modules/react-is/cjs/react-is.production.js","/node_modules/@react-navigation/core/lib/module/useRoute.js","/node_modules/@react-navigation/core/lib/module/NavigationProvider.js","/node_modules/@react-navigation/core/lib/module/NavigationContext.js","/node_modules/@react-navigation/core/lib/module/useIsFocused.js","/node_modules/@react-navigation/core/lib/module/useNavigation.js","/node_modules/@react-navigation/core/lib/module/CurrentRenderContext.js","/node_modules/@react-navigation/core/lib/module/getActionFromState.js","/node_modules/@react-navigation/core/lib/module/getFocusedRouteNameFromRoute.js","/node_modules/@react-navigation/core/lib/module/useRouteCache.js","/node_modules/@react-navigation/core/lib/module/isRecordEqual.js","/node_modules/@react-navigation/core/lib/module/getPathFromState.js","/node_modules/query-string/index.js","/node_modules/strict-uri-encode/index.js","/node_modules/decode-uri-component/index.js","/node_modules/split-on-first/index.js","/node_modules/filter-obj/index.js","/node_modules/@react-navigation/core/lib/module/getPatternParts.js","/node_modules/@react-navigation/core/lib/module/validatePathConfig.js","/node_modules/@react-navigation/core/lib/module/getStateFromPath.js","/node_modules/escape-string-regexp/index.js","/node_modules/@react-navigation/core/lib/module/arrayStartsWith.js","/node_modules/@react-navigation/core/lib/module/isArrayEqual.js","/node_modules/@react-navigation/core/lib/module/NavigationHelpersContext.js","/node_modules/@react-navigation/core/lib/module/NavigationIndependentTree.js","/node_modules/@react-navigation/core/lib/module/NavigationMetaContext.js","/node_modules/@react-navigation/core/lib/module/PreventRemoveContext.js","/node_modules/@react-navigation/core/lib/module/PreventRemoveProvider.js","/node_modules/@react-navigation/core/lib/module/theming/useTheme.js","/node_modules/@react-navigation/core/lib/module/types.js","/node_modules/@react-navigation/core/lib/module/useFocusEffect.js","/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js","/node_modules/fast-deep-equal/index.js","/node_modules/@react-navigation/core/lib/module/ConsumedParamsContext.js","/node_modules/@react-navigation/core/lib/module/useClientLayoutEffect.js","/node_modules/@react-navigation/core/lib/module/useComponent.js","/node_modules/@react-navigation/core/lib/module/useCurrentRender.js","/node_modules/@react-navigation/core/lib/module/useDescriptors.js","/node_modules/@react-navigation/core/lib/module/SceneView.js","/node_modules/@react-navigation/core/lib/module/NavigationFocusedRouteStateContext.js","/node_modules/@react-navigation/core/lib/module/StaticContainer.js","/node_modules/@react-navigation/core/lib/module/useNavigationCache.js","/node_modules/@react-navigation/core/lib/module/useFocusedListenersChildrenAdapter.js","/node_modules/@react-navigation/core/lib/module/useFocusEvents.js","/node_modules/@react-navigation/core/lib/module/useLazyValue.js","/node_modules/@react-navigation/core/lib/module/useNavigationHelpers.js","/node_modules/@react-navigation/core/lib/module/useNavigationState.js","/node_modules/use-sync-external-store/with-selector.js","/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js","/node_modules/@react-navigation/core/lib/module/useOnAction.js","/node_modules/@react-navigation/core/lib/module/useOnPreventRemove.js","/node_modules/@react-navigation/core/lib/module/useOnGetState.js","/node_modules/@react-navigation/core/lib/module/useOnRouteFocus.js","/node_modules/@react-navigation/core/lib/module/useRegisterNavigator.js","/node_modules/@react-navigation/core/lib/module/useScheduleUpdate.js","/node_modules/@react-navigation/core/lib/module/useNavigationContainerRef.js","/node_modules/@react-navigation/core/lib/module/usePreventRemove.js","/node_modules/@react-navigation/core/lib/module/usePreventRemoveContext.js","/node_modules/@react-navigation/core/lib/module/useStateForPath.js","/node_modules/@react-navigation/native/lib/module/NavigationContainer.js","/node_modules/@react-navigation/native/lib/module/LinkingContext.js","/node_modules/@react-navigation/native/lib/module/LocaleDirContext.js","/node_modules/@react-navigation/native/lib/module/theming/DefaultTheme.js","/node_modules/@react-navigation/native/lib/module/theming/fonts.js","/node_modules/@react-navigation/native/lib/module/UnhandledLinkingContext.js","/node_modules/@react-navigation/native/lib/module/useBackButton.native.js","/node_modules/@react-navigation/native/lib/module/useDocumentTitle.native.js","/node_modules/@react-navigation/native/lib/module/useLinking.native.js","/node_modules/@react-navigation/native/lib/module/extractPathFromURL.js","/node_modules/@babel/runtime/helpers/toArray.js","/node_modules/@babel/runtime/helpers/iterableToArray.js","/node_modules/@react-navigation/native/lib/module/useThenable.js","/node_modules/@react-navigation/native/lib/module/Link.js","/node_modules/@react-navigation/native/lib/module/useLinkProps.js","/node_modules/@react-navigation/native/lib/module/ServerContainer.js","/node_modules/@react-navigation/native/lib/module/ServerContext.js","/node_modules/@react-navigation/native/lib/module/theming/DarkTheme.js","/node_modules/@react-navigation/native/lib/module/types.js","/node_modules/@react-navigation/native/lib/module/useLinkBuilder.js","/node_modules/@react-navigation/native/lib/module/useLinkTo.js","/node_modules/@react-navigation/native/lib/module/useLocale.js","/node_modules/@react-navigation/native/lib/module/useRoutePath.js","/node_modules/@react-navigation/native/lib/module/useScrollToTop.js","/node_modules/@react-navigation/native-stack/lib/module/index.js","/node_modules/@react-navigation/native-stack/lib/module/navigators/createNativeStackNavigator.js","/node_modules/@react-navigation/native-stack/lib/module/views/NativeStackView.native.js","/node_modules/@react-navigation/elements/lib/module/index.js","/node_modules/@react-navigation/elements/lib/module/assets/back-icon.png","/node_modules/@react-navigation/elements/lib/module/assets/back-icon-mask.png","/node_modules/@react-navigation/elements/lib/module/assets/clear-icon.png","/node_modules/@react-navigation/elements/lib/module/assets/close-icon.png","/node_modules/@react-navigation/elements/lib/module/assets/search-icon.png","/node_modules/@react-navigation/elements/lib/module/Background.js","/node_modules/@react-navigation/elements/lib/module/Badge.js","/node_modules/color/index.js","/node_modules/color-string/index.js","/node_modules/color-name/index.js","/node_modules/simple-swizzle/index.js","/node_modules/is-arrayish/index.js","/node_modules/color-convert/index.js","/node_modules/color-convert/conversions.js","/node_modules/color-convert/route.js","/node_modules/@react-navigation/elements/lib/module/Button.js","/node_modules/@react-navigation/elements/lib/module/PlatformPressable.js","/node_modules/@react-navigation/elements/lib/module/Text.js","/node_modules/@react-navigation/elements/lib/module/getDefaultSidebarWidth.js","/node_modules/@react-navigation/elements/lib/module/Header/getDefaultHeaderHeight.js","/node_modules/@react-navigation/elements/lib/module/Header/getHeaderTitle.js","/node_modules/@react-navigation/elements/lib/module/Header/Header.js","/node_modules/react-native-safe-area-context/src/index.tsx","/node_modules/react-native-safe-area-context/src/SafeAreaContext.tsx","/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.tsx","/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaProvider.ts","/node_modules/react-native-safe-area-context/src/SafeAreaView.tsx","/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaView.ts","/node_modules/react-native-safe-area-context/src/InitialWindow.native.ts","/node_modules/react-native-safe-area-context/src/specs/NativeSafeAreaContext.ts","/node_modules/@react-navigation/elements/lib/module/useFrameSize.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderBackButton.js","/node_modules/@react-navigation/elements/lib/module/MaskedViewNative.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderButton.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderIcon.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderBackground.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderSearchBar.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderShownContext.js","/node_modules/@react-navigation/elements/lib/module/getNamedContext.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderTitle.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderBackContext.js","/node_modules/@react-navigation/elements/lib/module/Header/HeaderHeightContext.js","/node_modules/@react-navigation/elements/lib/module/Header/useHeaderHeight.js","/node_modules/@react-navigation/elements/lib/module/Label/getLabel.js","/node_modules/@react-navigation/elements/lib/module/Label/Label.js","/node_modules/@react-navigation/elements/lib/module/Lazy.js","/node_modules/@react-navigation/elements/lib/module/MissingIcon.js","/node_modules/@react-navigation/elements/lib/module/ResourceSavingView.js","/node_modules/@react-navigation/elements/lib/module/SafeAreaProviderCompat.js","/node_modules/@react-navigation/elements/lib/module/Screen.js","/node_modules/@react-navigation/elements/lib/module/types.js","/node_modules/react-native-screens/src/index.tsx","/node_modules/react-native-screens/src/fabric/NativeScreensModule.ts","/node_modules/react-native-screens/src/types.tsx","/node_modules/react-native-screens/src/core.ts","/node_modules/react-native-screens/src/components/Screen.tsx","/node_modules/react-native-screens/src/TransitionProgressContext.tsx","/node_modules/react-native-screens/src/components/helpers/DelayedFreeze.tsx","/node_modules/react-freeze/src/index.tsx","/node_modules/react-native-screens/src/fabric/ScreenNativeComponent.ts","/node_modules/react-native-screens/src/fabric/ModalScreenNativeComponent.ts","/node_modules/react-native-screens/src/components/helpers/usePrevious.tsx","/node_modules/react-native-screens/src/components/helpers/edge-to-edge.tsx","/node_modules/react-native-screens/src/components/helpers/sheet.tsx","/node_modules/react-native-screens/src/components/ScreenStackHeaderConfig.tsx","/node_modules/react-native-screens/src/fabric/ScreenStackHeaderConfigNativeComponent.ts","/node_modules/react-native-screens/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts","/node_modules/react-native-screens/src/components/SearchBar.tsx","/node_modules/react-native-screens/src/utils.ts","/node_modules/react-native-screens/src/fabric/SearchBarNativeComponent.ts","/node_modules/react-native-screens/src/components/ScreenContainer.tsx","/node_modules/react-native-screens/src/fabric/ScreenContainerNativeComponent.ts","/node_modules/react-native-screens/src/fabric/ScreenNavigationContainerNativeComponent.ts","/node_modules/react-native-screens/src/components/ScreenStack.tsx","/node_modules/react-native-screens/src/contexts.tsx","/node_modules/warn-once/index.js","/node_modules/react-native-screens/src/fabric/ScreenStackNativeComponent.ts","/node_modules/react-native-screens/src/components/ScreenStackItem.tsx","/node_modules/react-native-screens/src/components/DebugContainer.tsx","/node_modules/react-native-screens/src/components/ScreenContentWrapper.tsx","/node_modules/react-native-screens/src/fabric/ScreenContentWrapperNativeComponent.ts","/node_modules/react-native-screens/src/components/ScreenFooter.tsx","/node_modules/react-native-screens/src/fabric/ScreenFooterNativeComponent.ts","/node_modules/react-native-screens/src/components/FullWindowOverlay.tsx","/node_modules/react-native-screens/src/fabric/FullWindowOverlayNativeComponent.ts","/node_modules/react-native-screens/src/flags.ts","/node_modules/react-native-screens/src/useTransitionProgress.tsx","/node_modules/react-native-screens/src/components/bottom-tabs/BottomTabs.tsx","/node_modules/react-native-screens/src/fabric/bottom-tabs/BottomTabsNativeComponent.ts","/node_modules/react-native-screens/src/private/logging.ts","/node_modules/react-native-screens/src/components/bottom-tabs/BottomTabsScreen.tsx","/node_modules/react-native-screens/src/fabric/bottom-tabs/BottomTabsScreenNativeComponent.ts","/node_modules/react-native-screens/src/components/gamma/ScreenStackHost.tsx","/node_modules/react-native-screens/src/fabric/gamma/ScreenStackHostNativeComponent.ts","/node_modules/react-native-screens/src/components/gamma/StackScreen.tsx","/node_modules/react-native-screens/src/fabric/gamma/StackScreenNativeComponent.ts","/node_modules/react-native-screens/src/components/gamma/SplitViewHost.tsx","/node_modules/react-native-screens/src/fabric/gamma/SplitViewHostNativeComponent.ts","/node_modules/react-native-screens/src/components/gamma/SplitViewScreen.tsx","/node_modules/react-native-screens/src/fabric/gamma/SplitViewScreenNativeComponent.ts","/node_modules/@react-navigation/native-stack/lib/module/utils/debounce.js","/node_modules/@react-navigation/native-stack/lib/module/utils/getModalRoutesKeys.js","/node_modules/@react-navigation/native-stack/lib/module/utils/useAnimatedHeaderHeight.js","/node_modules/@react-navigation/native-stack/lib/module/utils/useDismissedRouteError.js","/node_modules/@react-navigation/native-stack/lib/module/utils/useInvalidPreventRemoveError.js","/node_modules/@react-navigation/native-stack/lib/module/views/useHeaderConfigProps.js","/node_modules/@react-navigation/native-stack/lib/module/views/FontProcessor.native.js","/src/services/tokenStorage.ts","/node_modules/expo-secure-store/build/SecureStore.js","/node_modules/expo-secure-store/build/ExpoSecureStore.js","/node_modules/expo-secure-store/build/byteCounter.js","/src/services/authApi.ts","/src/services/apiClient.ts","/src/core/environmentService.ts","/src/core/mobileConfigService.ts","/src/services/interventionsApi.ts","/src/core/localDatabase.ts","/node_modules/expo-sqlite/build/index.js","/node_modules/expo-sqlite/build/SQLiteDatabase.js","/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js","/node_modules/@babel/runtime/helpers/OverloadYield.js","/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js","/node_modules/@babel/runtime/helpers/asyncIterator.js","/node_modules/expo-sqlite/build/ExpoSQLite.js","/node_modules/expo-sqlite/build/NativeDatabase.js","/node_modules/expo-sqlite/build/SQLiteSession.js","/node_modules/expo-sqlite/build/SQLiteStatement.js","/node_modules/expo-sqlite/build/paramUtils.js","/node_modules/expo-sqlite/build/pathUtils.js","/node_modules/expo-sqlite/build/hooks.js","/src/services/syncService.ts","/node_modules/expo-network/build/Network.js","/node_modules/expo-network/build/ExpoNetwork.js","/node_modules/expo-network/build/Network.types.js","/src/core/crashLog.ts","/node_modules/expo-file-system/src/index.ts","/node_modules/expo-file-system/src/FileSystem.ts","/node_modules/expo-file-system/src/ExpoFileSystem.ts","/node_modules/expo-file-system/src/pathUtilities/index.ts","/node_modules/expo-file-system/src/pathUtilities/path.ts","/node_modules/expo-file-system/src/pathUtilities/url.ts","/node_modules/expo-file-system/src/streams.ts","/node_modules/expo-file-system/src/legacyWarnings.ts","/src/services/precheckDraftStorage.ts","/src/services/offlineCredentialStore.ts","/node_modules/expo-crypto/build/Crypto.js","/node_modules/expo-crypto/build/Crypto.types.js","/node_modules/expo-crypto/build/ExpoCrypto.js","/node_modules/react-native-argon2/index.js","/src/services/backgroundSync.ts","/node_modules/expo-task-manager/build/TaskManager.js","/node_modules/expo-task-manager/build/ExpoTaskManager.js","/src/core/instancesService.ts","/src/services/mobileConfigApi.ts","/src/services/pushNotifications.ts","/node_modules/expo-device/build/Device.js","/node_modules/expo-device/build/Device.types.js","/node_modules/expo-device/build/ExpoDevice.js","/src/features/missions/MissionsDashboard.tsx","/src/shared/interventionUtils.ts","/src/features/missions/MissionDetailScreen.tsx","/src/core/stepRepository.ts","/src/shared/workflowUtils.ts","/src/features/missions/WorkflowInterventionScreen.tsx","/src/services/devisApi.ts","/src/features/missions/SignatureFinishCard.tsx","/node_modules/react-native-signature-canvas/index.js","/node_modules/react-native-signature-canvas/h5/html.js","/node_modules/react-native-signature-canvas/h5/js/signature_pad.js","/node_modules/react-native-signature-canvas/h5/js/app.js","/node_modules/react-native-webview/src/index.ts","/node_modules/react-native-webview/src/RNCWebViewNativeComponent.ts","/node_modules/react-native-webview/src/NativeRNCWebViewModule.ts","/node_modules/react-native-webview/src/WebViewShared.tsx","/node_modules/react-native-webview/src/WebView.styles.ts","/node_modules/expo-camera/build/index.js","/node_modules/expo-camera/build/ExpoCameraManager.js","/node_modules/expo-camera/build/CameraView.js","/node_modules/expo-camera/build/ExpoCamera.js","/node_modules/expo-camera/build/utils/props.js","/node_modules/expo-camera/build/Camera.types.js","/node_modules/expo-camera/build/PictureRef.js","/src/shared/CameraCapture.tsx","/src/core/fileStorage.ts","/src/shared/SignatureCapture.tsx","/src/features/home/HomeHub.tsx","/src/features/home/FeatureCard.tsx","/src/shared/BrandLogo.tsx","/src/features/home/StatsScreen.tsx","/src/features/home/PlanningScreen.tsx","/src/features/home/MyInfoScreen.tsx","/src/services/profileApi.ts","/src/features/home/SupportScreen.tsx","/node_modules/expo-mail-composer/build/MailComposer.js","/node_modules/expo-mail-composer/build/ExpoMailComposer.js","/node_modules/expo-mail-composer/build/MailComposer.types.js","/src/features/home/BottlesScreen.tsx","/src/services/bottlesApi.ts","/src/features/onboarding/OnboardingScreen.tsx","/src/features/auth/LoginScreen.tsx","/src/navigation/navigationRef.ts","/src/shared/ErrorBoundary.tsx","/src/features/updates/UpdateGate.tsx","/node_modules/expo-updates/build/index.js","/node_modules/expo-updates/build/Updates.js","/node_modules/expo-updates/build/ExpoUpdates.js","/node_modules/expo-updates/build/Updates.types.js","/node_modules/expo-updates/build/UpdatesEmitter.js","/node_modules/expo-updates/build/UseUpdates.js","/node_modules/expo-updates/build/UseUpdatesUtils.js","/node_modules/expo-updates/build/UseUpdates.types.js","/assets/icon.png","/src/core/crashHandlers.ts","/node_modules/promise/setimmediate/rejection-tracking.js","/node_modules/react-native/Libraries/Utilities/Platform.android.js","/node_modules/react-native/Libraries/Utilities/NativePlatformConstantsAndroid.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js","/node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.android.js","/node_modules/react-native/Libraries/NativeComponent/BaseViewConfig.android.js","/node_modules/react-native/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js","/node_modules/react-native/Libraries/Network/RCTNetworking.android.js","/node_modules/react-native/Libraries/Network/NativeNetworkingAndroid.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js","/node_modules/react-native/Libraries/Alert/RCTAlertManager.android.js","/node_modules/react-native/Libraries/Utilities/BackHandler.android.js","/node_modules/react-native/Libraries/NativeModules/specs/NativeDeviceEventManager.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js","/node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js","/node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js","/node_modules/react-native/Libraries/Image/Image.android.js","/node_modules/react-native/Libraries/Image/NativeImageLoaderAndroid.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js","/node_modules/react-native/Libraries/Image/TextInlineImageNativeComponent.js","/node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js","/node_modules/react-native/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js","/node_modules/react-native/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js","/node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.js","/node_modules/react-native/Libraries/Settings/Settings.js","/node_modules/react-native/Libraries/Settings/SettingsFallback.js","/node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.android.js","/node_modules/react-native/Libraries/Components/ToastAndroid/NativeToastAndroid.js","/node_modules/react-native/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js","/node_modules/expo-notifications/build/getNotificationChannelsAsync.android.js","/node_modules/expo-notifications/build/NotificationChannelManager.native.js","/node_modules/expo-notifications/build/getNotificationChannelAsync.android.js","/node_modules/expo-notifications/build/setNotificationChannelAsync.android.js","/node_modules/expo-notifications/build/deleteNotificationChannelAsync.android.js","/node_modules/expo-notifications/build/getNotificationChannelGroupsAsync.android.js","/node_modules/expo-notifications/build/NotificationChannelGroupManager.native.js","/node_modules/expo-notifications/build/getNotificationChannelGroupAsync.android.js","/node_modules/expo-notifications/build/setNotificationChannelGroupAsync.android.js","/node_modules/expo-notifications/build/deleteNotificationChannelGroupAsync.android.js","/node_modules/@react-navigation/elements/lib/module/MaskedView.android.js","/node_modules/react-native-is-edge-to-edge/dist/index.android.mjs","/node_modules/react-native-webview/src/WebView.android.tsx"],"names":["window","global","globalThis","__METRO_GLOBAL_PREFIX__","Symbol","Map","modules","EMPTY","module","guardedLoadModule","Error","metroRequire","exports","hasOwnProperty","inGuard","loadModuleImplementation","ID_MASK_SHIFT","moduleId","LOCAL_ID_MASK","value","moduleDefinersBySegmentID","definingSegmentByModuleID","segmentId","unknownModuleError","factory","metroImportDefault","metroImportAll","id","assert","Object","console","originalConsole","Array","level","LOG_LEVELS","groupStack","groupFormat","inspect","element","INDEX_COLUMN_NAME","String","cellValue","Set","i","space","repeat","columnWidths","cell","key","columnSet","rows","j","formatCellValue","stringRows","Math","msg","GROUP_OPEN","GROUP_PAD","GROUP_CLOSE","stylizeNoColor","formatValue","hash","formatPrimitive","arrayToHash","isError","isFunction","isRegExp","isDate","isArray","RegExp","Date","formatError","formatArray","reduceToSingleString","braces","formatProperty","ctx","recurseTimes","visibleKeys","array","isUndefined","isString","isNumber","isBoolean","isNull","JSON","output","name","base","numLinesEst","prev","arg","isObject","objectToString","e","_key","originalConsoleError","stringifySafe","log","setGlobalHandler","getGlobalHandler","reportError","reportFatalError","applyWithGuard","applyWithGuardIfNeeded","guard","_globalHandler","_inGuard","ErrorUtils","fun","context","guardName","require","r","TypeError","D","_toPropertyKey","te","z","_defineProperties","_toPrimitive","Number","Promise","next","return","self","Fr","u","re","f","b","Function","c","S","d","O","A","Br","k","ar","undefined","p","Q","no","io","Er","ao","J","t","nr","de","Uint8Array","ArrayBuffer","ae","oe","arguments","ue","co","fe","be","ce","fo","se","bo","RangeError","DataView","mo","_o","X","G","nt","ot","Ue","Pe","Ne","Le","Be","U","Ee","Oe","je","Me","ze","Ye","Or","Ae","Fe","We","ke","le","ie","He","qe","we","jr","De","$e","po","at","Re","rt","L","Y","ft","F","g","gt","vo","yo","Ct","or","ve","go","Mt","Pt","kt","ye","me","Et","Jt","Zt","Rt","er","rr","Xt","Yt","qt","Wt","Qt","Ut","So","AbortController","Tt","ge","It","Kt","xt","$t","Gt","H","yt","lo","h","Dt","C","m","B","At","W","Ro","q","wt","E","Ot","o","K","_closeSteps","zt","To","ur","sr","br","mr","Wr","hr","cr","Cr","_","fr","dr","Boolean","Co","qr","_r","Je","lt","Z","M","Po","ko","qo","Vr","Jr","Ur","Gr","Eo","Hr","queueMicrotask","y","_createClass","_classCallCheck","v","isFinite","ReadableStreamDefaultReader","$","N","ee","structuredClone","he","_e","pe","ReadableStreamBYOBRequest","Ce","Ke","x","Ge","Xe","ReadableByteStreamController","Te","Ze","Ve","Qe","xe","V","ReadableStreamBYOBReader","st","it","WritableStream","I","dt","bt","ht","mt","_t","St","ct","ut","Ft","Nt","vt","WritableStreamDefaultWriter","pt","tr","Bt","Vt","WritableStreamDefaultController","Lt","Ht","wo","ReadableStreamDefaultController","lr","pr","ReadableStream","gr","vr","wr","Rr","kr","et","tt","Tr","ir","ne","Pr","_errorSteps","Se","ho","Sr","ByteLengthQueuingStrategy","Ar","Lr","Dr","zr","CountQueuingStrategy","$r","Ir","TransformStream","xr","Mr","Yr","Qr","Zr","to","ro","Kr","Nr","oo","TransformStreamDefaultController","Xr","eo","AppRegistry","qualifiedComponent","registerRootComponent","FormData","_dependencyMap","expected","Blob","blobFilename","ensureMinArgCount","normalizeArgs","_key2","_key3","_key4","_key5","_key6","descriptor","valueSet","setValue","get","object","enumerable","writable","_ref$configurable","defineLazyObjectProperty","getValue","BUILTIN_SYMBOL","category","options","min","a","cp","input","LABEL_ENCODING_MAP","label","TextDecoder","Stream","encoding","UTF8Decoder","bite","inRange","decoderError","getEncoding","DECODERS","normalizeBytes","codePointsToString","toPropertyKey","toPrimitive","_typeof","TextDecoderStream","TextEncoderStream","_inherits","_callSuper","transform","flush","decoder","TextEncoder","carry","chunk","encoder","getPrototypeOf","possibleConstructorReturn","isNativeReflectConstruct","Reflect","_getPrototypeOf","assertThisInitialized","ReferenceError","setPrototypeOf","_setPrototypeOf","_wrapNativeSuper","isNativeFunction","construct","isSetup","encodeURIComponent","BLOB_URL_PREFIX","URL","URLSearchParams","getBlobUrlPrefix","is","isImpl","convert","create","createImpl","_internalSetup","setup","install","utils","impl","Impl","obj","_ref$context","ctorRegistry","iface","conversions","globalObject","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Uint8ClampedArray","Float32Array","Float64Array","func","opts","censorNegativeZero","sign","signMightNotMatch","bitLength","lowerBound","upperBound","evenRound","integerPart","modulo","twoToTheBitLength","isSigned","twoToOneLessThanTheBitLength","abByteLengthGetter","isNaN","n","type","isArrayBuffer","dvByteLengthGetter","article","sameObjectCaches","prop","wrapperSymbol","wrapper","implSymbol","wrapperForImpl","implForWrapper","P","byteLengthGetter","URLImpl","usm","parsedURL","urlencoded","punycode","buffer","infra","cp2","string","specialSchemes","isSpecialScheme","Buffer","percentEncode","isPathPercentEncode","extraUserinfoPercentEncodeSet","isC0ControlPercentEncode","extraFragmentPercentEncodeSet","isFragmentPercentEncode","extraPathPercentEncodeSet","utf8PercentEncode","parseInt","failure","parts","parseIPv4Number","numbers","pointer","ipv4Piece","address","pieceIndex","compress","findLongestZeroSequence","parseOpaqueHost","percentDecode","domainToASCII","containsForbiddenHostCodePoint","parseIPv4","parseIPv6","containsForbiddenHostCodePointExcludingPercent","percentEncodeChar","host","serializeIPv6","serializeIPv4","isNormalizedWindowsDriveLetter","url","encodingOverride","trimControlChars","trimTabAndNewline","stateOverride","length","isWindowsDriveLetterCodePoints","fileOtherwiseCodePoints","serializeHost","tuple","isSpecial","includesCredentials","defaultPort","countSymbols","isUserinfoPercentEncode","parseHost","isNotSpecial","port","startsWithWindowsDriveLetter","shortenPath","isNormalizedWindowsDriveLetterString","isWindowsDriveLetterString","isDoubleDot","isSingleDot","serializeOrigin","URLStateMachine","i16","alphabet","arr","K_MAX_LENGTH","from","allocUnsafe","isInstance","SharedArrayBuffer","fromObject","fromArrayBuffer","fromArrayView","fromString","assertSize","createBuffer","size","checked","byteLength","fromArrayLike","byteOffset","numberIsNaN","mustMatch","utf8ToBytes","base64ToBytes","len","utf16leSlice","base64Slice","latin1Slice","asciiSlice","utf8Slice","hexSlice","dir","val","arrayIndexOf","arrLength","foundIndex","indexSize","buf","strLen","offset","blitBuffer","asciiToBytes","utf16leToBytes","base64","firstByte","secondByte","thirdByte","fourthByte","codePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","hexSliceLookupTable","bytes","checkIEEE754","ieee754","INVALID_BASE64_RE","str","units","Infinity","leadSurrogate","base64clean","alloc","pos","swap","slowToString","target","thisEnd","end","bidirectionalIndexOf","ucs2Write","base64Write","asciiWrite","utf8Write","hexWrite","checkOffset","checkInt","limit","writeFloat","writeDouble","start","validLen","getLens","Arr","_byteLength","placeHoldersLen","revLookup","tmp","lookup","num","tripletToBase64","uint8","encodeChunk","nBytes","eMax","isLE","s","NaN","mLen","eBias","codePoints","errors","regexSeparators","map","result","counter","extra","digit","flag","firstTime","delta","floor","error","basic","index","basicToDigit","maxInt","bias","adapt","ucs2decode","stringFromCharCode","handledCPCount","digitToBasic","qMinusT","mapDomain","regexPunycode","decode","regexNonASCII","encode","isASCIIAlpha","isASCIIDigit","parseUrlencoded","isASCIIHex","strictlySplitByteSequence","indexOfEqual","replaceByteInByteSequence","serializeUrlencodedByte","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayLikeToArray","createDefaultIterator","IteratorPrototype","_ref","compare","_ref2$doNotStripQMark","URLSearchParamsImpl","stableSortBy","ImportMetaRegistry","getBundleUrl","SourceCode","_default","_srcPrivateSpecs_DEPRECATEDModulesNativeSourceCode","getConstants","constants","NativeModule","turboModuleProxy","NativeModules","requireModule","invariant","args","argIndex","bridgeConfig","methods","promiseMethods","arrayContains","syncMethods","isPromise","isSync","genMethod","moduleID","genModule","info","BatchedBridge","methodID","data","errorData","resolve","reject","updateErrorWithErrorData","enqueueingFrameError","hasErrorCallback","hasSuccessCallback","loadModule","MessageQueue","method","cbID","queue","onFail","onSucc","now","Systrace","DebuggerInternal","isSuccess","TRACE_TAG_REACT","isEnabled","_asyncCookie","_limits$maxDepth","_limits$maxStringLimi","_limits$maxArrayLimit","_limits$maxObjectKeys","stack","maxDepth","maxObjectKeysLimit","keys","maxArrayLimit","maxStringLimit","replacer","warnedKeys","deserialize","serialize","deserializer","serialized","as","PRIMITIVE","VOID","ARRAY","OBJECT","DATE","REGEXP","MAP","SET","ERROR","BIGINT","env","BigInt","unpair","_ref2","serializer","toString","TYPE","typeOf","strict","shouldSkip","pair","json","_asyncToGenerator","_universal_loadBundleAsync","cache","loadBundleAsync","path","asyncGeneratorStep","_next","_throw","_loadBundleAsync","buildUrlForBundle","fetchThenEvalAsync","joinComponents","location","prefix","_fetchThenEvalJs","fetchAsync","MetroServerError","Networking","_ref3","_ref5","_ref7","requestId","responseText","statusCode","headers","LoadBundleFromServerRequestError","dataListener","completeListener","responseListener","incrementalDataListener","LoadBundleFromServerError","warnOnce","_ref$animating","_ref$color","_ref$hidesWhenStopped","_ref$size","_objectWithoutProperties","_excluded","styles","_reactJsxRuntime","View","StyleSheet","PlatformActivityIndicator","objectWithoutPropertiesLoose","setStyleAttributePreprocessor","ReactNativeStyleAttributes","composeStyles","flattenStyle","ReactNativeFeatureFlags","jsOnlyTestFlag","alwaysFlattenAnimatedStyles","animatedShouldDebounceQueueFlush","animatedShouldUseSingleOp","avoidStateUpdateInAnimatedPropsMemo","deferFlatListFocusChangeRenderUpdate","disableInteractionManager","enableAccessToHostTreeInFabric","fixVirtualizeListCollapseWindowSize","isLayoutAnimationEnabled","reduceDefaultPropsInView","scheduleAnimatedCleanupInMicrotask","shouldUseAnimatedObjectForTransform","shouldUseRemoveClippedSubviewsAsDefaultOnIOS","shouldUseSetNativePropsInFabric","utilizeTokensInIntersectionObserver","commonTestFlag","commonTestFlagWithoutNativeImplementation","animatedShouldSignalBatch","cxxNativeAnimatedEnabled","cxxNativeAnimatedRemoveJsSync","disableMainQueueSyncDispatchIOS","disableMountItemReorderingAndroid","disableTextLayoutManagerCacheAndroid","enableAccessibilityOrder","enableAccumulatedUpdatesInRawPropsAndroid","enableAndroidTextMeasurementOptimizations","enableBridgelessArchitecture","enableCppPropsIteratorSetter","enableCustomFocusSearchOnClippedElementsAndroid","enableDestroyShadowTreeRevisionAsync","enableDoubleMeasurementFixAndroid","enableEagerRootViewAttachment","enableFabricLogs","enableFabricRenderer","enableFixForParentTagDuringReparenting","enableFontScaleChangesUpdatingLayout","enableIOSTextBaselineOffsetPerLine","enableIOSViewClipToPaddingBox","enableInteropViewManagerClassLookUpOptimizationIOS","enableLayoutAnimationsOnAndroid","enableLayoutAnimationsOnIOS","enableMainQueueCoordinatorOnIOS","enableMainQueueModulesOnIOS","enableModuleArgumentNSNullConversionIOS","enableNativeCSSParsing","enableNetworkEventReporting","enableNewBackgroundAndBorderDrawables","enablePreparedTextLayout","enablePropsUpdateReconciliationAndroid","enableResourceTimingAPI","enableSynchronousStateUpdates","enableViewCulling","enableViewRecycling","enableViewRecyclingForText","enableViewRecyclingForView","enableVirtualViewDebugFeatures","enableVirtualViewRenderState","enableVirtualViewWindowFocusDetection","fixMappingOfEventPrioritiesBetweenFabricAndReact","fuseboxEnabledRelease","fuseboxNetworkInspectionEnabled","hideOffscreenVirtualViewsOnIOS","preparedTextCacheSize","preventShadowTreeCommitExhaustion","traceTurboModulePromiseRejectionsOnAndroid","updateRuntimeShadowNodeReferencesOnCommit","useAlwaysAvailableJSErrorHandling","useFabricInterop","useNativeEqualsInNativeReadableArrayAndroid","useNativeTransformHelperAndroid","useNativeViewConfigsInBridgelessMode","useOptimizedEventBatchingOnAndroid","useRawPropsJsiValue","useShadowNodeStateOnClone","useTurboModuleInterop","useTurboModules","virtualViewPrerenderRatio","override","cachedValue","customValueGetter","defaultValue","createGetter","accessedFeatureFlags","configName","overrides","maybeLogUnavailableNativeModuleError","NativeReactNativeFeatureFlags","reportedConfigNames","hasTurboModules","getDirectionForKeyword","processColorStops","DEFAULT_RADIAL_SHAPE","DEFAULT_RADIAL_SIZE","DEFAULT_RADIAL_POSITION","LINEAR_GRADIENT_DEFAULT_DIRECTION","bgImage","LINEAR_GRADIENT_ANGLE_UNIT_REGEX","LINEAR_GRADIENT_DIRECTION_REGEX","getAngleInDegrees","parseBackgroundImageCSSString","processColor","splitGradients","isRadial","parseLinearGradientCSSString","parseRadialGradientCSSString","firstPartTokens","tokenTrimmed","getPositionFromCSSValue","token2","token1","token","parseColorStopsCSSString","stops","parseFloat","numericValue","processBackgroundImage","normalizeColor","normalizedColor","_normalizeColor","getMatchers","normalizeKeyword","matchers","hwbToRgb","parse360","parsePercentage","parse1","hslToRgb","match","parse255","color","l","hue2rgb","w","red","green","blue","gray","cachedMatchers","call","commaSeparatedCall","callWithSlashSeparator","callModern","int","parseBoxShadowString","parseLength","bS","processBoxShadow","parseDropShadow","_getFilterAmount","filterName","unit","parseDropShadowString","processFilter","_getKeyAndValueFromCSSTransform","INDEX_X","INDEX_Z","INDEX_Y","valueLower","processTransformOrigin","one","dummySize","two","defaultedOne","PixelRatio","Dimensions","layoutSize","update","dimensions","windowPhysicalPixels","screenPhysicalPixels","dimensionsInitialized","eventEmitter","RCTDeviceEventEmitterImpl","beginEvent","_len","_superPropGet","endEvent","eventType","_get","superPropBase","EventEmitter","_registry","_classPrivateFieldLooseBase","allocate","remove","registrations","registration","_srcPrivateSpecs_DEPRECATEDModulesNativeDeviceInfo2","_srcPrivateSpecs_DEPRECATEDModulesNativeDeviceInfo","use","TextAncestorContext","_excluded3","ariaLabelledBy","accessibilityState","ariaSelected","ariaBusy","ariaChecked","ariaDisabled","ariaExpanded","accessibilityValue","ariaValueText","ariaValueMax","ariaValueMin","ariaValueNow","ViewNativeComponent","ariaLive","ariaLabel","tabIndex","ariaHidden","_excluded2","ref","MAYBE_ITERATOR_SYMBOL","emptyObject","updater","ReactNoopUpdateQueue","REACT_ELEMENT_TYPE","ReactElement","escaperLookup","escape","noop$1","thenable","REACT_PORTAL_TYPE","REACT_LAZY_TYPE","mapIntoArray","nameSoFar","isArrayImpl","getIteratorFn","resolveThenable","getElementKey","nextNamePrefix","isValidElement","cloneAndReplaceKey","userProvidedKeyEscapeRegex","escapedPrefix","invokeCallback","count","payload","process","mapChildren","forEachFunc","ReactSharedInternals","fn","assign","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","lazyInitializer","REACT_MEMO_TYPE","noop","reportGlobalError","Commands","getRuntimeConfig","ReactNativeViewConfigRegistry","createViewConfig","viewConfigProvider","getNativeComponentAttributes","viewConfig","native","StaticViewConfigValidator","hasNativeViewConfig","UIManager","bubblingEventTypes","directEventTypes","getDifferForType","getProcessorForType","diff","attachDefaultEventTypes","merge","nullthrows","insetsDiffer","pointsDiffer","sizesDiffer","matricesDiffer","resolveAssetSource","processColorArray","_sourceCodeScriptURL","_serverURL","getSourceCodeScriptURL","normalizedScriptURL","_scriptURL","_coerceLocalScriptURL","_customSourceTransformers","AssetRegistry","AssetSourceResolver","getDevServerURL","getScriptURL","pickScale","scale","getBasePath","assetDir","getAndroidResourceFolderName","getAndroidResourceIdentifier","drawableFolder","asset","assetSupportsNetworkLoads","getScaledAssetPath","getAssetPathInDrawableFolder","deviceScale","scales","cacheBreaker","androidScaleSuffix","ANDROID_BASE_DENSITY","drawableFileTypes","getAndroidAssetSuffix","basePath","assets","colors","processColorElement","TRANSPARENT","dummyInsets","dummyPoint","measure","measureInWindow","measureLayout","measureLayoutRelativeToParent","dispatchViewManagerCommand","reactTag","isFabricReactTag","UIManagerImpl","getFabricUIManager","callback","nativeFabricUIManagerProxy","createProxyWithCachedProperties","CACHED_PROPERTIES","proxy","implementation","propertyName","message","createView","updateView","setChildren","manageChildren","setJSResponder","clearJSResponder","viewManagerName","getDefaultEventTypes","enabled","sendAccessibilityEvent","findSubviewIn","viewIsDescendantOf","configureNextLayoutAnimation","viewConfigName","details","wasCalledOnce","getUIManagerConstants","raiseSoftError","getConstantsForViewManager","getDefaultEventTypesCached","getUIManagerConstantsCached","UIManagerJS","unstable_hasComponent","FabricUIManager","nativeViewTag","componentNameToExists","getViewManagerConfig","hasViewManagerConfig","isNativeUIManagerConstantsSet","NativeUIManager","NativeUIManagerConstants","viewManagerConfigs","triedLoadingConfig","lazifyViewManagerConfig","viewManager","commands","UIManagerProperties","_srcPrivateSpecs_DEPRECATEDModulesNativeUIManager","customBubblingEventTypes","customDirectEventTypes","viewConfigCallbacks","viewConfigs","processEventTypes","accumulateDifferences","difference","ifObject","composeIndexers","PlatformBaseViewConfig","maybeA","WeakSet","ignoredViewConfigProps","command","commandObj","dispatchCommand","_RendererImplementation","onCaughtError","onUncaughtError","onRecoverableError","errorValue","SyntheticError","getExtendedError","ExceptionsManager","userExceptionDecorator","inUserExceptionDecorator","exceptionID","namePrefix","decoratedExtraDataKey","preprocessException","reportException","inExceptionHandler","reactConsoleErrorHandler","frame","convertHermesStack","parseHermesStack","parseErrorStack","sourceUrl","RE_FRAME","RE_SKIPPED","asFrame","isInternalBytecodeSourceUrl","RE_COMPONENT_NO_STACK","parseLine","lastMessageLine","parseChrome","parseWinjs","parseGecko","parseNode","parseJSC","chromeRe","chromeEvalRe","UNKNOWN_FUNCTION","isNative","winjsRe","geckoRe","geckoEvalRe","javaScriptCoreRe","nodeRe","_srcPrivateSpecs_DEPRECATEDModulesNativeExceptionsManager","reportFatalException","reportSoftException","dismissRedbox","register","registerCallableModule","moduleOrFactory","currentlyFocusedInputRef","findNodeHandle","textField","focusInput","AndroidTextInputCommands","blurInput","inputs","__INTERNAL_VIEW_CONFIG","deepDiffer","ii","logListeners","showErrorDialog","_srcPrivateSpecs_DEPRECATEDModulesNativeAccessibilityManager2","_srcPrivateSpecs_DEPRECATEDModulesNativeAccessibilityManager","CustomEvent","Event","performance","COMPOSED_PATH_KEY","getCurrentTarget","getEventPhase","getIsTrusted","getTarget","getComposedPath","getInPassiveListenerFlag","setStopPropagationFlag","IS_PLATFORM_OBJECT_KEY","CLONE_PLATFORM_OBJECT_KEY","setPlatformObject","CURRENT_TARGET_KEY","EVENT_PHASE_KEY","IN_PASSIVE_LISTENER_FLAG_KEY","IS_TRUSTED_KEY","STOP_IMMEDIATE_PROPAGATION_FLAG_KEY","STOP_PROPAGATION_FLAG_KEY","TARGET_KEY","deepDifferOptions","removedKeyCount","removedKeys","restoreDeletedValuesInNestedArray","prevArray","diffNestedProperty","clearNestedProperty","addNestedProperty","diffProperties","diffNestedArrayProperty","clearProperties","defaultDiffer","prevProp","updatePayload","ReactNativeDocumentModuleObject","ReactNativeElementClass","ReactFabricHostComponentClass","ReadOnlyTextClass","getReactNativeDocumentModule","getReactFabricHostComponentClass","getReactNativeElementClass","getReadOnlyTextClass","RendererProxy","createReactNativeDocumentElementInstanceHandle","ReactNativeElement","NativeDOM","setNativeElementReferenceForReactNativeDocumentElementInstanceHandle","setPublicInstanceForReactNativeDocumentElementInstanceHandle","createReactNativeDocumentInstanceHandle","ReactNativeDocument","createDocumentElement","createHTMLCollection","ReadOnlyNode","HTMLCollection","_length","createValueIterator","ReactNativeDocumentElementInstanceHandleImpl","instanceHandle","setOwnerDocument","setInstanceHandle","getBoundingClientRect","getNativeElementReference","getPublicInstanceFromInstanceHandle","TextInputState","relativeToNativeNode","onSuccess","createAttributePayload","warnForStyleProps","INSTANCE_HANDLE_KEY","OWNER_DOCUMENT_KEY","node","isReactNativeDocumentInstanceHandle","isReactNativeDocumentElementInstanceHandle","getRendererProxy","getPublicInstanceFromReactNativeDocumentElementInstanceHandle","getPublicInstanceFromReactNativeDocumentInstanceHandle","getInstanceHandle","getNativeElementReferenceFromReactNativeDocumentElementInstanceHandle","getNativeNodeReferenceFromReactNativeDocumentInstanceHandle","getChildNodes","childNode","ReadOnlyElement","DOMRect","_getBoundingClientRect","getChildElements","props","childElements","getElementSibling","rect","DOMRectReadOnly","_x","_y","_width","_height","castToNumber","direction","startPosition","ReadOnlyElementClass","childNodes","position","getNativeNodeReference","createNodeList","getNodeSiblingsAndPosition","siblings","getOwnerDocument","getReadOnlyElementClass","parentNode","NodeList","createEntriesIterator","createKeyIterator","compareDocumentPosition","getParentNode","isConnected","getBorderWidth","getInnerSize","getScrollPosition","getScrollSize","getTagName","getTextContent","hasPointerCapture","releasePointerCapture","setPointerCapture","getOffset","linkRootNode","setNativeProps","RawNativeDOM","ReactFabricHostComponent","getNodeFromInternalInstanceHandle","fabricMeasure","fabricMeasureInWindow","fabricMeasureLayout","fabricGetBoundingClientRect","ReadOnlyText","ReadOnlyCharacterData","getNativeTextReference","pluginName$jscomp$inline_280","isOrderingDirty$jscomp$inline_279","WeakMap","nativeFabricUIManager","registerEventHandler","setTimeout","clearTimeout","RN$enableMicrotasksInReact","__REACT_DEVTOOLS_GLOBAL_HOOK__","suffix","reentry","namePropDescriptor","sampleLines","controlLines","describeBuiltInComponentFrame","describeNativeComponentFrame","describeFiber","REACT_FRAGMENT_TYPE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","getComponentNameFromType","innerType","REACT_CLIENT_REFERENCE","getNodeFromInstance$1","hasError","dispatchListener","dispatchConfig","functionThatReturnsTrue","functionThatReturnsFalse","event","createOrGetPooledEvent","releasePooledEvent","touch","getTouchIdentifier","touchBank","touchRecord","timestampForTouch","touchHistory","responderInst","ResponderEventPlugin","inst","getParent$1","getFiberCurrentPropsFromNode$1","getListener$1","accumulateInto","listener","targetInst","traverseTwoPhase$1","accumulateDirectionalDispatches$1","eventPluginOrder","namesToPlugins","plugins","pluginName","eventNameDispatchConfigs","publishRegistrationName","phasedRegistrationNames","eventName","registrationNameModules","registrationName","getListener","traverseTwoPhase","accumulateDirectionalDispatches","ReactNativePrivateInterface","nextProp","fastAddProperties","isInsideEventHandler","batchedUpdatesImpl","dispatchListeners","executeDispatch","getPublicInstance","batchedUpdates$1","topLevelType","nativeEvent","eventTarget","possiblePlugin","eventQueue","forEachAccumulated","executeDispatchesAndReleaseTopLevel","caughtError","unstable_setDisableYieldValue","injectedHook","rendererID","LN2","lanes","pendingLanes","rootHasPendingCommit","getHighestPriorityLanes","nonIdlePendingLanes","wipLanes","nextLanes","root","currentTime","nextTransitionLane","nextRetryLane","previouslyPendingLanes","clz32","index$11","markSpawnedDeferredLane","suspendedRetryLanes","entangledLanes","lane","getNearestMountedFiber","alternate","assertIsMounted","findCurrentHostFiberImpl","valueStack","getStackByFiberInDevAndProd","CapturedStacks","push","rootInstanceStackCursor","contextFiberStackCursor","contextStackCursor","PROD_HOST_CONTEXT","pop","hostTransitionProviderCursor","HostTransitionContext","hydrationErrors","workInProgressRootRecoverableErrors","valueCursor","parent","scheduleContextWorkOnParentPath","forcePropagateEntireTree","objectIs","currentParent","propagateContextChanges","readContextForConsumer","currentlyRenderingFiber$1","prepareToReadContext","lastContextDependency","AbortControllerLocal","scheduleCallback$2","NormalPriority","lastScheduledRoot","didScheduleMicrotask","scheduleImmediateRootScheduleTask","isFlushingWork","mightHavePendingSyncWork","firstScheduledRoot","workInProgressRootRenderLanes","getNextLanes","workInProgressRoot","JSCompiler_inline_result","checkIfRootIsPrerendering","performSyncWorkOnRoot","suspendedLanes","processRootScheduleInMicrotask","currentEventTransitionLane","scheduleTaskForRootDuringMicrotask","flushSyncWorkAcrossRoots_impl","computeExpirationTime","expirationTime","workInProgressSuspendedReason","cancelCallback$1","lanesToEventPriority","NormalPriority$1","IdlePriority","UserBlockingPriority","performWorkOnRootViaSchedulerTask","scheduleCallback$3","pendingEffectsStatus","flushPendingEffects","performWorkOnRoot","supportsMicrotasks","ImmediatePriority","processRootScheduleInImmediateTask","scheduleMicrotask","executionContext","claimNextTransitionLane","currentEntangledListeners","requestTransitionLane","currentEntangledPendingCount","pingEngtangledActionScope","entangledListeners","currentEntangledActionThenable","listeners","thenableWithOverride","resumedCache","peekCacheFromPool","CacheContext","keysB","SuspenseException","checkIfUseWrappedInAsyncCatch","suspendedThenable","SuspenseActionException","concurrentQueuesIndex","concurrentQueues","markUpdateLaneFromFiberToRoot","concurrentlyUpdatedLanes","enqueueUpdate$1","getRootForUpdatedFiber","sourceFiber","isHidden","nestedUpdateCount","workInProgress","markRootEntangled","didReadFromEntangledAsyncAction","pendingQueue","updateLane","isHiddenUpdate","renderLanes","currentEntangledLane","workInProgressRootSkippedLanes","updateQueue","callCallback","entangledRenderLanes","prevEntangledRenderLanesCursor","currentTreeHiddenStackCursor","fiber","HooksDispatcherOnUpdate","HooksDispatcherOnMount","didScheduleRenderPhaseUpdateDuringThisPass","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","currentHook","didReceiveUpdate","checkIfContextChanged","HooksDispatcherOnRerender","useThenable","currentlyRenderingFiber","didScheduleRenderPhaseUpdate","workInProgressHook","thenableIndexCounter$1","thenableState$1","trackUsedThenable","readContext","createFunctionComponentUpdateQueue","current","REACT_MEMO_CACHE_SENTINEL","updateWorkInProgressHook","updateReducerImpl","shouldDoubleInvokeUserFnsInHooksDEV","revertLane","snapshotChanged","subscribeToStore","updateEffectImpl","pushSimpleEffect","createEffectInstance","updateStoreInstance","pushStoreConsistencyCheck","checkIfSnapshotChanged","forceStoreRerender","enqueueConcurrentRenderForLane","scheduleUpdateOnFiber","mountWorkInProgressHook","setIsStrictModeForDevtools","basicStateReducer","isRenderPhaseUpdate","runActionStateAction","actionNode","handleActionReturnValue","onActionError","onActionSuccess","actionQueue","notifyActionListeners","nextState","actionStateReducer","dispatchSetState","mountStateImpl","dispatchOptimisticSetState","dispatchActionState","updateActionStateImpl","updateReducer","action","actionStateActionEffect","areHookInputsEqual","mountEffectImpl","refCleanup","imperativeHandleEffect","requestDeferredLane","mountDeferredValueImpl","currentUpdatePriority","dispatchSetStateInternal","requestUpdateLane","chainThenableValue","createUpdate","enqueueUpdate","entangleTransitions","createCache","enqueueConcurrentHookUpdate","entangleTransitionUpdate","enqueueRenderPhaseUpdate","finishQueueingConcurrentUpdates","thenableIndexCounter","thenableState","REACT_LEGACY_ELEMENT_TYPE","shouldTrackSideEffects","deleteChild","createWorkInProgress","newIndex","useFiber","createFiberFromText","resolveLazy","createFiberFromTypeAndProps","coerceRef","updateFragment","portal","createFiberFromPortal","createFiberFromFragment","throwOnInvalidObjectType","createChild","readContextDuringReconciliation","unwrapThenable","updateSlot","newChild","updatePortal","updateElement","updateTextNode","updateFromMap","existingChildren","newIdx","placeChild","oldFiber","mapRemainingChildren","deleteRemainingChildren","returnFiber","placeSingleChild","reconcileChildFibersImpl","reconcileChildrenIterator","reconcileChildrenArray","createFiberImplClass","suspenseStackCursor","suspenseHandlerStackCursor","shellBoundary","reuseSuspenseHandlerOnStack","shim$1","ctor","shallowEqual","emptyContextObject","classComponentUpdater","instance","initializeUpdateQueue","applyDerivedStateFromProps","processUpdateQueue","suspendIfUpdateReadFromEntangledAsyncAction","newProps","logUncaughtError","errorInfo","getDerivedStateFromError","logCaughtError","legacyErrorBoundariesThatAlreadyFailed","propagateParentContextChanges","createCapturedValueAtFiber","workInProgressRootConcurrentErrors","workInProgressRootExitStatus","createClassErrorUpdate","initializeClassErrorUpdate","enqueueCapturedUpdate","rootRenderLanes","createRootErrorUpdate","attachPingListener","renderDidSuspendDelayIfPossible","currentSourceFiber","noopSuspenseyCommitThenable","reconcileChildFibers","mountChildFibers","renderWithHooks","bailoutHooks","bailoutOnAlreadyFinishedWork","reconcileChildren","checkScheduledUpdateOrContext","shouldConstruct","updateSimpleMemoComponent","updateFunctionComponent","pushTransition","reuseHiddenContextOnStack","pushHiddenContext","deferHiddenOffscreenComponent","prevState","pushOffscreenSuspenseHandler","cloneUpdateQueue","resolveClassComponentProps","nextContext","oldState","callComponentWillReceiveProps","hasForceUpdate","checkShouldComponentUpdate","oldContext","contextType","unresolvedOldProps","resetSuspendedCurrentOnMountInLegacyMode","constructClassInstance","mountClassInstance","finishClassComponent","markRef","hasContext","getSuspendedCache","primaryTreeDidDefer","workInProgressDeferredLane","JSCompiler_temp","pushPrimaryTreeSuspenseHandler","showFallback","didSuspend","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","SUSPENDED_MARKER","mountSuspensePrimaryChildren","nextProps","retrySuspenseComponentWithoutHydrating","SelectiveHydrationException","mountWorkInProgressOffscreenFiber","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","findFirstSuspended","pushProvider","updateOffscreenComponent","state","updateSuspenseListComponent","updateSuspenseComponent","pushHostContainer","pushHostContext","attemptEarlyBailoutIfNoScheduledUpdate","init","elementType","updateMemoComponent","updateForwardRef","TransitionAwareHostComponent","nextCache","updateClassComponent","completedWork","appendChildNode","appendAllChildren","needsVisibilityToggle","cloneHiddenInstance","appendChildNodeToSet","appendAllChildrenToContainer","doesRequireClone","createChildNodeSet","completeRoot","claimNextRetryLane","workInProgressSuspendedRetryLanes","hasRenderedATailFallback","child$95","popProvider","bubbleProperties","popSuspenseHandler","popHiddenContext","scheduleRetryEffect","workInProgressRootRenderTargetTime","cutOffTailIfNeeded","resetWorkInProgress","popHostContainer","updateHostContainer","upgradeHydrationErrorsToRecoverable","createTextInstance","popHostContext","nextReactTag","getViewConfigForType","createNode","cloneNodeWithNewProps","cloneNodeWithNewChildren","cloneNodeWithNewChildrenAndProps","captureCommitPhaseError","commitCallbacks","nextEffect","firstChild","finishedWork","recursivelyTraverseLayoutEffects","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","flags","retryDehydratedSuspenseBoundary","commitHostMount","safelyAttachRef","commitClassCallbacks","commitHookEffectListMount","detachFiberAfterEffects","commitDeletionEffectsOnFiber","deletedFiber","recursivelyTraverseDeletionEffects","safelyDetachRef","safelyCallComponentWillUnmount","commitHookEffectListUnmount","PossiblyWeakSet","getRetryCache","resolveRetryWakeable","retryCache","parentFiber","commitMutationEffectsOnFiber","recursivelyTraverseMutationEffects","commitReconciliationEffects","attachSuspenseRetryListeners","prevOffscreenSubtreeIsHidden","prevOffscreenSubtreeWasHidden","recursivelyTraverseDisappearLayoutEffects","commitLayoutEffectOnFiber","includeWorkInProgressEffects","releaseCache","commitPassiveMountOnFiber","recursivelyTraversePassiveMountEffects","commitCachePassiveMountEffect","_finishedWork$memoize2","recursivelyTraverseReconnectPassiveEffects","recursivelyTraverseAtomicPassiveEffects","commitOffscreenPassiveMountEffects","suspenseyCommitFlag","accumulateSuspenseyCommitOnFiber","recursivelyAccumulateSuspenseyCommit","shim","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","detachAlternateSiblings","commitPassiveUnmountOnFiber","recursivelyTraversePassiveUnmountEffects","recursivelyTraverseDisconnectPassiveEffects","resolveUpdatePriority","prepareFreshStack","markRootSuspended","markRootUpdated$1","workInProgressRootInterleavedUpdatedLanes","ensureRootIsScheduled","shouldTimeSlice","renderRootSync","renderRootConcurrent","isRenderConsistentWithExternalStores","root$jscomp$0","workInProgressRootDidAttachPingListener","workInProgressRootDidSkipSuspendedSiblings","globalMostRecentFallbackTime","commitRootWhenReady","workInProgressTransitions","workInProgressRootDidIncludeRecursiveRenderUpdate","scheduleTimeout","workInProgressRootIsPrerendering","subtreeFlags","commitRoot","workInProgressRootPingedLanes","didAttemptEntireTree","resetHooksOnUnwind","unwindInterruptedWork","cancelTimeout","resetWorkInProgressStack","thrownValue","SuspenseyCommitException","getSuspendedThenable","DefaultAsyncDispatcher","pushDispatcher","pushAsyncDispatcher","workInProgressThrownValue","throwAndUnwindWorkLoop","workLoopSync","handleThrow","performUnitOfWork","resource","completeUnitOfWork","isThenableResolved","replaySuspendedUnitOfWork","workLoopConcurrentByScheduler","shouldYield","beginWork","replayFunctionComponent","throwException","unitOfWork","unwindUnitOfWork","completeWork","unwindWork","markRootFinished","scheduleCallback","commitBeforeMutationEffects","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","flushPassiveEffects","pendingEffectsRoot","pendingFinishedWork","requestPaint","pendingEffectsLanes","pendingRecoverableErrors","releaseRootPooledCache","remainingLanes","rootWithNestedUpdates","pendingEffectsRemainingLanes","pendingPassiveTransitions","captureCommitPhaseErrorOnRoot","PossiblyWeakMap","threadIDs","pingSuspendedRoot","boundaryFiber","retryTimedOutBoundary","FiberNode","REACT_PROVIDER_TYPE","mode","createLaneMap","findCurrentFiberUsingSlowPath","fabricGetCurrentEventPriority","FabricDiscretePriority","addEventPoolingTo","Super","instrumentationCallback","isMoveish","isStartish","recordTouchEnd","recordTouchStart","recordTouchMove","trackedTouchCount","ResponderTouchHistoryStore","eventTypes","depthA","tempA","ResponderSyntheticEvent","accumulateTwoPhaseDispatchesSingle$1","accumulateTwoPhaseDispatchesSingleSkipTarget","shouldSetEventType","accumulateDirectDispatchesSingle$1","executeDirectDispatch","accumulate","changeResponder","getInstanceFromNode$1","SyntheticEvent","bubbleDispatchConfig","accumulateDirectDispatchesSingle","accumulateTwoPhaseDispatchesSingle","signal","entangleAsyncAction","prevOnStartTransitionFinish","dispatchReducerAction","startTransition","mountEffect","globalClientIdCounter","refreshCache","updateDeferredValueImpl","updateOptimisticImpl","rerenderReducer","blockNativeResponder","createPortal$1","componentOrHandle","findHostInstance","internalInstanceHandle","roots","nativeOnUncaughtError","nativeOnCaughtError","defaultOnRecoverableError","concurrentRoot","FiberRootNode","updateContainer","containerTag","GlobalPerformanceLogger","initialized","setUpDefaltReactNativeEnvironment","polyfillGlobal","setUpDOM","polyfillObjectProperty","DOMRectList","mark","NativePerformance","Performance","EventCounts","getCurrentTimeStamp","MemoryInfo","ReactNativeStartupTiming","warnNoNativePerformance","PerformanceMark","PerformanceMeasure","computedDuration","DOMException","rawToPerformanceEntry","ENTRY_TYPES_AVAILABLE_FROM_TIMELINE","performanceEntryTypeToRaw","entryType","exception","_name","_code","ERROR_NAME_TO_ERROR_CODE_MAP","cachedEventCounts","PerformanceEventTiming","_processingStart","_processingEnd","_interactionId","getCachedEventCounts","PerformanceEntry","_entryType","_startTime","_duration","RawPerformanceEntryTypeValues","rawToPerformanceEntryType","PerformanceResourceTiming","entry","PerformanceLongTaskTiming","TaskAttributionTiming","EMPTY_ATTRIBUTION","_fetchStart","_requestStart","_connectStart","_connectEnd","_responseStart","_responseEnd","_responseStatus","markOptions","_detail","_detail2","_jsHeapSizeLimit","_totalJSHeapSize","_usedJSHeapSize","_endTime","_initializeRuntimeStart","_initializeRuntimeEnd","_executeJavaScriptBundleEntryPointStart","_executeJavaScriptBundleEntryPointEnd","item","onSettledFulfill","onSettledReject","AggregateError","valuePromise","EMPTYSTRING","ZERO","FALSE","TRUE","UNDEFINED","NULL","ex","iterableToArray","remaining","res","mapAllSettled","values","getAggregateError","hasResolved","rejectionReasons","promises","resolveOnce","rejectionCheck","IS_ERROR","doResolve","handle","Handler","onFulfilled","onRejected","handleResolved","setImmediate","deferred","tryCallOne","LAST_ERROR","getThen","newValue","finale","tryCallTwo","done","promise","safeThen","err","GUIID","clearedImmediates","callReactNativeMicrotasks","emitTimeDriftWarning","freeIdxs","timerIDs","GUID","_getFreeIndex","callbacks","types","_clearIndex","FRAME_DURATION","frameTime","reactNativeMicrotasks","_callTimer","deleteTimer","NativeTiming","_allocateCallback","createTimer","duration","_len2","_len3","requestIdleCallbacks","setSendIdleEvents","timeout","deadline","JSTimers","requestIdleCallbackTimeouts","_freeCallback","timersToCall","_callReactNativeMicrotasksPass","hasEmittedTimeDriftWarning","_srcPrivateSpecs_DEPRECATEDModulesNativeTiming","resolvedPromise","handleError","con","$Symbol","getProto","outerFn","Generator","Context","tryLocsList","defineProperty","makeInvokeMethod","define","prototype","tryCatch","generator","hasOwn","PromiseImpl","invoke","previousPromise","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","maybeInvokeDelegate","innerFn","GenStateSuspendedYield","ContinueSentinel","doneResult","pushTryEntry","iteratorSymbol","iterable","GeneratorFunction","GeneratorFunctionPrototype","toStringTagSymbol","Gp","AsyncIterator","wrap","iter","resetTryEntry","record","finallyEntry","XMLHttpRequestEventTarget","getEventHandlerAttribute","setEventHandlerAttribute","XMLHttpRequest","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","SUPPORTED_RESPONSE_TYPES","responseType","BlobManager","dispatchTrustedEvent","ProgressEvent","responseURL","responseHeaders","total","sub","header","sortedHeaders","RCTNetworking","EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY","getEventHandlerAttributeMap","setEventHandlerAttributeMap","setEventDispatchFlag","getEventPath","setComposedPath","setTarget","eventPath","getStopPropagationFlag","setEventPhase","setCurrentTarget","setStopImmediatePropagationFlag","EVENT_TARGET_GET_THE_PARENT_KEY","getListenersForPhase","eventPhase","setInPassiveListenerFlag","getStopImmediatePropagationFlag","CAPTURING_LISTENERS_KEY","isCapture","BUBBLING_LISTENERS_KEY","EVENT_DISPATCH_FLAG","EventTarget","INTERNAL_DISPATCH_METHOD_KEY","validateCallback","optionsOrUseCapture","getDefaultPassiveValue","AbortSignal","setListenersMap","nonNullListeners","getEventDispatchFlag","setIsTrusted","dispatch","NativeBlobModule","uuidv4","part","acc","encodeURI","BlobRegistry","createBlobCollector","_srcPrivateSpecs_DEPRECATEDModulesNativeBlobModule","addNetworkingHandler","addWebSocketHandler","removeWebSocketHandler","sendOverSocket","createFromParts","release","unregister","has","registry","used","PerformanceLogger","createPerformanceLogger","getCurrentTimestamp","startTime","endTime","timespan","body","binaryToBase64","encodeFilename","fetch","Headers","Request","Response","support","items","iterator","reader","FileReader","fileReaderReady","isDataView","isArrayBufferView","bufferClone","consumed","readBlobAsArrayBuffer","readArrayBufferAsText","readBlobAsText","normalizeMethod","reQueryString","form","decodeURIComponent","xhr","parseHeaders","request","names","normalizeName","normalizeValue","abortXhr","viewClasses","oldValue","iteratorFor","redirectStatuses","WebSocket","_ref$headers","NativeEventEmitter","nextWebSocketId","NativeWebSocketModule","ev","MessageEvent","CloseEvent","RCTDeviceEventEmitter","subscription","_srcPrivateSpecs_DEPRECATEDModulesNativeWebSocketModule","File","NativeFileReaderModule","text","toByteArray","_srcPrivateSpecs_DEPRECATEDModulesNativeFileReaderModule","_URLSearchParams","validateBaseUrl","baseUrl","hashMatch","hostMatch","portMatch","hostnameMatch","matches","passwordMatch","pathMatch","protocolMatch","searchMatch","usernameMatch","_ref13","abortedFlags","signals","controller","createAbortSignal","getSignal","abortSignal","composedPath","stopPropagation","stopImmediatePropagation","preventDefault","initEvent","addEventListener","removeEventListener","dispatchEvent","privateData","retv","defineRedirectDescriptor","set","pd","defineCallDescriptor","isFunc","BaseEvent","wrappers","defineWrapper","getWrapper","listenersMap","getListeners","ATTRIBUTE","defineEventAttributeDescriptor","defineEventAttribute","defineCustomEventTarget","setCancelFlag","optionsIsObj","capture","BUBBLE","CAPTURE","wrapEvent","setPassiveListener","isStopped","Alert","title","buttons","buttonNeutral","buttonNegative","buttonPositive","errorMessage","onAction","logIfNoNativeHook","logToConsole","setWarningHandler","warningHandler","RCTLog","levelsMap","enable","disable","registerBundle","errorObject","_srcPrivateSpecs_DEPRECATEDModulesNativeSegmentFetcher","component","appConfig","registerRunnable","registerComponent","runnables","sections","renderApplication","componentProviderInstrumentationHook","componentProvider","scopedPerformanceLogger","wrapperComponentProvider","rootViewStyleProvider","appKey","getSectionKeys","SceneTracker","coerceDisplayMode","unmountComponentAtNodeAndRemoveContainer","registerCancellableHeadlessTask","taskProviders","taskCancelProviders","NativeHeadlessJsTaskSupport","reason","taskId","HeadlessJsTaskError","retryPosted","setActiveScene","getActiveScene","addActiveSceneChangedListener","_listeners","_activeScene","DisplayMode","_srcPrivateSpecs_DEPRECATEDModulesNativeHeadlessJsTaskSupport","PerformanceLoggerContext","AppContainer","initialProps","React","displayMode","useConcurrentRoot","fabric","Renderer","useContext","_RootTag","rootViewStyle","RootTagContext","getCachedComponentWithDisplayName","MessageChannel","nativeRuntimeScheduler","leftIndex","rightIndex","peek","timerQueue","taskQueue","advanceTimers","isHostCallbackScheduled","requestHostTimeout","handleTimeout","firstTimer","isMessageLoopRunning","schedulePerformWorkUntilDeadline","getCurrentTime","taskIdCounter","isPerformingWork","priorityLevel","isHostTimeoutScheduled","localClearTimeout","taskTimeoutID","currentPriorityLevel","needsPaint","currentTask","shouldYieldToHost","hasMoreWork","localSetTimeout","localPerformance","localDate","initialTime","localSetImmediate","performWorkUntilDeadline","pluginName$jscomp$inline_285","isOrderingDirty$jscomp$inline_284","isomorphicReactPackageVersion","getNodeFromInstance","instanceCache","nativeEventParam","EMPTY_NATIVE_EVENT","getInstanceFromTag","index$12","tag","instanceProps","recursivelyUncacheFiberNode","child$94","allocateTag","ReactNativeFiberHostComponent","finalizeInitialChildren","isHostParent","insertOrAppendPlacementNodeIntoContainer","insertOrAppendPlacementNode","hostParent","hostParentIsContainer","getHostSibling","hostParentFiber","getInstanceFromNode","_receiveRootNodeIDEvent","changedIndices","mountSafeCallback_NOT_REALLY_SAFE","unmountComponentAtNode","requireNativeComponent","uiViewClassName","createReactNativeComponentClass","disabled","importantForAccessibility","NativeTouchable","Text","_ref4","useState","useMemo","usePressability","onPressIn","onPressOut","pressRetentionOffset","onLongPress","onPress","eventHandlers","onResponderGrant","onResponderMove","onResponderRelease","onResponderTerminate","onResponderTerminationRequest","onStartShouldSetResponder","isHighlighted","eventHandlersForText","_disabled","selectionColor","userSelectToSelectableMap","verticalAlignToTextAlignVerticalMap","accessible","_TextNativeComponent","allowFontScaling","ellipsizeMode","NativePressableText","NativePressableVirtualText","useTextPressability","createSquare","useRef","Pressability","useEffect","pressability","config","delay","pageY","pageX","normalizeDelay","DEFAULT_LONG_PRESS_DELAY_MS","delayLongPress","getTouchFromPressEvent","longPressDeactivationDistance","cancelable","onHoverIn","convertPointerEventToMouseEvent","onHoverOut","PressabilityPerformanceEventEmitter","Transitions","isTerminalSignal","isActivationSignal","isPressInSignal","isActiveSignal","SoundManager","minPressDuration","normalizeRect","pressRectOffset","DEFAULT_PRESS_RECT_OFFSETS","NativeSoundManager","_srcPrivateSpecs_DEPRECATEDModulesNativeSoundManager2","_srcPrivateSpecs_DEPRECATEDModulesNativeSoundManager","shouldEmitW3CPointerEvents","shouldPressibilityUseW3CPointerEventsForHover","NativeText","NativeVirtualText","textViewConfig","virtualTextViewConfig","rippleRadius","getBackgroundProp","TouchableNativeFeedback","findHostInstance_DEPRECATED","locationX","locationY","cloneElement","processedColor","useForeground","TouchableOpacity","Animated","Platform","Easing","AnimatedEvent","AnimatedAddition","AnimatedSubtraction","AnimatedDivision","AnimatedMultiplication","AnimatedModulo","AnimatedDiffClamp","AnimatedValueXY","AnimatedColor","parallelImpl","maybeVectorAnim","springImpl","_combineCallbacks","AnimatedNode","configuration","SpringAnimation","AnimatedTracking","timingImpl","TimingAnimation","decayImpl","DecayAnimation","animations","onComplete","isLooping","doneCount","hasEnded","idx","stopTogether","AnimatedValue","sequenceImpl","delayImpl","time","_ref$iterations","_ref$resetBeforeItera","animation","iterations","isFinished","iterationsSoFar","resetBeforeIteration","restart","traverse","argMapping","mapping","detach","platformConfig","eventMappings","NativeAnimatedHelper","viewTag","_this","attachNativeEventImpl","_this2","recMapping","NativeAnimatedNonTurboModule","NativeAnimatedModule","isSingleOpBatching","setWaitingForIdentifier","unsetWaitingForIdentifier","disableQueue","createAnimatedNode","updateAnimatedNodeConfig","startListeningToAnimatedNodeValue","stopListeningToAnimatedNodeValue","connectAnimatedNodes","disconnectAnimatedNodes","stopAnimation","setAnimatedNodeValue","setAnimatedNodeOffset","flattenAnimatedNodeOffset","extractAnimatedNodeOffset","connectAnimatedNodeToView","disconnectAnimatedNodeFromView","restoreDefaultValues","dropAnimatedNode","addAnimatedEventToView","removeAnimatedEventFromView","methodNames","nativeOperations","singleOpQueue","operationID","shouldSignalBatch","clearImmediate","flushQueueImmediate","API","methodName","queueOperations","globalEventEmitterGetValueListener","globalEventEmitterAnimationFinishedListener","params","eventListenerGetValueCallbacks","eventListenerAnimationFinishedCallbacks","__nativeAnimatedNodeTagCount","__nativeAnimationIdCount","_warnedMissingNativeAnimated","degrees","NativeOperations","waitingForQueuedOperations","ensureGlobalEventEmitterListeners","nativeEventEmitter","_srcPrivateSpecs_DEPRECATEDModulesNativeAnimatedModule","_srcPrivateSpecs_DEPRECATEDModulesNativeAnimatedTurboModule","leaf","findAnimatedStyles","leaves","NativeAnimatedAPI","_updateSubscription","nativeTag","_ensureUpdateSubscriptionExists","_ensureUpdateSubscriptionExists2","_listenerCount","_executeAsAnimatedBatch","AnimatedInterpolation","InteractionManager","flushValue","runAfterInteractions","createInteractionHandle","clearInteractionHandle","setDeadline","_nextUpdateHandle","_deadline","_processUpdate","_interactionSet","_addInteractionSet","_deleteInteractionSet","_emitter","_taskQueue","_scheduleUpdate","task","tasks","_inc","TaskQueue","tasksToCancel","stackItem","addListener","cancel","immediateID","findRange","inputRange","interpolate","range","outputRange","easing","extrapolateLeft","extrapolateRight","inputMax","outputMax","numericComponentRegex","components","mapStringToNumericComponents","isColor","createNumericInterpolation","numericComponents","interpolations","interpolation","createStringInterpolation","outputType","isSupportedInterpolationParam","isSupportedStyleProp","isSupportedTransformProp","SUPPORTED_INTERPOLATION_PARAMS","SUPPORTED_STYLES","SUPPORTED_TRANSFORMS","SUPPORTED_COLOR_STYLES","step0","step1","linear","ease","quad","cubic","poly","sin","circle","exp","elastic","back","bounce","bezier","in","out","inOut","EasingStatic","bounciness","SUBDIVISION_MAX_ITERATIONS","aB","aA","calcBezier","SUBDIVISION_PRECISION","NEWTON_ITERATIONS","getSlope","currentX","float32ArraySupported","kSplineTableSize","kSampleStepSize","sampleValues","aX","currentSample","dist","intervalStart","mX1","mX2","NEWTON_MIN_SLOPE","binarySubdivide","newtonRaphsonIterate","mY1","mY2","getTForX","AnimatedWithChildren","_assertNativeAnimatedModule","_uniqueId","valueIn","requestAnimationFrame","Animation","_nativeID","_onEnd","_useNativeDriver","AnimatedProps","startNativeAnimationNextId","animatedValue","AnimatedObject","AnimatedStyle","_disconnectAnimatedView","_disconnectAnimatedView2","_connectAnimatedView","_connectAnimatedView2","_callback","_nodeKeys","_nodes","_props","_target","createAnimatedProps","maybeNode","flatStaticStyle","_hasOwnProp","MAX_DEPTH","isPlainObject","flatAnimatedNodes","depth","mapAnimatedNodes","nodes","AnimatedTransform","_originalStyleForWeb","_style","createAnimatedStyle","mapFunction","propertyValue","mapTransforms","animatedNode","SpringConfig","previousAnimation","zeta","omega0","v0","x0","envelope","omega1","isRgbaValue","processColorObject","defaultColor","isRgbaAnimatedValue","shouldUpdateNodeConfig","oValue","stiffnessFromOrigamiValue","dampingFromOrigamiValue","speed","endValue","_easeInOut","easeInOut","unstable_createAnimatedComponentWithAllowlist","createAnimatedPropsHook","Component","useAnimatedProps","useMergeRefs","style","passthroughStyle","createAnimatedComponent","createAnimatedPropsMemoHook","useReducer","useAnimatedPropsMemo","useAnimatedPropsLifecycleWithPrevNodeRef","useAnimatedPropsLifecycleWithCleanupInMicrotask","useCallback","useRefEffect","reduceAnimatedProps","allowlist","onUpdateRef","drivenAnimationEndedListener","getEventTarget","addListenersToPropsValue","isFabricInstance","useNativePropsInFabric","scheduleUpdate","timerRef","eventTuples","animatedValueListeners","propValue","addAnimatedValuesListenersToProps","useInsertionEffect","isUnmountingRef","prevNodeRef","isMounted","isFabricPublicInstance","maybeInstance","isLegacyFabricInstance","cleanupRef","effect","areCompositeKeysEqual","createCompositeKeyForProps","prevRef","compositeKey","useAnimatedPropsMemo_ref","useAnimatedPropsMemo_state","createCompositeKeyForObject","createCompositeKeyForArray","flatStyle","areCompositeKeyComponentsEqual","prevComponent","refs","cleanups","stop","reset","_startNativeLoop","_isUsingNativeDriver","inAnimationCallback","emptyAnimation","mockAnimationStart","anyValue","mockCompositeAnimation","removeClippedSubviews","numColumns","FlatList","memoizeOne","numColumnsOrDefault","kk","isArrayLike","defaultKeyExtractor","keyExtractor","ListItemComponent","renderItem","cols","render","columnWrapperStyle","prevProps","onViewableItemsChanged","viewableItems","changed","_this$props$strictMod","strictMode","VirtualizedList","removeClippedSubviewsOrDefault","offsetIndex","itemCount","right","left","mid","_scrollMetrics$zoomSc","visibleBegin","windowSize","velocity","visibleEnd","listMetrics","elementsThatOverlapOffsets","overscanFirst","first","overscanLast","last","newRangeCount","newCellCount","threshold","childList","isVertical","ListMetricsAggregator","ChildListCollection","cellKey","metrics","FillRateHelper","ViewabilityHelper","_reactNative","timestamp","dOffset","infoLog","heightOfCellsBeforeFocused","heightOfCellsAfterFocused","getItemCount","viewPosition","viewOffset","horizontal","windowSizeOrDefault","onEndReachedThresholdOrDefault","contentLength","computeWindowedRenderLimits","maxToRenderPerBatchOrDefault","newCellsAroundViewport","cellsAroundViewport","onEndReachedThreshold","distanceFromEnd","childIdx","ListHeaderComponent","getItem","stickyIndicesFromProps","stickyOffset","stickyHeaderIndices","cells","getItemLayout","debug","CellRenderer","CellRendererComponent","ItemSeparatorComponent","inversionStyle","prevCellKey","shouldListenForLayout","nestedContext","horizontalOrDefault","_VirtualizedListContextJs","renderRegions","lastRegion","section","isLastSpacer","constrainToMeasured","clamp","lastMetrics","_usedIndexForKey","_keylessItemComponentName","frameLast","windowTop","windowLen","visTop","visLen","normalize","I18nManager","onStartReachedThreshold","distanceFromStart","onStartReachedThresholdOrDefault","distTop","getScrollingThreshold","distBottom","CellRenderMask","additionalRegions","initialNumToRenderOrDefault","firstCellIndex","cellIdx","itemIdx","prevFirstVisibleItemKey","newFirstVisibleItemKey","firstVisibleItemIndex","maintainVisibleContentPositionAdjustment","lastPossibleCellIndex","numCells","newMainRegion","lastIntersectIdx","other","region","firstIdx","middleIdx","Info","_sampleRate","_minSampleCount","firstFrame","lastFrame","blankTop","pixels_blank","highestMeasuredCellIndex","highestMeasuredCellFrame","remainder","frameMetrics","referenceContentLength","StateSafePureComponent","partialState","that","_isEntirelyVisible","_getPixelsVisible","viewAreaMode","pixels","percent","top","bottom","viewAreaCoveragePercentThreshold","viewablePercentThreshold","itemVisiblePercentThreshold","renderRange","_isViewable","viewableIndices","createViewToken","highlight","unhighlight","updateProps","select","onCellLayout","VirtualizedListContext","currContext","initialNumToRender","maxToRenderPerBatch","LeadingSeparatorComponent","SeparatorComponent","leadingSeparator","inverted","RenderSeparator","setSelfHighlightCallback","setSeparatorHighlighted","setSelfUpdatePropsCallback","setSeparatorProps","setLeadingSeparatorHighlighted","updateHighlightFor","separatorProps","updatePropsFor","leadingSeparatorProps","setLeadingSeparatorProps","VirtualizedSectionList","viewable","listItemCount","keyExtractorWithNullableIndex","ItemWithSeparator","infoIndex","renderSectionFooter","renderSectionHeader","itemIndex","safeIsNaN","isEqual","areInputsEqual","_i","calledOnce","lastThis","lastArgs","resultFn","lastResult","injectedImageComponentDecorator","imageAttachedCallbacks","imageAttachedCallback","pendingCleanupCallbacks","cb","imageSrc","shouldUseSrcForDefaultScale","_imageSrc$split2$","sourceList","width","height","objectFit","objectFitMap","AnimatedScrollViewWithoutInvertedRefreshControl","AnimatedScrollViewWithInvertedRefreshControl","ScrollView","splitLayoutProps","RefreshControl","AndroidSwipeRefreshLayoutCommands","AndroidSwipeRefreshLayoutNativeComponent","_srcPrivateSpecs_DEPRECATEDComponentsAndroidSwipeRefreshLayoutNativeComponent2","_srcPrivateSpecs_DEPRECATEDComponentsAndroidSwipeRefreshLayoutNativeComponent","setNativeRefreshing","_srcPrivateSpecs_DEPRECATEDComponentsPullToRefreshViewNativeComponent","memoize","forwardedRef","nativeInstance","mutator","createRefForwarder","AnimatedImplementation","animated","additionalOffset","scrollTextInputIntoVisibleRect","keyboardScreenY","FrameRateLogger","dismissKeyboard","timeSinceLastMomentumScrollEnd","keyboardShouldPersistTaps","currentlyFocusedInput","hasFocusedTextInput","Keyboard","newContentInsetTop","child","indexOfIndex","previousHeader","HScrollViewNativeComponent","VScrollViewNativeComponent","VScrollContentViewNativeComponent","HScrollContentViewNativeComponent","ScrollViewContext","HORIZONTAL","hasStickyHeaders","processDecelerationRate","ScrollViewStickyHeader","children","beginScroll","endScroll","NativeFrameRateLogger","_srcPrivateSpecs_DEPRECATEDModulesNativeFrameRateLogger","KeyboardImpl","_ev","LayoutAnimation","checkConfig","onAnimationComplete","onAnimationDidFail","animationCompletionHasRun","raceWithAnimationId","onAnimationDidEnd","_srcPrivateSpecs_DEPRECATEDModulesNativeKeyboardObserver2","_srcPrivateSpecs_DEPRECATEDModulesNativeKeyboardObserver","VERTICAL","isFabric","translateY","setNextHeaderLayoutY","setIsFabric","hiddenOnScroll","scrollAnimatedValue","layoutY","layoutHeight","haveReceivedInitialZeroTranslateY","translateYDebounceTimer","setTranslateY","measured","nextHeaderLayoutY","collisionPoint","scrollViewHeight","stickStartPoint","animatedValueListener","setAnimatedTranslateY","animatedListenerId","newAnimatedTranslateY","setLayoutY","setLayoutHeight","setMeasured","SectionList","listRef","_stickySectionHeadersEnabled","ImageBackground","Image","useWindowDimensions","setDimensions","_srcPrivateSpecs_DEPRECATEDComponentsRCTInputAccessoryViewNativeComponent2","_srcPrivateSpecs_DEPRECATEDComponentsRCTInputAccessoryViewNativeComponent","KeyboardAvoidingView","createRef","_relativeKeyboardHeight2","keyboardFrame","_this$props$enabled","isBoldTextEnabled","isGrayscaleEnabled","isInvertColorsEnabled","isReduceMotionEnabled","isHighTextContrastEnabled","isDarkerSystemColorsEnabled","prefersCrossFadeTransitions","isReduceTransparencyEnabled","isScreenReaderEnabled","isAccessibilityServiceEnabled","setAccessibilityFocus","announceForAccessibility","announceForAccessibilityWithOptions","getRecommendedTimeoutMillis","NativeAccessibilityInfoAndroid","EventNames","deviceEventName","legacySendAccessibilityEvent","originalTimeout","_srcPrivateSpecs_DEPRECATEDModulesNativeAccessibilityInfo2","_srcPrivateSpecs_DEPRECATEDModulesNativeAccessibilityInfo","isFabricUIManagerInstalled","LayoutConformanceNativeComponent","Modal","uniqueModalIdentifier","RCTModalHostView","onDismiss","VirtualizedListContextResetter","_srcPrivateSpecs_DEPRECATEDModulesNativeModalManager","_srcPrivateSpecs_DEPRECATEDComponentsRCTModalHostViewNativeComponent","shouldAllow","shouldForce","flipStyles","i18nConstants","NativeI18nManager","_srcPrivateSpecs_DEPRECATEDModulesNativeI18nManager","useAndroidRippleForView","usePressState","testOnly_pressed","restProps","focusable","hitSlop","android_disableSound","delayHoverIn","delayHoverOut","unstable_pressDelay","onBlur","onFocus","onPressMove","android_rippleConfig","shouldUpdatePressed","setPressed","pressed","rippleConfig","borderless","radius","foreground","viewRef","NativeStatusBarManagerAndroid","StatusBar","createStackEntry","mergePropsStack","_srcPrivateSpecs_DEPRECATEDModulesNativeStatusBarManagerAndroid2","_srcPrivateSpecs_DEPRECATEDModulesNativeStatusBarManagerAndroid","setColor","setTranslucent","setStyle","setHidden","_srcPrivateSpecs_DEPRECATEDModulesNativeStatusBarManagerIOS2","_srcPrivateSpecs_DEPRECATEDModulesNativeStatusBarManagerIOS","getHeight","setNetworkActivityIndicatorVisible","removeListeners","returnsFalse","returnsTrue","AndroidSwitchNativeComponent","onChange","onValueChange","setNative","nativeSwitchRef","AndroidSwitchCommands","_srcPrivateSpecs_DEPRECATEDComponentsAndroidSwitchNativeComponent2","_srcPrivateSpecs_DEPRECATEDComponentsAndroidSwitchNativeComponent","setNativeValue","_srcPrivateSpecs_DEPRECATEDComponentsSwitchNativeComponent2","_srcPrivateSpecs_DEPRECATEDComponentsSwitchNativeComponent","useLayoutEffect","lastNativeText","setLastNativeText","selection","lastNativeSelection","setLastNativeSelection","mostRecentEventCount","inputRef","viewCommands","propsSelection","useTextInputStateSynchronization","selectionHandleColor","cursorColor","AndroidTextInput","inputRefValue","clear","isFocused","getNativeRef","setSelection","setMostRecentEventCount","editable","_ref2$allowFontScalin","_ref2$rejectResponder","_ref2$underlineColorA","InternalTextInput","readOnly","enterKeyHint","enterKeyHintToReturnTypeMap","inputMode","inputModeToKeyboardTypeMap","autoCompleteWebToAutoCompleteAndroidMap","textContentType","touches","changedTouches","hasTouches","States","Signals","longDelayMS","extractSingleTouch","positionOnActivate","Position","BoundingDimensions","aY","deltaX","deltaY","curState","IsActive","IsPressingIn","IsLongPressingIn","pooler","DEFAULT_POOLER","standardReleaser","TouchableHighlightImpl","PASSTHROUGH_PROPS","rejectResponderTermination","delayPressIn","delayPressOut","touchSoundDisabled","_onBlur","_onFocus","TouchableWithoutFeedback","NotHidden","initialState","VirtualViewNativeComponent","initialHidden","VirtualViewRenderState","VirtualViewMode","onModeChange","setState","emitModeChange","createVirtualView","_logs","showActionSheetWithOptions","showShareActionSheetWithOptions","dismissActionSheet","RCTActionSheetManager","processedTintColor","processedCancelButtonTintColor","processedDisabledButtonTintColor","_srcPrivateSpecs_DEPRECATEDModulesNativeActionSheetManager","lazyState","newAppearance","toColorScheme","getState","NativeAppearance","colorScheme","AppStateImpl","NativeAppState","appStateData","logError","eventUpdated","emitter","hasFocus","changeHandler","focusOrBlurHandler","_srcPrivateSpecs_DEPRECATEDModulesNativeAppState","getString","setString","NativeClipboard","_srcPrivateSpecs_DEPRECATEDModulesNativeClipboard2","_srcPrivateSpecs_DEPRECATEDModulesNativeClipboard","show","addMenuItem","reload","onFastRefresh","_srcPrivateSpecs_DEPRECATEDModulesNativeDevSettings","LinkingImpl","NativeIntentAndroid","_srcPrivateSpecs_DEPRECATEDModulesNativeIntentAndroid","_srcPrivateSpecs_DEPRECATEDModulesNativeLinkingManager","uninstall","isInstalled","ignoreLogs","ignoreAllLogs","clearAllLogs","addLog","addConsoleLog","addException","_srcPrivateSpecs_DEPRECATEDModulesNativeDialogManagerAndroid","_initializeGestureState","_updateGestureStateOnMove","currentCentroidXOfTouchesChangedAfter","currentCentroidYOfTouchesChangedAfter","previousCentroidXOfTouchesChangedAfter","previousCentroidYOfTouchesChangedAfter","gestureState","nextDX","nextDY","onMoveShouldSetResponder","onStartShouldSetResponderCapture","onMoveShouldSetResponderCapture","onResponderReject","onResponderStart","onResponderEnd","getInteractionHandle","PanResponder","interactionState","currentCentroidX","currentCentroidY","oneTouchData","ofCurrent","TouchHistoryMath","PermissionsAndroidImpl","PERMISSIONS","PERMISSION_REQUEST_RESULT","NativePermissionsAndroid","_requestPermission","response","_request","NativeDialogManagerAndroid","rationale","permission","_srcPrivateSpecs_DEPRECATEDModulesNativePermissionsAndroid","PushNotificationIOS","notifKey","nativeNotif","NativePushNotificationManagerIOS","PushNotificationEmitter","registrationInfo","notifData","_notifHandlers","handler","notification","_srcPrivateSpecs_DEPRECATEDModulesNativePushNotificationManagerIOS","Share","content","NativeShareModule","_srcPrivateSpecs_DEPRECATEDModulesNativeShareModule","useAnimatedValue","onStoreChange","useSyncExternalStore","subscribe","getColorScheme","useColorScheme","addChangeListener","appearanceSubscription","_vibrating","_id","NativeVibration","_default_vibration_length","vibrateScheduler","pattern","nextIndex","_srcPrivateSpecs_DEPRECATEDModulesNativeVibration","_Asset","_AssetHooks","Asset","ANDROID_EMBEDDED_URL_BASE_RESOURCE","_ref$hash","getLocalAssetUri","_downloadAsync2","downloadAsync","getAssetByID","IS_ENV_WITH_LOCAL_ASSETS","AssetUris","extension","selectAssetSource","_EventEmitter","_NativeModule","_SharedObject","_SharedRef","_Platform2","_uuid2","_NativeViewManagerAdapter","_errorsCodedError","_errorsUnavailabilityError","_LegacyEventEmitter","_NativeModulesProxy2","_requireNativeModule","_registerWebModule","_TypedArraysTypes","_PermissionsInterface","_PermissionsHook","_Refs","_hooksUseReleasingSharedObject","_reload","requireOptionalNativeModule","ensureNativeModulesAreInstalled","NativeModulesProxy","createTurboModuleToExpoProxy","TurboModuleRegistry","ExpoNativeProxy","moduleName","NativeProxy","modulesConstantsKey","exportedMethodsKey","methodInfo","LegacyNativeProxy","argumentsCount","expoModuleProxy","turboModule","isDOMAvailable","canUseEventListeners","canUseViewport","isAsyncDebugging","CodedError","SharedObject","SharedRef","bytesToUuid","byteToHex","Uuidv5Namespace","appIdentifier","viewName","componentRegistryGet","nativeViewName","nativeComponentsCache","requireCachedNativeComponent","PureComponent","requireNativeModule","NativeComponent","ReactNativeComponent","PermissionStatus","_ref$get","_ref$request","permissionOptions","setStatus","requestPermission","getPermission","usePermission","objectRef","previousDependencies","dependencies","isFastRefresh","_reloadAppAsync","UnavailabilityError","LegacyEventEmitter","meta","getManifest2","manifest2","resolveUri","manifestBaseUrl","_reactNativeLibrariesImageAssetSourceResolver","expoUpdatesIsInstalledAndEnabled","NativeExpoGoModule","isRunningInExpoGo","Constants","ExpoUpdates","rawUpdatesManifest","ExponentConstants","appOwnership","isExpoUpdatesManifest","rawManifest","nativeConstants","ExecutionEnvironment","AppOwnership","UserInterfaceIdiom","getManifest","isEmbeddedManifest","maybeManifest","rawAppConfig","getBasename","pathname","getFilename","dotIndex","urlObject","_downloadAsync","AssetModule","img","localAssets","localAssetsKey","legacyLocalAssetsKey","_reactNativeLibrariesImageResolveAssetSource","moduleIds","setAssets","setError","developmentBuildMessage","customizeModuleIsMissingMessage","customizeUnavailableMessage","customizeError","isErrorHandlingEnabled","originalHandler","errorHandler","isTodoStatus","MissionsDashboard","statusMessage","navigation","brandColor","AppStack","MissionDetailScreen","WorkflowInterventionScreen","raw","pickString","urlObj","queryUrl","mobileConfig","screenProps","_screenProps","_reactNativeSafeAreaContext","_reactNavigationNative","navigationRef","RootStack","renderOnboardingScreen","renderLoginScreen","renderAppNavigator","_expoStatusBar","setCrashContext","configuredBaseUrl","registerSessionRevokedHandler","setUser","setInterventions","setPassword","setStatusMessage","registerBillingWallHandler","setLoadingInterventions","setInterventionsError","interventionsApi","nowYear","getInterventionsSnapshot","reloadIfLogged","Notifications","userRef","loadInterventionsRef","navigateToPlanning","pendingPlanningDayRef","receivedSub","responseSub","user","day","timer","setOnboardingError","setValidatingInstance","setEnvironmentBaseUrl","fetchMobileConfig","saveMobileConfig","upsertInstance","email","setSavedInstances","setConfiguredBaseUrl","setMobileConfig","setInstanceUrl","clearEnvironmentConfig","clearMobileConfig","saveInviteToken","setInviteToken","applyEnvironmentFromValue","instanceUrl","_ref6","parseOnboardingPayload","setEmail","configFromInstance","_ref8","removeInstance","_ref9","getPendingQueueItems","isOnline","clearSession","clearApiAuthTokens","clearAllPrecheckDrafts","clearOfflineCredential","clearLocalDatabase","_ref0","password","setSubmitting","authApi","inviteToken","saveSession","setApiAuthTokens","offlineTokenlessRef","saveOfflineCredential","getLocalDbOwnerId","setLocalDbOwnerId","loadInterventions","syncPushRegistration","prefetchTodoWorkflows","isApiClientError","verifyOfflineCredential","readSession","session","hasTokens","_ref10","_ref11","_ref12","onlineState","setSyncingQueue","syncOnReconnect","_ref14","setIsOnline","triggerReconnectSync","isNetworkOnline","_ref15","initializeLocalDatabase","registerBackgroundNotificationTask","subscribeNetworkChanges","handleNetworkChange","AppState","handleAppStateChange","initializeApiClientAuth","getEnvironmentBaseUrl","getInviteToken","listInstances","setBooting","getMobileConfigForBaseUrl","activeEntry","meError","configuredUrl","_ref16","unsubscribeNetwork","appStateSub","countTodo","interventions","HomeHub","appDisplayName","logoUrl","onChangeInstance","onLogout","MissionsScreen","loadingInterventions","interventionsError","syncingQueue","activeMissionsTab","setActiveMissionsTab","onRefreshInterventions","StatsScreen","MyInfoScreen","refreshUser","SupportScreen","BottlesScreen","PlanningScreen","AppNavigatorStack","renderHome","renderMissions","renderStats","renderMyInfo","renderSupport","renderBottles","renderPlanning","OnboardingScreen","onboardingError","validatingInstance","onSaveEnvironment","onScanPayload","savedInstances","onSelectSavedInstance","onRemoveSavedInstance","LoginScreen","submitting","onLogin","ErrorBoundary","UpdateGate","AppInner","App","_NativeStatusBarWrapper","_types","_ref$translucent","hideTransitionAnimation","styleToBarStyle","NativeStatusBar","Appearance","resolvedStyle","_getDevicePushTokenAsync2","_unregisterForNotificationsAsync2","_getExpoPushTokenAsync2","_getPresentedNotificationsAsync2","_dismissNotificationAsync2","_dismissAllNotificationsAsync2","_getNotificationChannelsAsync2","_getNotificationChannelAsync2","_setNotificationChannelAsync2","_deleteNotificationChannelAsync2","_getNotificationChannelGroupsAsync2","_getNotificationChannelGroupAsync2","_setNotificationChannelGroupAsync2","_deleteNotificationChannelGroupAsync2","_getBadgeCountAsync2","_setBadgeCountAsync2","_getAllScheduledNotificationsAsync2","_scheduleNotificationAsync2","_cancelScheduledNotificationAsync2","_cancelAllScheduledNotificationsAsync2","_getNotificationCategoriesAsync2","_setNotificationCategoryAsync2","_deleteNotificationCategoryAsync2","_getNextTriggerDateAsync2","_useLastNotificationResponse2","_DevicePushTokenAutoRegistrationFx","_registerTaskAsync2","_unregisterTaskAsync2","_TokenEmitter","_NotificationsEmitter","_NotificationsHandler","_NotificationPermissions","_NotificationChannelGroupManagerTypes","_NotificationChannelManagerTypes","_NotificationPermissionsTypes","_NotificationsTypes","_TokensTypes","_errorsExpoErrorManager","_launchRegisterRootComponent2","_environmentExpoGo","_expoModulesCore","_hooksUseEvent","useEventListener","setEvent","listenerRef","_getDevicePushTokenAsync","PushTokenManager","warnOfExpoGoPushUsage","nativeTokenPromise","_unregisterForNotificationsAsync","_getExpoPushTokenAsync","getDevicePushTokenAsync","getDeviceIdAsync","Application","getTypeOfToken","shouldUseDevelopmentNotificationService","productionBaseUrl","getDeviceToken","getExpoPushToken","parseResponse","setAutoServerRegistrationEnabledAsync","_parseResponse","_getDeviceIdAsync","ServerRegistrationModule","_shouldUseDevelopmentNotificationService","ExpoApplication","_getInstallReferrerAsync","_getIosIdForVendorAsync","_getIosApplicationReleaseTypeAsync","_getIosPushNotificationServiceEnvironmentAsync","_getInstallationTimeAsync","_getLastUpdateTimeAsync","nativeApplicationVersion","nativeBuildVersion","applicationName","applicationId","ApplicationReleaseType","_updatePushTokenAsync","hasDeviceTokenChangedAsync","lastAbortController","updateDevicePushTokenAsyncWithSignal","_setAutoServerRegistrationEnabledAsync","_handlePersistedRegistrationInfoAsync","updatePushTokenAsync","newTokenEventName","_getLastRegisteredTokenDataAsync","parsed","LAST_TOKEN_KEY","_setLastRegisteredTokenDataAsync","_hasDeviceTokenChangedAsync","getLastRegisteredTokenDataAsync","lastTokenData","REGISTRATION_TTL_MS","development","_updateDevicePushTokenAsync","retry","computeNextBackoffInterval","shouldTry","updateDevicePushTokenUrl","setLastRegisteredTokenDataAsync","nextBackoffInterval","_ref$multiplier","_ref$randomizationFac","_ref$minBackoff","_ref$maxBackoff","assert_1","initialBackoff","previousRetryCount","multiplier","randomizationFactor","minBackoff","nextBackoff","mod","hint","AssertionError","warned","operator","stackStartFn","fail","innerOk","ok","isDeepEqual","lazyLoadComparison","isDeepStrictEqual","innerFail","notDeepStrictEqual","ERR_MISSING_ARGS","Comparison","actual","ERR_INVALID_ARG_VALUE","ERR_INVALID_ARG_TYPE","RegExpPrototypeTest","compareExceptionKey","NO_EXCEPTION_SENTINEL","checkIsPromise","promiseFn","ERR_INVALID_RETURN_VALUE","resultPromise","ERR_AMBIGUOUS_ARGUMENT","expectedException","fnName","equal","notEqual","deepEqual","notDeepEqual","deepStrictEqual","strictEqual","notStrictEqual","expectsError","throws","getActual","waitForActual","rejects","_len4","expectsNoError","doesNotThrow","_len5","doesNotReject","ifError","internalMatch","doesNotMatch","superClass","_isNativeReflectConstruct","Derived","hasNativeReflectConstruct","_possibleConstructorReturn","_assertThisInitialized","codes","_createSuper","NodeError","_super","getMessage","code","this_len","startsWith","endsWith","includes","oneOf","util","stylizeWithColor","pad","months","getOwnPropertyDescriptors","original","maybeCb","callbackifyOnRejected","formatRegExp","debugs","debugEnvRegex","pid","kCustomPromisifiedSymbol","promiseReject","promiseResolve","isTypedArray","whichTypedArray","ObjectToString","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isDataViewToString","isSharedArrayBufferToString","SharedArrayBufferCopy","checkBoxedPrimitive","numberValue","stringValue","booleanValue","BigIntSupported","bigIntValue","SymbolSupported","symbolValue","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isSharedArrayBuffer","supportsStandardArguments","hasToStringTag","$toString","isStandardArguments","hasSymbols","GetIntrinsic","$indexOf","callBindBasic","$gOPD","Atomics","BigInt64Array","BigUint64Array","decodeURI","eval","Float16Array","FinalizationRegistry","Proxy","WeakRef","$Function","$TypeError","throwTypeError","doEval","getEvalledConstructor","INTRINSICS","$strSlice","$replace","rePropName","$SyntaxError","quote","number","reEscapeChar","LEGACY_ALIASES","needsEval","$exec","stringToPath","getBaseIntrinsic","$spliceApply","$concat","EvalError","SyntaxError","URIError","$isNaN","origSymbol","hasSymbolSham","reflectGetProto","originalGetProto","getDunderProto","$Object","desc","$getPrototypeOf","$actualApply","bind","$call","toStr","slicy","max","joiny","ERROR_MESSAGE","bound","concatty","$reflectApply","isFnRegex","fnToStr","getGeneratorFunction","isRegex","regex","isRegexMarker","gOPD","badStringifier","regexClass","cached","callBound","callBind","forEach","found","$slice","typedArrays","trySlices","tryTypedArrays","isCallable","forEachObject","forEachString","forEachArray","document","reflectApply","isCallableMarker","constructorRegex","isES6ClassFn","isIE68","ddaClass","ddaClass2","ddaClass3","objectClass","isDDA","badArrayLike","tryFunctionObject","fnClass","genClass","possibleNames","setFunctionLength","adjustedLength","$floor","hasDescriptors","gopd","$defineProperty","nonConfigurable","nonEnumerable","nonWritable","actualApply","$apply","ownKeys","_defineProperty","_isNativeFunction","_cache","_construct","Class","maxCount","source","inspectValue","actualLines","kMaxShortLength","inputLength","expectedLines","white","kReadableOperator","actualLine","maxLines","skipped","copyError","_res","createErrDiff","_objectSpread","thrower","lacksProperEnumerationOrder","assignHasPendingExceptions","objectKeys","originalGetSymbols","$propIsEnumerable","$push","origKeys","keysShim","isArgs","originalKeys","slice","hasAutomationEqualityBug","equalsConstructorPrototype","hasProtoEnumBug","hasDontEnumBug","equalsConstructorPrototypeIfNotBuggy","dontEnums","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","isNonIndex","objectGetOwnPropertySymbols","regexFlagsSupported","buf1","val1","isMap","isSet","isNativeError","isAnyArrayBuffer","isBoxedPrimitive","isEqualBoxedPrimitive","areEqualArrayBuffers","keyCheck","kIsMap","kIsSet","isFloat32Array","isFloat64Array","areSimilarFloatArrays","areSimilarTypedArrays","getOwnNonIndexProperties","kNoIterator","areSimilarRegExps","kIsArray","propertyIsEnumerable","getEnumerables","val2MemoA","objEquiv","arrayFromSet","innerDeepEqual","findLooseMatchingPrimitives","setMightHaveLoosePrim","setHasEqualElement","arrayFromMap","mapMightHaveLoosePrim","_i2","mapHasEqualEntry","mapEquiv","setEquiv","kLoose","kStrict","supportsDescriptors","defineDataProperty","concat","getPolyfill","polyfill","_getPresentedNotificationsAsync","NotificationPresenter","mapNotification","mapNotificationResponse","mapNotificationRequest","mapNotificationContent","didWarn","dataString","_dismissNotificationAsync","_dismissAllNotificationsAsync","_getBadgeCountAsync","BadgeModule","nativeModule","_setBadgeCountAsync","_getAllScheduledNotificationsAsync","NotificationScheduler","_scheduleNotificationAsync","uuid","parseTrigger","hasValidTriggerObject","parseDateTrigger","parseCalendarTrigger","parseDailyTrigger","parseWeeklyTrigger","parseMonthlyTrigger","parseYearlyTrigger","parseTimeIntervalTrigger","userFacingTrigger","SchedulableTriggerInputTypes","trigger","toTimestamp","date","validateDateComponentsInTrigger","placeholderDateComponentValue","anyTriggerType","daysInMonth","year","month","AndroidNotificationPriority","_cancelScheduledNotificationAsync","_cancelAllScheduledNotificationsAsync","_getNotificationCategoriesAsync","NotificationCategoriesModule","_setNotificationCategoryAsync","_deleteNotificationCategoryAsync","_getNextTriggerDateAsync","determineNextResponse","getLastNotificationResponse","setLastNotificationResponse","prevResponse","addNotificationResponseReceivedListener","addNotificationResponseClearedListener","clearResponseSubscription","useLastNotificationResponse","didReceiveNotificationEventName","didDropNotificationsEventName","didReceiveNotificationResponseEventName","_getLastNotificationResponseAsync","NotificationsEmitterModule","_clearLastNotificationResponseAsync","clearLastNotificationResponse","didClearNotificationResponseEventName","DEFAULT_ACTION_IDENTIFIER","_registerTaskAsync","BackgroundNotificationTasksModule","_unregisterTaskAsync","handleSubscription","handleTimeoutSubscription","notificationEmitter","handleNotificationEventName","handleNotificationTimeoutEventName","NotificationsHandlerModule","NotificationTimeoutError","_getPermissionsAsync","NotificationPermissionsModule","_requestPermissionsAsync","permissions","AndroidNotificationVisibility","AndroidAudioContentType","AndroidImportance","AndroidAudioUsage","IosAlertStyle","IosAllowsPreviews","IosAuthorizationStatus","_createStaticNavigationJs","_LinkJs","_LinkingContextJs","_LocaleDirContextJs","_NavigationContainerJs","_ServerContainerJs","_themingDarkThemeJs","_themingDefaultThemeJs","_UnhandledLinkingContextJs","_useLinkBuilderJs","_useLinkPropsJs","_useLinkToJs","_useLocaleJs","_useRoutePathJs","_useScrollToTopJs","_typesJs","_reactNavigationCore","_jsx","NavigationContainer","createPathConfigForStaticNavigation","tree","linking","linkingConfig","_BaseNavigationContainerJs","_createNavigationContainerRefJs","_createNavigatorFactoryJs","_CurrentRenderContextJs","_findFocusedRouteJs","_getActionFromStateJs","_getFocusedRouteNameFromRouteJs","_getPathFromStateJs","_getStateFromPathJs","_NavigationContainerRefContextJs","_NavigationContextJs","_NavigationHelpersContextJs","_NavigationIndependentTreeJs","_NavigationMetaContextJs","_NavigationProviderJs","_PreventRemoveContextJs","_PreventRemoveProviderJs","_StaticNavigationJs","_themingThemeContextJs","_themingThemeProviderJs","_themingUseThemeJs","_useFocusEffectJs","_useIsFocusedJs","_useNavigationJs","_useNavigationBuilderJs","_useNavigationContainerRefJs","_useNavigationIndependentTreeJs","_useNavigationStateJs","_usePreventRemoveJs","_usePreventRemoveContextJs","_useRouteJs","_useStateForPathJs","_validatePathConfigJs","_reactNavigationRouters","BaseNavigationContainer","route","getPartialState","_ref$navigationInChil","NavigationStateContext","useNavigationIndependentTree","useSyncState","useChildListeners","useKeyedChildListeners","useLatestCallback","useEventEmitter","useOptionsGetters","NavigationIndependentTreeContext","NavigationContainerRefContext","NavigationBuilderContext","UnhandledActionContext","onUnhandledAction","DeprecatedNavigationInChildContext","EnsureSingleNavigator","ThemeProvider","navigatorKeyRef","NOT_INITIALIZED_ERROR","keyedListeners","CommonActions","getRootState","findFocusedRoute","resetRoot","canGoBack","getParent","getCurrentRoute","getCurrentOptions","isReady","setOptions","stackRef","lastEmittedOptionsRef","addKeyedListener","onDispatchAction","onOptionsChange","flushUpdates","isInitialRef","getKey","setKey","getIsInitial","addOptionsGetter","onStateChangeRef","onStateChange","onReadyRef","onReady","onReadyCalledRef","isFirstMountRef","_BaseRouterJs","_DrawerRouterJs","_StackRouterJs","_TabRouterJs","getStateForAction","shouldActionChangeFocus","BaseRouter","nanoid","customAlphabet","defaultSize","openDrawer","closeDrawer","toggleDrawer","_ref$defaultStatus","TabRouter","getInitialState","getRehydratedState","getStateForRouteFocus","DrawerActions","isDrawerInHistory","defaultStatus","addDrawerToHistory","removeDrawerFromHistory","router","jumpTo","getRouteHistory","changeIndex","_ref$backBehavior","getStateForRouteNamesChange","TabActions","initialRouteName","backBehavior","routeParamList","routes","routeKeys","routeKeyChanges","currentId","createParamsFromAction","routeGetIdList","updatedState","focusedRoute","previousKey","routeIndex","newRoute","initialRouteIndex","lastHistoryRouteItemIndex","currentRoute","replace","popToTop","popTo","StackActions","routeNames","createRouteFromAction","currentIndex","getId","navigator","useClientLayoutEffect","getRouteNames","routeName","duplicates","currentLocation","checkSerializableWithoutCircularReference","removeListener","SingleNavigatorContext","MULTIPLE_NAVIGATOR_ERROR","ThemeContext","removed","listenRef","listen","defaultPrevented","emit","optionsGettersFromChildRef","optionsRef","optionsChangeListener","getOptionsFromListener","parentAddOptionsGetter","createStore","pendingUpdatesRef","store","pendingUpdates","newState","deepFreeze","isBatching","didUpdate","Navigator","Screen","Group","createComponentForStaticNavigation","displayName","with","getComponent","WithComponent","DecoratorComponent","NavigatorComponent","getItemsFromScreens","groupItems","useIf","group","rest","createPathConfigForTree","initialScreenConfig","initialScreenHasPath","createPathConfigForScreens","skipInitialDetection","screenConfig","auto","screens","useRoute","isValidElementType","isNavigator","MemoizedScreen","REACT_VIEW_TRANSITION_TYPE","NavigationRouteContext","IsFocusedContext","FocusedRouteKeyContext","parentIsFocused","focusedRouteKey","NavigationContext","NamedRouteContextListContext","useNavigation","isFocusedAvailable","unsubscribeFocus","unsubscribeBlur","CurrentRenderContext","createNormalizedConfigItem","createNormalizedConfigs","CHILD_STATE","isRecordEqual","createConfigItem","validatePathConfig","getNormalizedConfigs","configs","getActiveRoute","currentOptions","hasNext","focusedParams","queryString","nestedRouteNames","allParams","nextRoute","char","cachedNormalizedConfigs","getPatternParts","parentParts","keyValueSep","isEncodedArray","strictUriEncode","decodeComponent","keysSorter","removeHash","queryStart","validateArrayFormatSeparator","parserForArrayFormat","splitOnFirst","parseValue","ret","encoderForArrayFormat","isNullOrUndefined","formatter","url_","parse","extract","encodeFragmentIdentifier","getHash","filterObject","filter","split","decodeComponents","singleMatcher","multiMatcher","customDecodeURIComponent","separatorIndex","isArr","predicate","formatToList","validation","matchAgainstConfigs","findParseConfigForRoute","findInitialRoute","createStateObject","createNestedStateObject","parseQueryParams","getConfigResources","segment","cachedConfigResources","prepareConfigResources","getInitialRoutes","getSortedNormalizedConfigs","checkForDuplicatedConfigs","getConfigsWithRegexes","initialRoutes","isArrayEqual","arrayStartsWith","aParam","bParam","remainingPath","routeConfig","alias","nestedConfig","initials","paths","parentScreens","screen","nestedState","flatConfig","parseConfig","NavigationHelpersContext","NavigationMetaContext","PreventRemoveContext","preventedRoutesMap","setPreventedRoutesMap","prevPrevented","routeKey","preventRemove","setParentPrevented","parentId","isPrevented","setPreventRemove","transformPreventedRoutes","PrivateValueStore","cleanup","getRouteConfigsFromChildren","useRegisterNavigator","ConsumedParamsContext","useLazyValue","isStateInitialized","getStateFromParams","useScheduleUpdate","useFocusEvents","useOnAction","useOnRouteFocus","useNavigationHelpers","useFocusedListenersChildrenAdapter","useOnGetState","useDescriptors","useCurrentRender","useComponent","routeConfigs","createRouter","UNSTABLE_router","isStateValid","stateCleanupRef","setCurrentState","lastStateRef","currentState","isNestedParamsConsumed","paramsForState","stateFromParams","stateBeforeInitialization","doesStateHaveOnlyInvalidRoutes","initialParams","previousRouteKeyListRef","routeKeyList","previousRouteKeyList","setConsumedParams","didConsumeNestedParams","shouldUpdate","shouldClearUnhandledState","setUnhandledState","navigatorKey","lastNotifiedStateRef","getCurrentState","stateRef","initializedState","descriptors","screenListeners","onUnhandledActionParent","layout","NavigationStateListenerProvider","PreventRemoveProvider","isScreen","isGroup","isValidKey","groupOptions","groupLayout","groupKey","renderRef","NavigationContent","useNavigationCache","useRouteCache","getOptions","describe","onRouteFocus","screenOptions","theme","screenLayout","SceneView","clearOptions","NavigationProvider","navigations","NavigationFocusedRouteStateContext","StaticContainer","ScreenComponent","consumedParams","parentFocusedRouteState","addState","routeState","thunk","withStack","actions","focusedListeners","lastFocusedKeyRef","currentFocusedKey","lastFocusedKey","op","parentNavigationHelpers","navigatorId","navigationHelpers","NavigationStateListenerContext","useSyncExternalStoreWithSelector","useDebugValue","getServerSnapshot","hasMemo","selector","memoizedSelection","memoizedSnapshot","memoizedSelector","getSnapshot","maybeGetServerSnapshot","useOnPreventRemove","routerConfigOptionsRef","routerConfigOptions","onActionParent","navigationInChildEnabled","actionListeners","shouldPreventRemove","beforeRemoveListeners","onRouteFocusParent","addListenerParent","VISITED_ROUTE_KEYS","nextRouteKeys","getStateListeners","sourceRouteKey","container","createNavigationContainerRef","usePreventRemoveContext","beforeRemoveListener","_ref$direction","_ref$theme","DefaultTheme","_ref$fallback","useBackButton","useDocumentTitle","useLinking","LocaleDirContext","UnhandledLinkingContext","LinkingContext","lastUnhandledLink","setLastUnhandledLink","refContainer","previousLastUnhandledLink","REACT_NAVIGATION_DEVTOOLS","isLinkingEnabled","getStateFromPath","getPathFromState","getActionFromState","fonts","BackHandler","_ref$enabled","_ref$getInitialURL","_ref$subscribe","_ref$getStateFromPath","getStateFromPathDefault","_ref$getActionFromSta","getActionFromStateDefault","Linking","enabledRef","prefixesRef","prefixes","filterRef","configRef","getInitialURLRef","getInitialURL","getStateFromPathRef","getActionFromStateRef","extractPathFromURL","onUnhandledLinking","getStateFromURL","then","catch","onfulfilled","escapeStringRegexp","_toArray","searchParams","resolved","cancelled","useTheme","useLinkProps","href","ServerContainer","ServerContext","DarkTheme","useBuildAction","useStateForPath","focusedRouteState","getPathFromStateHelper","stateForRoute","constructState","useBuildHref","getStateFromPathHelper","getActionFromStateHelper","buildAction","tab","tabNavigations","getScrollableNode","isFirst","unsubscribers","unsubscribe","_navigatorsCreateNativeStackNavigatorJs","_viewsNativeStackView","_utilsUseAnimatedHeaderHeightJs","useNavigationBuilder","StackRouter","NativeStackView","createNavigatorFactory","NativeStackNavigator","useDismissedRouteError","useInvalidPreventRemoveError","getModalRouteKeys","SafeAreaProviderCompat","ScreenStack","preloadedDescriptors","nextKey","modalRouteKeys","isModal","onWillDisappear","onWillAppear","onAppear","onDisappear","onHeaderBackButtonClicked","onGestureCancel","setNextDismissedKey","_options$presentation","isPresentationModal","_options$animationTyp","_options$fullScreenGe","_options$gestureDirec","presentation","_options$sheetAllowed","_options$sheetLargest","_options$sheetGrabber","_options$sheetCornerR","_options$sheetElevati","_options$sheetExpands","_options$sheetInitial","_options$sheetShouldO","_options$sheetResizeA","nextGestureDirection","useSafeAreaInsets","HeaderShownContext","HeaderHeightContext","HeaderBackContext","useFrameSize","isParentHeaderShown","debounce","compatibilityFlags","topInset","previousDescriptor","parentHeaderBack","getHeaderTitle","useHeaderConfigProps","isRemovePrevented","hasCustomHeader","ScreenStackItem","isPreloaded","scrollEdgeEffects","AnimatedHeaderHeightContext","_jsxs","headerShown","parentHeaderHeight","headerBackground","headerTransparent","ANDROID_DEFAULT_HEADER_HEIGHT","rawAnimatedHeaderHeight","headerHeightCorrectionOffset","backTitle","setHeaderHeight","insets","headerHeight","_BackgroundJs","_BadgeJs","_ButtonJs","_getDefaultSidebarWidthJs","_HeaderGetDefaultHeaderHeightJs","_HeaderGetHeaderTitleJs","_HeaderHeaderJs","_HeaderHeaderBackButtonJs","_HeaderHeaderBackContextJs","_HeaderHeaderBackgroundJs","_HeaderHeaderButtonJs","_HeaderHeaderHeightContextJs","_HeaderHeaderShownContextJs","_HeaderHeaderTitleJs","_HeaderUseHeaderHeightJs","_LabelGetLabelJs","_LabelLabelJs","_LazyJs","_MissingIconJs","_PlatformPressableJs","_ResourceSavingViewJs","_SafeAreaProviderCompatJs","_ScreenJs","_TextJs","_useFrameSizeJs","Assets","_ref$visible","_ref3$backgroundColor","Color","visible","rendered","opacity","useNativeDriver","setRendered","toJSON","percentString","unitArray","unitObject","round","alpha","keyword","hex","hexa","rgbNumber","luminosity","contrast","isDark","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","mix","skippedModels","model","hashedModelKeys","hashedKeys","zeroArray","colorString","limiters","roundTo","places","channel","modifier","roundToPlace","rgb","chan","lum2","lum1","contrastRatio","yiq","hsl","hwb","hue","weight","color1","w1","w2","color2","assertArray","channels","cs","colorNames","hexAlpha","i2","swizzle","hexDouble","rgba","hsla","hwba","reverseNames","isArrayish","fromModel","toModel","wrapRounded","wrapRaw","bdif","reverseKeywords","cssKeywords","comparativeDistance","t2","t1","lmin","sv","hsv","sl","wh","cmyk","xyz","y2","x2","z2","saturation","rem","integer","chroma","hcg","hi","apple","buildGraph","graph","link","deriveBFS","wrapConversion","ButtonBase","ButtonLink","_ref2$variant","customColor","PlatformPressable","BUTTON_RADIUS","css","_ref$pressOpacity","animateTo","AnimatedPressable","ANDROID_SUPPORTS_RIPPLE","pressColor","dark","HoverEffect","pressOpacity","getDefaultSidebarWidth","_props$layout","_props$modal","_props$headerTitleAli","_props$headerLeft","_props$headerBackButt","_props$headerStatusBa","getDefaultHeaderHeight","customHeaderStyle","_StyleSheet$flatten$h","headerShadowVisible","headerTintColor","headerLeft","headerRight","HeaderBackground","headerTitleAlign","_Fragment","leftButton","rightButton","headerBackButtonDisplayMode","headerSearchBarOptions","HeaderButton","HeaderIcon","searchIcon","searchBarVisible","HeaderSearchBar","onClose","setTitleLayout","titleLayout","HeaderBackButton","HeaderTitle","setSearchBarVisible","_SafeAreaContext","_SafeAreaView","_InitialWindow","_SafeAreaTypes","useParentSafeAreaInsets","useParentSafeAreaFrame","initialMetrics","_NativeSafeAreaProvider","SafeAreaFrameContext","SafeAreaInsetsContext","setFrame","curFrame","setInsets","curInsets","nextFrame","nextInsets","NO_INSETS_ERROR","WrappedComponent","SafeAreaConsumer","SafeAreaContext","NativeSafeAreaProvider","SafeAreaView","NativeSafeAreaView","edges","edgesObj","defaultEdges","NativeSafeAreaContext","initialWindowMetrics","initialWindowSafeAreaInsets","FrameContext","throttle","frameRef","throttledListener","waiting","updated","getCurrent","subscribeThrottled","_ref$displayMode","_ref$truncatedLabel","_ref$accessibilityLab","useLocale","handlePress","backIcon","tintColor","renderLabel","ICON_WIDTH","ICON_MARGIN","truncatedLabel","availableSpace","labelWidth","truncatedLabelWidth","labelStyle","finalLabelText","onLabelLayout","setLabelWidth","setTruncatedLabelWidth","isMaskedViewAvailable","RNCMaskedView","androidRipple","ICON_SIZE","_ref$autoFocus","_ref$placeholder","_ref$enterKeyHint","TextInput","autoCapitalize","INPUT_TYPE_TO_MODE","inputType","closeIcon","visibleValueRef","visibleAnim","clearVisibleValueRef","hasText","clearVisibleAnim","clearText","onChangeText","onClear","cancelSearch","focus","blur","contexts","shouldRenderInIdle","requestIdleCallback","cancelIdleCallback","_Dimensions$get$width","_Dimensions$get$heigh","FrameSizeProvider","SafeAreaProvider","_props$headerShown","Background","modal","headerStatusBarHeight","headerRef","_core","_componentsScreen2","_componentsScreen","_componentsScreenStackHeaderConfig","_componentsSearchBar2","_componentsScreenContainer2","_componentsScreenStack2","_componentsScreenStackItem2","_componentsFullWindowOverlay2","_componentsScreenFooter2","_componentsScreenContentWrapper2","_utils","_flags","_useTransitionProgress2","_componentsBottomTabsBottomTabs2","_componentsBottomTabsBottomTabsScreen2","_componentsGammaScreenStackHost2","_componentsGammaStackScreen2","_componentsGammaStackScreen","_componentsGammaSplitViewHost2","_componentsGammaSplitViewScreen2","_componentsBottomTabsBottomTabsTypes","_componentsBottomTabsBottomTabsScreenTypes","_componentsGammaSplitViewHostTypes","_componentsGammaSplitViewScreenTypes","ENABLE_SCREENS","ENABLE_FREEZE","isNativePlatformSupported","InnerScreen","ScreenContext","usePrevious","_props$enabled","screensEnabled","_props$freezeOnBlur","freezeEnabled","_rest$sheetAllowedDet","_rest$sheetLargestUnd","SHEET_DIMMED_ALWAYS","_rest$sheetGrabberVis","_rest$sheetCornerRadi","_rest$sheetExpandsWhe","_rest$sheetElevation","_rest$sheetInitialDet","active","activityState","resolveSheetAllowedDetents","resolvedSheetAllowedDetents","AnimatedNativeScreen","freezeOnBlur","shouldFreeze","DelayedFreeze","gestureResponseDistance","TransitionProgressContext","innerRef","setRef","EDGE_TO_EDGE","transformEdgeToEdgeProps","_reactFreeze","freeze","setFreezeState","infiniteThenable","_react","_ref2$placeholder","Suspender","SHEET_COMPAT_LARGE","SHEET_COMPAT_ALL","SHEET_COMPAT_MEDIUM","SHEET_FIT_TO_CONTENTS","isIndexInClosedRange","ScreenStackHeaderSubview","ScreenStackHeaderConfig","ScreenStackHeaderBackButtonImage","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderSearchBarView","ScreenStackHeaderConfigNativeComponent","isSearchBarAvailableForCurrentPlatform","NativeSearchBar","_callMethodWithRef","NativeSearchBarCommands","searchBarRef","toggleCancelButton","setText","ScreenContainerNativeComponent","assertGHProvider","assertCustomScreenTransitionsProps","passedScreenRefs","GHContext","_stackRef","_contexts","screenEdgeGesture","ScreenStackNativeComponent","gestureDetectorBridge","ScreenGestureDetector","goBackGesture","screensRefs","currentScreenId","RNSScreensRefContext","DebugContainer","stackPresentation","sheetAllowedDetents","_ScreenStackHeaderConfig","_ScreenFooter","headerConfig","currentScreenRef","headerHiddenPreviousRef","screenRefs","screenId","ScreenContentWrapper","ScreenContentWrapperNativeComponent","ScreenFooterNativeComponent","ScreenFooter","featureFlags","_featureFlags","useTransitionProgress","bottomTabsDebugLog","_props$experimentalCo","BottomTabsNativeComponent","componentNodeRef","componentNodeHandle","onNativeFocusChange","isDetailedLoggingEnabled","_props$isFocused","shouldFreezeScreen","parseIconsToNativeProps","BottomTabsScreenNativeComponent","parsedIconResource","mapAppearanceToNativeProp","setNativeViewIsVisible","onDidAppear","onDidDisappear","mapItemAppearanceToNativeProp","mapItemStateAppearanceToNativeProp","tabBarItemTitleFontWeight","parseIconToNativeProps","ScreenStackHostNativeComponent","StackScreenNativeComponent","onPop","screenKey","StackScreenLifecycleState","isValidDisplayModeForSplitBehavior","SplitViewHostNativeComponent","preferredDisplayMode","preferredSplitBehavior","displayModeForSplitViewCompatibilityMap","SplitViewScreenNativeComponent","nextDismissedKey","dismissedRouteName","preventedRouteKey","isHeaderBackButtonMenuEnabledOnPreventedScreen","preventedRouteName","processBarButtonItems","icon","_ref$headerLargeTitle","headerStyleFlattened","processFonts","headerBack","headerBackTitle","supportsHeaderSearchBar","headerBackVisible","headerTitleElement","headerLeftElement","hasHeaderSearchBar","isCenterViewRenderedAndroid","headerBackIcon","headerRightElement","SearchBar","headerBackButtonMenuEnabled","headerLargeTitleShadowVisible","translucent","transformIcon","getMenuItem","badge","_saveSession","SecureStore","ACCESS_TOKEN_KEY","REFRESH_TOKEN_KEY","USER_KEY","_readSession","_clearSession","_isAvailableAsync","ExpoSecureStore","_deleteItemAsync","ensureValidKey","_getItemAsync","_setItemAsync","isValidValue","byteCountOverLimit","VALUE_BYTES_LIMIT","AFTER_FIRST_UNLOCK","AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY","ALWAYS","WHEN_PASSCODE_SET_THIS_DEVICE_ONLY","ALWAYS_THIS_DEVICE_ONLY","WHEN_UNLOCKED","WHEN_UNLOCKED_THIS_DEVICE_ONLY","_postWithEndpointFallback","endpoints","ApiClientError","apiClient","_getWithEndpointFallback","_login","postWithEndpointFallback","buildDevicePayload","_me","getWithEndpointFallback","_refresh","_logout","post","normalizeHeaders","matchKey","_buildUrl","requireEnvironmentBaseUrl","search","_hydrateTokensFromStorage","hydrated","_refreshAccessToken","createTimeoutSignal","getRequestTimeoutMs","refreshTokenCache","refreshEndpoints","lastMessage","_applyRequestHeaders","getHeader","setHeader","deleteHeader","accessTokenCache","_executeFetch","_parseJsonSafely","_handle401Retry","hydrateTokensFromStorage","refreshPromise","refreshAccessToken","extractResponseCode","buildErrorMessage","applyRequestHeaders","buildUrl","executeFetch","parseJsonSafely","SESSION_REVOKED_CODE","handle401Retry","buildErrorFromResponse","sessionRevokedHandler","_initializeApiClientAuth","_getApiAccessToken","_buildApiUrl","REQUEST_TIMEOUT_MS","_setEnvironmentBaseUrl","normalizeUrl","API_BASE_URL_KEY","_getEnvironmentBaseUrl","_requireEnvironmentBaseUrl","_clearEnvironmentConfig","INVITE_TOKEN_KEY","_saveInviteToken","_getInviteToken","isValidHexColor","supportEmail","supportPhone","_saveMobileConfig","stripTrailingSlashes","sanitizeMobileConfig","MOBILE_CONFIG_KEY","_getMobileConfig","mobileConfigCache","_getMobileConfigForBaseUrl","getMobileConfig","stored","_clearMobileConfig","_getMyInterventions","saveInterventionsSnapshot","_getInterventionById","saveInterventionDetail","fetchAndStoreInterventionSteps","getInterventionDetailById","_fetchAndStoreInterventionSteps","steps","applyServerStepsDelta","wf","_prefetchWorkflows","getInterventionById","_uploadWorkflowStepPhoto","_enqueueWorkflowStepPhoto","enqueueOfflineAction","_saveStepToServer","_uploadMachinePhoto","_completeMobileWorkflow","errs","_getInterventionPrecheck","_postPrecheckOrEnqueue","_saveInterventionPrecheck","postPrecheckOrEnqueue","_startIntervention","_getDb","dbPromise","SQLite","DB_NAME","_getTableColumns","getDb","row","_upsertLocalMeta","_ensureStepsSchema","getTableColumns","_initializeLocalDatabase","ensureStepsSchema","_clearLocalDatabase","_saveOrUpdateStep","step","dirty","safeIso","_applyServerStepsDelta","applied","saveOrUpdateStep","db","local","_saveInterventionsSnapshot","upsertLocalMeta","_mergeInterventionsSnapshot","keepIds","countRow","_getInterventionsSnapshot","updatedRow","_saveInterventionDetail","_getInterventionDetailById","_deleteInterventionLocally","interventionId","_enqueueSyncAction","_getPendingQueueItems","_markQueueItemDone","_markQueueItemFailed","MAX_SYNC_ATTEMPTS","_markQueueItemDead","_markQueueItemWalled","_getLocalDbOwnerId","OWNER_USER_ID_KEY","_setLocalDbOwnerId","_getLastSyncTimestamp","_setLastSyncTimestamp","_saveWorkflowDraft","draftKey","_loadWorkflowDraft","_clearWorkflowDraft","_getStepsByInterventionId","_updateStepValueLocally","updates","_SQLiteDatabase","_SQLiteSession","_SQLiteStatement","_hooks","_openDatabaseAsync","createDatabasePath","ExpoSQLite","flattenOpenOptions","SQLiteDatabase","_deserializeDatabaseAsync","_deleteDatabaseAsync","destDatabaseName","sourceDatabaseName","defaultDatabaseDirectory","bundledExtensions","_prepareAsync","SQLiteStatement","_createSessionAsync","SQLiteSession","_withTransactionAsync","_withExclusiveTransactionAsync","Transaction","_runAsync","_getFirstAsync","_wrapAsyncGenerator","_awaitAsyncGenerator","_asyncIterator","_getAllAsync","_len6","_len7","_key7","_len8","_key8","_createAsync","OverloadYield","AsyncGenerator","settle","resume","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","_createSQLiteExecuteAsyncResult","SQLiteExecuteAsyncResultImpl","SQLiteExecuteSyncResultImpl","rawResult","composeRow","composeRows","_executeAsync","normalizeParams","createSQLiteExecuteAsyncResult","_executeForRawResultAsync","_finalizeAsync","createSQLiteExecuteSyncResult","firstRow","composeRowIfNeeded","composeRowsIfNeeded","firstRowValues","_getColumnNamesAsync","bindParams","directory","resolveDbDirectory","SQLiteContext","getDatabaseAsync","onError","_setup","openDatabaseWithInitAsync","databaseName","assetSource","onInit","databaseRef","setLoading","_teardown","teardown","databaseInstance","_openDatabaseWithInitAsync","importDatabaseFromAssetAsync","openDatabaseAsync","_importDatabaseFromAssetAsync","isReactUsePromise","suspensePromise","SQLiteProvider","_ref$useSuspense","SQLiteProviderNonSuspense","SQLiteProviderSuspense","file","_postMultipartFromQueue","endpoint","formData","BILLING_WALL_CODE","_isNetworkOnline","Network","_enqueueOfflineAction","enqueueSyncAction","_dispatchQueueItem","toPrimitiveParams","isMultipartQueuePayload","postMultipartFromQueue","_fetchCurrentWorkflowVersion","_postSaveStepWithVersion","version","_dispatchOfflineSaveStep","fetchCurrentWorkflowVersion","postSaveStepWithVersion","_processSyncQueue","isOfflineSaveStep","dispatchQueueItem","dispatchOfflineSaveStep","markQueueItemDone","classifySyncError","markQueueItemFailed","markQueueItemWalled","billingWallNotified","billingWallHandler","markQueueItemDead","_pullSyncDelta","getLastSyncTimestamp","pickItems","mergeInterventionsSnapshot","setLastSyncTimestamp","_syncOnReconnect","syncInFlight","processSyncQueue","pullSyncDelta","flushCrashReports","_getNetworkStateAsync","ExpoNetwork","_getIpAddressAsync","_isAirplaneModeEnabledAsync","onNetworkStateEventName","getNetworkStateAsync","setNetworkState","addNetworkStateListener","networkState","NetworkStateType","crashDir","MAX_STACK_CHARS","crashFile","line","_recordCrash","truncate","APP_VERSION","readEntriesSafe","ensureDir","_readCrashLogs","_clearCrashLogs","_postCrashReports","CRASH_ENDPOINTS","_flushCrashReports","postCrashReports","clearCrashLogs","_sendTestCrashReport","recordCrash","TEST_CRASH_MARKER","_FileSystem","_legacyWarnings","Paths","Directory","ExpoFileSystem","FileSystemReadableStreamSource","FileSystemWritableSink","_arrayBuffer","_downloadFileAsync","isDirectory","PathUtilities","uriObjectToString","asUrl","nodePath","encodeURLChars","isUrl","isPathSeparator","lastSlash","ext","pathObject","formatExt","normalizeString","resolvedPath","isAbsolute","trailingSeparator","fromEnd","fromLen","fromStart","toStart","hasRoot","startPart","sep","delimiter","percentRegEx","backslashRegEx","newlineRegEx","carriageReturnRegEx","tabRegEx","spaceRegEx","encodePathChars","questionRegex","hashRegex","theView","_getInfoAsync","errorOnLegacyMethodUse","_readAsStringAsync","_getContentUriAsync","_writeAsStringAsync","_deleteAsync","_deleteLegacyDocumentDirectoryAndroid","_moveAsync","_copyAsync","_makeDirectoryAsync","_readDirectoryAsync","_getFreeDiskStorageAsync","_getTotalDiskCapacityAsync","_uploadAsync","KEY_PREFIX","_readIndex","INDEX_KEY","_writeIndex","_savePrecheckDraft","buildKey","readIndex","writeIndex","_getPrecheckDraft","_clearPrecheckDraft","_clearAllPrecheckDrafts","_randomSaltHex","Crypto","_hashPassword","argon2","ARGON2_OPTIONS","_saveOfflineCredential","randomSaltHex","hashPassword","normalizeEmail","KEY","_verifyOfflineCredential","TTL_MS","timingSafeEqual","_clearOfflineCredential","assertByteCount","ExpoCrypto","_getRandomBytesAsync","CryptoDigestAlgorithm","CryptoError","CryptoEncoding","_digestStringAsync","assertAlgorithm","assertData","assertEncoding","digestLengths","algorithm","_CryptoTypes","asRecord","_runBackgroundInterventionSync","extractSyncFromData","deleteInterventionLocally","loadTaskManager","BACKGROUND_NOTIFICATION_TASK","runBackgroundInterventionSync","_registerBackgroundNotificationTask","loadNotifications","_isTaskRegisteredAsync","ExpoTaskManager","_validate","_getTaskOptionsAsync","_getRegisteredTasksAsync","_unregisterAllTasksAsync","_listInstances","SAVED_INSTANCES_KEY","_upsertInstance","_removeInstance","_isServerReachable","_tryFetch","_fetchMobileConfig","buildMobileConfigUrls","tryFetch","isServerReachable","lastApiMessage","buildFallbackConfig","_ensureAndroidChannel","ANDROID_CHANNEL_ID","_getOrCreateDeviceId","DEVICE_ID_KEY","fromExtra","candidate","_ensurePermissionGranted","_registerForPushNotificationsAsync","Device","ensureAndroidChannel","ensurePermissionGranted","resolveProjectId","projectId","tokenResponse","_registerPushToken","getOrCreateDeviceId","_syncPushRegistration","registerForPushNotificationsAsync","registerPushToken","ExpoDevice","_getDeviceTypeAsync","_getUptimeAsync","_getMaxMemoryAsync","_isRootedExperimentalAsync","_isSideLoadingEnabledAsync","_getPlatformFeaturesAsync","_hasPlatformFeatureAsync","DeviceType","isDevice","brand","manufacturer","modelId","modelName","designName","productName","deviceType","deviceYearClass","totalMemory","supportedCpuArchitectures","osName","osVersion","osBuildId","osInternalBuildId","osBuildFingerprint","platformApiLevel","deviceName","getStatusStyle","intervention","formatInterventionDate","detailValue","getTypeLabel","getFluideLabel","onOpenDetail","activeTab","onSwitch","ConnectivityBadge","TabsRow","InterventionsList","onChangeTab","onRefresh","isDoneStatus","InterventionCard","statut","TODO_STATUSES","normalizeStatut","DONE_STATUSES","TYPE_LABELS","STATUS_STYLES","useFocusEffect","goToWorkflow","loading","InterventionBody","isCompleted","starting","precheckLoading","precheck","cerfaEnabled","startError","setItem","fetchDetail","setCompletedSteps","loadStepsLocally","completedSteps","visibleSteps","buildPhases","setPrecheckOpen","setPrecheckLoading","setStartError","getInterventionPrecheck","setPrecheck","setCerfaEnabled","setCerfaNumber","setPrelevementNumber","setStarting","startIntervention","cerfaNumber","prelevementNumber","openPrecheck","confirmStart","InfoItem","phaseIdx","ReadOnlyStepRow","InterventionHeader","TechnicienSection","TextSection","completedPhases","CompletedStepsSection","hasFiles","getStepMetadata","isDisplayOnly","formatStepDisplayValue","files","displayValue","commentText","ReadOnlyPhotoThumb","buildApiUrl","getApiAccessToken","setUri","setToken","_loadStepsLocally","getStepsByInterventionId","validateSignature","validatePhoto","validateText","validateMeasurement","_completeStepLocally","updateStepValueLocally","safeToString","normalizeText","parentValue","pvRaw","rules","rawName","isGateStep","isProblemValue","kind","isAutoCalc","isParentType","evaluateVisibilityRule","getStepRules","lastParent","ruleResult","draftValues","isEmptyStepValue","DEVIS_EN_ATTENTE_RE","DEVIS_DERNIER_RE","numero_devis","isProblem","getStepInputKind","isDisplay","getBlockingStepIds","inputValues","validateStepValue","getCommentRequirement","commentValues","validateStepForPhase","cmt","commentReq","stepId","isExt","StepInput","CommentInput","validationError","onChangeValue","getInitialValueForStep","hydratedRef","saveWorkflowDraft","draft","_expoCamera","saving","initialMachineHasPhoto","useCameraPermissions","phases","currentPhaseIdx","useWorkflowDraftPersistence","currentPhase","isLastPhase","showMachinePhotoCard","MachinePhotoOverlay","showSignatureCard","SignatureFinishCard","handleSignatureCardCancel","phaseAlert","DevisListContext","finishError","finishing","computeVisibleStepIds","isDevisListStep","hasDevisSteps","machineId","getDevisForMachine","setDevisList","setWorkflowVersion","setSteps","setInputValues","setCommentValues","hydrateInitialValues","hydrateInitialComments","loadSteps","setCurrentPhaseIdx","setSigTechData","setSigClientData","setSigClientPresent","setShowSignatureCard","hydratedOnceRef","loadWorkflowDraft","applyDraftHydration","buildSaveStepOfflinePayload","saveStepToServer","completeStepLocally","applyLocalStepUpdate","visibleStepIds","shouldSkipStepForSave","persistSingleStep","collectBlockingRequiredErrors","collectConstraintErrors","savePhaseSteps","workflowVersion","setValidationErrors","setPhaseAlert","autoSaveGateSteps","refreshStepsFromServer","blockingErrors","constraintErrors","saveResult","savePhaseAndAdvance","machineHasPhoto","setShowMachinePhotoCard","setFinishError","cameraPermission","requestCameraPermission","setMachinePhotoCameraOpen","machineCameraRef","machinePhotoSaving","setMachinePhotoSaving","uploadMachinePhoto","setMachineHasPhoto","setFinishing","completeMobileWorkflow","clearWorkflowDraft","StepCard","validationErrors","onChangeComment","handleNextPhase","_ref15$emphasis","isActive","resolveDevisStepText","DisplayBox","cerfaValue","reference","normalizeBooleanValue","ChoicePill","norm","opt","selected","isPhotoArrayValue","CameraCapture","getWorkflowStepId","uri","photo","photos","isSignatureValue","SignatureCapture","signature","isCerfaLike","isDisplayKind","isTextKind","isPhotoKind","UnsupportedStepInput","SignatureStepInput","PhotoStepInput","ChoiceStepInput","BooleanStepInput","CerfaStepInput","TextStepInput","NumberStepInput","AutoCalcStepInput","DisplayStepInput","_getDevisForMachine","initialTechData","initialClientData","initialClientPresent","handleBack","renderStep","localError","handleClientSigConfirm","clientPresent","handleClientPresenceNext","handleTechNext","setLocalError","setPendingAction","techPadRef","pendingAction","techData","setStep","clientData","onConfirm","onDraftChange","clientPadRef","onCancel","SignatureCanvas","onEmpty","padWebStyle","setTechData","setClientPresent","setClientData","param","_ref$androidHardwareA","_ref$autoClear","_ref$backgroundColor","_ref$bgHeight","_ref$bgWidth","_ref$bgSrc","_ref$clearText","_ref$confirmText","_ref$customHtml","_ref$dataURL","_ref$descriptionText","_ref$dotSize","_ref$imageType","_ref$minWidth","_ref$maxWidth","_ref$minDistance","_ref$nestedScrollEnab","_ref$showsVerticalScr","_ref$onOK","_ref$onEmpty","_ref$onClear","_ref$onUndo","_ref$onRedo","_ref$onDraw","_ref$onErase","_ref$onGetData","_ref$onChangePenColor","_ref$onChangePenSize","_ref$onBegin","_ref$onEnd","_ref$onLoadEnd","_ref$onError","_ref$overlayHeight","_ref$overlayWidth","_ref$overlaySrc","_ref$penColor","_ref$rotated","_ref$style","_ref$scrollable","_ref$trimWhitespace","_ref$webStyle","_ref$webviewContainer","_ref$androidLayerType","_ref$webviewProps","_reactNativeWebview","retryCount","currentDataURLRef","dataURL","injectedSignaturePad","injectedApplication","autoClear","trimWhitespace","imageType","penColor","backgroundColor","dotSize","minWidth","maxWidth","minDistance","rotated","customHtml","htmlContent","injectedScript","bgWidth","bgHeight","bgSrc","overlayWidth","overlayHeight","overlaySrc","webStyle","descriptionText","confirmText","prevDataURLRef","webViewRef","MESSAGE_TYPES","isJson","onOK","onGetData","onChangePenSize","onChangePenColor","onErase","onDraw","onRedo","onUndo","onEnd","onBegin","getParamForInjection","readSignature","clearSignature","undo","redo","draw","erase","changePenSize","getData","pointGroups","reinitialize","executeWebViewMethod","setHasError","setWebViewKey","maxRetries","setRetryCount","onLoadEnd","script","WebView","goBack","goForward","stopLoading","injectJavaScript","requestFocus","postMessage","loadUrl","clearFormData","clearCache","clearHistory","originWhitelist","passesWhitelist","createOnShouldStartLoadWithRequest","defaultRenderLoading","defaultRenderError","defaultOriginWhitelist","useWebViewLogic","extractOrigin","origin","originWhitelistToRegex","compileWhitelist","supported","onShouldStartLoadWithRequest","loadRequest","startInLoadingState","onNavigationStateChange","startUrl","onLoadStart","updateNavigationState","setViewState","setLastErrorEvent","onHttpErrorProp","onRenderProcessGoneProp","onContentProcessDidTerminateProp","onLoad","onMessageProp","prevViewState","onLoadProgress","onShouldStartLoadWithRequestCallback","onShouldStartLoadWithRequestProp","onOpenWindowProp","_getCameraPermissionsAsync","CameraManager","_requestCameraPermissionsAsync","_getMicrophonePermissionsAsync","_requestMicrophonePermissionsAsync","_scanFromURLAsync","_CameraView2","useMicrophonePermissions","Camera","_CameraTypes","_PictureRef","_GLOBAL_PICTURE_ID","_PICTURE_SAVED_CALLBACKS","CameraView","_getAvailablePictureSizesAsync","_getAvailableLensesAsync","_resumePreview","_pausePreview","_takePictureAsync","ensurePictureOptions","_recordAsync","ensureRecordingOptions","_toggleRecordingAsync","ensureNativeProps","loggedRenderingChildrenWarning","ExpoCamera","_onPictureSaved","_getAvailableVideoCodecsAsync","_launchScanner","_dismissScanner","ConversionTables","convertNativeProps","uploadError","onRequestClose","capturing","setVisible","cameraRef","setCapturing","setUploadError","savePhotoToPermanentFile","workflowStepId","permanentUri","uploadWorkflowStepPhoto","enqueueWorkflowStepPhoto","onCaptured","takePicture","_ensureMediaDir","mediaDirectory","_savePhotoToPermanentFile","ensureMediaDir","sanitizeStepId","_saveSignatureBase64ToPermanentFile","setSaving","stripDataUrlPrefix","saveSignatureBase64ToPermanentFile","handleOk","signatureRef","BrandLogo","userName","card","FeatureCard","comingSoon","showBadge","subtitle","isRenderableImageUrl","setFailed","StatTile","parseDate","dayKey","keyOf","byDay","MONTHS","monthCount","WEEKDAYS","mm","selectedEntries","initialDay","viewYear","viewMonth","firstDay","setViewYear","setViewMonth","changeMonth","todayKey","selectedKey","isToday","isSelected","wi","setSelectedKey","timeLabel","formatCalibration","warn","ROLE_LABELS","closePwd","hasProfileFields","editingPhone","phoneSaving","CalibrationItem","pwdSubmitting","pwdError","setPhoneSaving","updateTelephone","phone","setEditingPhone","onUserRefreshed","setPwdOpen","setCurrentPwd","setNewPwd","setConfirmPwd","setPwdError","setPwdSubmitting","currentPwd","newPwd","confirmPwd","changePassword","setPhone","submitPwd","_updateTelephone","_changePassword","_openUrl","_composeSupportEmail","MailComposer","openUrl","MAIL_UNAVAILABLE","tenantId","onEmail","onCall","hasContact","buildDiagnostic","composeSupportEmail","ExpoMailComposer","_composeAsync","_MailComposerTypes","MailComposerStatus","STATUT_STYLES","statutStyle","ACTIONS_BY_STATUT","bottle","busy","actionMessage","exchangeBottle","exchangeSubmitting","EXCHANGE_TYPES","exchangeError","getMyBottles","load","setBusyId","setActionMessage","postBottleAction","setExchangeBottle","setExchangeSerial","setExchangeType","setExchangeComment","setExchangeError","setExchangeSubmitting","performSimpleAction","exchangeSerial","exchangeType","exchangeComment","closeExchange","BottleCard","busyId","runAction","submitExchange","_getMyBottles","_postBottleAction","showQrScanner","onRemoveInstance","setQrLocked","setShowQrScanner","qrLocked","base_url","onSelectInstance","confirmRemove","showPassword","setShowPassword","UpdateSplash","phase","Updates","downloadStartedAt","UPDATE_MIN_VISIBLE_MS","safety","setPhase","waitMinVisible","BAR_WIDTH","TRACK_WIDTH","downloading","slide","loop","_Updates","_UpdatesEmitter","_UpdatesTypes","_UseUpdates","_UseUpdatesTypes","_ExpoUpdatesModuleTypes","_checkAutomaticallyMapNativeToJS","resolveImageSource","resolvedImage","_reloadAsync","isUsingDeveloperTool","shouldDeferToNativeForAPIMethodAvailabilityInDevelopment","manualUpdatesInstructions","resolveReloadScreenOptions","_checkForUpdateAsync","_getExtraParamsAsync","_setExtraParamAsync","_readLogEntriesAsync","_clearLogEntriesAsync","_fetchUpdateAsync","_showReloadScreen","_hideReloadScreen","updateId","runtimeVersion","checkAutomatically","isEmergencyLaunch","emergencyLaunchReason","launchDuration","isEmbeddedLaunch","isUsingEmbeddedAssets","manifest","createdAt","UpdateCheckResultNotAvailableReason","UpdatesLogEntryCode","UpdatesLogEntryLevel","UpdatesCheckAutomaticallyValue","resetLatestContext","transformNativeStateMachineContext","latestContext","_updatesStateChangeListeners","newParams","addUpdatesStateChangeListener","emitTestStateChangeEvent","_handleNativeStateChangeEvent","ExpoUpdatesModule","useUpdates","updatesStateFromContext","setUpdatesState","rollback","currentlyRunning","updateFromManifest","updateFromRollback","UpdateInfoType","toError","previous","onUnhandled","onHandled","installed","installGlobalErrorHandler","installRejectionTracking","matchWhitelist","rejections","DEFAULT_WHITELIST","displayId","spec","NativePlatformConstantsAndroid","_srcPrivateSpecs_DEPRECATEDModulesNativePlatformConstantsAndroid","PlatformColor","normalizeColorObject","sendRequest","abortRequest","clearCookies","_requestId","convertRequestBody","generateRequestId","NativeNetworkingAndroid","convertHeadersMapToArray","_srcPrivateSpecs_DEPRECATEDModulesNativeNetworkingAndroid","emptyCallback","_backPressSubscriptions","NativeDeviceEventManager","_srcPrivateSpecs_DEPRECATEDModulesNativeDeviceEventManager","_ref$styleAttr","_ref$indeterminate","ProgressBarAndroidNativeComponent","_srcPrivateSpecs_DEPRECATEDComponentsProgressBarAndroidNativeComponent2","_srcPrivateSpecs_DEPRECATEDComponentsProgressBarAndroidNativeComponent","NativeImageLoaderAndroid","sizes","success","prefetch","_queryCache","getImageSourcesFromImageProps","defaultSource","loadingIndicatorSource","convertObjectFitToResizeMode","useWrapRefWithImageAttachedCallbacks","ImageAnalyticsTagContext","analyticTag","nativeProps","hasTextAncestor","ImageViewNativeComponent","nativePropsWithAnalytics","resizeMode","actualRef","TextInlineImageNativeComponent","sources","_srcPrivateSpecs_DEPRECATEDModulesNativeImageLoaderAndroid","DrawerLayoutAndroid","DRAWER_STATES","_this$props$drawerBac","drawStatusBar","AndroidDrawerLayoutNativeComponent","_srcPrivateSpecs_DEPRECATEDComponentsAndroidDrawerLayoutNativeComponent2","_srcPrivateSpecs_DEPRECATEDComponentsAndroidDrawerLayoutNativeComponent","DynamicColorIOS","watchKeys","clearWatch","NativeToastAndroid","_srcPrivateSpecs_DEPRECATEDModulesNativeToastAndroid2","_srcPrivateSpecs_DEPRECATEDModulesNativeToastAndroid","_getNotificationChannelsAsync","NotificationChannelManager","_getNotificationChannelAsync","_setNotificationChannelAsync","_deleteNotificationChannelAsync","_getNotificationChannelGroupsAsync","NotificationChannelGroupManager","_getNotificationChannelGroupAsync","_setNotificationChannelGroupAsync","_MaskedViewNativeJs","isEdgeToEdge","controlEdgeToEdgeValues","directEventEmitter","_ref$overScrollMode","_ref$javaScriptEnable","_ref$thirdPartyCookie","_ref$scalesPageToFit","_ref$allowsFullscreen","_ref$allowFileAccess","_ref$saveFormDataDisa","_ref$cacheEnabled","_ref$originWhitelist","_ref$setSupportMultip","_ref$setBuiltInZoomCo","_ref$setDisplayZoomCo","uniqueRef","lastErrorEvent","renderError","renderLoading","nativeConfig","RNCWebView","RNCWebViewModule","includeDiskFiles","messagingModuleName","onMessage","onShouldStartLoadWithRequestSubscription","onMessageSubscription","currKey"],"mappings":"A,0B,M,M,G,M,K,I,E,Q,I,Q,M,M,K,G,E,U,M,K,K,M,G,E,M,K,M,K,M,M,O,MA0RC,KAAA,OAAA,IAAA,MAAA,GAAA,IAAA,KAAA,MAAA,IAAAA,MAAA,EAAAC,MAAA,EAAAC,M,OAAA,KC2aA,KAAA,GAAA,IAAA,MAAA,GAAA,IAAA,KAAA,MAAA,IAAAF,MAAA,EAAAC,MAAA,EAAAC,M,KAAA,KC7kB8B,KAAA,GAAA,IAAA,MAAA,GAAA,IAAA,KAAA,MAAA,IAAAF,MAAA,EAAAC,MAAA,EAAAC,M,KAAA,KCxHoV,KAAA,GAAA,IAAA,MAAA,GAAA,IAAA,KAAA,MAAA,IAAAF,MAAA,EAAAC,MAAA,EAAAC,M,KAAA,K,K,G,I,M,G,I,K,G,I,M,E,M,E,MCO0x/D,KAAA,GAAA,IAAA,MAAA,GAAA,IAAA,KAAA,GAAA,IAAAF,MAAA,EAAAC,MAAA,EAAAC,M,KAAA,K,M,O,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,I,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,Q,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,I,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,W,Q,O,M,K,M,K,M,K,E,K,I,K,K,I,K,I,K,I,K,I,K,I,K,MJNnngEC,MAAH,MAAA,aAAA,MAAD,IAAtB,GACc,MACAA,MAAH,MAAA,KAAA,M,KAAgC,IAC7B,M,KACc,MAJ5B,EAMmB,IAAR,IACG,EAAH,IAEgB,EAAL,KAAA,IAqFI,MAuBbC,MAAU,SAAA,OAAiB,IAClB,MACC,KAAH,MAMO,KAAH,MAMC,KAAH,QAiBX,OAgBQ,UACA,I,KAYQ,M,KAIF,MACS,IAAH,IACOC,MAAG,KAAA,OAAA,IAAA,IAAV,IAkG9B,EA3QD,EACkBA,MAAG,KAAA,OAAA,IAAA,IAAV,GAAA,IACP,EAKJ,GACQC,GAAAA,IAAW,KAAA,KAAf,GASY,KAAA,QAAA,OAAA,KAIKC,IAJL,KAKSA,IALT,KAAA,KAOM,EACD,EADC,IAPN,KAWZD,IAAW,KAAA,QAQf,IArBQ,EAsBR,KACI,IAmBeA,GAAAA,IAAW,KAAA,KACnBE,GAAgB,MAAhBA,GAA+DC,SAAiB,OAAhFD,EAAuC,MAAa,KAA3D,IAhBcE,MAAK,KAAA,WAAA,IAAA,IAAf,EA6BR,GAEQJ,GAAAA,IAAW,KA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A,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAA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AAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAKAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,OAIAA,MAAA,KAAA,EAAA,IAAA,KAAA,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A,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,WAAA,QAAA,QAAA,QAAA,QAAA,QAAA,MAyJA,YAFsB,YADL,YADI,YADL,YADA,YADC,QADG,YADH,YADC,QADH,YADD,QADM,QADE,YADP,QADK,QADA,QADA,YADF,YADD,YADA,YADE,QADA,YADE,YADJ,YADK,QADF,YADA,YADN,QADU,YADP,YADI,YADN,YADA,YADA,YADK,YADC,YADG,YADA,YADJ,YADI,YADP,YADG,YADH,QADG,YADJ,YADE,QADH,YADO,YADH,YADC,YADA,QADG,YADG,QADA,QADE,QADF,QADD,YADF,YADA,QADF,QADM,YADV,YADC,YADF,QADI,QADL,YADO,YADG,QADA,QADA,YADF,QADC,YADF,YADF,YADA,YADC,YADD,YADW,YADX,YADC,YADD,YADG,QADH,YADI,YADL,YADH,YADA,QADC,YADG,YADF,YADC,YADJ,YADO,QADN,YADD,YADK,YADL,YADM,YADD,YADF,QADI,YADA,YADF,QADC,QADH,QADA,QADI,YADH,YADE,QADG,QADA,QADA,QADA,YADD,YADF,YADH,YADG,YADA,QADI,YADH,YADF,YADD,QADC,YADD,YADK,QADL,QADA,QADJ,YADG,YADC,QADM,YADT,YADI,QADC,QADD,YADE,YADF,YADJ,YADK,QADN,YADU,KADT,YADC,YADD,YADA,QADK,QADN,YADQ,YADH,IAFE,E,K,K,I,K,I,K,M,M,K,I,Q,OChTTp9B,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,YAXf,SAAA,K,G,Q,G,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IAED,KAFC,IAnCuC,IAAA,MAAA,EAAA,OAAAC,GAAAA,IAAA,KAAAqoC,GAAAA,IAAA,MAAAx/B,IAAA,KAAA,EAAA,OAAA,EAE/B08B,GAAAA,IAAiB,eAAA,MAAxB,EAIOA,GAAAA,IAAiB,eAAA,MAAxB,EAIa+C,GAAAA,IAAsB,WAAA,OAEnC,QAIA,EAHSzF,IAAS,KAAe,MAAA,KAA/B,EAMJ,GACa,KAAK,KAAhB,EAMF,GACa,KAAX,EAMF,GACa,KAAX,EAGF,SACmB,OACjB,IAKiB,KAAjB,IAKoBjQ,IAAyB,KAAzBA,IAAuC,KAC1C,KAASne,IAAT,MAAjB,IALYzf,MAC6G,KAArH,MAAA,oBAAA,IADiB,KAAA,OAAA,IAAA,IAAnB,IALUA,MACR,MAAA,aAAA,MADiB,KAAA,OAAA,IAAA,IAAnB,E,iB,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,OC5CC,IAAA,QACkC,IAAA,KAAV,OACd,IAAA,QACI,IAAA,OACLlF,MAAK,KAAR,IAEJ,MADa,IAEXH,MAAM,KAAT,MAmBG,IA2KqBzB,MAAU,SAAA,KAAb,IACNA,MAAU,SAAA,KAAb,IACEA,MAAU,SAAA,KAAb,IACKA,MAAU,SAAA,KAAb,IACMA,MAAU,SAAA,KAAb,IACAA,MAAU,SAAA,KAAb,IACGA,MAAU,SAAA,KAAb,IACGA,MAAU,SAAA,KAAb,IACEA,MAAU,SAAA,KAAb,IACOA,MAAU,SAAA,KAAb,IACAA,MAAU,SAAA,KAAb,IACQA,MAAU,SAAA,KAAb,IACNA,MAAU,SAAA,KAAb,IACGA,MAAU,SAAA,KAAb,IACjBA,MAAU,SAAA,KACgBA,MAAU,SAAA,KAAb,IACvBA,MAAU,SAAA,KACVA,MAAU,SAAA,KACsBA,MAAU,SAAA,KAAb,IAC7BA,MAAU,SAAA,KACkBA,MAAM,KAAT,IAQIA,MAAU,SAAA,KAAb,IAqDd,MACC,IACmB,IACT,IACA,IAyDF,KAAY,EACf,KADe,KAUd,KAVc,KAkBtB,KAlB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Ir0C,GAAAA,IAASyzC,GAAAA,MAAc,IAAf,KACV,EA0CF,EACQl9E,YAAK,KAAX,EAtPS+9E,GAAAA,IAAoB,KAAA,IAA3B,EAMOC,GAAAA,IAAa,KAAA,IAAKC,IAAlBD,IAAP,EAqLAE,GAAAA,IAAkBC,MAAD,KACnB,EAMEj7D,GAAAA,IAAgB,QAAA,OAClB,EAGE46D,GAAAA,IAAgBK,QAAD,MACjB,E,OC3PWh9E,MAAA,KAAA,IAAA,QAAA,OAYbA,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,YAHuB,SAAA,KAGvB,IAA2B,EAA3B+rB,GAAAA,IAAA,E,iB,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,I,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,OCRO,IAAA,QACkC,IAAA,KAAV,OACd,IAAA,QACI,IAAA,OACL5rB,MAAK,KAAR,IAEJ,MADa,IAEXH,MAAM,KAAT,MAmBG,IA2KqBzB,MAAU,SAAA,KAAb,IACNA,MAAU,SAAA,KAAb,IACEA,MAAU,SAAA,KAAb,IACKA,MAAU,SAAA,KAAb,IACMA,MAAU,SAAA,KAAb,IACAA,MAAU,SAAA,KAAb,IACGA,MAAU,SAAA,KAAb,IACGA,MAAU,SAAA,KAAb,IACEA,MAAU,SAAA,KAAb,IACOA,MAAU,SAAA,KAAb,IACAA,MAAU,SAAA,KAAb,IACQA,MAAU,SAAA,KAAb,IACNA,MAAU,SAAA,KAAb,IACGA,MAAU,SAAA,KAAb,IACjBA,MAAU,SAAA,KACgBA,MAAU,SAAA,KAAb,IACvBA,MAAU,SAAA,KACVA,MAAU,SAAA,KACsBA,MAAU,SAAA,KAAb,IAC7BA,MAAU,SAAA,KACkBA,MAAM,KAAT,IAQIA,MAAU,SAAA,KAAb,IAqDd,MACC,IACmB,IACX,IACA,IAyDA,KAAY,EACf,KADe,KAUd,KAVc,KAkBtB,KAlBsB,KAAA,KAsBnB,KAtBmB,KAA3B,MAgCqB,UAGV,KAHU,MASd,KATc,MAAH,MAeA,KAAH,MAgBJ,KA2BkC,MAAC,EACpC,KADoC,IAAD,KAAxB,IAWH,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K,G,I,M,M,K,I,K,G,I,I,K,O,S,E,G,I,G,I,I,EAA1E+rB,GAAAA,IAAA,E,O,M,K,I,Q,OCjBA/rB,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,YALA,SAAA,K,G,Q,G,E,OAAA,IAKe,EASbi3G,KATa,KAqBbC,KArBa,KAAf,IAwBE,EAxBFnrF,GAAAA,IAAA,EAUWorF,GAAAA,IAAe,KAAU,MAAA,IAAhC,EAYAA,GAAAA,IAAe,KAAU,SAAA,OAC3B,E,K,M,M,K,I,Q,OC3BFn3G,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,YADA,SAAA,KAAA,IAAAA,MAAA,KAAA,KAAA,KAAA,KAAA,K,G,Q,G,E,OACA,IAAsF,EAAtFo3G,GAAAA,IAAA,KAAA,EADA,KAAA,QAAA,MAAAp3G,MAAA,KAAA,KAAA,KAAAjB,GAAAA,IAAA,MAAA,GAAAiB,MAAA,KAAAjB,IAAA,IAAA,IAAA,KAAA,IAAA,OAAA,EAAA,EAAAs4G,GAAAA,IAAAxwG,GAAAA,IAAA,IAAA,E,O,M,K,I,Q,OCUA7G,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,YARA,SAAA,K,KAAA,KAQgD,UAAA,KAAhD,IAA2E,E,K,I,G,K,G,E,I,K,M,K,K,K,K,K,M,E,E,K,M,M,K,G,I,M,M,K,I,K,G,I,I,K,O,S,E,G,I,G,I,I,EAA3E+rB,GAAAA,IAAA,E,O,M,K,I,Q,OCNA/rB,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,YAFA,SAAA,K,G,Q,G,E,OAE+B,KAA/B,IAAgC,EAAhC+rB,GAAAA,IAAA,E,O,M,K,I,Q,OCgBA/rB,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,YApBA,SAAA,K,G,K,G,E,IAY+B,EAC7Bs3G,KAD6B,KAQ/B,IAAuB,EAAvBvrF,GAAAA,IAAA,EAPEurF,EAIA,E,O,M,K,I,Q,OCNFt3G,MAAA,KAAA,EAAA,IAAA,KAAA,QAAA,YATA,SAAA,K,KAAA,KASgD,UAAA,KAAhD,IAAyE,E,K,I,G,K,G,E,I,K,M,K,K,K,K,K,M,E,E,K,M,M,K,G,I,M,M,K,I,K,G,I,I,K,O,S,E,G,I,G,I,I,EAAzE+rB,GAAAA,IAAA,E,W,O,M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","sourcesContent":["'use strict';\nif (__DEV__ || !global[`${__METRO_GLOBAL_PREFIX__}__d`]) {\n    global.__r = metroRequire;\n    global[`${__METRO_GLOBAL_PREFIX__}__d`] = define;\n    global.__c = clear;\n    global.__registerSegment = registerSegment;\n}\nvar modules = clear();\nconst EMPTY = {};\nconst CYCLE_DETECTED = {};\nconst { hasOwnProperty } = {};\nif (__DEV__) {\n    global.$RefreshReg$ = global.$RefreshReg$ ?? (()=>{});\n    global.$RefreshSig$ = global.$RefreshSig$ ?? (()=>(type)=>type);\n}\nfunction clear() {\n    modules = new Map();\n    return modules;\n}\nif (__DEV__) {\n    var initializingModuleIds = [];\n}\nfunction define(factory, moduleId, dependencyMap) {\n    if (modules.has(moduleId)) {\n        if (__DEV__) {\n            const inverseDependencies = arguments[4];\n            if (inverseDependencies) {\n                global.__accept(moduleId, factory, dependencyMap, inverseDependencies);\n            }\n        }\n        return;\n    }\n    const mod = {\n        dependencyMap,\n        factory,\n        hasError: false,\n        importedAll: EMPTY,\n        importedDefault: EMPTY,\n        isInitialized: false,\n        publicModule: {\n            exports: {}\n        }\n    };\n    modules.set(moduleId, mod);\n    if (__DEV__) {\n        mod.hot = createHotReloadingObject();\n        const verboseName = arguments[3];\n        if (verboseName) {\n            mod.verboseName = verboseName;\n        }\n    }\n}\nfunction metroRequire(moduleId, moduleIdHint) {\n    if (moduleId === null) {\n        if (__DEV__ && typeof moduleIdHint === 'string') {\n            throw new Error(\"Cannot find module '\" + moduleIdHint + \"'\");\n        }\n        throw new Error('Cannot find module');\n    }\n    if (__DEV__) {\n        const initializingIndex = initializingModuleIds.indexOf(moduleId);\n        if (initializingIndex !== -1) {\n            const cycle = initializingModuleIds.slice(initializingIndex).map((id)=>{\n                var _modules_get;\n                return ((_modules_get = modules.get(id)) == null ? void 0 : _modules_get.verboseName) ?? '[unknown]';\n            });\n            if (shouldPrintRequireCycle(cycle)) {\n                cycle.push(cycle[0]);\n                console.warn(`Require cycle: ${cycle.join(' -> ')}\\n\\n` + 'Require cycles are allowed, but can result in uninitialized values. ' + 'Consider refactoring to remove the need for a cycle.');\n            }\n        }\n    }\n    const module = modules.get(moduleId);\n    return module && module.isInitialized ? module.publicModule.exports : guardedLoadModule(moduleId, module, moduleIdHint);\n}\nfunction shouldPrintRequireCycle(modules) {\n    const rcip = __METRO_GLOBAL_PREFIX__ + '__requireCycleIgnorePatterns';\n    const regExps = globalThis[rcip] ?? global[rcip] ?? [\n        /(^|\\/|\\\\)node_modules($|\\/|\\\\)/\n    ];\n    if (!Array.isArray(regExps)) {\n        return true;\n    }\n    const isIgnored = (module)=>module != null && regExps.some((regExp)=>regExp.test(module));\n    return modules.every((module)=>!isIgnored(module));\n}\nfunction metroImportDefault(moduleId) {\n    var _modules_get;\n    if (modules.has(moduleId) && ((_modules_get = modules.get(moduleId)) == null ? void 0 : _modules_get.importedDefault) !== EMPTY) {\n        return modules.get(moduleId).importedDefault;\n    }\n    const exports = metroRequire(moduleId);\n    const importedDefault = exports && exports.__esModule ? exports.default : exports;\n    return modules.get(moduleId).importedDefault = importedDefault;\n}\nmetroRequire.importDefault = metroImportDefault;\nfunction metroImportAll(moduleId) {\n    var _modules_get;\n    if (modules.has(moduleId) && ((_modules_get = modules.get(moduleId)) == null ? void 0 : _modules_get.importedAll) !== EMPTY) {\n        return modules.get(moduleId).importedAll;\n    }\n    const exports = metroRequire(moduleId);\n    let importedAll;\n    if (exports && exports.__esModule) {\n        importedAll = exports;\n    } else {\n        importedAll = {};\n        if (exports) {\n            for(const key in exports){\n                if (hasOwnProperty.call(exports, key)) {\n                    importedAll[key] = exports[key];\n                }\n            }\n        }\n        importedAll.default = exports;\n    }\n    return modules.get(moduleId).importedAll = importedAll;\n}\nmetroRequire[Symbol.for('expo.require')] = true;\nmetroRequire.importAll = metroImportAll;\nmetroRequire.context = function fallbackRequireContext() {\n    if (__DEV__) {\n        throw new Error('The experimental Metro feature `require.context` is not enabled in your project.\\nThis can be enabled by setting the `transformer.unstable_allowRequireContext` property to `true` in your Metro configuration.');\n    }\n    throw new Error('The experimental Metro feature `require.context` is not enabled in your project.');\n};\nmetroRequire.resolveWeak = function fallbackRequireResolveWeak() {\n    if (__DEV__) {\n        throw new Error('require.resolveWeak cannot be called dynamically. Ensure you are using the same version of `metro` and `metro-runtime`.');\n    }\n    throw new Error('require.resolveWeak cannot be called dynamically.');\n};\nmetroRequire.unguarded = function requireUnguarded(moduleId, moduleIdHint) {\n    if (__DEV__) {\n        const initializingIndex = initializingModuleIds.indexOf(moduleId);\n        if (initializingIndex !== -1) {\n            const cycle = initializingModuleIds.slice(initializingIndex).map((id)=>{\n                var _modules_get;\n                return ((_modules_get = modules.get(id)) == null ? void 0 : _modules_get.verboseName) ?? '[unknown]';\n            });\n            if (shouldPrintRequireCycle(cycle)) {\n                cycle.push(cycle[0]);\n                console.warn(`Require cycle: ${cycle.join(' -> ')}\\n\\n` + 'Require cycles are allowed, but can result in uninitialized values. ' + 'Consider refactoring to remove the need for a cycle.');\n            }\n        }\n    }\n    const module = modules.get(moduleId);\n    return module && module.isInitialized ? module.publicModule.exports : loadModuleImplementation(moduleId, module, moduleIdHint);\n};\nlet inGuard = false;\nfunction guardedLoadModule(moduleId, module, moduleIdHint) {\n    if (!inGuard && global.ErrorUtils) {\n        inGuard = true;\n        let returnValue;\n        try {\n            returnValue = loadModuleImplementation(moduleId, module, moduleIdHint);\n        } catch (e) {\n            global.ErrorUtils.reportFatalError(e);\n        }\n        inGuard = false;\n        return returnValue;\n    } else {\n        return loadModuleImplementation(moduleId, module, moduleIdHint);\n    }\n}\nconst ID_MASK_SHIFT = 16;\nconst LOCAL_ID_MASK = ~0 >>> ID_MASK_SHIFT;\nfunction unpackModuleId(moduleId) {\n    if (typeof moduleId !== 'number') {\n        throw new Error('Module ID must be a number in unpackModuleId.');\n    }\n    const segmentId = moduleId >>> ID_MASK_SHIFT;\n    const localId = moduleId & LOCAL_ID_MASK;\n    return {\n        segmentId,\n        localId\n    };\n}\nmetroRequire.unpackModuleId = unpackModuleId;\nfunction packModuleId(value) {\n    return (value.segmentId << ID_MASK_SHIFT) + value.localId;\n}\nmetroRequire.packModuleId = packModuleId;\nconst moduleDefinersBySegmentID = [];\nconst definingSegmentByModuleID = new Map();\nfunction registerSegment(segmentId, moduleDefiner, moduleIds) {\n    moduleDefinersBySegmentID[segmentId] = moduleDefiner;\n    if (__DEV__) {\n        if (segmentId === 0 && moduleIds) {\n            throw new Error('registerSegment: Expected moduleIds to be null for main segment');\n        }\n        if (segmentId !== 0 && !moduleIds) {\n            throw new Error('registerSegment: Expected moduleIds to be passed for segment #' + segmentId);\n        }\n    }\n    if (moduleIds) {\n        moduleIds.forEach((moduleId)=>{\n            if (!modules.has(moduleId) && !definingSegmentByModuleID.has(moduleId)) {\n                definingSegmentByModuleID.set(moduleId, segmentId);\n            }\n        });\n    }\n}\nfunction loadModuleImplementation(moduleId, module, moduleIdHint) {\n    if (!module && moduleDefinersBySegmentID.length > 0) {\n        const segmentId = definingSegmentByModuleID.get(moduleId) ?? 0;\n        const definer = moduleDefinersBySegmentID[segmentId];\n        if (definer != null) {\n            definer(moduleId);\n            module = modules.get(moduleId);\n            definingSegmentByModuleID.delete(moduleId);\n        }\n    }\n    if (!module) {\n        throw unknownModuleError(moduleId, moduleIdHint);\n    }\n    if (module.hasError) {\n        throw module.error;\n    }\n    if (__DEV__) {\n        var Systrace = requireSystrace();\n        var Refresh = requireRefresh();\n    }\n    module.isInitialized = true;\n    const { factory, dependencyMap } = module;\n    if (__DEV__) {\n        initializingModuleIds.push(moduleId);\n    }\n    try {\n        if (__DEV__) {\n            Systrace.beginEvent('JS_require_' + (module.verboseName || moduleId));\n        }\n        const moduleObject = module.publicModule;\n        if (__DEV__) {\n            moduleObject.hot = module.hot;\n            var prevRefreshReg = global.$RefreshReg$;\n            var prevRefreshSig = global.$RefreshSig$;\n            if (Refresh != null) {\n                const RefreshRuntime = Refresh;\n                global.$RefreshReg$ = (type, id)=>{\n                    const prefixedModuleId = __METRO_GLOBAL_PREFIX__ + ' ' + moduleId + ' ' + id;\n                    RefreshRuntime.register(type, prefixedModuleId);\n                };\n                global.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;\n            }\n        }\n        moduleObject.id = moduleId;\n        factory == null ? void 0 : factory(global, metroRequire, metroImportDefault, metroImportAll, moduleObject, moduleObject.exports, dependencyMap);\n        if (!__DEV__) {\n            module.factory = undefined;\n            module.dependencyMap = undefined;\n        }\n        if (__DEV__) {\n            Systrace.endEvent();\n            if (Refresh != null) {\n                const prefixedModuleId = __METRO_GLOBAL_PREFIX__ + ' ' + moduleId;\n                registerExportsForReactRefresh(Refresh, moduleObject.exports, prefixedModuleId);\n            }\n        }\n        return moduleObject.exports;\n    } catch (e) {\n        module.hasError = true;\n        module.error = e;\n        module.isInitialized = false;\n        module.publicModule.exports = undefined;\n        throw e;\n    } finally{\n        if (__DEV__) {\n            if (initializingModuleIds.pop() !== moduleId) {\n                throw new Error('initializingModuleIds is corrupt; something is terribly wrong');\n            }\n            global.$RefreshReg$ = prevRefreshReg;\n            global.$RefreshSig$ = prevRefreshSig;\n        }\n    }\n}\nfunction unknownModuleError(id, moduleIdHint) {\n    let message = 'Requiring unknown module \"' + (id ?? moduleIdHint ?? `[unknown optional import]`) + '\".';\n    if (__DEV__) {\n        message += ' If you are sure the module exists, try restarting Metro. ' + 'You may also want to run `yarn` or `npm install`.';\n    }\n    return Error(message);\n}\nif (__DEV__) {\n    metroRequire.Systrace = {\n        beginEvent: ()=>{},\n        endEvent: ()=>{}\n    };\n    metroRequire.getModules = ()=>{\n        return modules;\n    };\n    var createHotReloadingObject = function() {\n        const hot = {\n            _acceptCallback: null,\n            _disposeCallback: null,\n            _didAccept: false,\n            accept: (callback)=>{\n                hot._didAccept = true;\n                hot._acceptCallback = callback;\n            },\n            dispose: (callback)=>{\n                hot._disposeCallback = callback;\n            }\n        };\n        return hot;\n    };\n    let reactRefreshTimeout = null;\n    const metroHotUpdateModule = function(id, factory, dependencyMap, inverseDependencies) {\n        const mod = modules.get(id);\n        if (!mod) {\n            if (factory) {\n                return;\n            }\n            throw unknownModuleError(id);\n        }\n        if (!mod.hasError && !mod.isInitialized) {\n            mod.factory = factory;\n            mod.dependencyMap = dependencyMap;\n            return;\n        }\n        const Refresh = requireRefresh();\n        const refreshBoundaryIDs = new Set();\n        let didBailOut = false;\n        let updatedModuleIDs;\n        try {\n            updatedModuleIDs = topologicalSort([\n                id\n            ], (pendingID)=>{\n                const pendingModule = modules.get(pendingID);\n                if (pendingModule == null) {\n                    return [];\n                }\n                const pendingHot = pendingModule.hot;\n                if (pendingHot == null) {\n                    throw new Error('[Refresh] Expected module.hot to always exist in DEV.');\n                }\n                let canAccept = pendingHot._didAccept;\n                if (!canAccept && Refresh != null) {\n                    const isBoundary = isReactRefreshBoundary(Refresh, pendingModule.publicModule.exports);\n                    if (isBoundary) {\n                        canAccept = true;\n                        refreshBoundaryIDs.add(pendingID);\n                    }\n                }\n                if (canAccept) {\n                    return [];\n                }\n                const parentIDs = inverseDependencies[pendingID];\n                if (parentIDs.length === 0) {\n                    performFullRefresh('No root boundary', {\n                        source: mod,\n                        failed: pendingModule\n                    });\n                    didBailOut = true;\n                    return [];\n                }\n                return parentIDs;\n            }, ()=>didBailOut).reverse();\n        } catch (e) {\n            if (e === CYCLE_DETECTED) {\n                performFullRefresh('Dependency cycle', {\n                    source: mod\n                });\n                return;\n            }\n            throw e;\n        }\n        if (didBailOut) {\n            return;\n        }\n        const seenModuleIDs = new Set();\n        for(let i = 0; i < updatedModuleIDs.length; i++){\n            const updatedID = updatedModuleIDs[i];\n            if (seenModuleIDs.has(updatedID)) {\n                continue;\n            }\n            seenModuleIDs.add(updatedID);\n            const updatedMod = modules.get(updatedID);\n            if (updatedMod == null) {\n                throw new Error('[Refresh] Expected to find the updated module.');\n            }\n            const prevExports = updatedMod.publicModule.exports;\n            const didError = runUpdatedModule(updatedID, updatedID === id ? factory : undefined, updatedID === id ? dependencyMap : undefined);\n            const nextExports = updatedMod.publicModule.exports;\n            if (didError) {\n                return;\n            }\n            if (refreshBoundaryIDs.has(updatedID)) {\n                const isNoLongerABoundary = !isReactRefreshBoundary(Refresh, nextExports);\n                const didInvalidate = shouldInvalidateReactRefreshBoundary(Refresh, prevExports, nextExports);\n                if (isNoLongerABoundary || didInvalidate) {\n                    const parentIDs = inverseDependencies[updatedID];\n                    if (parentIDs.length === 0) {\n                        performFullRefresh(isNoLongerABoundary ? 'No longer a boundary' : 'Invalidated boundary', {\n                            source: mod,\n                            failed: updatedMod\n                        });\n                        return;\n                    }\n                    for(let j = 0; j < parentIDs.length; j++){\n                        const parentID = parentIDs[j];\n                        const parentMod = modules.get(parentID);\n                        if (parentMod == null) {\n                            throw new Error('[Refresh] Expected to find parent module.');\n                        }\n                        const canAcceptParent = isReactRefreshBoundary(Refresh, parentMod.publicModule.exports);\n                        if (canAcceptParent) {\n                            refreshBoundaryIDs.add(parentID);\n                            updatedModuleIDs.push(parentID);\n                        } else {\n                            performFullRefresh('Invalidated boundary', {\n                                source: mod,\n                                failed: parentMod\n                            });\n                            return;\n                        }\n                    }\n                }\n            }\n        }\n        if (Refresh != null) {\n            if (reactRefreshTimeout == null) {\n                reactRefreshTimeout = setTimeout(()=>{\n                    reactRefreshTimeout = null;\n                    Refresh.performReactRefresh();\n                }, 30);\n            }\n        }\n    };\n    const topologicalSort = function(roots, getEdges, earlyStop) {\n        const result = [];\n        const visited = new Set();\n        const stack = new Set();\n        function traverseDependentNodes(node) {\n            if (stack.has(node)) {\n                throw CYCLE_DETECTED;\n            }\n            if (visited.has(node)) {\n                return;\n            }\n            visited.add(node);\n            stack.add(node);\n            const dependentNodes = getEdges(node);\n            if (earlyStop(node)) {\n                stack.delete(node);\n                return;\n            }\n            dependentNodes.forEach((dependent)=>{\n                traverseDependentNodes(dependent);\n            });\n            stack.delete(node);\n            result.push(node);\n        }\n        roots.forEach((root)=>{\n            traverseDependentNodes(root);\n        });\n        return result;\n    };\n    const runUpdatedModule = function(id, factory, dependencyMap) {\n        const mod = modules.get(id);\n        if (mod == null) {\n            throw new Error('[Refresh] Expected to find the module.');\n        }\n        const { hot } = mod;\n        if (!hot) {\n            throw new Error('[Refresh] Expected module.hot to always exist in DEV.');\n        }\n        if (hot._disposeCallback) {\n            try {\n                hot._disposeCallback();\n            } catch (error) {\n                console.error(`Error while calling dispose handler for module ${id}: `, error);\n            }\n        }\n        if (factory) {\n            mod.factory = factory;\n        }\n        if (dependencyMap) {\n            mod.dependencyMap = dependencyMap;\n        }\n        mod.hasError = false;\n        mod.error = undefined;\n        mod.importedAll = EMPTY;\n        mod.importedDefault = EMPTY;\n        mod.isInitialized = false;\n        const prevExports = mod.publicModule.exports;\n        mod.publicModule.exports = {};\n        hot._didAccept = false;\n        hot._acceptCallback = null;\n        hot._disposeCallback = null;\n        metroRequire(id);\n        if (mod.hasError) {\n            mod.hasError = false;\n            mod.isInitialized = true;\n            mod.error = null;\n            mod.publicModule.exports = prevExports;\n            return true;\n        }\n        if (hot._acceptCallback) {\n            try {\n                hot._acceptCallback();\n            } catch (error) {\n                console.error(`Error while calling accept handler for module ${id}: `, error);\n            }\n        }\n        return false;\n    };\n    const performFullRefresh = (reason, modules)=>{\n        if (typeof window !== 'undefined' && window.location != null && typeof window.location.reload === 'function') {\n            window.location.reload();\n        } else {\n            const Refresh = requireRefresh();\n            if (Refresh != null) {\n                var _modules_source, _modules_failed;\n                const sourceName = ((_modules_source = modules.source) == null ? void 0 : _modules_source.verboseName) ?? 'unknown';\n                const failedName = ((_modules_failed = modules.failed) == null ? void 0 : _modules_failed.verboseName) ?? 'unknown';\n                Refresh.performFullRefresh(`Fast Refresh - ${reason} <${sourceName}> <${failedName}>`);\n            } else {\n                console.warn('Could not reload the application after an edit.');\n            }\n        }\n    };\n    var isSpecifierSafeToCheck = (moduleExports, key)=>{\n        if (moduleExports && moduleExports.__esModule) {\n            return true;\n        } else {\n            const desc = Object.getOwnPropertyDescriptor(moduleExports, key);\n            return !desc || !desc.get;\n        }\n    };\n    var isReactRefreshBoundary = function(Refresh, moduleExports) {\n        if (Refresh.isLikelyComponentType(moduleExports)) {\n            return true;\n        }\n        if (moduleExports == null || typeof moduleExports !== 'object') {\n            return false;\n        }\n        let hasExports = false;\n        let areAllExportsComponents = true;\n        for(const key in moduleExports){\n            hasExports = true;\n            if (key === '__esModule') {\n                continue;\n            } else if (!isSpecifierSafeToCheck(moduleExports, key)) {\n                return false;\n            }\n            const exportValue = moduleExports[key];\n            if (!Refresh.isLikelyComponentType(exportValue)) {\n                areAllExportsComponents = false;\n            }\n        }\n        return hasExports && areAllExportsComponents;\n    };\n    var shouldInvalidateReactRefreshBoundary = (Refresh, prevExports, nextExports)=>{\n        const prevSignature = getRefreshBoundarySignature(Refresh, prevExports);\n        const nextSignature = getRefreshBoundarySignature(Refresh, nextExports);\n        if (prevSignature.length !== nextSignature.length) {\n            return true;\n        }\n        for(let i = 0; i < nextSignature.length; i++){\n            if (prevSignature[i] !== nextSignature[i]) {\n                return true;\n            }\n        }\n        return false;\n    };\n    var getRefreshBoundarySignature = (Refresh, moduleExports)=>{\n        const signature = [];\n        signature.push(Refresh.getFamilyByType(moduleExports));\n        if (moduleExports == null || typeof moduleExports !== 'object') {\n            return signature;\n        }\n        for(const key in moduleExports){\n            if (key === '__esModule') {\n                continue;\n            } else if (!isSpecifierSafeToCheck(moduleExports, key)) {\n                continue;\n            }\n            const exportValue = moduleExports[key];\n            signature.push(key);\n            signature.push(Refresh.getFamilyByType(exportValue));\n        }\n        return signature;\n    };\n    var registerExportsForReactRefresh = (Refresh, moduleExports, moduleID)=>{\n        Refresh.register(moduleExports, moduleID + ' %exports%');\n        if (moduleExports == null || typeof moduleExports !== 'object') {\n            return;\n        }\n        for(const key in moduleExports){\n            if (!isSpecifierSafeToCheck(moduleExports, key)) {\n                continue;\n            }\n            const exportValue = moduleExports[key];\n            const typeID = moduleID + ' %exports% ' + key;\n            Refresh.register(exportValue, typeID);\n        }\n    };\n    global.__accept = metroHotUpdateModule;\n}\nif (__DEV__) {\n    var requireSystrace = function requireSystrace() {\n        return global[__METRO_GLOBAL_PREFIX__ + '__SYSTRACE'] || metroRequire.Systrace;\n    };\n    var requireRefresh = function requireRefresh() {\n        return global[__METRO_GLOBAL_PREFIX__ + '__ReactRefresh'] || global[global.__METRO_GLOBAL_PREFIX__ + '__ReactRefresh'] || metroRequire.Refresh;\n    };\n}\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 * @format\n * @noflow\n * @nolint\n * @polyfill\n */\n\n'use client';\n\n/* eslint-disable no-shadow, eqeqeq, no-unused-vars, no-control-regex  */\n\n/**\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n */\nconst inspect = (function () {\n  // Copyright Joyent, Inc. and other Node contributors.\n  //\n  // Permission is hereby granted, free of charge, to any person obtaining a\n  // copy of this software and associated documentation files (the\n  // \"Software\"), to deal in the Software without restriction, including\n  // without limitation the rights to use, copy, modify, merge, publish,\n  // distribute, sublicense, and/or sell copies of the Software, and to permit\n  // persons to whom the Software is furnished to do so, subject to the\n  // following conditions:\n  //\n  // The above copyright notice and this permission notice shall be included\n  // in all copies or substantial portions of the Software.\n  //\n  // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  // USE OR OTHER DEALINGS IN THE SOFTWARE.\n  //\n  // https://github.com/joyent/node/blob/master/lib/util.js\n\n  function inspect(obj, opts) {\n    var ctx = {\n      seen: [],\n      formatValueCalls: 0,\n      stylize: stylizeNoColor,\n    };\n    return formatValue(ctx, obj, opts.depth);\n  }\n\n  function stylizeNoColor(str, styleType) {\n    return str;\n  }\n\n  function arrayToHash(array) {\n    var hash = {};\n\n    array.forEach(function (val, idx) {\n      hash[val] = true;\n    });\n\n    return hash;\n  }\n\n  function formatValue(ctx, value, recurseTimes) {\n    ctx.formatValueCalls++;\n    if (ctx.formatValueCalls > 200) {\n      return `[TOO BIG formatValueCalls ${ctx.formatValueCalls} exceeded limit of 200]`;\n    }\n\n    // Primitive types cannot have properties\n    var primitive = formatPrimitive(ctx, value);\n    if (primitive) {\n      return primitive;\n    }\n\n    // Look up the keys of the object.\n    var keys = Object.keys(value);\n    var visibleKeys = arrayToHash(keys);\n\n    // IE doesn't make error fields non-enumerable\n    // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n    if (\n      isError(value) &&\n      (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)\n    ) {\n      return formatError(value);\n    }\n\n    // Some type of object without properties can be shortcutted.\n    if (keys.length === 0) {\n      if (isFunction(value)) {\n        var name = value.name ? ': ' + value.name : '';\n        return ctx.stylize('[Function' + name + ']', 'special');\n      }\n      if (isRegExp(value)) {\n        return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n      }\n      if (isDate(value)) {\n        return ctx.stylize(Date.prototype.toString.call(value), 'date');\n      }\n      if (isError(value)) {\n        return formatError(value);\n      }\n    }\n\n    var base = '',\n      array = false,\n      braces = ['{', '}'];\n\n    // Make Array say that they are Array\n    if (isArray(value)) {\n      array = true;\n      braces = ['[', ']'];\n    }\n\n    // Make functions say that they are functions\n    if (isFunction(value)) {\n      var n = value.name ? ': ' + value.name : '';\n      base = ' [Function' + n + ']';\n    }\n\n    // Make RegExps say that they are RegExps\n    if (isRegExp(value)) {\n      base = ' ' + RegExp.prototype.toString.call(value);\n    }\n\n    // Make dates with properties first say the date\n    if (isDate(value)) {\n      base = ' ' + Date.prototype.toUTCString.call(value);\n    }\n\n    // Make error with message first say the error\n    if (isError(value)) {\n      base = ' ' + formatError(value);\n    }\n\n    if (keys.length === 0 && (!array || value.length == 0)) {\n      return braces[0] + base + braces[1];\n    }\n\n    if (recurseTimes < 0) {\n      if (isRegExp(value)) {\n        return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n      } else {\n        return ctx.stylize('[Object]', 'special');\n      }\n    }\n\n    ctx.seen.push(value);\n\n    var output;\n    if (array) {\n      output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n    } else {\n      output = keys.map(function (key) {\n        return formatProperty(\n          ctx,\n          value,\n          recurseTimes,\n          visibleKeys,\n          key,\n          array,\n        );\n      });\n    }\n\n    ctx.seen.pop();\n\n    return reduceToSingleString(output, base, braces);\n  }\n\n  function formatPrimitive(ctx, value) {\n    if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n    if (isString(value)) {\n      var simple =\n        \"'\" +\n        JSON.stringify(value)\n          .replace(/^\"|\"$/g, '')\n          .replace(/'/g, \"\\\\'\")\n          .replace(/\\\\\"/g, '\"') +\n        \"'\";\n      return ctx.stylize(simple, 'string');\n    }\n    if (isNumber(value)) return ctx.stylize('' + value, 'number');\n    if (isBoolean(value)) return ctx.stylize('' + value, 'boolean');\n    // For some reason typeof null is \"object\", so special case here.\n    if (isNull(value)) return ctx.stylize('null', 'null');\n  }\n\n  function formatError(value) {\n    return '[' + Error.prototype.toString.call(value) + ']';\n  }\n\n  function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n    var output = [];\n    for (var i = 0, l = value.length; i < l; ++i) {\n      if (hasOwnProperty(value, String(i))) {\n        output.push(\n          formatProperty(\n            ctx,\n            value,\n            recurseTimes,\n            visibleKeys,\n            String(i),\n            true,\n          ),\n        );\n      } else {\n        output.push('');\n      }\n    }\n    keys.forEach(function (key) {\n      if (!key.match(/^\\d+$/)) {\n        output.push(\n          formatProperty(ctx, value, recurseTimes, visibleKeys, key, true),\n        );\n      }\n    });\n    return output;\n  }\n\n  function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n    var name, str, desc;\n    desc = Object.getOwnPropertyDescriptor(value, key) || {value: value[key]};\n    if (desc.get) {\n      if (desc.set) {\n        str = ctx.stylize('[Getter/Setter]', 'special');\n      } else {\n        str = ctx.stylize('[Getter]', 'special');\n      }\n    } else {\n      if (desc.set) {\n        str = ctx.stylize('[Setter]', 'special');\n      }\n    }\n    if (!hasOwnProperty(visibleKeys, key)) {\n      name = '[' + key + ']';\n    }\n    if (!str) {\n      if (ctx.seen.indexOf(desc.value) < 0) {\n        if (isNull(recurseTimes)) {\n          str = formatValue(ctx, desc.value, null);\n        } else {\n          str = formatValue(ctx, desc.value, recurseTimes - 1);\n        }\n        if (str.indexOf('\\n') > -1) {\n          if (array) {\n            str = str\n              .split('\\n')\n              .map(function (line) {\n                return '  ' + line;\n              })\n              .join('\\n')\n              .slice(2);\n          } else {\n            str =\n              '\\n' +\n              str\n                .split('\\n')\n                .map(function (line) {\n                  return '   ' + line;\n                })\n                .join('\\n');\n          }\n        }\n      } else {\n        str = ctx.stylize('[Circular]', 'special');\n      }\n    }\n    if (isUndefined(name)) {\n      if (array && key.match(/^\\d+$/)) {\n        return str;\n      }\n      name = JSON.stringify('' + key);\n      if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n        name = name.slice(1, name.length - 1);\n        name = ctx.stylize(name, 'name');\n      } else {\n        name = name\n          .replace(/'/g, \"\\\\'\")\n          .replace(/\\\\\"/g, '\"')\n          .replace(/(^\"|\"$)/g, \"'\");\n        name = ctx.stylize(name, 'string');\n      }\n    }\n\n    return name + ': ' + str;\n  }\n\n  function reduceToSingleString(output, base, braces) {\n    var numLinesEst = 0;\n    var length = output.reduce(function (prev, cur) {\n      numLinesEst++;\n      if (cur.indexOf('\\n') >= 0) numLinesEst++;\n      return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n    }, 0);\n\n    if (length > 60) {\n      return (\n        braces[0] +\n        (base === '' ? '' : base + '\\n ') +\n        ' ' +\n        output.join(',\\n  ') +\n        ' ' +\n        braces[1]\n      );\n    }\n\n    return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n  }\n\n  // NOTE: These type checking functions intentionally don't use `instanceof`\n  // because it is fragile and can be easily faked with `Object.create()`.\n  function isArray(ar) {\n    return Array.isArray(ar);\n  }\n\n  function isBoolean(arg) {\n    return typeof arg === 'boolean';\n  }\n\n  function isNull(arg) {\n    return arg === null;\n  }\n\n  function isNullOrUndefined(arg) {\n    return arg == null;\n  }\n\n  function isNumber(arg) {\n    return typeof arg === 'number';\n  }\n\n  function isString(arg) {\n    return typeof arg === 'string';\n  }\n\n  function isSymbol(arg) {\n    return typeof arg === 'symbol';\n  }\n\n  function isUndefined(arg) {\n    return arg === void 0;\n  }\n\n  function isRegExp(re) {\n    return isObject(re) && objectToString(re) === '[object RegExp]';\n  }\n\n  function isObject(arg) {\n    return typeof arg === 'object' && arg !== null;\n  }\n\n  function isDate(d) {\n    return isObject(d) && objectToString(d) === '[object Date]';\n  }\n\n  function isError(e) {\n    return (\n      isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error)\n    );\n  }\n\n  function isFunction(arg) {\n    return typeof arg === 'function';\n  }\n\n  function objectToString(o) {\n    return Object.prototype.toString.call(o);\n  }\n\n  function hasOwnProperty(obj, prop) {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n  }\n\n  return inspect;\n})();\n\nconst INDEX_COLUMN_NAME = '(index)';\nconst LOG_LEVELS = {\n  trace: 0,\n  info: 1,\n  warn: 2,\n  error: 3,\n};\n\nfunction getNativeLogFunction(level) {\n  return function () {\n    let str;\n    if (arguments.length === 1 && typeof arguments[0] === 'string') {\n      str = arguments[0];\n    } else {\n      str = Array.prototype.map\n        .call(arguments, function (arg) {\n          return inspect(arg, {depth: 10});\n        })\n        .join(', ');\n    }\n\n    // TRICKY\n    // If more than one argument is provided, the code above collapses them all\n    // into a single formatted string. This transform wraps string arguments in\n    // single quotes (e.g. \"foo\" -> \"'foo'\") which then breaks the \"Warning:\"\n    // check below. So it's important that we look at the first argument, rather\n    // than the formatted argument string.\n    const firstArg = arguments[0];\n\n    let logLevel = level;\n    if (\n      typeof firstArg === 'string' &&\n      firstArg.slice(0, 9) === 'Warning: ' &&\n      logLevel >= LOG_LEVELS.error\n    ) {\n      // React warnings use console.error so that a stack trace is shown,\n      // but we don't (currently) want these to show a redbox\n      // (Note: Logic duplicated in ExceptionsManager.js.)\n      logLevel = LOG_LEVELS.warn;\n    }\n    if (groupStack.length) {\n      str = groupFormat('', str);\n    }\n    global.nativeLoggingHook(str, logLevel);\n  };\n}\n\nfunction repeat(element, n) {\n  return Array.apply(null, Array(n)).map(function () {\n    return element;\n  });\n}\n\nfunction formatCellValue(cell, key) {\n  if (key === INDEX_COLUMN_NAME) {\n    return cell[key];\n  }\n\n  if (cell.hasOwnProperty(key)) {\n    var cellValue = cell[key];\n\n    switch (typeof cellValue) {\n      case 'function':\n        return 'ƒ';\n      case 'string':\n        return \"'\" + cellValue + \"'\";\n      case 'object':\n        return cellValue == null ? 'null' : '{…}';\n    }\n\n    return String(cellValue);\n  }\n  return '';\n}\n\nfunction consoleTablePolyfill(data, columns) {\n  var rows;\n\n  // convert object -> array\n  if (Array.isArray(data)) {\n    rows = data.map((row, index) => {\n      var processedRow = {};\n      processedRow[INDEX_COLUMN_NAME] = String(index);\n      Object.assign(processedRow, row);\n      return processedRow;\n    });\n  } else {\n    rows = [];\n    for (var key in data) {\n      if (data.hasOwnProperty(key)) {\n        var processedRow = {};\n        processedRow[INDEX_COLUMN_NAME] = key;\n        Object.assign(processedRow, data[key]);\n        rows.push(processedRow);\n      }\n    }\n  }\n  if (rows.length === 0) {\n    global.nativeLoggingHook('', LOG_LEVELS.info);\n    return;\n  }\n\n  if (Array.isArray(columns)) {\n    columns = [INDEX_COLUMN_NAME].concat(columns);\n  } else {\n    columns = Array.from(\n      rows.reduce((columnSet, row) => {\n        Object.keys(row).forEach(key => columnSet.add(key));\n        return columnSet;\n      }, new Set()),\n    );\n  }\n  var stringRows = [];\n  var columnWidths = [];\n\n  // Convert each cell to a string. Also\n  // figure out max cell width for each column\n  columns.forEach(function (k, i) {\n    columnWidths[i] = k.length;\n    for (var j = 0; j < rows.length; j++) {\n      var cellStr = formatCellValue(rows[j], k);\n      stringRows[j] = stringRows[j] || [];\n      stringRows[j][i] = cellStr;\n      columnWidths[i] = Math.max(columnWidths[i], cellStr.length);\n    }\n  });\n\n  // Join all elements in the row into a single string with | separators\n  // (appends extra spaces to each cell to make separators  | aligned)\n  function joinRow(row, space) {\n    var cells = row.map(function (cell, i) {\n      var extraSpaces = repeat(' ', columnWidths[i] - cell.length).join('');\n      return cell + extraSpaces;\n    });\n    space = space || ' ';\n    return '| ' + cells.join(space + '|' + space) + ' |';\n  }\n\n  var separators = columnWidths.map(function (columnWidth) {\n    return repeat('-', columnWidth).join('');\n  });\n  var separatorRow = joinRow(separators);\n  var header = joinRow(columns);\n  var table = [header, separatorRow];\n\n  for (var i = 0; i < rows.length; i++) {\n    table.push(joinRow(stringRows[i]));\n  }\n\n  // Notice extra empty line at the beginning.\n  // Native logging hook adds \"RCTLog >\" at the front of every\n  // logged string, which would shift the header and screw up\n  // the table\n  global.nativeLoggingHook('\\n' + table.join('\\n'), LOG_LEVELS.info);\n}\n\nconst GROUP_PAD = '\\u2502'; // Box light vertical\nconst GROUP_OPEN = '\\u2510'; // Box light down+left\nconst GROUP_CLOSE = '\\u2518'; // Box light up+left\n\nconst groupStack = [];\n\nfunction groupFormat(prefix, msg) {\n  // Insert group formatting before the console message\n  return groupStack.join('') + prefix + ' ' + (msg || '');\n}\n\nfunction consoleGroupPolyfill(label) {\n  global.nativeLoggingHook(groupFormat(GROUP_OPEN, label), LOG_LEVELS.info);\n  groupStack.push(GROUP_PAD);\n}\n\nfunction consoleGroupCollapsedPolyfill(label) {\n  global.nativeLoggingHook(groupFormat(GROUP_CLOSE, label), LOG_LEVELS.info);\n  groupStack.push(GROUP_PAD);\n}\n\nfunction consoleGroupEndPolyfill() {\n  groupStack.pop();\n  global.nativeLoggingHook(groupFormat(GROUP_CLOSE), LOG_LEVELS.info);\n}\n\nfunction consoleAssertPolyfill(expression, label) {\n  if (!expression) {\n    global.nativeLoggingHook('Assertion failed: ' + label, LOG_LEVELS.error);\n  }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/console/timeStamp_static.\n// Non-standard API for recording markers on a timeline of the Performance instrumentation.\n// The actual logging is not provided by definition.\nfunction consoleTimeStampPolyfill() {}\n\nif (global.nativeLoggingHook) {\n  const originalConsole = global.console;\n  // Preserve the original `console` as `originalConsole`\n  if (__DEV__ && originalConsole) {\n    const descriptor = Object.getOwnPropertyDescriptor(global, 'console');\n    if (descriptor) {\n      Object.defineProperty(global, 'originalConsole', descriptor);\n    }\n  }\n\n  global.console = {\n    timeStamp: consoleTimeStampPolyfill,\n    ...(originalConsole ?? {}),\n    error: getNativeLogFunction(LOG_LEVELS.error),\n    info: getNativeLogFunction(LOG_LEVELS.info),\n    log: getNativeLogFunction(LOG_LEVELS.info),\n    warn: getNativeLogFunction(LOG_LEVELS.warn),\n    trace: getNativeLogFunction(LOG_LEVELS.trace),\n    debug: getNativeLogFunction(LOG_LEVELS.trace),\n    table: consoleTablePolyfill,\n    group: consoleGroupPolyfill,\n    groupEnd: consoleGroupEndPolyfill,\n    groupCollapsed: consoleGroupCollapsedPolyfill,\n    assert: consoleAssertPolyfill,\n  };\n\n  // TODO(T206796580): This was copy-pasted from ExceptionsManager.js\n  // Delete the copy there after the c++ pipeline is rolled out everywhere.\n  if (global.RN$useAlwaysAvailableJSErrorHandling === true) {\n    let originalConsoleError = console.error;\n    console.reportErrorsAsExceptions = true;\n    function stringifySafe(arg) {\n      return inspect(arg, {depth: 10}).replace(/\\n\\s*/g, ' ');\n    }\n    console.error = function (...args) {\n      originalConsoleError.apply(this, args);\n      if (!console.reportErrorsAsExceptions) {\n        return;\n      }\n      if (global.RN$inExceptionHandler?.()) {\n        return;\n      }\n      let error;\n\n      const firstArg = args[0];\n      if (firstArg?.stack) {\n        // RN$handleException will console.error this with high enough fidelity.\n        error = firstArg;\n      } else {\n        if (typeof firstArg === 'string' && firstArg.startsWith('Warning: ')) {\n          // React warnings use console.error so that a stack trace is shown, but\n          // we don't (currently) want these to show a redbox\n          return;\n        }\n        const message = args\n          .map(arg => (typeof arg === 'string' ? arg : stringifySafe(arg)))\n          .join(' ');\n\n        error = new Error(message);\n        error.name = 'console.error';\n      }\n\n      const isFatal = false;\n      const reportToConsole = false;\n      global.RN$handleException(error, isFatal, reportToConsole);\n    };\n  }\n\n  Object.defineProperty(console, '_isPolyfilled', {\n    value: true,\n    enumerable: false,\n  });\n\n  // If available, also call the original `console` method since that is\n  // sometimes useful. Ex: on OS X, this will let you see rich output in\n  // the Safari Web Inspector console.\n  if (__DEV__ && originalConsole) {\n    Object.keys(console).forEach(methodName => {\n      const reactNativeMethod = console[methodName];\n      if (\n        originalConsole[methodName] &&\n        reactNativeMethod !== originalConsole[methodName]\n      ) {\n        console[methodName] = function () {\n          originalConsole[methodName](...arguments);\n          reactNativeMethod.apply(console, arguments);\n        };\n      }\n    });\n\n    // The following methods are not supported by this polyfill but\n    // we still should pass them to original console if they are\n    // supported by it.\n    ['clear', 'dir', 'dirxml', 'profile', 'profileEnd'].forEach(methodName => {\n      if (typeof originalConsole[methodName] === 'function') {\n        console[methodName] = function () {\n          originalConsole[methodName](...arguments);\n        };\n      }\n    });\n  }\n} else if (!global.console) {\n  function stub() {}\n  const log = global.print || stub;\n\n  global.console = {\n    debug: log,\n    error: log,\n    info: log,\n    log: log,\n    trace: log,\n    warn: log,\n    assert(expression, label) {\n      if (!expression) {\n        log('Assertion failed: ' + label);\n      }\n    },\n    clear: stub,\n    dir: stub,\n    dirxml: stub,\n    group: stub,\n    groupCollapsed: stub,\n    groupEnd: stub,\n    profile: stub,\n    profileEnd: stub,\n    table: stub,\n    timeStamp: stub,\n  };\n\n  Object.defineProperty(console, '_isPolyfilled', {\n    value: true,\n    enumerable: false,\n  });\n}\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 * @flow strict\n * @format\n * @polyfill\n */\n\nlet _inGuard = 0;\n\ntype ErrorHandler = (error: mixed, isFatal: boolean) => void;\ntype Fn<Args, Return> = (...Args) => Return;\n\n/**\n * This is the error handler that is called when we encounter an exception\n * when loading a module. This will report any errors encountered before\n * ExceptionsManager is configured.\n */\nlet _globalHandler: ErrorHandler =\n  global.RN$useAlwaysAvailableJSErrorHandling === true\n    ? global.RN$handleException\n    : (e: mixed, isFatal: boolean) => {\n        throw e;\n      };\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n */\nconst ErrorUtils = {\n  setGlobalHandler(fun: ErrorHandler): void {\n    _globalHandler = fun;\n  },\n  getGlobalHandler(): ErrorHandler {\n    return _globalHandler;\n  },\n  reportError(error: mixed): void {\n    _globalHandler && _globalHandler(error, false);\n  },\n  reportFatalError(error: mixed): void {\n    // NOTE: This has an untyped call site in Metro.\n    _globalHandler && _globalHandler(error, true);\n  },\n  applyWithGuard<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    context?: ?mixed,\n    args?: ?TArgs,\n    // Unused, but some code synced from www sets it to null.\n    unused_onError?: null,\n    // Some callers pass a name here, which we ignore.\n    unused_name?: ?string,\n  ): ?TOut {\n    try {\n      _inGuard++;\n      /* $FlowFixMe[incompatible-call] : TODO T48204745 (1) apply(context,\n       * null) is fine. (2) array -> rest array should work */\n      /* $FlowFixMe[incompatible-type] : TODO T48204745 (1) apply(context,\n       * null) is fine. (2) array -> rest array should work */\n      return fun.apply(context, args);\n    } catch (e) {\n      ErrorUtils.reportError(e);\n    } finally {\n      _inGuard--;\n    }\n    return null;\n  },\n  applyWithGuardIfNeeded<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    context?: ?mixed,\n    args?: ?TArgs,\n  ): ?TOut {\n    if (ErrorUtils.inGuard()) {\n      /* $FlowFixMe[incompatible-call] : TODO T48204745 (1) apply(context,\n       * null) is fine. (2) array -> rest array should work */\n      /* $FlowFixMe[incompatible-type] : TODO T48204745 (1) apply(context,\n       * null) is fine. (2) array -> rest array should work */\n      return fun.apply(context, args);\n    } else {\n      ErrorUtils.applyWithGuard(fun, context, args);\n    }\n    return null;\n  },\n  inGuard(): boolean {\n    return !!_inGuard;\n  },\n  guard<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    name?: ?string,\n    context?: ?mixed,\n  ): ?(...TArgs) => ?TOut {\n    // TODO: (moti) T48204753 Make sure this warning is never hit and remove it - types\n    // should be sufficient.\n    if (typeof fun !== 'function') {\n      console.warn('A function must be passed to ErrorUtils.guard, got ', fun);\n      return null;\n    }\n    const guardName = name ?? fun.name ?? '<generated guard>';\n    /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n     * Flow's LTI update could not be added via codemod */\n    function guarded(...args: TArgs): ?TOut {\n      return ErrorUtils.applyWithGuard(\n        fun,\n        context ?? this,\n        args,\n        null,\n        guardName,\n      );\n    }\n\n    return guarded;\n  },\n};\n\nglobal.ErrorUtils = ErrorUtils;\n\nexport type ErrorUtilsT = typeof ErrorUtils;\n","try { global.$$require_external = typeof expo === \"undefined\" ? require : (moduleId) => { throw new Error(`Node.js standard library module ${moduleId} is not available in this JavaScript environment`);} } catch { global.$$require_external = (moduleId) => { throw new Error(`Node.js standard library module ${moduleId} is not available in this JavaScript environment`);} }","/**\n * @license\n * web-streams-polyfill v4.1.0\n * Copyright 2024 Mattias Buelens, Diwank Singh Tomer and other contributors.\n * This code is released under the MIT license.\n * SPDX-License-Identifier: MIT\n */\nfunction _classCallCheck(r,z){if(!(r instanceof z))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(r,z){for(var D=0;D<z.length;D++){var te=z[D];te.enumerable=te.enumerable||!1,te.configurable=!0,\"value\"in te&&(te.writable=!0),Object.defineProperty(r,_toPropertyKey(te.key),te)}}function _createClass(r,z,D){return z&&_defineProperties(r.prototype,z),D&&_defineProperties(r,D),Object.defineProperty(r,\"prototype\",{writable:!1}),r}function _toPropertyKey(r){var z=_toPrimitive(r,\"string\");return\"symbol\"==typeof z?z:z+\"\"}function _toPrimitive(r,z){if(\"object\"!=typeof r||!r)return r;var D=r[Symbol.toPrimitive];if(void 0!==D){var te=D.call(r,z||\"default\");if(\"object\"!=typeof te)return te;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===z?String:Number)(r)}!function(){\"use strict\";function e(){}function t(r){return\"object\"==typeof r&&null!==r||\"function\"==typeof r}const r=e;function o(r,z){try{Object.defineProperty(r,\"name\",{value:z,configurable:!0})}catch(r){}}const z=Promise,D=Promise.resolve.bind(z),te=Promise.prototype.then,re=Promise.reject.bind(z),oe=D;function u(r){return new z(r)}function c(r){return u((z=>z(r)))}function d(r){return re(r)}function f(r,z,D){return te.call(r,z,D)}function b(z,D,te){f(f(z,D,te),void 0,r)}function h(r,z){b(r,z)}function m(r,z){b(r,void 0,z)}function _(r,z,D){return f(r,z,D)}function p(z){f(z,void 0,r)}let y=r=>{if(\"function\"==typeof queueMicrotask)y=queueMicrotask;else{const r=c(void 0);y=z=>f(r,z)}return y(r)};function S(r,z,D){if(\"function\"!=typeof r)throw new TypeError(\"Argument is not a function\");return Function.prototype.apply.call(r,z,D)}function g(r,z,D){try{return c(S(r,z,D))}catch(r){return d(r)}}let de=function(){return _createClass((function v(){_classCallCheck(this,v),this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}),[{key:\"length\",get:function(){return this._size}},{key:\"push\",value:function push(r){const z=this._back;let D=z;16383===z._elements.length&&(D={_elements:[],_next:void 0}),z._elements.push(r),D!==z&&(this._back=D,z._next=D),++this._size}},{key:\"shift\",value:function shift(){const r=this._front;let z=r;const D=this._cursor;let te=D+1;const re=r._elements,oe=re[D];return 16384===te&&(z=r._next,te=0),--this._size,this._cursor=te,r!==z&&(this._front=z),re[D]=void 0,oe}},{key:\"forEach\",value:function forEach(r){let z=this._cursor,D=this._front,te=D._elements;for(;!(z===te.length&&void 0===D._next||z===te.length&&(D=D._next,te=D._elements,z=0,0===te.length));)r(te[z]),++z}},{key:\"peek\",value:function peek(){const r=this._front,z=this._cursor;return r._elements[z]}}])}();const me=Symbol(\"[[AbortSteps]]\"),ye=Symbol(\"[[ErrorSteps]]\"),Dt=Symbol(\"[[CancelSteps]]\"),nr=Symbol(\"[[PullSteps]]\"),ar=Symbol(\"[[ReleaseSteps]]\");function q(r,z){r._ownerReadableStream=z,z._reader=r,\"readable\"===z._state?O(r):\"closed\"===z._state?function(r){O(r),A(r)}(r):j(r,z._storedError)}function E(r,z){return Br(r._ownerReadableStream,z)}function W(r){const z=r._ownerReadableStream;\"readable\"===z._state?k(r,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")):function(r,z){j(r,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\"))}(r),z._readableStreamController[ar](),z._reader=void 0,r._ownerReadableStream=void 0}function B(r){return new TypeError(\"Cannot \"+r+\" a stream using a released reader\")}function O(r){r._closedPromise=u(((z,D)=>{r._closedPromise_resolve=z,r._closedPromise_reject=D}))}function j(r,z){O(r),k(r,z)}function k(r,z){void 0!==r._closedPromise_reject&&(p(r._closedPromise),r._closedPromise_reject(z),r._closedPromise_resolve=void 0,r._closedPromise_reject=void 0)}function A(r){void 0!==r._closedPromise_resolve&&(r._closedPromise_resolve(void 0),r._closedPromise_resolve=void 0,r._closedPromise_reject=void 0)}const no=Number.isFinite||function(r){return\"number\"==typeof r&&isFinite(r)},io=Math.trunc||function(r){return r<0?Math.ceil(r):Math.floor(r)};function L(r,z){if(void 0!==r&&\"object\"!=typeof(D=r)&&\"function\"!=typeof D)throw new TypeError(`${z} is not an object.`);var D}function F(r,z){if(\"function\"!=typeof r)throw new TypeError(`${z} is not a function.`)}function I(r,z){if(!function(r){return\"object\"==typeof r&&null!==r||\"function\"==typeof r}(r))throw new TypeError(`${z} is not an object.`)}function $(r,z,D){if(void 0===r)throw new TypeError(`Parameter ${z} is required in '${D}'.`)}function M(r,z,D){if(void 0===r)throw new TypeError(`${z} is required in '${D}'.`)}function Y(r){return Number(r)}function Q(r){return 0===r?0:r}function x(r,z){const D=Number.MAX_SAFE_INTEGER;let te=Number(r);if(te=Q(te),!no(te))throw new TypeError(`${z} is not a finite number`);if(te=function(r){return Q(io(r))}(te),te<0||te>D)throw new TypeError(`${z} is outside the accepted range of 0 to ${D}, inclusive`);return no(te)&&0!==te?te:0}function N(r,z){if(!Er(r))throw new TypeError(`${z} is not a ReadableStream.`)}function H(r){return new ao(r)}function V(r,z){r._reader._readRequests.push(z)}function U(r,z,D){const te=r._reader._readRequests.shift();D?te._closeSteps():te._chunkSteps(z)}function G(r){return r._reader._readRequests.length}function X(r){const z=r._reader;return void 0!==z&&!!J(z)}let ao=function(){return _createClass((function ReadableStreamDefaultReader(r){if(_classCallCheck(this,ReadableStreamDefaultReader),$(r,1,\"ReadableStreamDefaultReader\"),N(r,\"First parameter\"),Wr(r))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");q(this,r),this._readRequests=new de}),[{key:\"closed\",get:function(){return J(this)?this._closedPromise:d(ee(\"closed\"))}},{key:\"cancel\",value:function cancel(r=void 0){return J(this)?void 0===this._ownerReadableStream?d(B(\"cancel\")):E(this,r):d(ee(\"cancel\"))}},{key:\"read\",value:function read(){if(!J(this))return d(ee(\"read\"));if(void 0===this._ownerReadableStream)return d(B(\"read from\"));let r,z;const D=u(((D,te)=>{r=D,z=te}));return K(this,{_chunkSteps:z=>r({value:z,done:!1}),_closeSteps:()=>r({value:void 0,done:!0}),_errorSteps:r=>z(r)}),D}},{key:\"releaseLock\",value:function releaseLock(){if(!J(this))throw ee(\"releaseLock\");void 0!==this._ownerReadableStream&&function(r){W(r);Z(r,new TypeError(\"Reader was released\"))}(this)}}])}();function J(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_readRequests\")&&r instanceof ao}function K(r,z){const D=r._ownerReadableStream;D._disturbed=!0,\"closed\"===D._state?z._closeSteps():\"errored\"===D._state?z._errorSteps(D._storedError):D._readableStreamController[nr](z)}function Z(r,z){const D=r._readRequests;r._readRequests=new de,D.forEach((r=>{r._errorSteps(z)}))}function ee(r){return new TypeError(`ReadableStreamDefaultReader.prototype.${r} can only be used on a ReadableStreamDefaultReader`)}var lo,so,uo;function ne(r){return r.slice()}function ae(r,z,D,te,re){new Uint8Array(r).set(new Uint8Array(D,te,re),z)}Object.defineProperties(ao.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),o(ao.prototype.cancel,\"cancel\"),o(ao.prototype.read,\"read\"),o(ao.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ao.prototype,Symbol.toStringTag,{value:\"ReadableStreamDefaultReader\",configurable:!0});let ie=r=>(ie=\"function\"==typeof r.transfer?r=>r.transfer():\"function\"==typeof structuredClone?r=>structuredClone(r,{transfer:[r]}):r=>r,ie(r)),le=r=>(le=\"boolean\"==typeof r.detached?r=>r.detached:r=>0===r.byteLength,le(r));function se(r,z,D){if(r.slice)return r.slice(z,D);const te=D-z,re=new ArrayBuffer(te);return ae(re,0,r,z,te),re}function ue(r,z){const D=r[z];if(null!=D){if(\"function\"!=typeof D)throw new TypeError(`${String(z)} is not a function`);return D}}function ce(r){try{const z=r.done,D=r.value;return f(oe(D),(r=>({done:z,value:r})))}catch(r){return d(r)}}const co=null!==(uo=null!==(lo=Symbol.asyncIterator)&&void 0!==lo?lo:null===(so=Symbol.for)||void 0===so?void 0:so.call(Symbol,\"Symbol.asyncIterator\"))&&void 0!==uo?uo:\"@@asyncIterator\";function fe(r,z=\"sync\",D){if(void 0===D)if(\"async\"===z){if(void 0===(D=ue(r,co)))return function(r){const z={next(){let z;try{z=be(r)}catch(r){return d(r)}return ce(z)},return(z){let D;try{const te=ue(r.iterator,\"return\");if(void 0===te)return c({done:!0,value:z});D=S(te,r.iterator,[z])}catch(r){return d(r)}return t(D)?ce(D):d(new TypeError(\"The iterator.return() method must return an object\"))}};return{iterator:z,nextMethod:z.next,done:!1}}(fe(r,\"sync\",ue(r,Symbol.iterator)))}else D=ue(r,Symbol.iterator);if(void 0===D)throw new TypeError(\"The object is not iterable\");const te=S(D,r,[]);if(!t(te))throw new TypeError(\"The iterator method must return an object\");return{iterator:te,nextMethod:te.next,done:!1}}function be(r){const z=S(r.nextMethod,r.iterator,[]);if(!t(z))throw new TypeError(\"The iterator.next() method must return an object\");return z}let fo=function(){return _createClass((function he(r,z){_classCallCheck(this,he),this._ongoingPromise=void 0,this._isFinished=!1,this._reader=r,this._preventCancel=z}),[{key:\"next\",value:function next(){const e=()=>this._nextSteps();return this._ongoingPromise=this._ongoingPromise?_(this._ongoingPromise,e,e):e(),this._ongoingPromise}},{key:\"return\",value:function _return(r){const t=()=>this._returnSteps(r);return this._ongoingPromise=this._ongoingPromise?_(this._ongoingPromise,t,t):t(),this._ongoingPromise}},{key:\"_nextSteps\",value:function _nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const r=this._reader;let z,D;const te=u(((r,te)=>{z=r,D=te}));return K(r,{_chunkSteps:r=>{this._ongoingPromise=void 0,y((()=>z({value:r,done:!1})))},_closeSteps:()=>{this._ongoingPromise=void 0,this._isFinished=!0,W(r),z({value:void 0,done:!0})},_errorSteps:z=>{this._ongoingPromise=void 0,this._isFinished=!0,W(r),D(z)}}),te}},{key:\"_returnSteps\",value:function _returnSteps(r){if(this._isFinished)return Promise.resolve({value:r,done:!0});this._isFinished=!0;const z=this._reader;if(!this._preventCancel){const D=E(z,r);return W(z),_(D,(()=>({value:r,done:!0})))}return W(z),c({value:r,done:!0})}}])}();const ho={next(){return _e(this)?this._asyncIteratorImpl.next():d(pe(\"next\"))},return(r){return _e(this)?this._asyncIteratorImpl.return(r):d(pe(\"return\"))},[co](){return this}};function _e(r){if(!t(r))return!1;if(!Object.prototype.hasOwnProperty.call(r,\"_asyncIteratorImpl\"))return!1;try{return r._asyncIteratorImpl instanceof fo}catch(r){return!1}}function pe(r){return new TypeError(`ReadableStreamAsyncIterator.${r} can only be used on a ReadableSteamAsyncIterator`)}Object.defineProperty(ho,co,{enumerable:!1});const bo=Number.isNaN||function(r){return r!=r};function Se(r){const z=se(r.buffer,r.byteOffset,r.byteOffset+r.byteLength);return new Uint8Array(z)}function ge(r){const z=r._queue.shift();return r._queueTotalSize-=z.size,r._queueTotalSize<0&&(r._queueTotalSize=0),z.value}function ve(r,z,D){if(\"number\"!=typeof(te=D)||bo(te)||te<0||D===1/0)throw new RangeError(\"Size must be a finite, non-NaN, non-negative number.\");var te;r._queue.push({value:z,size:D}),r._queueTotalSize+=D}function we(r){r._queue=new de,r._queueTotalSize=0}function Re(r){return r===DataView}let _o=function(){return _createClass((function ReadableStreamBYOBRequest(){throw _classCallCheck(this,ReadableStreamBYOBRequest),new TypeError(\"Illegal constructor\")}),[{key:\"view\",get:function(){if(!Ce(this))throw Ke(\"view\");return this._view}},{key:\"respond\",value:function respond(r){if(!Ce(this))throw Ke(\"respond\");if($(r,1,\"respond\"),r=x(r,\"First parameter\"),void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");if(le(this._view.buffer))throw new TypeError(\"The BYOB request's buffer has been detached and so cannot be used as a response\");Ge(this._associatedReadableByteStreamController,r)}},{key:\"respondWithNewView\",value:function respondWithNewView(r){if(!Ce(this))throw Ke(\"respondWithNewView\");if($(r,1,\"respondWithNewView\"),!ArrayBuffer.isView(r))throw new TypeError(\"You can only respond with array buffer views\");if(void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");if(le(r.buffer))throw new TypeError(\"The given view's buffer has been detached and so cannot be used as a response\");Xe(this._associatedReadableByteStreamController,r)}}])}();Object.defineProperties(_o.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),o(_o.prototype.respond,\"respond\"),o(_o.prototype.respondWithNewView,\"respondWithNewView\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(_o.prototype,Symbol.toStringTag,{value:\"ReadableStreamBYOBRequest\",configurable:!0});let mo=function(){return _createClass((function ReadableByteStreamController(){throw _classCallCheck(this,ReadableByteStreamController),new TypeError(\"Illegal constructor\")}),[{key:\"byobRequest\",get:function(){if(!Te(this))throw Ze(\"byobRequest\");return Ve(this)}},{key:\"desiredSize\",get:function(){if(!Te(this))throw Ze(\"desiredSize\");return Ue(this)}},{key:\"close\",value:function close(){if(!Te(this))throw Ze(\"close\");if(this._closeRequested)throw new TypeError(\"The stream has already been closed; do not close it again!\");const r=this._controlledReadableByteStream._state;if(\"readable\"!==r)throw new TypeError(`The stream (in ${r} state) is not in the readable state and cannot be closed`);Qe(this)}},{key:\"enqueue\",value:function enqueue(r){if(!Te(this))throw Ze(\"enqueue\");if($(r,1,\"enqueue\"),!ArrayBuffer.isView(r))throw new TypeError(\"chunk must be an array buffer view\");if(0===r.byteLength)throw new TypeError(\"chunk must have non-zero byteLength\");if(0===r.buffer.byteLength)throw new TypeError(\"chunk's buffer must have non-zero byteLength\");if(this._closeRequested)throw new TypeError(\"stream is closed or draining\");const z=this._controlledReadableByteStream._state;if(\"readable\"!==z)throw new TypeError(`The stream (in ${z} state) is not in the readable state and cannot be enqueued to`);xe(this,r)}},{key:\"error\",value:function error(r=void 0){if(!Te(this))throw Ze(\"error\");Ne(this,r)}},{key:Dt,value:function(r){qe(this),we(this);const z=this._cancelAlgorithm(r);return Ye(this),z}},{key:nr,value:function(r){const z=this._controlledReadableByteStream;if(this._queueTotalSize>0)return void He(this,r);const D=this._autoAllocateChunkSize;if(void 0!==D){let te;try{te=new ArrayBuffer(D)}catch(z){return void r._errorSteps(z)}const re={buffer:te,bufferByteLength:D,byteOffset:0,byteLength:D,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:\"default\"};this._pendingPullIntos.push(re)}V(z,r),Pe(this)}},{key:ar,value:function(){if(this._pendingPullIntos.length>0){const r=this._pendingPullIntos.peek();r.readerType=\"none\",this._pendingPullIntos=new de,this._pendingPullIntos.push(r)}}}])}();function Te(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_controlledReadableByteStream\")&&r instanceof mo}function Ce(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_associatedReadableByteStreamController\")&&r instanceof _o}function Pe(r){const z=function(r){const z=r._controlledReadableByteStream;if(\"readable\"!==z._state)return!1;if(r._closeRequested)return!1;if(!r._started)return!1;if(X(z)&&G(z)>0)return!0;if(nt(z)&&ot(z)>0)return!0;return Ue(r)>0}(r);z&&(r._pulling?r._pullAgain=!0:(r._pulling=!0,b(r._pullAlgorithm(),(()=>(r._pulling=!1,r._pullAgain&&(r._pullAgain=!1,Pe(r)),null)),(z=>(Ne(r,z),null)))))}function qe(r){Le(r),r._pendingPullIntos=new de}function Ee(r,z){let D=!1;\"closed\"===r._state&&(D=!0);const te=Be(z);\"default\"===z.readerType?U(r,te,D):function(r,z,D){const te=r._reader._readIntoRequests.shift();D?te._closeSteps(z):te._chunkSteps(z)}(r,te,D)}function We(r,z){for(let D=0;D<z.length;++D)Ee(r,z[D])}function Be(r){const z=r.bytesFilled,D=r.elementSize;return new r.viewConstructor(r.buffer,r.byteOffset,z/D)}function Oe(r,z,D,te){r._queue.push({buffer:z,byteOffset:D,byteLength:te}),r._queueTotalSize+=te}function je(r,z,D,te){let re;try{re=se(z,D,D+te)}catch(z){throw Ne(r,z),z}Oe(r,re,0,te)}function ke(r,z){z.bytesFilled>0&&je(r,z.buffer,z.byteOffset,z.bytesFilled),Me(r)}function Ae(r,z){const D=Math.min(r._queueTotalSize,z.byteLength-z.bytesFilled),te=z.bytesFilled+D;let re=D,oe=!1;const de=te-te%z.elementSize;de>=z.minimumFill&&(re=de-z.bytesFilled,oe=!0);const me=r._queue;for(;re>0;){const D=me.peek(),te=Math.min(re,D.byteLength),oe=z.byteOffset+z.bytesFilled;ae(z.buffer,oe,D.buffer,D.byteOffset,te),D.byteLength===te?me.shift():(D.byteOffset+=te,D.byteLength-=te),r._queueTotalSize-=te,ze(r,te,z),re-=te}return oe}function ze(r,z,D){D.bytesFilled+=z}function De(r){0===r._queueTotalSize&&r._closeRequested?(Ye(r),Or(r._controlledReadableByteStream)):Pe(r)}function Le(r){null!==r._byobRequest&&(r._byobRequest._associatedReadableByteStreamController=void 0,r._byobRequest._view=null,r._byobRequest=null)}function Fe(r){const z=[];for(;r._pendingPullIntos.length>0&&0!==r._queueTotalSize;){const D=r._pendingPullIntos.peek();Ae(r,D)&&(Me(r),z.push(D))}return z}function $e(r,z){const D=r._pendingPullIntos.peek();Le(r),\"closed\"===r._controlledReadableByteStream._state?function(r,z){\"none\"===z.readerType&&Me(r);const D=r._controlledReadableByteStream;if(nt(D)){const z=[];for(let te=0;te<ot(D);++te)z.push(Me(r));We(D,z)}}(r,D):function(r,z,D){if(ze(0,z,D),\"none\"===D.readerType){ke(r,D);const z=Fe(r);return void We(r._controlledReadableByteStream,z)}if(D.bytesFilled<D.minimumFill)return;Me(r);const te=D.bytesFilled%D.elementSize;if(te>0){const z=D.byteOffset+D.bytesFilled;je(r,D.buffer,z-te,te)}D.bytesFilled-=te;const re=Fe(r);Ee(r._controlledReadableByteStream,D),We(r._controlledReadableByteStream,re)}(r,z,D),Pe(r)}function Me(r){return r._pendingPullIntos.shift()}function Ye(r){r._pullAlgorithm=void 0,r._cancelAlgorithm=void 0}function Qe(r){const z=r._controlledReadableByteStream;if(!r._closeRequested&&\"readable\"===z._state)if(r._queueTotalSize>0)r._closeRequested=!0;else{if(r._pendingPullIntos.length>0){const z=r._pendingPullIntos.peek();if(z.bytesFilled%z.elementSize!=0){const z=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");throw Ne(r,z),z}}Ye(r),Or(z)}}function xe(r,z){const D=r._controlledReadableByteStream;if(r._closeRequested||\"readable\"!==D._state)return;const{buffer:te,byteOffset:re,byteLength:oe}=z;if(le(te))throw new TypeError(\"chunk's buffer is detached and so cannot be enqueued\");const de=ie(te);if(r._pendingPullIntos.length>0){const z=r._pendingPullIntos.peek();if(le(z.buffer))throw new TypeError(\"The BYOB request's buffer has been detached and so cannot be filled with an enqueued chunk\");Le(r),z.buffer=ie(z.buffer),\"none\"===z.readerType&&ke(r,z)}if(X(D))(function(r){const z=r._controlledReadableByteStream._reader;for(;z._readRequests.length>0;){if(0===r._queueTotalSize)return;He(r,z._readRequests.shift())}})(r),0===G(D)?Oe(r,de,re,oe):(r._pendingPullIntos.length>0&&Me(r),U(D,new Uint8Array(de,re,oe),!1));else if(nt(D)){Oe(r,de,re,oe);const z=Fe(r);We(r._controlledReadableByteStream,z)}else Oe(r,de,re,oe);Pe(r)}function Ne(r,z){const D=r._controlledReadableByteStream;\"readable\"===D._state&&(qe(r),we(r),Ye(r),jr(D,z))}function He(r,z){const D=r._queue.shift();r._queueTotalSize-=D.byteLength,De(r);const te=new Uint8Array(D.buffer,D.byteOffset,D.byteLength);z._chunkSteps(te)}function Ve(r){if(null===r._byobRequest&&r._pendingPullIntos.length>0){const z=r._pendingPullIntos.peek(),D=new Uint8Array(z.buffer,z.byteOffset+z.bytesFilled,z.byteLength-z.bytesFilled),te=Object.create(_o.prototype);!function(r,z,D){r._associatedReadableByteStreamController=z,r._view=D}(te,r,D),r._byobRequest=te}return r._byobRequest}function Ue(r){const z=r._controlledReadableByteStream._state;return\"errored\"===z?null:\"closed\"===z?0:r._strategyHWM-r._queueTotalSize}function Ge(r,z){const D=r._pendingPullIntos.peek();if(\"closed\"===r._controlledReadableByteStream._state){if(0!==z)throw new TypeError(\"bytesWritten must be 0 when calling respond() on a closed stream\")}else{if(0===z)throw new TypeError(\"bytesWritten must be greater than 0 when calling respond() on a readable stream\");if(D.bytesFilled+z>D.byteLength)throw new RangeError(\"bytesWritten out of range\")}D.buffer=ie(D.buffer),$e(r,z)}function Xe(r,z){const D=r._pendingPullIntos.peek();if(\"closed\"===r._controlledReadableByteStream._state){if(0!==z.byteLength)throw new TypeError(\"The view's length must be 0 when calling respondWithNewView() on a closed stream\")}else if(0===z.byteLength)throw new TypeError(\"The view's length must be greater than 0 when calling respondWithNewView() on a readable stream\");if(D.byteOffset+D.bytesFilled!==z.byteOffset)throw new RangeError(\"The region specified by view does not match byobRequest\");if(D.bufferByteLength!==z.buffer.byteLength)throw new RangeError(\"The buffer of view has different capacity than byobRequest\");if(D.bytesFilled+z.byteLength>D.byteLength)throw new RangeError(\"The region specified by view is larger than byobRequest\");const te=z.byteLength;D.buffer=ie(z.buffer),$e(r,te)}function Je(r,z,D,te,re,oe,me){z._controlledReadableByteStream=r,z._pullAgain=!1,z._pulling=!1,z._byobRequest=null,z._queue=z._queueTotalSize=void 0,we(z),z._closeRequested=!1,z._started=!1,z._strategyHWM=oe,z._pullAlgorithm=te,z._cancelAlgorithm=re,z._autoAllocateChunkSize=me,z._pendingPullIntos=new de,r._readableStreamController=z,b(c(D()),(()=>(z._started=!0,Pe(z),null)),(r=>(Ne(z,r),null)))}function Ke(r){return new TypeError(`ReadableStreamBYOBRequest.prototype.${r} can only be used on a ReadableStreamBYOBRequest`)}function Ze(r){return new TypeError(`ReadableByteStreamController.prototype.${r} can only be used on a ReadableByteStreamController`)}function et(r,z){if(\"byob\"!=(r=`${r}`))throw new TypeError(`${z} '${r}' is not a valid enumeration value for ReadableStreamReaderMode`);return r}function tt(r){return new po(r)}function rt(r,z){r._reader._readIntoRequests.push(z)}function ot(r){return r._reader._readIntoRequests.length}function nt(r){const z=r._reader;return void 0!==z&&!!at(z)}Object.defineProperties(mo.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),o(mo.prototype.close,\"close\"),o(mo.prototype.enqueue,\"enqueue\"),o(mo.prototype.error,\"error\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(mo.prototype,Symbol.toStringTag,{value:\"ReadableByteStreamController\",configurable:!0});let po=function(){return _createClass((function ReadableStreamBYOBReader(r){if(_classCallCheck(this,ReadableStreamBYOBReader),$(r,1,\"ReadableStreamBYOBReader\"),N(r,\"First parameter\"),Wr(r))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");if(!Te(r._readableStreamController))throw new TypeError(\"Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source\");q(this,r),this._readIntoRequests=new de}),[{key:\"closed\",get:function(){return at(this)?this._closedPromise:d(st(\"closed\"))}},{key:\"cancel\",value:function cancel(r=void 0){return at(this)?void 0===this._ownerReadableStream?d(B(\"cancel\")):E(this,r):d(st(\"cancel\"))}},{key:\"read\",value:function read(r,z={}){if(!at(this))return d(st(\"read\"));if(!ArrayBuffer.isView(r))return d(new TypeError(\"view must be an array buffer view\"));if(0===r.byteLength)return d(new TypeError(\"view must have non-zero byteLength\"));if(0===r.buffer.byteLength)return d(new TypeError(\"view's buffer must have non-zero byteLength\"));if(le(r.buffer))return d(new TypeError(\"view's buffer has been detached\"));let D;try{D=function(r,z){var D;return L(r,z),{min:x(null!==(D=null==r?void 0:r.min)&&void 0!==D?D:1,`${z} has member 'min' that`)}}(z,\"options\")}catch(r){return d(r)}const te=D.min;if(0===te)return d(new TypeError(\"options.min must be greater than 0\"));if(function(r){return Re(r.constructor)}(r)){if(te>r.byteLength)return d(new RangeError(\"options.min must be less than or equal to view's byteLength\"))}else if(te>r.length)return d(new RangeError(\"options.min must be less than or equal to view's length\"));if(void 0===this._ownerReadableStream)return d(B(\"read from\"));let re,oe;const de=u(((r,z)=>{re=r,oe=z}));return it(this,r,te,{_chunkSteps:r=>re({value:r,done:!1}),_closeSteps:r=>re({value:r,done:!0}),_errorSteps:r=>oe(r)}),de}},{key:\"releaseLock\",value:function releaseLock(){if(!at(this))throw st(\"releaseLock\");void 0!==this._ownerReadableStream&&function(r){W(r);lt(r,new TypeError(\"Reader was released\"))}(this)}}])}();function at(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_readIntoRequests\")&&r instanceof po}function it(r,z,D,te){const re=r._ownerReadableStream;re._disturbed=!0,\"errored\"===re._state?te._errorSteps(re._storedError):function Ie(r,z,D,te){const re=r._controlledReadableByteStream,oe=z.constructor,de=function(r){return Re(r)?1:r.BYTES_PER_ELEMENT}(oe),{byteOffset:me,byteLength:ye}=z,Dt=D*de;let nr;try{nr=ie(z.buffer)}catch(r){return void te._errorSteps(r)}const ar={buffer:nr,bufferByteLength:nr.byteLength,byteOffset:me,byteLength:ye,bytesFilled:0,minimumFill:Dt,elementSize:de,viewConstructor:oe,readerType:\"byob\"};if(r._pendingPullIntos.length>0)return r._pendingPullIntos.push(ar),void rt(re,te);if(\"closed\"!==re._state){if(r._queueTotalSize>0){if(Ae(r,ar)){const z=Be(ar);return De(r),void te._chunkSteps(z)}if(r._closeRequested){const z=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");return Ne(r,z),void te._errorSteps(z)}}r._pendingPullIntos.push(ar),rt(re,te),Pe(r)}else{const r=new oe(ar.buffer,ar.byteOffset,0);te._closeSteps(r)}}(re._readableStreamController,z,D,te)}function lt(r,z){const D=r._readIntoRequests;r._readIntoRequests=new de,D.forEach((r=>{r._errorSteps(z)}))}function st(r){return new TypeError(`ReadableStreamBYOBReader.prototype.${r} can only be used on a ReadableStreamBYOBReader`)}function ut(r,z){const{highWaterMark:D}=r;if(void 0===D)return z;if(bo(D)||D<0)throw new RangeError(\"Invalid highWaterMark\");return D}function ct(r){const{size:z}=r;return z||(()=>1)}function dt(r,z){L(r,z);const D=null==r?void 0:r.highWaterMark,te=null==r?void 0:r.size;return{highWaterMark:void 0===D?void 0:Y(D),size:void 0===te?void 0:ft(te,`${z} has member 'size' that`)}}function ft(r,z){return F(r,z),z=>Y(r(z))}function bt(r,z,D){return F(r,D),D=>g(r,z,[D])}function ht(r,z,D){return F(r,D),()=>g(r,z,[])}function mt(r,z,D){return F(r,D),D=>S(r,z,[D])}function _t(r,z,D){return F(r,D),(D,te)=>g(r,z,[D,te])}function pt(r,z){if(!gt(r))throw new TypeError(`${z} is not a WritableStream.`)}Object.defineProperties(po.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),o(po.prototype.cancel,\"cancel\"),o(po.prototype.read,\"read\"),o(po.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(po.prototype,Symbol.toStringTag,{value:\"ReadableStreamBYOBReader\",configurable:!0});let yo=function(){return _createClass((function WritableStream(r={},z={}){_classCallCheck(this,WritableStream),void 0===r?r=null:I(r,\"First parameter\");const D=dt(z,\"Second parameter\"),te=function(r,z){L(r,z);const D=null==r?void 0:r.abort,te=null==r?void 0:r.close,re=null==r?void 0:r.start,oe=null==r?void 0:r.type,de=null==r?void 0:r.write;return{abort:void 0===D?void 0:bt(D,r,`${z} has member 'abort' that`),close:void 0===te?void 0:ht(te,r,`${z} has member 'close' that`),start:void 0===re?void 0:mt(re,r,`${z} has member 'start' that`),write:void 0===de?void 0:_t(de,r,`${z} has member 'write' that`),type:oe}}(r,\"First parameter\");if(St(this),void 0!==te.type)throw new RangeError(\"Invalid type is specified\");const re=ct(D);!function(r,z,D,te){const re=Object.create(So.prototype);let oe,de,me,ye;oe=void 0!==z.start?()=>z.start(re):()=>{},de=void 0!==z.write?r=>z.write(r,re):()=>c(void 0),me=void 0!==z.close?()=>z.close():()=>c(void 0),ye=void 0!==z.abort?r=>z.abort(r):()=>c(void 0),Ft(r,re,oe,de,me,ye,D,te)}(this,te,ut(D,1),re)}),[{key:\"locked\",get:function(){if(!gt(this))throw Nt(\"locked\");return vt(this)}},{key:\"abort\",value:function abort(r=void 0){return gt(this)?vt(this)?d(new TypeError(\"Cannot abort a stream that already has a writer\")):wt(this,r):d(Nt(\"abort\"))}},{key:\"close\",value:function close(){return gt(this)?vt(this)?d(new TypeError(\"Cannot close a stream that already has a writer\")):qt(this)?d(new TypeError(\"Cannot close an already-closing stream\")):Rt(this):d(Nt(\"close\"))}},{key:\"getWriter\",value:function getWriter(){if(!gt(this))throw Nt(\"getWriter\");return yt(this)}}])}();function yt(r){return new vo(r)}function St(r){r._state=\"writable\",r._storedError=void 0,r._writer=void 0,r._writableStreamController=void 0,r._writeRequests=new de,r._inFlightWriteRequest=void 0,r._closeRequest=void 0,r._inFlightCloseRequest=void 0,r._pendingAbortRequest=void 0,r._backpressure=!1}function gt(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_writableStreamController\")&&r instanceof yo}function vt(r){return void 0!==r._writer}function wt(r,z){var D;if(\"closed\"===r._state||\"errored\"===r._state)return c(void 0);r._writableStreamController._abortReason=z,null===(D=r._writableStreamController._abortController)||void 0===D||D.abort(z);const te=r._state;if(\"closed\"===te||\"errored\"===te)return c(void 0);if(void 0!==r._pendingAbortRequest)return r._pendingAbortRequest._promise;let re=!1;\"erroring\"===te&&(re=!0,z=void 0);const oe=u(((D,te)=>{r._pendingAbortRequest={_promise:void 0,_resolve:D,_reject:te,_reason:z,_wasAlreadyErroring:re}}));return r._pendingAbortRequest._promise=oe,re||Ct(r,z),oe}function Rt(r){const z=r._state;if(\"closed\"===z||\"errored\"===z)return d(new TypeError(`The stream (in ${z} state) is not in the writable state and cannot be closed`));const D=u(((z,D)=>{const te={_resolve:z,_reject:D};r._closeRequest=te})),te=r._writer;var re;return void 0!==te&&r._backpressure&&\"writable\"===z&&or(te),ve(re=r._writableStreamController,go,0),Mt(re),D}function Tt(r,z){\"writable\"!==r._state?Pt(r):Ct(r,z)}function Ct(r,z){const D=r._writableStreamController;r._state=\"erroring\",r._storedError=z;const te=r._writer;void 0!==te&&kt(te,z),!function(r){return void 0!==r._inFlightWriteRequest||void 0!==r._inFlightCloseRequest}(r)&&D._started&&Pt(r)}function Pt(r){r._state=\"errored\",r._writableStreamController[ye]();const z=r._storedError;if(r._writeRequests.forEach((r=>{r._reject(z)})),r._writeRequests=new de,void 0===r._pendingAbortRequest)return void Et(r);const D=r._pendingAbortRequest;if(r._pendingAbortRequest=void 0,D._wasAlreadyErroring)return D._reject(z),void Et(r);b(r._writableStreamController[me](D._reason),(()=>(D._resolve(),Et(r),null)),(z=>(D._reject(z),Et(r),null)))}function qt(r){return void 0!==r._closeRequest||void 0!==r._inFlightCloseRequest}function Et(r){void 0!==r._closeRequest&&(r._closeRequest._reject(r._storedError),r._closeRequest=void 0);const z=r._writer;void 0!==z&&Jt(z,r._storedError)}function Wt(r,z){const D=r._writer;void 0!==D&&z!==r._backpressure&&(z?function(r){Zt(r)}(D):or(D)),r._backpressure=z}Object.defineProperties(yo.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),o(yo.prototype.abort,\"abort\"),o(yo.prototype.close,\"close\"),o(yo.prototype.getWriter,\"getWriter\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(yo.prototype,Symbol.toStringTag,{value:\"WritableStream\",configurable:!0});let vo=function(){return _createClass((function WritableStreamDefaultWriter(r){if(_classCallCheck(this,WritableStreamDefaultWriter),$(r,1,\"WritableStreamDefaultWriter\"),pt(r,\"First parameter\"),vt(r))throw new TypeError(\"This stream has already been locked for exclusive writing by another writer\");this._ownerWritableStream=r,r._writer=this;const z=r._state;if(\"writable\"===z)!qt(r)&&r._backpressure?Zt(this):tr(this),Gt(this);else if(\"erroring\"===z)er(this,r._storedError),Gt(this);else if(\"closed\"===z)tr(this),Gt(this),Kt(this);else{const z=r._storedError;er(this,z),Xt(this,z)}}),[{key:\"closed\",get:function(){return Bt(this)?this._closedPromise:d(Vt(\"closed\"))}},{key:\"desiredSize\",get:function(){if(!Bt(this))throw Vt(\"desiredSize\");if(void 0===this._ownerWritableStream)throw Ut(\"desiredSize\");return function(r){const z=r._ownerWritableStream,D=z._state;return\"errored\"===D||\"erroring\"===D?null:\"closed\"===D?0:$t(z._writableStreamController)}(this)}},{key:\"ready\",get:function(){return Bt(this)?this._readyPromise:d(Vt(\"ready\"))}},{key:\"abort\",value:function abort(r=void 0){return Bt(this)?void 0===this._ownerWritableStream?d(Ut(\"abort\")):function(r,z){return wt(r._ownerWritableStream,z)}(this,r):d(Vt(\"abort\"))}},{key:\"close\",value:function close(){if(!Bt(this))return d(Vt(\"close\"));const r=this._ownerWritableStream;return void 0===r?d(Ut(\"close\")):qt(r)?d(new TypeError(\"Cannot close an already-closing stream\")):Ot(this)}},{key:\"releaseLock\",value:function releaseLock(){if(!Bt(this))throw Vt(\"releaseLock\");void 0!==this._ownerWritableStream&&At(this)}},{key:\"write\",value:function write(r=void 0){return Bt(this)?void 0===this._ownerWritableStream?d(Ut(\"write to\")):zt(this,r):d(Vt(\"write\"))}}])}();function Bt(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_ownerWritableStream\")&&r instanceof vo}function Ot(r){return Rt(r._ownerWritableStream)}function kt(r,z){\"pending\"===r._readyPromiseState?rr(r,z):function(r,z){er(r,z)}(r,z)}function At(r){const z=r._ownerWritableStream,D=new TypeError(\"Writer was released and can no longer be used to monitor the stream's closedness\");kt(r,D),function jt(r,z){\"pending\"===r._closedPromiseState?Jt(r,z):function(r,z){Xt(r,z)}(r,z)}(r,D),z._writer=void 0,r._ownerWritableStream=void 0}function zt(r,z){const D=r._ownerWritableStream,te=D._writableStreamController,re=function(r,z){if(void 0===r._strategySizeAlgorithm)return 1;try{return r._strategySizeAlgorithm(z)}catch(z){return Yt(r,z),1}}(te,z);if(D!==r._ownerWritableStream)return d(Ut(\"write to\"));const oe=D._state;if(\"errored\"===oe)return d(D._storedError);if(qt(D)||\"closed\"===oe)return d(new TypeError(\"The stream is closing or closed and cannot be written to\"));if(\"erroring\"===oe)return d(D._storedError);const de=function(r){return u(((z,D)=>{const te={_resolve:z,_reject:D};r._writeRequests.push(te)}))}(D);return function(r,z,D){try{ve(r,z,D)}catch(z){return void Yt(r,z)}const te=r._controlledWritableStream;qt(te)||\"writable\"!==te._state||Wt(te,Qt(r)),Mt(r)}(te,z,re),de}Object.defineProperties(vo.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),o(vo.prototype.abort,\"abort\"),o(vo.prototype.close,\"close\"),o(vo.prototype.releaseLock,\"releaseLock\"),o(vo.prototype.write,\"write\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(vo.prototype,Symbol.toStringTag,{value:\"WritableStreamDefaultWriter\",configurable:!0});const go={};let So=function(){return _createClass((function WritableStreamDefaultController(){throw _classCallCheck(this,WritableStreamDefaultController),new TypeError(\"Illegal constructor\")}),[{key:\"abortReason\",get:function(){if(!Lt(this))throw Ht(\"abortReason\");return this._abortReason}},{key:\"signal\",get:function(){if(!Lt(this))throw Ht(\"signal\");if(void 0===this._abortController)throw new TypeError(\"WritableStreamDefaultController.prototype.signal is not supported\");return this._abortController.signal}},{key:\"error\",value:function error(r=void 0){if(!Lt(this))throw Ht(\"error\");\"writable\"===this._controlledWritableStream._state&&xt(this,r)}},{key:me,value:function(r){const z=this._abortAlgorithm(r);return It(this),z}},{key:ye,value:function(){we(this)}}])}();function Lt(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_controlledWritableStream\")&&r instanceof So}function Ft(r,z,D,te,re,oe,de,me){z._controlledWritableStream=r,r._writableStreamController=z,z._queue=void 0,z._queueTotalSize=void 0,we(z),z._abortReason=void 0,z._abortController=function(){if(\"function\"==typeof AbortController)return new AbortController}(),z._started=!1,z._strategySizeAlgorithm=me,z._strategyHWM=de,z._writeAlgorithm=te,z._closeAlgorithm=re,z._abortAlgorithm=oe;const ye=Qt(z);Wt(r,ye),b(c(D()),(()=>(z._started=!0,Mt(z),null)),(D=>(z._started=!0,Tt(r,D),null)))}function It(r){r._writeAlgorithm=void 0,r._closeAlgorithm=void 0,r._abortAlgorithm=void 0,r._strategySizeAlgorithm=void 0}function $t(r){return r._strategyHWM-r._queueTotalSize}function Mt(r){const z=r._controlledWritableStream;if(!r._started)return;if(void 0!==z._inFlightWriteRequest)return;if(\"erroring\"===z._state)return void Pt(z);if(0===r._queue.length)return;const D=r._queue.peek().value;D===go?function(r){const z=r._controlledWritableStream;(function(r){r._inFlightCloseRequest=r._closeRequest,r._closeRequest=void 0})(z),ge(r);const D=r._closeAlgorithm();It(r),b(D,(()=>(function(r){r._inFlightCloseRequest._resolve(void 0),r._inFlightCloseRequest=void 0,\"erroring\"===r._state&&(r._storedError=void 0,void 0!==r._pendingAbortRequest&&(r._pendingAbortRequest._resolve(),r._pendingAbortRequest=void 0)),r._state=\"closed\";const z=r._writer;void 0!==z&&Kt(z)}(z),null)),(r=>(function(r,z){r._inFlightCloseRequest._reject(z),r._inFlightCloseRequest=void 0,void 0!==r._pendingAbortRequest&&(r._pendingAbortRequest._reject(z),r._pendingAbortRequest=void 0),Tt(r,z)}(z,r),null)))}(r):function(r,z){const D=r._controlledWritableStream;!function(r){r._inFlightWriteRequest=r._writeRequests.shift()}(D);b(r._writeAlgorithm(z),(()=>{!function(r){r._inFlightWriteRequest._resolve(void 0),r._inFlightWriteRequest=void 0}(D);const z=D._state;if(ge(r),!qt(D)&&\"writable\"===z){const z=Qt(r);Wt(D,z)}return Mt(r),null}),(z=>(\"writable\"===D._state&&It(r),function(r,z){r._inFlightWriteRequest._reject(z),r._inFlightWriteRequest=void 0,Tt(r,z)}(D,z),null)))}(r,D)}function Yt(r,z){\"writable\"===r._controlledWritableStream._state&&xt(r,z)}function Qt(r){return $t(r)<=0}function xt(r,z){const D=r._controlledWritableStream;It(r),Ct(D,z)}function Nt(r){return new TypeError(`WritableStream.prototype.${r} can only be used on a WritableStream`)}function Ht(r){return new TypeError(`WritableStreamDefaultController.prototype.${r} can only be used on a WritableStreamDefaultController`)}function Vt(r){return new TypeError(`WritableStreamDefaultWriter.prototype.${r} can only be used on a WritableStreamDefaultWriter`)}function Ut(r){return new TypeError(\"Cannot \"+r+\" a stream using a released writer\")}function Gt(r){r._closedPromise=u(((z,D)=>{r._closedPromise_resolve=z,r._closedPromise_reject=D,r._closedPromiseState=\"pending\"}))}function Xt(r,z){Gt(r),Jt(r,z)}function Jt(r,z){void 0!==r._closedPromise_reject&&(p(r._closedPromise),r._closedPromise_reject(z),r._closedPromise_resolve=void 0,r._closedPromise_reject=void 0,r._closedPromiseState=\"rejected\")}function Kt(r){void 0!==r._closedPromise_resolve&&(r._closedPromise_resolve(void 0),r._closedPromise_resolve=void 0,r._closedPromise_reject=void 0,r._closedPromiseState=\"resolved\")}function Zt(r){r._readyPromise=u(((z,D)=>{r._readyPromise_resolve=z,r._readyPromise_reject=D})),r._readyPromiseState=\"pending\"}function er(r,z){Zt(r),rr(r,z)}function tr(r){Zt(r),or(r)}function rr(r,z){void 0!==r._readyPromise_reject&&(p(r._readyPromise),r._readyPromise_reject(z),r._readyPromise_resolve=void 0,r._readyPromise_reject=void 0,r._readyPromiseState=\"rejected\")}function or(r){void 0!==r._readyPromise_resolve&&(r._readyPromise_resolve(void 0),r._readyPromise_resolve=void 0,r._readyPromise_reject=void 0,r._readyPromiseState=\"fulfilled\")}Object.defineProperties(So.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(So.prototype,Symbol.toStringTag,{value:\"WritableStreamDefaultController\",configurable:!0});const wo=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:\"undefined\"!=typeof global?global:void 0,Ro=function(){const r=null==wo?void 0:wo.DOMException;return function(r){if(\"function\"!=typeof r&&\"object\"!=typeof r)return!1;if(\"DOMException\"!==r.name)return!1;try{return new r,!0}catch(r){return!1}}(r)?r:void 0}()||function(){const e=function(r,z){this.message=r||\"\",this.name=z||\"Error\",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)};return o(e,\"DOMException\"),e.prototype=Object.create(Error.prototype),Object.defineProperty(e.prototype,\"constructor\",{value:e,writable:!0,configurable:!0}),e}();function ir(r,z,D,te,re,oe){const de=H(r),me=yt(z);r._disturbed=!0;let ye=!1,Dt=c(void 0);return u(((nr,ar)=>{let no;if(void 0!==oe){if(no=()=>{const D=void 0!==oe.reason?oe.reason:new Ro(\"Aborted\",\"AbortError\"),de=[];te||de.push((()=>\"writable\"===z._state?wt(z,D):c(void 0))),re||de.push((()=>\"readable\"===r._state?Br(r,D):c(void 0))),q((()=>Promise.all(de.map((r=>r())))),!0,D)},oe.aborted)return void no();oe.addEventListener(\"abort\",no)}var io,ao,lo;if(P(r,de._closedPromise,(r=>(te?E(!0,r):q((()=>wt(z,r)),!0,r),null))),P(z,me._closedPromise,(z=>(re?E(!0,z):q((()=>Br(r,z)),!0,z),null))),io=r,ao=de._closedPromise,lo=()=>(D?E():q((()=>function(r){const z=r._ownerWritableStream,D=z._state;return qt(z)||\"closed\"===D?c(void 0):\"errored\"===D?d(z._storedError):Ot(r)}(me))),null),\"closed\"===io._state?lo():h(ao,lo),qt(z)||\"closed\"===z._state){const z=new TypeError(\"the destination writable stream closed before all data could be piped to it\");re?E(!0,z):q((()=>Br(r,z)),!0,z)}function C(){const r=Dt;return f(Dt,(()=>r!==Dt?C():void 0))}function P(r,z,D){\"errored\"===r._state?D(r._storedError):m(z,D)}function q(r,D,te){function n(){return b(r(),(()=>B(D,te)),(r=>B(!0,r))),null}ye||(ye=!0,\"writable\"!==z._state||qt(z)?n():h(C(),n))}function E(r,D){ye||(ye=!0,\"writable\"!==z._state||qt(z)?B(r,D):h(C(),(()=>B(r,D))))}function B(r,z){return At(me),W(de),void 0!==oe&&oe.removeEventListener(\"abort\",no),r?ar(z):nr(void 0),null}p(u(((r,z)=>{!function o(D){D?r():f(ye?c(!0):f(me._readyPromise,(()=>u(((r,z)=>{K(de,{_chunkSteps:z=>{Dt=f(zt(me,z),void 0,e),r(!1)},_closeSteps:()=>r(!0),_errorSteps:z})})))),o,z)}(!1)})))}))}let To=function(){return _createClass((function ReadableStreamDefaultController(){throw _classCallCheck(this,ReadableStreamDefaultController),new TypeError(\"Illegal constructor\")}),[{key:\"desiredSize\",get:function(){if(!lr(this))throw pr(\"desiredSize\");return hr(this)}},{key:\"close\",value:function close(){if(!lr(this))throw pr(\"close\");if(!mr(this))throw new TypeError(\"The stream is not in a state that permits close\");dr(this)}},{key:\"enqueue\",value:function enqueue(r=void 0){if(!lr(this))throw pr(\"enqueue\");if(!mr(this))throw new TypeError(\"The stream is not in a state that permits enqueue\");return fr(this,r)}},{key:\"error\",value:function error(r=void 0){if(!lr(this))throw pr(\"error\");br(this,r)}},{key:Dt,value:function(r){we(this);const z=this._cancelAlgorithm(r);return cr(this),z}},{key:nr,value:function(r){const z=this._controlledReadableStream;if(this._queue.length>0){const D=ge(this);this._closeRequested&&0===this._queue.length?(cr(this),Or(z)):sr(this),r._chunkSteps(D)}else V(z,r),sr(this)}},{key:ar,value:function(){}}])}();function lr(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_controlledReadableStream\")&&r instanceof To}function sr(r){ur(r)&&(r._pulling?r._pullAgain=!0:(r._pulling=!0,b(r._pullAlgorithm(),(()=>(r._pulling=!1,r._pullAgain&&(r._pullAgain=!1,sr(r)),null)),(z=>(br(r,z),null)))))}function ur(r){const z=r._controlledReadableStream;return!!mr(r)&&(!!r._started&&(!!(Wr(z)&&G(z)>0)||hr(r)>0))}function cr(r){r._pullAlgorithm=void 0,r._cancelAlgorithm=void 0,r._strategySizeAlgorithm=void 0}function dr(r){if(!mr(r))return;const z=r._controlledReadableStream;r._closeRequested=!0,0===r._queue.length&&(cr(r),Or(z))}function fr(r,z){if(!mr(r))return;const D=r._controlledReadableStream;if(Wr(D)&&G(D)>0)U(D,z,!1);else{let D;try{D=r._strategySizeAlgorithm(z)}catch(z){throw br(r,z),z}try{ve(r,z,D)}catch(z){throw br(r,z),z}}sr(r)}function br(r,z){const D=r._controlledReadableStream;\"readable\"===D._state&&(we(r),cr(r),jr(D,z))}function hr(r){const z=r._controlledReadableStream._state;return\"errored\"===z?null:\"closed\"===z?0:r._strategyHWM-r._queueTotalSize}function mr(r){const z=r._controlledReadableStream._state;return!r._closeRequested&&\"readable\"===z}function _r(r,z,D,te,re,oe,de){z._controlledReadableStream=r,z._queue=void 0,z._queueTotalSize=void 0,we(z),z._started=!1,z._closeRequested=!1,z._pullAgain=!1,z._pulling=!1,z._strategySizeAlgorithm=de,z._strategyHWM=oe,z._pullAlgorithm=te,z._cancelAlgorithm=re,r._readableStreamController=z,b(c(D()),(()=>(z._started=!0,sr(z),null)),(r=>(br(z,r),null)))}function pr(r){return new TypeError(`ReadableStreamDefaultController.prototype.${r} can only be used on a ReadableStreamDefaultController`)}function Sr(r){return t(z=r)&&void 0!==z.getReader?function(r){let z;return z=Cr(e,(function n(){let D;try{D=r.read()}catch(D){return d(D)}return _(D,(r=>{if(!t(r))throw new TypeError(\"The promise returned by the reader.read() method must fulfill with an object\");if(r.done)dr(z._readableStreamController);else{const D=r.value;fr(z._readableStreamController,D)}}))}),(function a(z){try{return c(r.cancel(z))}catch(z){return d(z)}}),0),z}(r.getReader()):function(r){let z;const D=fe(r,\"async\");return z=Cr(e,(function a(){let r;try{r=be(D)}catch(r){return d(r)}return _(c(r),(r=>{if(!t(r))throw new TypeError(\"The promise returned by the iterator.next() method must fulfill with an object\");if(r.done)dr(z._readableStreamController);else{const D=r.value;fr(z._readableStreamController,D)}}))}),(function i(r){const z=D.iterator;let te;try{te=ue(z,\"return\")}catch(r){return d(r)}return void 0===te?c(void 0):_(g(te,z,[r]),(r=>{if(!t(r))throw new TypeError(\"The promise returned by the iterator.return() method must fulfill with an object\")}))}),0),z}(r);var z}function gr(r,z,D){return F(r,D),D=>g(r,z,[D])}function vr(r,z,D){return F(r,D),D=>g(r,z,[D])}function wr(r,z,D){return F(r,D),D=>S(r,z,[D])}function Rr(r,z){if(\"bytes\"!=(r=`${r}`))throw new TypeError(`${z} '${r}' is not a valid enumeration value for ReadableStreamType`);return r}function Tr(r,z){L(r,z);const D=null==r?void 0:r.preventAbort,te=null==r?void 0:r.preventCancel,re=null==r?void 0:r.preventClose,oe=null==r?void 0:r.signal;return void 0!==oe&&function(r,z){if(!function(r){if(\"object\"!=typeof r||null===r)return!1;try{return\"boolean\"==typeof r.aborted}catch(r){return!1}}(r))throw new TypeError(`${z} is not an AbortSignal.`)}(oe,`${z} has member 'signal' that`),{preventAbort:Boolean(D),preventCancel:Boolean(te),preventClose:Boolean(re),signal:oe}}Object.defineProperties(To.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),o(To.prototype.close,\"close\"),o(To.prototype.enqueue,\"enqueue\"),o(To.prototype.error,\"error\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(To.prototype,Symbol.toStringTag,{value:\"ReadableStreamDefaultController\",configurable:!0});let Co=function(){return _createClass((function ReadableStream(r={},z={}){_classCallCheck(this,ReadableStream),void 0===r?r=null:I(r,\"First parameter\");const D=dt(z,\"Second parameter\"),te=function(r,z){L(r,z);const D=r,te=null==D?void 0:D.autoAllocateChunkSize,re=null==D?void 0:D.cancel,oe=null==D?void 0:D.pull,de=null==D?void 0:D.start,me=null==D?void 0:D.type;return{autoAllocateChunkSize:void 0===te?void 0:x(te,`${z} has member 'autoAllocateChunkSize' that`),cancel:void 0===re?void 0:gr(re,D,`${z} has member 'cancel' that`),pull:void 0===oe?void 0:vr(oe,D,`${z} has member 'pull' that`),start:void 0===de?void 0:wr(de,D,`${z} has member 'start' that`),type:void 0===me?void 0:Rr(me,`${z} has member 'type' that`)}}(r,\"First parameter\");if(qr(this),\"bytes\"===te.type){if(void 0!==D.size)throw new RangeError(\"The strategy for a byte stream cannot have a size function\");!function(r,z,D){const te=Object.create(mo.prototype);let re,oe,de;re=void 0!==z.start?()=>z.start(te):()=>{},oe=void 0!==z.pull?()=>z.pull(te):()=>c(void 0),de=void 0!==z.cancel?r=>z.cancel(r):()=>c(void 0);const me=z.autoAllocateChunkSize;if(0===me)throw new TypeError(\"autoAllocateChunkSize must be greater than 0\");Je(r,te,re,oe,de,D,me)}(this,te,ut(D,0))}else{const r=ct(D);!function(r,z,D,te){const re=Object.create(To.prototype);let oe,de,me;oe=void 0!==z.start?()=>z.start(re):()=>{},de=void 0!==z.pull?()=>z.pull(re):()=>c(void 0),me=void 0!==z.cancel?r=>z.cancel(r):()=>c(void 0),_r(r,re,oe,de,me,D,te)}(this,te,ut(D,1),r)}}),[{key:\"locked\",get:function(){if(!Er(this))throw kr(\"locked\");return Wr(this)}},{key:\"cancel\",value:function cancel(r=void 0){return Er(this)?Wr(this)?d(new TypeError(\"Cannot cancel a stream that already has a reader\")):Br(this,r):d(kr(\"cancel\"))}},{key:\"getReader\",value:function getReader(r=void 0){if(!Er(this))throw kr(\"getReader\");return void 0===function(r,z){L(r,z);const D=null==r?void 0:r.mode;return{mode:void 0===D?void 0:et(D,`${z} has member 'mode' that`)}}(r,\"First parameter\").mode?H(this):tt(this)}},{key:\"pipeThrough\",value:function pipeThrough(r,z={}){if(!Er(this))throw kr(\"pipeThrough\");$(r,1,\"pipeThrough\");const D=function(r,z){L(r,z);const D=null==r?void 0:r.readable;M(D,\"readable\",\"ReadableWritablePair\"),N(D,`${z} has member 'readable' that`);const te=null==r?void 0:r.writable;return M(te,\"writable\",\"ReadableWritablePair\"),pt(te,`${z} has member 'writable' that`),{readable:D,writable:te}}(r,\"First parameter\"),te=Tr(z,\"Second parameter\");if(Wr(this))throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream\");if(vt(D.writable))throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream\");return p(ir(this,D.writable,te.preventClose,te.preventAbort,te.preventCancel,te.signal)),D.readable}},{key:\"pipeTo\",value:function pipeTo(r,z={}){if(!Er(this))return d(kr(\"pipeTo\"));if(void 0===r)return d(\"Parameter 1 is required in 'pipeTo'.\");if(!gt(r))return d(new TypeError(\"ReadableStream.prototype.pipeTo's first argument must be a WritableStream\"));let D;try{D=Tr(z,\"Second parameter\")}catch(r){return d(r)}return Wr(this)?d(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream\")):vt(r)?d(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream\")):ir(this,r,D.preventClose,D.preventAbort,D.preventCancel,D.signal)}},{key:\"tee\",value:function tee(){if(!Er(this))throw kr(\"tee\");return ne(function yr(r,z){return Te(r._readableStreamController)?function(r){let z,D,te,re,oe,de=H(r),me=!1,ye=!1,Dt=!1,nr=!1,ar=!1;const no=u((r=>{oe=r}));function _(r){m(r._closedPromise,(z=>(r!==de||(Ne(te._readableStreamController,z),Ne(re._readableStreamController,z),nr&&ar||oe(void 0)),null)))}function p(){at(de)&&(W(de),de=H(r),_(de)),K(de,{_chunkSteps:z=>{y((()=>{ye=!1,Dt=!1;const D=z;let de=z;if(!nr&&!ar)try{de=Se(z)}catch(z){return Ne(te._readableStreamController,z),Ne(re._readableStreamController,z),void oe(Br(r,z))}nr||xe(te._readableStreamController,D),ar||xe(re._readableStreamController,de),me=!1,ye?g():Dt&&v()}))},_closeSteps:()=>{me=!1,nr||Qe(te._readableStreamController),ar||Qe(re._readableStreamController),te._readableStreamController._pendingPullIntos.length>0&&Ge(te._readableStreamController,0),re._readableStreamController._pendingPullIntos.length>0&&Ge(re._readableStreamController,0),nr&&ar||oe(void 0)},_errorSteps:()=>{me=!1}})}function S(z,D){J(de)&&(W(de),de=tt(r),_(de));const no=D?re:te,io=D?te:re;it(de,z,1,{_chunkSteps:z=>{y((()=>{ye=!1,Dt=!1;const te=D?ar:nr;if(D?nr:ar)te||Xe(no._readableStreamController,z);else{let D;try{D=Se(z)}catch(z){return Ne(no._readableStreamController,z),Ne(io._readableStreamController,z),void oe(Br(r,z))}te||Xe(no._readableStreamController,z),xe(io._readableStreamController,D)}me=!1,ye?g():Dt&&v()}))},_closeSteps:r=>{me=!1;const z=D?ar:nr,te=D?nr:ar;z||Qe(no._readableStreamController),te||Qe(io._readableStreamController),void 0!==r&&(z||Xe(no._readableStreamController,r),!te&&io._readableStreamController._pendingPullIntos.length>0&&Ge(io._readableStreamController,0)),z&&te||oe(void 0)},_errorSteps:()=>{me=!1}})}function g(){if(me)return ye=!0,c(void 0);me=!0;const r=Ve(te._readableStreamController);return null===r?p():S(r._view,!1),c(void 0)}function v(){if(me)return Dt=!0,c(void 0);me=!0;const r=Ve(re._readableStreamController);return null===r?p():S(r._view,!0),c(void 0)}function T(){}return te=Pr(T,g,(function w(te){if(nr=!0,z=te,ar){const te=ne([z,D]),re=Br(r,te);oe(re)}return no})),re=Pr(T,v,(function R(te){if(ar=!0,D=te,nr){const te=ne([z,D]),re=Br(r,te);oe(re)}return no})),_(de),[te,re]}(r):function(r,z){const D=H(r);let te,re,oe,de,me,ye=!1,Dt=!1,nr=!1,ar=!1;const no=u((r=>{me=r}));function _(){return ye?(Dt=!0,c(void 0)):(ye=!0,K(D,{_chunkSteps:r=>{y((()=>{Dt=!1;const z=r,D=r;nr||fr(oe._readableStreamController,z),ar||fr(de._readableStreamController,D),ye=!1,Dt&&_()}))},_closeSteps:()=>{ye=!1,nr||dr(oe._readableStreamController),ar||dr(de._readableStreamController),nr&&ar||me(void 0)},_errorSteps:()=>{ye=!1}}),c(void 0))}function g(){}return oe=Cr(g,_,(function p(z){if(nr=!0,te=z,ar){const z=ne([te,re]),D=Br(r,z);me(D)}return no})),de=Cr(g,_,(function S(z){if(ar=!0,re=z,nr){const z=ne([te,re]),D=Br(r,z);me(D)}return no})),m(D._closedPromise,(r=>(br(oe._readableStreamController,r),br(de._readableStreamController,r),nr&&ar||me(void 0),null))),[oe,de]}(r)}(this))}},{key:\"values\",value:function values(r=void 0){if(!Er(this))throw kr(\"values\");return function(r,z){const D=H(r),te=new fo(D,z),re=Object.create(ho);return re._asyncIteratorImpl=te,re}(this,function(r,z){L(r,\"First parameter\");const D=null==r?void 0:r.preventCancel;return{preventCancel:Boolean(D)}}(r).preventCancel)}},{key:co,value:function(r){return this.values(r)}}],[{key:\"from\",value:function from(r){return Sr(r)}}])}();function Cr(r,z,D,te=1,re=(()=>1)){const oe=Object.create(Co.prototype);return qr(oe),_r(oe,Object.create(To.prototype),r,z,D,te,re),oe}function Pr(r,z,D){const te=Object.create(Co.prototype);return qr(te),Je(te,Object.create(mo.prototype),r,z,D,0,void 0),te}function qr(r){r._state=\"readable\",r._reader=void 0,r._storedError=void 0,r._disturbed=!1}function Er(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_readableStreamController\")&&r instanceof Co}function Wr(r){return void 0!==r._reader}function Br(r,z){if(r._disturbed=!0,\"closed\"===r._state)return c(void 0);if(\"errored\"===r._state)return d(r._storedError);Or(r);const D=r._reader;if(void 0!==D&&at(D)){const r=D._readIntoRequests;D._readIntoRequests=new de,r.forEach((r=>{r._closeSteps(void 0)}))}return _(r._readableStreamController[Dt](z),e)}function Or(r){r._state=\"closed\";const z=r._reader;if(void 0!==z&&(A(z),J(z))){const r=z._readRequests;z._readRequests=new de,r.forEach((r=>{r._closeSteps()}))}}function jr(r,z){r._state=\"errored\",r._storedError=z;const D=r._reader;void 0!==D&&(k(D,z),J(D)?Z(D,z):lt(D,z))}function kr(r){return new TypeError(`ReadableStream.prototype.${r} can only be used on a ReadableStream`)}function Ar(r,z){L(r,z);const D=null==r?void 0:r.highWaterMark;return M(D,\"highWaterMark\",\"QueuingStrategyInit\"),{highWaterMark:Y(D)}}Object.defineProperties(Co,{from:{enumerable:!0}}),Object.defineProperties(Co.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),o(Co.from,\"from\"),o(Co.prototype.cancel,\"cancel\"),o(Co.prototype.getReader,\"getReader\"),o(Co.prototype.pipeThrough,\"pipeThrough\"),o(Co.prototype.pipeTo,\"pipeTo\"),o(Co.prototype.tee,\"tee\"),o(Co.prototype.values,\"values\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(Co.prototype,Symbol.toStringTag,{value:\"ReadableStream\",configurable:!0}),Object.defineProperty(Co.prototype,co,{value:Co.prototype.values,writable:!0,configurable:!0});const zr=r=>r.byteLength;o(zr,\"size\");let Po=function(){return _createClass((function ByteLengthQueuingStrategy(r){_classCallCheck(this,ByteLengthQueuingStrategy),$(r,1,\"ByteLengthQueuingStrategy\"),r=Ar(r,\"First parameter\"),this._byteLengthQueuingStrategyHighWaterMark=r.highWaterMark}),[{key:\"highWaterMark\",get:function(){if(!Lr(this))throw Dr(\"highWaterMark\");return this._byteLengthQueuingStrategyHighWaterMark}},{key:\"size\",get:function(){if(!Lr(this))throw Dr(\"size\");return zr}}])}();function Dr(r){return new TypeError(`ByteLengthQueuingStrategy.prototype.${r} can only be used on a ByteLengthQueuingStrategy`)}function Lr(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_byteLengthQueuingStrategyHighWaterMark\")&&r instanceof Po}Object.defineProperties(Po.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(Po.prototype,Symbol.toStringTag,{value:\"ByteLengthQueuingStrategy\",configurable:!0});const Fr=()=>1;o(Fr,\"size\");let ko=function(){return _createClass((function CountQueuingStrategy(r){_classCallCheck(this,CountQueuingStrategy),$(r,1,\"CountQueuingStrategy\"),r=Ar(r,\"First parameter\"),this._countQueuingStrategyHighWaterMark=r.highWaterMark}),[{key:\"highWaterMark\",get:function(){if(!$r(this))throw Ir(\"highWaterMark\");return this._countQueuingStrategyHighWaterMark}},{key:\"size\",get:function(){if(!$r(this))throw Ir(\"size\");return Fr}}])}();function Ir(r){return new TypeError(`CountQueuingStrategy.prototype.${r} can only be used on a CountQueuingStrategy`)}function $r(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_countQueuingStrategyHighWaterMark\")&&r instanceof ko}function Mr(r,z,D){return F(r,D),D=>g(r,z,[D])}function Yr(r,z,D){return F(r,D),D=>S(r,z,[D])}function Qr(r,z,D){return F(r,D),(D,te)=>g(r,z,[D,te])}function xr(r,z,D){return F(r,D),D=>g(r,z,[D])}Object.defineProperties(ko.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ko.prototype,Symbol.toStringTag,{value:\"CountQueuingStrategy\",configurable:!0});let qo=function(){return _createClass((function TransformStream(r={},z={},D={}){_classCallCheck(this,TransformStream),void 0===r&&(r=null);const te=dt(z,\"Second parameter\"),re=dt(D,\"Third parameter\"),oe=function(r,z){L(r,z);const D=null==r?void 0:r.cancel,te=null==r?void 0:r.flush,re=null==r?void 0:r.readableType,oe=null==r?void 0:r.start,de=null==r?void 0:r.transform,me=null==r?void 0:r.writableType;return{cancel:void 0===D?void 0:xr(D,r,`${z} has member 'cancel' that`),flush:void 0===te?void 0:Mr(te,r,`${z} has member 'flush' that`),readableType:re,start:void 0===oe?void 0:Yr(oe,r,`${z} has member 'start' that`),transform:void 0===de?void 0:Qr(de,r,`${z} has member 'transform' that`),writableType:me}}(r,\"First parameter\");if(void 0!==oe.readableType)throw new RangeError(\"Invalid readableType specified\");if(void 0!==oe.writableType)throw new RangeError(\"Invalid writableType specified\");const de=ut(re,0),me=ct(re),ye=ut(te,1),Dt=ct(te);let nr;!function(r,z,D,te,re,oe){function i(){return z}r._writable=function(r,z,D,te,re=1,oe=(()=>1)){const de=Object.create(yo.prototype);return St(de),Ft(de,Object.create(So.prototype),r,z,D,te,re,oe),de}(i,(function l(z){return function(r,z){const D=r._transformStreamController;return r._backpressure?_(r._backpressureChangePromise,(()=>{const te=r._writable;if(\"erroring\"===te._state)throw te._storedError;return Zr(D,z)})):Zr(D,z)}(r,z)}),(function c(){return function(r){const z=r._transformStreamController;if(void 0!==z._finishPromise)return z._finishPromise;const D=r._readable;z._finishPromise=u(((r,D)=>{z._finishPromise_resolve=r,z._finishPromise_reject=D}));const te=z._flushAlgorithm();return Jr(z),b(te,(()=>(\"errored\"===D._state?ro(z,D._storedError):(dr(D._readableStreamController),to(z)),null)),(r=>(br(D._readableStreamController,r),ro(z,r),null))),z._finishPromise}(r)}),(function s(z){return function(r,z){const D=r._transformStreamController;if(void 0!==D._finishPromise)return D._finishPromise;const te=r._readable;D._finishPromise=u(((r,z)=>{D._finishPromise_resolve=r,D._finishPromise_reject=z}));const re=D._cancelAlgorithm(z);return Jr(D),b(re,(()=>(\"errored\"===te._state?ro(D,te._storedError):(br(te._readableStreamController,z),to(D)),null)),(r=>(br(te._readableStreamController,r),ro(D,r),null))),D._finishPromise}(r,z)}),D,te),r._readable=Cr(i,(function d(){return function(r){return Gr(r,!1),r._backpressureChangePromise}(r)}),(function f(z){return function(r,z){const D=r._transformStreamController;if(void 0!==D._finishPromise)return D._finishPromise;const te=r._writable;D._finishPromise=u(((r,z)=>{D._finishPromise_resolve=r,D._finishPromise_reject=z}));const re=D._cancelAlgorithm(z);return Jr(D),b(re,(()=>(\"errored\"===te._state?ro(D,te._storedError):(Yt(te._writableStreamController,z),Ur(r),to(D)),null)),(z=>(Yt(te._writableStreamController,z),Ur(r),ro(D,z),null))),D._finishPromise}(r,z)}),re,oe),r._backpressure=void 0,r._backpressureChangePromise=void 0,r._backpressureChangePromise_resolve=void 0,Gr(r,!0),r._transformStreamController=void 0}(this,u((r=>{nr=r})),ye,Dt,de,me),function(r,z){const D=Object.create(Eo.prototype);let te,re,oe;te=void 0!==z.transform?r=>z.transform(r,D):r=>{try{return Kr(D,r),c(void 0)}catch(r){return d(r)}},re=void 0!==z.flush?()=>z.flush(D):()=>c(void 0),oe=void 0!==z.cancel?r=>z.cancel(r):()=>c(void 0),function(r,z,D,te,re){z._controlledTransformStream=r,r._transformStreamController=z,z._transformAlgorithm=D,z._flushAlgorithm=te,z._cancelAlgorithm=re,z._finishPromise=void 0,z._finishPromise_resolve=void 0,z._finishPromise_reject=void 0}(r,D,te,re,oe)}(this,oe),void 0!==oe.start?nr(oe.start(this._transformStreamController)):nr(void 0)}),[{key:\"readable\",get:function(){if(!Nr(this))throw oo(\"readable\");return this._readable}},{key:\"writable\",get:function(){if(!Nr(this))throw oo(\"writable\");return this._writable}}])}();function Nr(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_transformStreamController\")&&r instanceof qo}function Hr(r,z){br(r._readable._readableStreamController,z),Vr(r,z)}function Vr(r,z){Jr(r._transformStreamController),Yt(r._writable._writableStreamController,z),Ur(r)}function Ur(r){r._backpressure&&Gr(r,!1)}function Gr(r,z){void 0!==r._backpressureChangePromise&&r._backpressureChangePromise_resolve(),r._backpressureChangePromise=u((z=>{r._backpressureChangePromise_resolve=z})),r._backpressure=z}Object.defineProperties(qo.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(qo.prototype,Symbol.toStringTag,{value:\"TransformStream\",configurable:!0});let Eo=function(){return _createClass((function TransformStreamDefaultController(){throw _classCallCheck(this,TransformStreamDefaultController),new TypeError(\"Illegal constructor\")}),[{key:\"desiredSize\",get:function(){if(!Xr(this))throw eo(\"desiredSize\");return hr(this._controlledTransformStream._readable._readableStreamController)}},{key:\"enqueue\",value:function enqueue(r=void 0){if(!Xr(this))throw eo(\"enqueue\");Kr(this,r)}},{key:\"error\",value:function error(r=void 0){if(!Xr(this))throw eo(\"error\");var z;z=r,Hr(this._controlledTransformStream,z)}},{key:\"terminate\",value:function terminate(){if(!Xr(this))throw eo(\"terminate\");!function(r){const z=r._controlledTransformStream;dr(z._readable._readableStreamController);Vr(z,new TypeError(\"TransformStream terminated\"))}(this)}}])}();function Xr(r){return!!t(r)&&!!Object.prototype.hasOwnProperty.call(r,\"_controlledTransformStream\")&&r instanceof Eo}function Jr(r){r._transformAlgorithm=void 0,r._flushAlgorithm=void 0,r._cancelAlgorithm=void 0}function Kr(r,z){const D=r._controlledTransformStream,te=D._readable._readableStreamController;if(!mr(te))throw new TypeError(\"Readable side is not in a state that permits enqueue\");try{fr(te,z)}catch(r){throw Vr(D,r),D._readable._storedError}const re=function(r){return!ur(r)}(te);re!==D._backpressure&&Gr(D,!0)}function Zr(r,z){return _(r._transformAlgorithm(z),void 0,(z=>{throw Hr(r._controlledTransformStream,z),z}))}function eo(r){return new TypeError(`TransformStreamDefaultController.prototype.${r} can only be used on a TransformStreamDefaultController`)}function to(r){void 0!==r._finishPromise_resolve&&(r._finishPromise_resolve(),r._finishPromise_resolve=void 0,r._finishPromise_reject=void 0)}function ro(r,z){void 0!==r._finishPromise_reject&&(p(r._finishPromise),r._finishPromise_reject(z),r._finishPromise_resolve=void 0,r._finishPromise_reject=void 0)}function oo(r){return new TypeError(`TransformStream.prototype.${r} can only be used on a TransformStream`)}Object.defineProperties(Eo.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),o(Eo.prototype.enqueue,\"enqueue\"),o(Eo.prototype.error,\"error\"),o(Eo.prototype.terminate,\"terminate\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(Eo.prototype,Symbol.toStringTag,{value:\"TransformStreamDefaultController\",configurable:!0});const Wo={ReadableStream:Co,ReadableStreamDefaultController:To,ReadableByteStreamController:mo,ReadableStreamBYOBRequest:_o,ReadableStreamDefaultReader:ao,ReadableStreamBYOBReader:po,WritableStream:yo,WritableStreamDefaultController:So,WritableStreamDefaultWriter:vo,ByteLengthQueuingStrategy:Po,CountQueuingStrategy:ko,TransformStream:qo,TransformStreamDefaultController:Eo};for(const r in Wo)Object.prototype.hasOwnProperty.call(Wo,r)&&Object.defineProperty(wo,r,{value:Wo[r],writable:!0,configurable:!0})}();","import registerRootComponent from 'expo/src/launch/registerRootComponent';\n\nimport App from '../../App';\n\nregisterRootComponent(App);\n","import '../Expo.fx';\n\nimport { type ComponentType } from 'react';\nimport { AppRegistry, Platform } from 'react-native';\n\ndeclare namespace globalThis {\n  // TODO(@kitten): What's the proper type here? What would AppRegistry need to accept?\n  const __EXPO_ROUTER_HYDRATE__: unknown;\n}\n\ntype InitialProps = {\n  exp?: {\n    notification?: any;\n    manifestString?: string;\n    [key: string]: any;\n  };\n  shell?: boolean;\n  shellManifestUrl?: string;\n  [key: string]: any;\n};\n\n// @needsAudit\n/**\n * Sets the initial React component to render natively in the app's root React Native view on Android, iOS, tvOS and the web.\n *\n * This method does the following:\n * - Invokes React Native's `AppRegistry.registerComponent`.\n * - Invokes React Native web's `AppRegistry.runApplication` on web to render to the root `index.html` file.\n * - Polyfills the `process.nextTick` function globally.\n *\n * This method also adds the following dev-only features that are removed in production bundles.\n * - Adds the Fast Refresh and bundle splitting indicator to the app.\n * - Asserts if the `expo-updates` package is misconfigured.\n * - Asserts if `react-native` is not aliased to `react-native-web` when running in the browser.\n * @param component The React component class that renders the rest of your app.\n * @see For information on how to setup `registerRootComponent` in an existing (bare) React Native app, see [Common questions](#rootregistercomponent-setup-for-existing-react-native-projects) below.\n */\nexport default function registerRootComponent<P extends InitialProps>(\n  component: ComponentType<P>\n): void {\n  let qualifiedComponent = component;\n\n  if (process.env.NODE_ENV !== 'production') {\n    const { withDevTools } = require('./withDevTools') as typeof import('./withDevTools');\n    qualifiedComponent = withDevTools(component);\n  }\n\n  AppRegistry.registerComponent('main', () => qualifiedComponent);\n  // Skip querying the DOM if we're in a Node.js environment.\n  if (Platform.OS === 'web' && typeof window !== 'undefined') {\n    const rootTag = document.getElementById('root');\n    if (process.env.NODE_ENV !== 'production') {\n      if (!rootTag) {\n        throw new Error('Required HTML element with id \"root\" was not found in the document HTML.');\n      }\n    }\n\n    AppRegistry.runApplication('main', {\n      rootTag,\n      // Injected by SSR HTML tags.\n      hydrate: globalThis.__EXPO_ROUTER_HYDRATE__,\n    });\n  }\n}\n","// load expo-asset immediately to set a custom `source` transformer in React Native\nimport './winter';\nimport './async-require';\nimport 'expo-asset';\nimport 'expo/virtual/rsc';\n\nimport Constants from 'expo-constants';\nimport { AppRegistry, NativeModules, LogBox, Platform } from 'react-native';\n\nimport { isRunningInExpoGo } from './environment/ExpoGo';\nimport { AppEntryNotFound } from './errors/AppEntryNotFound';\nimport { createErrorHandler } from './errors/ExpoErrorManager';\n\n// Only during development.\nif (\n  __DEV__ &&\n  // Disable for SSR\n  typeof globalThis.expo !== 'undefined'\n) {\n  require('./async-require/messageSocket');\n}\n\nif (isRunningInExpoGo()) {\n  // set up some improvements to commonly logged error messages stemming from react-native\n  const globalHandler = ErrorUtils.getGlobalHandler();\n  ErrorUtils.setGlobalHandler(createErrorHandler(globalHandler));\n}\n\n// Warn if the New Architecture is not explicitly enabled in the app config and we are running in Expo Go.\n// This could be problematic because you will be developing your app with the New Architecture enabled and\n// but your builds will have the New Architecture disabled.\nif (__DEV__ && isRunningInExpoGo() && process.env.NODE_ENV === 'development') {\n  (['android', 'ios'] as const).forEach((platform) => {\n    const newArchPlatformConfig = Constants.expoConfig?.[platform]?.newArchEnabled;\n    const newArchRootConfig = Constants.expoConfig?.newArchEnabled;\n\n    const isNewArchExplicitlyDisabled =\n      newArchPlatformConfig === false ||\n      (newArchPlatformConfig === undefined && newArchRootConfig === false);\n\n    if (Platform.OS === platform && isNewArchExplicitlyDisabled) {\n      // Wrap it in rAF to show the warning after the React Native DevTools message\n      requestAnimationFrame(() => {\n        console.warn(\n          `🚨 React Native's New Architecture is always enabled in Expo Go, but it is explicitly disabled in your project's app config. This may lead to unexpected behavior when creating a production or development build. Remove \"newArchEnabled\": false from your app.json.\\nLearn more: https://docs.expo.dev/guides/new-architecture/`\n        );\n      });\n    }\n  });\n}\n\n// Disable the \"Open debugger to view warnings\" React Native DevTools warning in\n// Expo Go and expo-dev-client, because launching the debugger from there will not\n// get the correct JS target.\nconst IS_RUNNING_IN_DEV_CLIENT = !!NativeModules.EXDevLauncher;\nif (__DEV__ && LogBox?.ignoreLogs && (isRunningInExpoGo() || IS_RUNNING_IN_DEV_CLIENT)) {\n  LogBox.ignoreLogs([/Open debugger to view warnings/]);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  // Register a default component and expect `registerRootComponent` to be called later and update it.\n  AppRegistry.registerComponent('main', () => AppEntryNotFound);\n}\n","import './runtime';\n","// This file configures the runtime environment to increase compatibility with WinterCG.\n// https://wintercg.org/\n\nimport { installFormDataPatch } from './FormData';\nimport { installGlobal as install } from './installGlobal';\n\n// https://encoding.spec.whatwg.org/#textdecoder\ninstall('TextDecoder', () => require('./TextDecoder').TextDecoder);\n// https://encoding.spec.whatwg.org/#interface-textdecoderstream\ninstall('TextDecoderStream', () => require('./TextDecoderStream').TextDecoderStream);\n// https://encoding.spec.whatwg.org/#interface-textencoderstream\ninstall('TextEncoderStream', () => require('./TextDecoderStream').TextEncoderStream);\n// https://url.spec.whatwg.org/#url\ninstall('URL', () => require('./url').URL);\n// https://url.spec.whatwg.org/#urlsearchparams\ninstall('URLSearchParams', () => require('./url').URLSearchParams);\n// https://streams.spec.whatwg.org/#rs\n// ReadableStream is injected by Metro as a global\n\ninstall('__ExpoImportMetaRegistry', () => require('./ImportMetaRegistry').ImportMetaRegistry);\n\n// https://html.spec.whatwg.org/multipage/structured-data.html#structuredclone\ninstall('structuredClone', () => require('@ungap/structured-clone').default);\n\ninstallFormDataPatch(FormData);\n\n// Polyfill async iterator symbol for Hermes.\n// @ts-expect-error: readonly property only applies when the engine supports it\nSymbol.asyncIterator ??= Symbol.for('Symbol.asyncIterator');\n","// React Native's FormData implementation is missing several methods that are used in React for server actions.\n// https://github.com/facebook/react-native/blob/42dcfdd2cdb59fe545523cb57db6ee32a96b9298/packages/react-native/Libraries/Network/FormData.js#L1\n// https://github.com/facebook/react/blob/985747f81033833dca22f30b0c04704dd4bd3714/packages/react-client/src/ReactFlightReplyClient.js#L212\n\ntype ReactNativeFormDataInternal = FormData & {\n  _parts: [string, string | Blob][];\n};\n\nexport type ExpoFormDataValue = string | Blob;\nexport type ExpoFormDataPart =\n  | {\n      // WinterCG FormData string\n      string: string;\n      headers: { [name: string]: string };\n    }\n  | {\n      // WinterCG FormData blob in our wrapped form\n      blob: Blob;\n      headers: { [name: string]: string };\n      name?: string | undefined;\n      type?: string | undefined;\n    }\n  | {\n      // React Native proprietary local file\n      uri: string;\n      headers: { [name: string]: string };\n      name?: string | undefined;\n      type?: string | undefined;\n    };\n\nexport declare class ExpoFormData {\n  constructor();\n\n  // React Native proprietary local file\n  append(name: string, value: { uri: string; name?: string; type?: string }): void;\n  append(name: string, value: string): void;\n  append(name: string, value: Blob, filename?: string): void;\n\n  delete(name: string): void;\n  get(name: string): FormDataEntryValue | null;\n  getAll(name: string): FormDataEntryValue[];\n  has(name: string): boolean;\n\n  // React Native proprietary local file\n  set(name: string, value: { uri: string; name?: string; type?: string }): void;\n  set(name: string, value: string): void;\n  set(name: string, value: Blob, filename?: string): void;\n\n  // iterable\n  forEach(\n    callback: (value: FormDataEntryValue, key: string, iterable: FormData) => void,\n    thisArg?: unknown\n  ): void;\n  keys(): IterableIterator<string>;\n  values(): IterableIterator<FormDataEntryValue>;\n  entries(): IterableIterator<[string, FormDataEntryValue]>;\n  [Symbol.iterator](): IterableIterator<[string, FormDataEntryValue]>;\n}\n\nfunction ensureMinArgCount(name: string, args: any[], expected: number) {\n  if (args.length < expected) {\n    const argName = expected === 2 ? 'arguments' : 'argument';\n    // Matches the errors in Chrome.\n    throw new TypeError(\n      `Failed to execute '${name}' on 'FormData': ${expected} ${argName} required, but only ${args.length} present.`\n    );\n  }\n}\n\nfunction normalizeArgs(\n  name: string,\n  value: any,\n  blobFilename: string | undefined\n): [string, File | string] {\n  if (value instanceof Blob) {\n    const descriptor = Object.getOwnPropertyDescriptor(value, 'name');\n\n    if (descriptor && descriptor.writable) {\n      // @ts-expect-error: `name` is not accessible in blob\n      value.name = blobFilename ?? value.name ?? 'blob';\n    } else if (!descriptor && Object.isExtensible(value)) {\n      // @ts-expect-error: `name` is not accessible in blob\n      value.name = blobFilename ?? 'blob';\n    }\n  } else if (typeof value !== 'object') {\n    value = String(value);\n  }\n  return [String(name), value];\n}\n\nexport function installFormDataPatch(formData: typeof FormData): typeof ExpoFormData {\n  formData.prototype.append = function append(this: ReactNativeFormDataInternal, ...props: any[]) {\n    ensureMinArgCount('append', props, 2);\n    // @ts-ignore: When inferred FormData.append from React Native types, it does not support the 3rd blobFilename argument.\n    const [name, value, blobFilename] = props;\n    this._parts.push(normalizeArgs(name, value, blobFilename));\n  };\n\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype.set = function set(this: ReactNativeFormDataInternal, ...props: any[]) {\n    ensureMinArgCount('set', props, 2);\n    const [name, value, blobFilename] = props;\n    const args = normalizeArgs(name, value, blobFilename);\n    let replaced = false;\n\n    for (let i = 0; i < this._parts.length; i++) {\n      if (this._parts[i][0] === args[0]) {\n        if (!replaced) {\n          this._parts[i] = args;\n          replaced = true;\n        } else {\n          this._parts.splice(i, 1);\n          i--;\n        }\n      }\n    }\n\n    if (!replaced) {\n      this._parts.push(args);\n    }\n  };\n\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype.delete ??= function (this: ReactNativeFormDataInternal, ...props: any[]) {\n    ensureMinArgCount('delete', props, 1);\n    let [name] = props;\n    name = String(name);\n    for (let i = 0; i < this._parts.length; i++) {\n      if (this._parts[i][0] === name) {\n        this._parts.splice(i, 1);\n        i--;\n      }\n    }\n  };\n\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype.get ??= function (\n    this: ReactNativeFormDataInternal,\n    ...props: any[]\n  ): FormDataEntryValue | null {\n    ensureMinArgCount('get', props, 1);\n    let [name] = props;\n    name = String(name);\n    for (const part of this._parts) {\n      if (part[0] === name) {\n        // @ts-expect-error: We don't perform correct normalization when setting the args so the return value will\n        // not be a normalized File object.\n        return part[1];\n      }\n    }\n    return null;\n  };\n\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype.has ??= function (this: ReactNativeFormDataInternal, ...props: any[]) {\n    ensureMinArgCount('has', props, 1);\n    let [name] = props;\n    name = String(name);\n    for (const part of this._parts) {\n      if (part[0] === name) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  // Required for RSC: https://github.com/facebook/react/blob/985747f81033833dca22f30b0c04704dd4bd3714/packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js#L1056\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype.forEach ??= function forEach(\n    this: ReactNativeFormDataInternal,\n    ...props: any[]\n  ) {\n    ensureMinArgCount('forEach', props, 1);\n\n    const [callback, thisArg] = props;\n    if (typeof callback !== 'function') {\n      throw new TypeError(\n        `Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.`\n      );\n    }\n    for (const part of this._parts) {\n      // @ts-ignore: part[1] could throw an error in Node.js runtime because of `File` type mismatch.\n      callback.call(thisArg, part[1], part[0], this);\n    }\n  };\n\n  // Required for RSC: https://github.com/facebook/react/blob/985747f81033833dca22f30b0c04704dd4bd3714/packages/react-server/src/ReactFlightServer.js#L2117\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype.entries ??= function* entries(\n    this: ReactNativeFormDataInternal\n  ): IterableIterator<[string, FormDataEntryValue]> {\n    for (const part of this._parts) {\n      // @ts-expect-error: We don't perform correct normalization when setting the args so the return value will\n      // not be a normalized File object.\n      yield part;\n    }\n  };\n\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype.keys ??= function* keys(this: ReactNativeFormDataInternal) {\n    for (const part of this._parts) {\n      yield part[0];\n    }\n  };\n\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype.values ??= function* values(\n    this: ReactNativeFormDataInternal\n  ): IterableIterator<FormDataEntryValue> {\n    for (const part of this._parts) {\n      // @ts-expect-error: We don't perform correct normalization when setting the args so the return value will\n      // not be a normalized File object.\n      yield part[1];\n    }\n  };\n\n  // @ts-ignore: DOM.iterable is disabled for jest compat\n  formData.prototype[Symbol.iterator] = formData.prototype.entries;\n\n  return formData as unknown as typeof ExpoFormData;\n}\n","/**\n * Copyright © 2025 650 Industries.\n * Copyright © 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 * Fork of unexposed react-native module\n * https://github.com/facebook/react-native/blob/c5fb371061c1083684a23aa0852f6dbfb74a8b52/packages/react-native/Libraries/Utilities/PolyfillFunctions.js#L1\n */\n\n// Add a well-known shared symbol that doesn't show up in iteration or inspection\n// this can be used to detect if the global object abides by the Expo team's documented\n// built-in requirements.\nconst BUILTIN_SYMBOL = Symbol.for('expo.builtin');\n\n/** Defines a lazily evaluated property on the supplied `object` */\nfunction defineLazyObjectProperty<T>(\n  object: object,\n  name: string,\n  descriptor: {\n    get: () => T;\n    enumerable?: boolean;\n    writable?: boolean;\n  }\n): void {\n  const { get } = descriptor;\n  const enumerable = descriptor.enumerable !== false;\n  const writable = descriptor.writable !== false;\n\n  let value: any;\n  let valueSet = false;\n  function getValue(): T {\n    // WORKAROUND: A weird infinite loop occurs where calling `getValue` calls\n    // `setValue` which calls `Object.defineProperty` which somehow triggers\n    // `getValue` again. Adding `valueSet` breaks this loop.\n    if (!valueSet) {\n      // Calling `get()` here can trigger an infinite loop if it fails to\n      // remove the getter on the property, which can happen when executing\n      // JS in a V8 context.  `valueSet = true` will break this loop, and\n      // sets the value of the property to undefined, until the code in `get()`\n      // finishes, at which point the property is set to the correct value.\n      valueSet = true;\n      setValue(get());\n    }\n    return value;\n  }\n  function setValue(newValue: T): void {\n    value = newValue;\n    valueSet = true;\n    Object.defineProperty(object, name, {\n      value: newValue,\n      configurable: true,\n      enumerable,\n      writable,\n    });\n  }\n\n  Object.defineProperty(object, name, {\n    get: getValue,\n    set: setValue,\n    configurable: true,\n    enumerable,\n  });\n}\n\n/**\n * Sets an object's property. If a property with the same name exists, this will\n * replace it but maintain its descriptor configuration. The property will be\n * replaced with a lazy getter.\n *\n * In DEV mode the original property value will be preserved as `original[PropertyName]`\n * so that, if necessary, it can be restored. For example, if you want to route\n * network requests through DevTools (to trace them):\n *\n *   global.XMLHttpRequest = global.originalXMLHttpRequest;\n *\n * @see https://github.com/facebook/react-native/issues/934\n */\nexport function installGlobal<T extends object>(name: string, getValue: () => T): void {\n  // @ts-ignore: globalThis is not defined in all environments\n  const object = typeof global !== 'undefined' ? global : globalThis;\n  const descriptor = Object.getOwnPropertyDescriptor(object, name);\n\n  // NOTE(@kitten): We have to exclude descriptors with getters here\n  // When two calls of a \"lazy getter\" conflict, accessing the original will override the global again\n  // (e.g. `globalThis.originalURL` in react-native will set URL back to its own value)\n  if (__DEV__ && descriptor && !descriptor.get) {\n    const backupName = `original${name[0] ?? ''.toUpperCase()}${name.slice(1)}`;\n    // NOTE(@kitten): We don't want the global to be enumerably different in development\n    Object.defineProperty(object, backupName, { ...descriptor, enumerable: false });\n  }\n\n  const { enumerable, writable, configurable = false } = descriptor || {};\n  if (descriptor && !configurable) {\n    console.error('Failed to set polyfill. ' + name + ' is not configurable.');\n    return;\n  }\n\n  defineLazyObjectProperty(object, name, {\n    get() {\n      const value = getValue();\n      Object.defineProperty(value, BUILTIN_SYMBOL, {\n        value: true,\n        enumerable: false,\n        configurable: false,\n      });\n\n      return value;\n    },\n    enumerable: enumerable !== false,\n    writable: writable !== false,\n  });\n}\n","// A fork of text-encoding but with only UTF-8 decoder.\n// `TextEncoder` is in Hermes and we only need utf-8 decoder for React Server Components.\n//\n// https://github.com/inexorabletash/text-encoding/blob/3f330964c0e97e1ed344c2a3e963f4598610a7ad/lib/encoding.js#L1\n\n/**\n * Checks if a number is within a specified range.\n * @param a The number to test.\n * @param min The minimum value in the range, inclusive.\n * @param max The maximum value in the range, inclusive.\n * @returns `true` if a passed number is within the specified range.\n */\nfunction inRange(a: number, min: number, max: number): boolean {\n  return min <= a && a <= max;\n}\n\n/**\n * Converts an array of code points to a string.\n * @param codePoints Array of code points.\n * @returns The string representation of given array.\n */\nfunction codePointsToString(codePoints: number[]): string {\n  let s = '';\n  for (let i = 0; i < codePoints.length; ++i) {\n    let cp = codePoints[i];\n    if (cp <= 0xffff) {\n      s += String.fromCharCode(cp);\n    } else {\n      cp -= 0x10000;\n      s += String.fromCharCode((cp >> 10) + 0xd800, (cp & 0x3ff) + 0xdc00);\n    }\n  }\n  return s;\n}\n\nfunction normalizeBytes(input?: ArrayBuffer | DataView): Uint8Array {\n  if (typeof input === 'object' && input instanceof ArrayBuffer) {\n    return new Uint8Array(input);\n  } else if (\n    typeof input === 'object' &&\n    'buffer' in input &&\n    input.buffer instanceof ArrayBuffer\n  ) {\n    return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n  }\n  return new Uint8Array(0);\n}\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n */\nconst END_OF_STREAM = -1;\n\nconst FINISHED = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(number[]|Uint8Array)} tokens Array of tokens that provide the stream.\n */\nclass Stream {\n  private tokens: number[];\n\n  constructor(tokens: number[] | Uint8Array) {\n    this.tokens = Array.prototype.slice.call(tokens);\n    // Reversed as push/pop is more efficient than shift/unshift.\n    this.tokens.reverse();\n  }\n\n  /**\n   * @return {boolean} True if end-of-stream has been hit.\n   */\n  endOfStream(): boolean {\n    return !this.tokens.length;\n  }\n\n  /**\n   * When a token is read from a stream, the first token in the\n   * stream must be returned and subsequently removed, and\n   * end-of-stream must be returned otherwise.\n   *\n   * @return {number} Get the next token from the stream, or\n   * end_of_stream.\n   */\n  read(): number {\n    if (!this.tokens.length) return END_OF_STREAM;\n    return this.tokens.pop()!;\n  }\n\n  /**\n   * When one or more tokens are prepended to a stream, those tokens\n   * must be inserted, in given order, before the first token in the\n   * stream.\n   *\n   * @param token The token(s) to prepend to the stream.\n   */\n  prepend(token: number | number[]): void {\n    if (Array.isArray(token)) {\n      while (token.length) this.tokens.push(token.pop()!);\n    } else {\n      this.tokens.push(token);\n    }\n  }\n\n  /**\n   * When one or more tokens are pushed to a stream, those tokens\n   * must be inserted, in given order, after the last token in the\n   * stream.\n   *\n   * @param token The tokens(s) to push to the stream.\n   */\n  push(token: number | number[]): void {\n    if (Array.isArray(token)) {\n      while (token.length) this.tokens.unshift(token.shift()!);\n    } else {\n      this.tokens.unshift(token);\n    }\n  }\n}\n\nfunction decoderError(fatal: boolean, opt_code_point?: number) {\n  if (fatal) throw TypeError('Decoder error');\n  return opt_code_point || 0xfffd;\n}\n\ninterface Encoding {\n  name: string;\n  labels: string[];\n}\n\nconst LABEL_ENCODING_MAP: { [key: string]: Encoding } = {};\n\nfunction getEncoding(label: string): Encoding | null {\n  label = label.trim().toLowerCase();\n  if (label in LABEL_ENCODING_MAP) {\n    return LABEL_ENCODING_MAP[label];\n  }\n  return null;\n}\n\n/** [Encodings table](https://encoding.spec.whatwg.org/encodings.json) (Incomplete as we only need TextDecoder utf8 in Expo RSC. A more complete implementation should be added to Hermes as native code.) */\nconst ENCODING_MAP: { heading: string; encodings: Encoding[] }[] = [\n  {\n    encodings: [\n      {\n        labels: [\n          'unicode-1-1-utf-8',\n          'unicode11utf8',\n          'unicode20utf8',\n          'utf-8',\n          'utf8',\n          'x-unicode20utf8',\n        ],\n        name: 'UTF-8',\n      },\n    ],\n    heading: 'The Encoding',\n  },\n];\n\nENCODING_MAP.forEach((category) => {\n  category.encodings.forEach((encoding) => {\n    encoding.labels.forEach((label) => {\n      LABEL_ENCODING_MAP[label] = encoding;\n    });\n  });\n});\n\n// Registry of of encoder/decoder factories, by encoding name.\nconst DECODERS: { [key: string]: (options: { fatal: boolean }) => UTF8Decoder } = {\n  'UTF-8': (options) => new UTF8Decoder(options),\n};\n\n// 9.1.1 utf-8 decoder\n\ninterface Decoder {\n  handler: (stream: Stream, bite: number) => number | number[] | null | -1;\n}\n\nclass UTF8Decoder implements Decoder {\n  // utf-8's decoder's has an associated utf-8 code point, utf-8\n  // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n  // lower boundary (initially 0x80), and a utf-8 upper boundary\n  // (initially 0xBF).\n  private utf8CodePoint = 0;\n  private utf8BytesSeen = 0;\n  private utf8BytesNeeded = 0;\n  private utf8LowerBoundary = 0x80;\n  private utf8UpperBoundary = 0xbf;\n  constructor(private options: { fatal: boolean }) {}\n  /**\n   * @param {Stream} stream The stream of bytes being decoded.\n   * @param {number} bite The next byte read from the stream.\n   * @return {?(number|!Array.<number>)} The next code point(s)\n   *     decoded, or null if not enough data exists in the input\n   *     stream to decode a complete code point.\n   */\n  handler(stream: Stream, bite: number): number | null | -1 {\n    // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n    // set utf-8 bytes needed to 0 and return error.\n    if (bite === END_OF_STREAM && this.utf8BytesNeeded !== 0) {\n      this.utf8BytesNeeded = 0;\n      return decoderError(this.options.fatal);\n    }\n\n    // 2. If byte is end-of-stream, return finished.\n    if (bite === END_OF_STREAM) return FINISHED;\n\n    // 3. If utf-8 bytes needed is 0, based on byte:\n    if (this.utf8BytesNeeded === 0) {\n      // 0x00 to 0x7F\n      if (inRange(bite, 0x00, 0x7f)) {\n        // Return a code point whose value is byte.\n        return bite;\n      }\n\n      // 0xC2 to 0xDF\n      else if (inRange(bite, 0xc2, 0xdf)) {\n        // 1. Set utf-8 bytes needed to 1.\n        this.utf8BytesNeeded = 1;\n\n        // 2. Set UTF-8 code point to byte & 0x1F.\n        this.utf8CodePoint = bite & 0x1f;\n      }\n\n      // 0xE0 to 0xEF\n      else if (inRange(bite, 0xe0, 0xef)) {\n        // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n        if (bite === 0xe0) this.utf8LowerBoundary = 0xa0;\n        // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n        if (bite === 0xed) this.utf8UpperBoundary = 0x9f;\n        // 3. Set utf-8 bytes needed to 2.\n        this.utf8BytesNeeded = 2;\n        // 4. Set UTF-8 code point to byte & 0xF.\n        this.utf8CodePoint = bite & 0xf;\n      }\n\n      // 0xF0 to 0xF4\n      else if (inRange(bite, 0xf0, 0xf4)) {\n        // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n        if (bite === 0xf0) this.utf8LowerBoundary = 0x90;\n        // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n        if (bite === 0xf4) this.utf8UpperBoundary = 0x8f;\n        // 3. Set utf-8 bytes needed to 3.\n        this.utf8BytesNeeded = 3;\n        // 4. Set UTF-8 code point to byte & 0x7.\n        this.utf8CodePoint = bite & 0x7;\n      }\n\n      // Otherwise\n      else {\n        // Return error.\n        return decoderError(this.options.fatal);\n      }\n\n      // Return continue.\n      return null;\n    }\n\n    // 4. If byte is not in the range utf-8 lower boundary to utf-8\n    // upper boundary, inclusive, run these substeps:\n    if (!inRange(bite, this.utf8LowerBoundary, this.utf8UpperBoundary)) {\n      // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n      // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n      // utf-8 upper boundary to 0xBF.\n      this.utf8CodePoint = 0;\n      this.utf8BytesNeeded = 0;\n      this.utf8BytesSeen = 0;\n      this.utf8LowerBoundary = 0x80;\n      this.utf8UpperBoundary = 0xbf;\n\n      // 2. Prepend byte to stream.\n      stream.prepend(bite);\n\n      // 3. Return error.\n      return decoderError(this.options.fatal);\n    }\n\n    // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n    // to 0xBF.\n    this.utf8LowerBoundary = 0x80;\n    this.utf8UpperBoundary = 0xbf;\n\n    // 6. Set UTF-8 code point to (UTF-8 code point << 6) | (byte &\n    // 0x3F)\n    this.utf8CodePoint = (this.utf8CodePoint << 6) | (bite & 0x3f);\n\n    // 7. Increase utf-8 bytes seen by one.\n    this.utf8BytesSeen += 1;\n\n    // 8. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n    // continue.\n    if (this.utf8BytesSeen !== this.utf8BytesNeeded) return null;\n\n    // 9. Let code point be utf-8 code point.\n    const code_point = this.utf8CodePoint;\n\n    // 10. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n    // seen to 0.\n    this.utf8CodePoint = 0;\n    this.utf8BytesNeeded = 0;\n    this.utf8BytesSeen = 0;\n\n    // 11. Return a code point whose value is code point.\n    return code_point;\n  }\n}\n\n// 8.1 Interface TextDecoder\n// @docsMissing\nexport class TextDecoder {\n  private _encoding: Encoding | null;\n  private _ignoreBOM: boolean;\n  private _errorMode: string;\n  private _BOMseen: boolean = false;\n  private _doNotFlush: boolean = false;\n  private _decoder: UTF8Decoder | null = null;\n\n  constructor(\n    label: string = 'utf-8',\n    options: {\n      fatal?: boolean;\n      ignoreBOM?: boolean;\n    } = {}\n  ) {\n    if (options != null && typeof options !== 'object') {\n      throw new TypeError(\n        'Second argument of TextDecoder must be undefined or an object, e.g. { fatal: true }'\n      );\n    }\n\n    const normalizedLabel = String(label).trim().toLowerCase();\n    const encoding = getEncoding(normalizedLabel);\n    if (encoding === null || encoding.name === 'replacement') {\n      throw new RangeError(`Unknown encoding: ${label} (normalized: ${normalizedLabel})`);\n    }\n\n    if (!DECODERS[encoding.name]) {\n      throw new Error(`Decoder not present: ${encoding.name}`);\n    }\n\n    this._encoding = encoding;\n    this._ignoreBOM = !!options.ignoreBOM;\n    this._errorMode = options.fatal ? 'fatal' : 'replacement';\n  }\n\n  // Getter methods for encoding, fatal, and ignoreBOM\n  get encoding(): string {\n    return this._encoding?.name.toLowerCase() ?? '';\n  }\n\n  get fatal(): boolean {\n    return this._errorMode === 'fatal';\n  }\n\n  get ignoreBOM(): boolean {\n    return this._ignoreBOM;\n  }\n\n  decode(input?: ArrayBuffer | DataView, options: { stream?: boolean } = {}): string {\n    const bytes = normalizeBytes(input);\n\n    // 1. If the do not flush flag is unset, set decoder to a new\n    // encoding's decoder, set stream to a new stream, and unset the\n    // BOM seen flag.\n    if (!this._doNotFlush) {\n      this._decoder = DECODERS[this._encoding!.name]({\n        fatal: this.fatal,\n      });\n      this._BOMseen = false;\n    }\n\n    // 2. If options's stream is true, set the do not flush flag, and\n    // unset the do not flush flag otherwise.\n    this._doNotFlush = Boolean(options['stream']);\n\n    // 3. If input is given, push a copy of input to stream.\n    // TODO: Align with spec algorithm - maintain stream on instance.\n    const input_stream = new Stream(bytes);\n\n    // 4. Let output be a new stream.\n    const output: number[] = [];\n\n    while (true) {\n      const token = input_stream.read();\n\n      if (token === END_OF_STREAM) break;\n\n      const result = this._decoder!.handler(input_stream, token);\n\n      if (result === FINISHED) break;\n\n      if (result !== null) {\n        output.push(result);\n      }\n    }\n\n    if (!this._doNotFlush) {\n      do {\n        const result = this._decoder!.handler(input_stream, input_stream.read());\n        if (result === FINISHED) break;\n        if (result === null) continue;\n        if (Array.isArray(result)) output.push(...result);\n        else output.push(result);\n      } while (!input_stream.endOfStream());\n      this._decoder = null;\n    }\n\n    return this.serializeStream(output);\n  }\n\n  // serializeStream method for converting code points to a string\n  private serializeStream(stream: number[]): string {\n    if (this._encoding!.name === 'UTF-8') {\n      if (!this._ignoreBOM && !this._BOMseen && stream[0] === 0xfeff) {\n        // If BOM is detected at the start of the stream and we're not ignoring it\n        this._BOMseen = true;\n        stream.shift(); // Remove the BOM\n      } else if (stream.length > 0) {\n        this._BOMseen = true;\n      }\n    }\n\n    // Convert the stream of code points to a string\n    return codePointsToString(stream);\n  }\n}\n","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// https://encoding.spec.whatwg.org/#interface-textdecoderstream\nexport class TextDecoderStream extends TransformStream<Uint8Array | ArrayBuffer, string> {\n  private decoder: TextDecoder;\n\n  constructor(label?: string, options?: TextDecoderOptions) {\n    const decoder = new TextDecoder(label, options);\n    super({\n      transform(\n        chunk: ArrayBuffer | Uint8Array,\n        controller: TransformStreamDefaultController<string>\n      ) {\n        try {\n          const text = decoder.decode(chunk, { stream: true });\n          if (text) controller.enqueue(text);\n        } catch (e: unknown) {\n          controller.error(e);\n        }\n      },\n      flush(controller: TransformStreamDefaultController<string>) {\n        try {\n          const text = decoder.decode();\n          if (text) controller.enqueue(text);\n        } catch (e: unknown) {\n          controller.error(e);\n        }\n      },\n    });\n    this.decoder = decoder;\n  }\n\n  get encoding() {\n    return this.decoder.encoding;\n  }\n\n  get fatal() {\n    return this.decoder.fatal;\n  }\n\n  get ignoreBOM() {\n    return this.decoder.ignoreBOM;\n  }\n}\n\n// https://encoding.spec.whatwg.org/#interface-textencoderstream\nexport class TextEncoderStream extends TransformStream {\n  private encoder: TextEncoder;\n\n  constructor() {\n    const encoder = new TextEncoder();\n    let carry: string | undefined;\n    super({\n      transform(chunk: string, controller: TransformStreamDefaultController<Uint8Array>) {\n        chunk = String(chunk);\n        if (carry !== undefined) {\n          chunk = carry + chunk;\n          carry = undefined;\n        }\n\n        const lastCharIndex = chunk.length - 1;\n        const lastCodeUnit = chunk.charCodeAt(lastCharIndex);\n        if (lastCodeUnit >= 0xd800 && lastCodeUnit < 0xdc00) {\n          carry = String.fromCharCode(lastCodeUnit);\n          chunk = chunk.substring(0, lastCharIndex);\n        }\n\n        const encoded = encoder.encode(chunk);\n        if (encoded.length) {\n          try {\n            controller.enqueue(encoded);\n          } catch (e: unknown) {\n            controller.error(e);\n          }\n        }\n      },\n\n      flush(controller: TransformStreamDefaultController<Uint8Array>) {\n        if (carry !== undefined) {\n          try {\n            controller.enqueue(encoder.encode(carry));\n          } catch (e: unknown) {\n            controller.error(e);\n          } finally {\n            carry = undefined;\n          }\n        }\n      },\n    });\n    this.encoder = encoder;\n  }\n\n  get encoding() {\n    return this.encoder.encoding;\n  }\n}\n","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _callSuper(t, o, e) {\n  return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nmodule.exports = _callSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n  return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n  return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(t) {\n  var r = \"function\" == typeof Map ? new Map() : void 0;\n  return module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {\n    if (null === t || !isNativeFunction(t)) return t;\n    if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n    if (void 0 !== r) {\n      if (r.has(t)) return r.get(t);\n      r.set(t, Wrapper);\n    }\n    function Wrapper() {\n      return construct(t, arguments, getPrototypeOf(this).constructor);\n    }\n    return Wrapper.prototype = Object.create(t.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: !1,\n        writable: !0,\n        configurable: !0\n      }\n    }), setPrototypeOf(Wrapper, t);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _wrapNativeSuper(t);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(t) {\n  try {\n    return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n  } catch (n) {\n    return \"function\" == typeof t;\n  }\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _construct(t, e, r) {\n  if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n  var o = [null];\n  o.push.apply(o, e);\n  var p = new (t.bind.apply(t, o))();\n  return r && setPrototypeOf(p, r.prototype), p;\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright © 2023-present 650 Industries, Inc. (aka Expo)\n * Copyright © 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// This file should not import `react-native` in order to remain self-contained.\n\n/// <reference path=\"../ts-declarations/whatwg-url-without-unicode.d.ts\" />\nimport { URL, URLSearchParams } from 'whatwg-url-without-unicode';\n\ndeclare namespace globalThis {\n  const RN$Bridgeless: undefined | boolean;\n  const nativeModuleProxy: Record<string, unknown>;\n  function __turboModuleProxy(name: string): unknown;\n}\n\n// TODO(@kitten): Provide BlobModule types matching native module\ninterface NativeBlobModule {\n  BLOB_URI_SCHEME: string;\n  BLOB_URI_HOST: string;\n}\ninterface TurboBlobModule {\n  getConstants(): {\n    BLOB_URI_SCHEME: string;\n    BLOB_URI_HOST: string;\n  };\n}\n\nlet isSetup = false;\nlet BLOB_URL_PREFIX: string | null = null;\n\nfunction getBlobUrlPrefix() {\n  if (isSetup) return BLOB_URL_PREFIX;\n  isSetup = true;\n  // if iOS: let BLOB_URL_PREFIX = 'blob:'\n\n  // Pull the blob module without importing React Native.\n  const BlobModule =\n    globalThis.RN$Bridgeless !== true\n      ? // Legacy RN implementation\n        (globalThis.nativeModuleProxy['BlobModule'] as NativeBlobModule)\n      : // Newer RN implementation\n        (globalThis.__turboModuleProxy('BlobModule') as TurboBlobModule);\n\n  const constants = 'BLOB_URI_SCHEME' in BlobModule ? BlobModule : BlobModule.getConstants();\n\n  if (constants && typeof constants.BLOB_URI_SCHEME === 'string') {\n    BLOB_URL_PREFIX = encodeURIComponent(constants.BLOB_URI_SCHEME) + ':';\n    if (typeof constants.BLOB_URI_HOST === 'string') {\n      BLOB_URL_PREFIX += `//${encodeURIComponent(constants.BLOB_URI_HOST)}/`;\n    }\n  }\n  return BLOB_URL_PREFIX;\n}\n\ndeclare module 'whatwg-url-without-unicode' {\n  // TODO(@kitten): Clarify where this came from\n  type BlobLike = Blob & { data?: { blobId: string; offset: number } };\n\n  interface URLConstructor {\n    createObjectURL(blob: BlobLike): string;\n    revokeObjectURL(url: URL): void;\n    canParse(url: string, base?: string): boolean;\n  }\n}\n\n/**\n * To allow Blobs be accessed via `content://` URIs,\n * you need to register `BlobProvider` as a ContentProvider in your app's `AndroidManifest.xml`:\n *\n * ```xml\n * <manifest>\n *   <application>\n *     <provider\n *       android:name=\"com.facebook.react.modules.blob.BlobProvider\"\n *       android:authorities=\"@string/blob_provider_authority\"\n *       android:exported=\"false\"\n *     />\n *   </application>\n * </manifest>\n * ```\n * And then define the `blob_provider_authority` string in `res/values/strings.xml`.\n * Use a dotted name that's entirely unique to your app:\n *\n * ```xml\n * <resources>\n *   <string name=\"blob_provider_authority\">your.app.package.blobs</string>\n * </resources>\n * ```\n */\nURL.createObjectURL = function createObjectURL(blob) {\n  if (getBlobUrlPrefix() == null) {\n    throw new Error('Cannot create URL for blob');\n  }\n  return `${getBlobUrlPrefix()}${encodeURIComponent(blob.data!.blobId)}?offset=${encodeURIComponent(\n    blob.data!.offset\n  )}&size=${encodeURIComponent(blob.size)}`;\n};\n\nURL.revokeObjectURL = function revokeObjectURL(_url) {\n  // Do nothing.\n};\n\nURL.canParse = function canParse(url: string, base?: string): boolean {\n  try {\n    // eslint-disable-next-line no-new\n    new URL(url, base);\n    return true;\n  } catch {\n    return false;\n  }\n};\n\nexport { URL, URLSearchParams };\n","\"use strict\";\n\nconst { URL, URLSearchParams } = require(\"./webidl2js-wrapper\");\nconst urlStateMachine = require(\"./lib/url-state-machine\");\nconst urlEncoded = require(\"./lib/urlencoded\");\n\nconst sharedGlobalObject = {};\nURL.install(sharedGlobalObject);\nURLSearchParams.install(sharedGlobalObject);\n\nexports.URL = sharedGlobalObject.URL;\nexports.URLSearchParams = sharedGlobalObject.URLSearchParams;\n\nexports.parseURL = urlStateMachine.parseURL;\nexports.basicURLParse = urlStateMachine.basicURLParse;\nexports.serializeURL = urlStateMachine.serializeURL;\nexports.serializeHost = urlStateMachine.serializeHost;\nexports.serializeInteger = urlStateMachine.serializeInteger;\nexports.serializeURLOrigin = urlStateMachine.serializeURLOrigin;\nexports.setTheUsername = urlStateMachine.setTheUsername;\nexports.setThePassword = urlStateMachine.setThePassword;\nexports.cannotHaveAUsernamePasswordPort = urlStateMachine.cannotHaveAUsernamePasswordPort;\n\nexports.percentDecode = urlEncoded.percentDecode;\n","\"use strict\";\n\nconst URL = require(\"./lib/URL\");\nconst URLSearchParams = require(\"./lib/URLSearchParams\");\n\nexports.URL = URL;\nexports.URLSearchParams = URLSearchParams;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst impl = utils.implSymbol;\nconst ctorRegistry = utils.ctorRegistrySymbol;\n\nconst iface = {\n  // When an interface-module that implements this interface as a mixin is loaded, it will append its own `.is()`\n  // method into this array. It allows objects that directly implements *those* interfaces to be recognized as\n  // implementing this mixin interface.\n  _mixedIntoPredicates: [],\n  is(obj) {\n    if (obj) {\n      if (utils.hasOwn(obj, impl) && obj[impl] instanceof Impl.implementation) {\n        return true;\n      }\n      for (const isMixedInto of module.exports._mixedIntoPredicates) {\n        if (isMixedInto(obj)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  },\n  isImpl(obj) {\n    if (obj) {\n      if (obj instanceof Impl.implementation) {\n        return true;\n      }\n\n      const wrapper = utils.wrapperForImpl(obj);\n      for (const isMixedInto of module.exports._mixedIntoPredicates) {\n        if (isMixedInto(wrapper)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  },\n  convert(obj, { context = \"The provided value\" } = {}) {\n    if (module.exports.is(obj)) {\n      return utils.implForWrapper(obj);\n    }\n    throw new TypeError(`${context} is not of type 'URL'.`);\n  },\n\n  create(globalObject, constructorArgs, privateData) {\n    if (globalObject[ctorRegistry] === undefined) {\n      throw new Error(\"Internal error: invalid global object\");\n    }\n\n    const ctor = globalObject[ctorRegistry][\"URL\"];\n    if (ctor === undefined) {\n      throw new Error(\"Internal error: constructor URL is not installed on the passed global object\");\n    }\n\n    let obj = Object.create(ctor.prototype);\n    obj = iface.setup(obj, globalObject, constructorArgs, privateData);\n    return obj;\n  },\n  createImpl(globalObject, constructorArgs, privateData) {\n    const obj = iface.create(globalObject, constructorArgs, privateData);\n    return utils.implForWrapper(obj);\n  },\n  _internalSetup(obj) {},\n  setup(obj, globalObject, constructorArgs = [], privateData = {}) {\n    privateData.wrapper = obj;\n\n    iface._internalSetup(obj);\n    Object.defineProperty(obj, impl, {\n      value: new Impl.implementation(globalObject, constructorArgs, privateData),\n      configurable: true });\n\n\n    obj[impl][utils.wrapperSymbol] = obj;\n    if (Impl.init) {\n      Impl.init(obj[impl], privateData);\n    }\n    return obj;\n  },\n\n  install(globalObject) {\n    class URL {\n      constructor(url) {\n        if (arguments.length < 1) {\n          throw new TypeError(\n          \"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, { context: \"Failed to construct 'URL': parameter 1\" });\n          args.push(curArg);\n        }\n        {\n          let curArg = arguments[1];\n          if (curArg !== undefined) {\n            curArg = conversions[\"USVString\"](curArg, { context: \"Failed to construct 'URL': parameter 2\" });\n          }\n          args.push(curArg);\n        }\n        return iface.setup(Object.create(this.constructor.prototype), globalObject, args);\n      }\n\n      toJSON() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl].toJSON();\n      }\n\n      get href() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"href\"];\n      }\n\n      set href(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, { context: \"Failed to set the 'href' property on 'URL': The provided value\" });\n\n        this[impl][\"href\"] = V;\n      }\n\n      toString() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n        return this[impl][\"href\"];\n      }\n\n      get origin() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"origin\"];\n      }\n\n      get protocol() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"protocol\"];\n      }\n\n      set protocol(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'protocol' property on 'URL': The provided value\" });\n\n\n        this[impl][\"protocol\"] = V;\n      }\n\n      get username() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"username\"];\n      }\n\n      set username(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'username' property on 'URL': The provided value\" });\n\n\n        this[impl][\"username\"] = V;\n      }\n\n      get password() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"password\"];\n      }\n\n      set password(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'password' property on 'URL': The provided value\" });\n\n\n        this[impl][\"password\"] = V;\n      }\n\n      get host() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"host\"];\n      }\n\n      set host(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, { context: \"Failed to set the 'host' property on 'URL': The provided value\" });\n\n        this[impl][\"host\"] = V;\n      }\n\n      get hostname() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"hostname\"];\n      }\n\n      set hostname(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'hostname' property on 'URL': The provided value\" });\n\n\n        this[impl][\"hostname\"] = V;\n      }\n\n      get port() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"port\"];\n      }\n\n      set port(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, { context: \"Failed to set the 'port' property on 'URL': The provided value\" });\n\n        this[impl][\"port\"] = V;\n      }\n\n      get pathname() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"pathname\"];\n      }\n\n      set pathname(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'pathname' property on 'URL': The provided value\" });\n\n\n        this[impl][\"pathname\"] = V;\n      }\n\n      get search() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"search\"];\n      }\n\n      set search(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'search' property on 'URL': The provided value\" });\n\n\n        this[impl][\"search\"] = V;\n      }\n\n      get searchParams() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return utils.getSameObject(this, \"searchParams\", () => {\n          return utils.tryWrapperForImpl(this[impl][\"searchParams\"]);\n        });\n      }\n\n      get hash() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl][\"hash\"];\n      }\n\n      set hash(V) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        V = conversions[\"USVString\"](V, { context: \"Failed to set the 'hash' property on 'URL': The provided value\" });\n\n        this[impl][\"hash\"] = V;\n      }}\n\n    Object.defineProperties(URL.prototype, {\n      toJSON: { enumerable: true },\n      href: { enumerable: true },\n      toString: { enumerable: true },\n      origin: { enumerable: true },\n      protocol: { enumerable: true },\n      username: { enumerable: true },\n      password: { enumerable: true },\n      host: { enumerable: true },\n      hostname: { enumerable: true },\n      port: { enumerable: true },\n      pathname: { enumerable: true },\n      search: { enumerable: true },\n      searchParams: { enumerable: true },\n      hash: { enumerable: true },\n      [Symbol.toStringTag]: { value: \"URL\", configurable: true } });\n\n    if (globalObject[ctorRegistry] === undefined) {\n      globalObject[ctorRegistry] = Object.create(null);\n    }\n    globalObject[ctorRegistry][\"URL\"] = URL;\n\n    Object.defineProperty(globalObject, \"URL\", {\n      configurable: true,\n      writable: true,\n      value: URL });\n\n  } };\n// iface\nmodule.exports = iface;\n\nconst Impl = require(\"./URL-impl.js\");","\"use strict\";\n\nfunction _(message, opts) {\n    return `${opts && opts.context ? opts.context : \"Value\"} ${message}.`;\n}\n\nfunction type(V) {\n    if (V === null) {\n        return \"Null\";\n    }\n    switch (typeof V) {\n        case \"undefined\":\n            return \"Undefined\";\n        case \"boolean\":\n            return \"Boolean\";\n        case \"number\":\n            return \"Number\";\n        case \"string\":\n            return \"String\";\n        case \"symbol\":\n            return \"Symbol\";\n        case \"object\":\n            // Falls through\n        case \"function\":\n            // Falls through\n        default:\n            // Per ES spec, typeof returns an implemention-defined value that is not any of the existing ones for\n            // uncallable non-standard exotic objects. Yet Type() which the Web IDL spec depends on returns Object for\n            // such cases. So treat the default case as an object.\n            return \"Object\";\n    }\n}\n\n// Round x to the nearest integer, choosing the even integer if it lies halfway between two.\nfunction evenRound(x) {\n    // There are four cases for numbers with fractional part being .5:\n    //\n    // case |     x     | floor(x) | round(x) | expected | x <> 0 | x % 1 | x & 1 |   example\n    //   1  |  2n + 0.5 |  2n      |  2n + 1  |  2n      |   >    |  0.5  |   0   |  0.5 ->  0\n    //   2  |  2n + 1.5 |  2n + 1  |  2n + 2  |  2n + 2  |   >    |  0.5  |   1   |  1.5 ->  2\n    //   3  | -2n - 0.5 | -2n - 1  | -2n      | -2n      |   <    | -0.5  |   0   | -0.5 ->  0\n    //   4  | -2n - 1.5 | -2n - 2  | -2n - 1  | -2n - 2  |   <    | -0.5  |   1   | -1.5 -> -2\n    // (where n is a non-negative integer)\n    //\n    // Branch here for cases 1 and 4\n    if ((x > 0 && (x % 1) === +0.5 && (x & 1) === 0) ||\n        (x < 0 && (x % 1) === -0.5 && (x & 1) === 1)) {\n        return censorNegativeZero(Math.floor(x));\n    }\n\n    return censorNegativeZero(Math.round(x));\n}\n\nfunction integerPart(n) {\n    return censorNegativeZero(Math.trunc(n));\n}\n\nfunction sign(x) {\n    return x < 0 ? -1 : 1;\n}\n\nfunction modulo(x, y) {\n    // https://tc39.github.io/ecma262/#eqn-modulo\n    // Note that http://stackoverflow.com/a/4467559/3191 does NOT work for large modulos\n    const signMightNotMatch = x % y;\n    if (sign(y) !== sign(signMightNotMatch)) {\n        return signMightNotMatch + y;\n    }\n    return signMightNotMatch;\n}\n\nfunction censorNegativeZero(x) {\n    return x === 0 ? 0 : x;\n}\n\nfunction createIntegerConversion(bitLength, typeOpts) {\n    const isSigned = !typeOpts.unsigned;\n\n    let lowerBound;\n    let upperBound;\n    if (bitLength === 64) {\n        upperBound = Math.pow(2, 53) - 1;\n        lowerBound = !isSigned ? 0 : -Math.pow(2, 53) + 1;\n    } else if (!isSigned) {\n        lowerBound = 0;\n        upperBound = Math.pow(2, bitLength) - 1;\n    } else {\n        lowerBound = -Math.pow(2, bitLength - 1);\n        upperBound = Math.pow(2, bitLength - 1) - 1;\n    }\n\n    const twoToTheBitLength = Math.pow(2, bitLength);\n    const twoToOneLessThanTheBitLength = Math.pow(2, bitLength - 1);\n\n    return (V, opts) => {\n        if (opts === undefined) {\n            opts = {};\n        }\n\n        let x = +V;\n        x = censorNegativeZero(x); // Spec discussion ongoing: https://github.com/heycam/webidl/issues/306\n\n        if (opts.enforceRange) {\n            if (!Number.isFinite(x)) {\n                throw new TypeError(_(\"is not a finite number\", opts));\n            }\n\n            x = integerPart(x);\n\n            if (x < lowerBound || x > upperBound) {\n                throw new TypeError(_(\n                    `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`, opts));\n            }\n\n            return x;\n        }\n\n        if (!Number.isNaN(x) && opts.clamp) {\n            x = Math.min(Math.max(x, lowerBound), upperBound);\n            x = evenRound(x);\n            return x;\n        }\n\n        if (!Number.isFinite(x) || x === 0) {\n            return 0;\n        }\n        x = integerPart(x);\n\n        // Math.pow(2, 64) is not accurately representable in JavaScript, so try to avoid these per-spec operations if\n        // possible. Hopefully it's an optimization for the non-64-bitLength cases too.\n        if (x >= lowerBound && x <= upperBound) {\n            return x;\n        }\n\n        // These will not work great for bitLength of 64, but oh well. See the README for more details.\n        x = modulo(x, twoToTheBitLength);\n        if (isSigned && x >= twoToOneLessThanTheBitLength) {\n            return x - twoToTheBitLength;\n        }\n        return x;\n    };\n}\n\nexports.any = V => {\n    return V;\n};\n\nexports.void = function () {\n    return undefined;\n};\n\nexports.boolean = function (val) {\n    return !!val;\n};\n\nexports.byte = createIntegerConversion(8, { unsigned: false });\nexports.octet = createIntegerConversion(8, { unsigned: true });\n\nexports.short = createIntegerConversion(16, { unsigned: false });\nexports[\"unsigned short\"] = createIntegerConversion(16, { unsigned: true });\n\nexports.long = createIntegerConversion(32, { unsigned: false });\nexports[\"unsigned long\"] = createIntegerConversion(32, { unsigned: true });\n\nexports[\"long long\"] = createIntegerConversion(64, { unsigned: false });\nexports[\"unsigned long long\"] = createIntegerConversion(64, { unsigned: true });\n\nexports.double = (V, opts) => {\n    const x = +V;\n\n    if (!Number.isFinite(x)) {\n        throw new TypeError(_(\"is not a finite floating-point value\", opts));\n    }\n\n    return x;\n};\n\nexports[\"unrestricted double\"] = V => {\n    const x = +V;\n\n    return x;\n};\n\nexports.float = (V, opts) => {\n    const x = +V;\n\n    if (!Number.isFinite(x)) {\n        throw new TypeError(_(\"is not a finite floating-point value\", opts));\n    }\n\n    if (Object.is(x, -0)) {\n        return x;\n    }\n\n    const y = Math.fround(x);\n\n    if (!Number.isFinite(y)) {\n        throw new TypeError(_(\"is outside the range of a single-precision floating-point value\", opts));\n    }\n\n    return y;\n};\n\nexports[\"unrestricted float\"] = V => {\n    const x = +V;\n\n    if (isNaN(x)) {\n        return x;\n    }\n\n    if (Object.is(x, -0)) {\n        return x;\n    }\n\n    return Math.fround(x);\n};\n\nexports.DOMString = function (V, opts) {\n    if (opts === undefined) {\n        opts = {};\n    }\n\n    if (opts.treatNullAsEmptyString && V === null) {\n        return \"\";\n    }\n\n    if (typeof V === \"symbol\") {\n        throw new TypeError(_(\"is a symbol, which cannot be converted to a string\", opts));\n    }\n\n    return String(V);\n};\n\nexports.ByteString = (V, opts) => {\n    const x = exports.DOMString(V, opts);\n    let c;\n    for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n        if (c > 255) {\n            throw new TypeError(_(\"is not a valid ByteString\", opts));\n        }\n    }\n\n    return x;\n};\n\nexports.USVString = (V, opts) => {\n    const S = exports.DOMString(V, opts);\n    const n = S.length;\n    const U = [];\n    for (let i = 0; i < n; ++i) {\n        const c = S.charCodeAt(i);\n        if (c < 0xD800 || c > 0xDFFF) {\n            U.push(String.fromCodePoint(c));\n        } else if (0xDC00 <= c && c <= 0xDFFF) {\n            U.push(String.fromCodePoint(0xFFFD));\n        } else if (i === n - 1) {\n            U.push(String.fromCodePoint(0xFFFD));\n        } else {\n            const d = S.charCodeAt(i + 1);\n            if (0xDC00 <= d && d <= 0xDFFF) {\n                const a = c & 0x3FF;\n                const b = d & 0x3FF;\n                U.push(String.fromCodePoint((2 << 15) + ((2 << 9) * a) + b));\n                ++i;\n            } else {\n                U.push(String.fromCodePoint(0xFFFD));\n            }\n        }\n    }\n\n    return U.join(\"\");\n};\n\nexports.object = (V, opts) => {\n    if (type(V) !== \"Object\") {\n        throw new TypeError(_(\"is not an object\", opts));\n    }\n\n    return V;\n};\n\n// Not exported, but used in Function and VoidFunction.\n\n// Neither Function nor VoidFunction is defined with [TreatNonObjectAsNull], so\n// handling for that is omitted.\nfunction convertCallbackFunction(V, opts) {\n    if (typeof V !== \"function\") {\n        throw new TypeError(_(\"is not a function\", opts));\n    }\n    return V;\n}\n\nconst abByteLengthGetter =\n    Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\n\nfunction isArrayBuffer(V) {\n    try {\n        abByteLengthGetter.call(V);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// I don't think we can reliably detect detached ArrayBuffers.\nexports.ArrayBuffer = (V, opts) => {\n    if (!isArrayBuffer(V)) {\n        throw new TypeError(_(\"is not a view on an ArrayBuffer object\", opts));\n    }\n    return V;\n};\n\nconst dvByteLengthGetter =\n    Object.getOwnPropertyDescriptor(DataView.prototype, \"byteLength\").get;\nexports.DataView = (V, opts) => {\n    try {\n        dvByteLengthGetter.call(V);\n        return V;\n    } catch (e) {\n        throw new TypeError(_(\"is not a view on an DataView object\", opts));\n    }\n};\n\n[\n    Int8Array, Int16Array, Int32Array, Uint8Array,\n    Uint16Array, Uint32Array, Uint8ClampedArray, Float32Array, Float64Array\n].forEach(func => {\n    const name = func.name;\n    const article = /^[AEIOU]/.test(name) ? \"an\" : \"a\";\n    exports[name] = (V, opts) => {\n        if (!ArrayBuffer.isView(V) || V.constructor.name !== name) {\n            throw new TypeError(_(`is not ${article} ${name} object`, opts));\n        }\n\n        return V;\n    };\n});\n\n// Common definitions\n\nexports.ArrayBufferView = (V, opts) => {\n    if (!ArrayBuffer.isView(V)) {\n        throw new TypeError(_(\"is not a view on an ArrayBuffer object\", opts));\n    }\n\n    return V;\n};\n\nexports.BufferSource = (V, opts) => {\n    if (!ArrayBuffer.isView(V) && !isArrayBuffer(V)) {\n        throw new TypeError(_(\"is not an ArrayBuffer object or a view on one\", opts));\n    }\n\n    return V;\n};\n\nexports.DOMTimeStamp = exports[\"unsigned long long\"];\n\nexports.Function = convertCallbackFunction;\n\nexports.VoidFunction = convertCallbackFunction;\n","\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n  return typeof value === \"object\" && value !== null || typeof value === \"function\";\n}\n\nfunction hasOwn(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\nconst ctorRegistrySymbol = Symbol.for(\"[webidl2js]  constructor registry\");\n\nfunction getSameObject(wrapper, prop, creator) {\n  if (!wrapper[sameObjectCaches]) {\n    wrapper[sameObjectCaches] = Object.create(null);\n  }\n\n  if (prop in wrapper[sameObjectCaches]) {\n    return wrapper[sameObjectCaches][prop];\n  }\n\n  wrapper[sameObjectCaches][prop] = creator();\n  return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n  return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n  return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n  const wrapper = wrapperForImpl(impl);\n  return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n  const impl = implForWrapper(wrapper);\n  return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\nconst IteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));\n\nfunction isArrayIndexPropName(P) {\n  if (typeof P !== \"string\") {\n    return false;\n  }\n  const i = P >>> 0;\n  if (i === Math.pow(2, 32) - 1) {\n    return false;\n  }\n  const s = `${i}`;\n  if (P !== s) {\n    return false;\n  }\n  return true;\n}\n\nconst byteLengthGetter =\n    Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nfunction isArrayBuffer(value) {\n  try {\n    byteLengthGetter.call(value);\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nmodule.exports = exports = {\n  isObject,\n  hasOwn,\n  wrapperSymbol,\n  implSymbol,\n  getSameObject,\n  ctorRegistrySymbol,\n  wrapperForImpl,\n  implForWrapper,\n  tryWrapperForImpl,\n  tryImplForWrapper,\n  iterInternalSymbol,\n  IteratorPrototype,\n  isArrayBuffer,\n  isArrayIndexPropName,\n  supportsPropertyIndex,\n  supportedPropertyIndices,\n  supportsPropertyName,\n  supportedPropertyNames,\n  indexedGet,\n  indexedSetNew,\n  indexedSetExisting,\n  namedGet,\n  namedSetNew,\n  namedSetExisting,\n  namedDelete\n};\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\nconst urlencoded = require(\"./urlencoded\");\nconst URLSearchParams = require(\"./URLSearchParams\");\n\nexports.implementation = class URLImpl {\n  constructor(globalObject, constructorArgs) {\n    const url = constructorArgs[0];\n    const base = constructorArgs[1];\n\n    let parsedBase = null;\n    if (base !== undefined) {\n      parsedBase = usm.basicURLParse(base);\n      if (parsedBase === null) {\n        throw new TypeError(`Invalid base URL: ${base}`);\n      }\n    }\n\n    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n    if (parsedURL === null) {\n      throw new TypeError(`Invalid URL: ${url}`);\n    }\n\n    const query = parsedURL.query !== null ? parsedURL.query : \"\";\n\n    this._url = parsedURL;\n\n    // We cannot invoke the \"new URLSearchParams object\" algorithm without going through the constructor, which strips\n    // question mark by default. Therefore the doNotStripQMark hack is used.\n    this._query = URLSearchParams.createImpl(globalObject, [query], { doNotStripQMark: true });\n    this._query._url = this;\n  }\n\n  get href() {\n    return usm.serializeURL(this._url);\n  }\n\n  set href(v) {\n    const parsedURL = usm.basicURLParse(v);\n    if (parsedURL === null) {\n      throw new TypeError(`Invalid URL: ${v}`);\n    }\n\n    this._url = parsedURL;\n\n    this._query._list.splice(0);\n    const { query } = parsedURL;\n    if (query !== null) {\n      this._query._list = urlencoded.parseUrlencoded(query);\n    }\n  }\n\n  get origin() {\n    return usm.serializeURLOrigin(this._url);\n  }\n\n  get protocol() {\n    return this._url.scheme + \":\";\n  }\n\n  set protocol(v) {\n    usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n  }\n\n  get username() {\n    return this._url.username;\n  }\n\n  set username(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setTheUsername(this._url, v);\n  }\n\n  get password() {\n    return this._url.password;\n  }\n\n  set password(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setThePassword(this._url, v);\n  }\n\n  get host() {\n    const url = this._url;\n\n    if (url.host === null) {\n      return \"\";\n    }\n\n    if (url.port === null) {\n      return usm.serializeHost(url.host);\n    }\n\n    return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n  }\n\n  set host(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n  }\n\n  get hostname() {\n    if (this._url.host === null) {\n      return \"\";\n    }\n\n    return usm.serializeHost(this._url.host);\n  }\n\n  set hostname(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n  }\n\n  get port() {\n    if (this._url.port === null) {\n      return \"\";\n    }\n\n    return usm.serializeInteger(this._url.port);\n  }\n\n  set port(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    if (v === \"\") {\n      this._url.port = null;\n    } else {\n      usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n    }\n  }\n\n  get pathname() {\n    if (this._url.cannotBeABaseURL) {\n      return this._url.path[0];\n    }\n\n    if (this._url.path.length === 0) {\n      return \"\";\n    }\n\n    return \"/\" + this._url.path.join(\"/\");\n  }\n\n  set pathname(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    this._url.path = [];\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n  }\n\n  get search() {\n    if (this._url.query === null || this._url.query === \"\") {\n      return \"\";\n    }\n\n    return \"?\" + this._url.query;\n  }\n\n  set search(v) {\n    const url = this._url;\n\n    if (v === \"\") {\n      url.query = null;\n      this._query._list = [];\n      return;\n    }\n\n    const input = v[0] === \"?\" ? v.substring(1) : v;\n    url.query = \"\";\n    usm.basicURLParse(input, { url, stateOverride: \"query\" });\n    this._query._list = urlencoded.parseUrlencoded(input);\n  }\n\n  get searchParams() {\n    return this._query;\n  }\n\n  get hash() {\n    if (this._url.fragment === null || this._url.fragment === \"\") {\n      return \"\";\n    }\n\n    return \"#\" + this._url.fragment;\n  }\n\n  set hash(v) {\n    if (v === \"\") {\n      this._url.fragment = null;\n      return;\n    }\n\n    const input = v[0] === \"#\" ? v.substring(1) : v;\n    this._url.fragment = \"\";\n    usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n  }\n\n  toJSON() {\n    return this.href;\n  }\n};\n","\"use strict\";\nconst { Buffer } = require(\"buffer/\");\nconst punycode = require(\"punycode\");\n\nconst infra = require(\"./infra\");\nconst { percentEncode, percentDecode } = require(\"./urlencoded\");\n\nconst specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\nconst failure = Symbol(\"failure\");\n\nfunction countSymbols(str) {\n  return punycode.ucs2.decode(str).length;\n}\n\nfunction at(input, idx) {\n  const c = input[idx];\n  return isNaN(c) ? undefined : String.fromCodePoint(c);\n}\n\nfunction isSingleDot(buffer) {\n  return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\n}\n\nfunction isDoubleDot(buffer) {\n  buffer = buffer.toLowerCase();\n  return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\n}\n\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\n  return infra.isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\n}\n\nfunction isWindowsDriveLetterString(string) {\n  return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\n}\n\nfunction isNormalizedWindowsDriveLetterString(string) {\n  return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\n}\n\nfunction containsForbiddenHostCodePoint(string) {\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\n}\n\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\n}\n\nfunction isSpecialScheme(scheme) {\n  return specialSchemes[scheme] !== undefined;\n}\n\nfunction isSpecial(url) {\n  return isSpecialScheme(url.scheme);\n}\n\nfunction isNotSpecial(url) {\n  return !isSpecialScheme(url.scheme);\n}\n\nfunction defaultPort(scheme) {\n  return specialSchemes[scheme];\n}\n\nfunction utf8PercentEncode(c) {\n  const buf = Buffer.from(c);\n\n  let str = \"\";\n\n  for (let i = 0; i < buf.length; ++i) {\n    str += percentEncode(buf[i]);\n  }\n\n  return str;\n}\n\nfunction isC0ControlPercentEncode(c) {\n  return c <= 0x1F || c > 0x7E;\n}\n\nconst extraUserinfoPercentEncodeSet =\n  new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\nfunction isUserinfoPercentEncode(c) {\n  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\n}\n\nconst extraFragmentPercentEncodeSet = new Set([32, 34, 60, 62, 96]);\nfunction isFragmentPercentEncode(c) {\n  return isC0ControlPercentEncode(c) || extraFragmentPercentEncodeSet.has(c);\n}\n\nconst extraPathPercentEncodeSet = new Set([35, 63, 123, 125]);\nfunction isPathPercentEncode(c) {\n  return isFragmentPercentEncode(c) || extraPathPercentEncodeSet.has(c);\n}\n\nfunction percentEncodeChar(c, encodeSetPredicate) {\n  const cStr = String.fromCodePoint(c);\n\n  if (encodeSetPredicate(c)) {\n    return utf8PercentEncode(cStr);\n  }\n\n  return cStr;\n}\n\nfunction parseIPv4Number(input) {\n  let R = 10;\n\n  if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\n    input = input.substring(2);\n    R = 16;\n  } else if (input.length >= 2 && input.charAt(0) === \"0\") {\n    input = input.substring(1);\n    R = 8;\n  }\n\n  if (input === \"\") {\n    return 0;\n  }\n\n  let regex = /[^0-7]/;\n  if (R === 10) {\n    regex = /[^0-9]/;\n  }\n  if (R === 16) {\n    regex = /[^0-9A-Fa-f]/;\n  }\n\n  if (regex.test(input)) {\n    return failure;\n  }\n\n  return parseInt(input, R);\n}\n\nfunction parseIPv4(input) {\n  const parts = input.split(\".\");\n  if (parts[parts.length - 1] === \"\") {\n    if (parts.length > 1) {\n      parts.pop();\n    }\n  }\n\n  if (parts.length > 4) {\n    return input;\n  }\n\n  const numbers = [];\n  for (const part of parts) {\n    if (part === \"\") {\n      return input;\n    }\n    const n = parseIPv4Number(part);\n    if (n === failure) {\n      return input;\n    }\n\n    numbers.push(n);\n  }\n\n  for (let i = 0; i < numbers.length - 1; ++i) {\n    if (numbers[i] > 255) {\n      return failure;\n    }\n  }\n  if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\n    return failure;\n  }\n\n  let ipv4 = numbers.pop();\n  let counter = 0;\n\n  for (const n of numbers) {\n    ipv4 += n * Math.pow(256, 3 - counter);\n    ++counter;\n  }\n\n  return ipv4;\n}\n\nfunction serializeIPv4(address) {\n  let output = \"\";\n  let n = address;\n\n  for (let i = 1; i <= 4; ++i) {\n    output = String(n % 256) + output;\n    if (i !== 4) {\n      output = \".\" + output;\n    }\n    n = Math.floor(n / 256);\n  }\n\n  return output;\n}\n\nfunction parseIPv6(input) {\n  const address = [0, 0, 0, 0, 0, 0, 0, 0];\n  let pieceIndex = 0;\n  let compress = null;\n  let pointer = 0;\n\n  input = punycode.ucs2.decode(input);\n\n  if (input[pointer] === 58) {\n    if (input[pointer + 1] !== 58) {\n      return failure;\n    }\n\n    pointer += 2;\n    ++pieceIndex;\n    compress = pieceIndex;\n  }\n\n  while (pointer < input.length) {\n    if (pieceIndex === 8) {\n      return failure;\n    }\n\n    if (input[pointer] === 58) {\n      if (compress !== null) {\n        return failure;\n      }\n      ++pointer;\n      ++pieceIndex;\n      compress = pieceIndex;\n      continue;\n    }\n\n    let value = 0;\n    let length = 0;\n\n    while (length < 4 && infra.isASCIIHex(input[pointer])) {\n      value = value * 0x10 + parseInt(at(input, pointer), 16);\n      ++pointer;\n      ++length;\n    }\n\n    if (input[pointer] === 46) {\n      if (length === 0) {\n        return failure;\n      }\n\n      pointer -= length;\n\n      if (pieceIndex > 6) {\n        return failure;\n      }\n\n      let numbersSeen = 0;\n\n      while (input[pointer] !== undefined) {\n        let ipv4Piece = null;\n\n        if (numbersSeen > 0) {\n          if (input[pointer] === 46 && numbersSeen < 4) {\n            ++pointer;\n          } else {\n            return failure;\n          }\n        }\n\n        if (!infra.isASCIIDigit(input[pointer])) {\n          return failure;\n        }\n\n        while (infra.isASCIIDigit(input[pointer])) {\n          const number = parseInt(at(input, pointer));\n          if (ipv4Piece === null) {\n            ipv4Piece = number;\n          } else if (ipv4Piece === 0) {\n            return failure;\n          } else {\n            ipv4Piece = ipv4Piece * 10 + number;\n          }\n          if (ipv4Piece > 255) {\n            return failure;\n          }\n          ++pointer;\n        }\n\n        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\n\n        ++numbersSeen;\n\n        if (numbersSeen === 2 || numbersSeen === 4) {\n          ++pieceIndex;\n        }\n      }\n\n      if (numbersSeen !== 4) {\n        return failure;\n      }\n\n      break;\n    } else if (input[pointer] === 58) {\n      ++pointer;\n      if (input[pointer] === undefined) {\n        return failure;\n      }\n    } else if (input[pointer] !== undefined) {\n      return failure;\n    }\n\n    address[pieceIndex] = value;\n    ++pieceIndex;\n  }\n\n  if (compress !== null) {\n    let swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex !== 0 && swaps > 0) {\n      const temp = address[compress + swaps - 1];\n      address[compress + swaps - 1] = address[pieceIndex];\n      address[pieceIndex] = temp;\n      --pieceIndex;\n      --swaps;\n    }\n  } else if (compress === null && pieceIndex !== 8) {\n    return failure;\n  }\n\n  return address;\n}\n\nfunction serializeIPv6(address) {\n  let output = \"\";\n  const seqResult = findLongestZeroSequence(address);\n  const compress = seqResult.idx;\n  let ignore0 = false;\n\n  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\n    if (ignore0 && address[pieceIndex] === 0) {\n      continue;\n    } else if (ignore0) {\n      ignore0 = false;\n    }\n\n    if (compress === pieceIndex) {\n      const separator = pieceIndex === 0 ? \"::\" : \":\";\n      output += separator;\n      ignore0 = true;\n      continue;\n    }\n\n    output += address[pieceIndex].toString(16);\n\n    if (pieceIndex !== 7) {\n      output += \":\";\n    }\n  }\n\n  return output;\n}\n\nfunction parseHost(input, isNotSpecialArg = false) {\n  if (input[0] === \"[\") {\n    if (input[input.length - 1] !== \"]\") {\n      return failure;\n    }\n\n    return parseIPv6(input.substring(1, input.length - 1));\n  }\n\n  if (isNotSpecialArg) {\n    return parseOpaqueHost(input);\n  }\n\n  const domain = percentDecode(Buffer.from(input)).toString();\n  const asciiDomain = domainToASCII(domain);\n  if (asciiDomain === failure) {\n    return failure;\n  }\n\n  if (containsForbiddenHostCodePoint(asciiDomain)) {\n    return failure;\n  }\n\n  const ipv4Host = parseIPv4(asciiDomain);\n  if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\n    return ipv4Host;\n  }\n\n  return asciiDomain;\n}\n\nfunction parseOpaqueHost(input) {\n  if (containsForbiddenHostCodePointExcludingPercent(input)) {\n    return failure;\n  }\n\n  let output = \"\";\n  const decoded = punycode.ucs2.decode(input);\n  for (let i = 0; i < decoded.length; ++i) {\n    output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\n  }\n  return output;\n}\n\nfunction findLongestZeroSequence(arr) {\n  let maxIdx = null;\n  let maxLen = 1; // only find elements > 1\n  let currStart = null;\n  let currLen = 0;\n\n  for (let i = 0; i < arr.length; ++i) {\n    if (arr[i] !== 0) {\n      if (currLen > maxLen) {\n        maxIdx = currStart;\n        maxLen = currLen;\n      }\n\n      currStart = null;\n      currLen = 0;\n    } else {\n      if (currStart === null) {\n        currStart = i;\n      }\n      ++currLen;\n    }\n  }\n\n  // if trailing zeros\n  if (currLen > maxLen) {\n    maxIdx = currStart;\n    maxLen = currLen;\n  }\n\n  return {\n    idx: maxIdx,\n    len: maxLen\n  };\n}\n\nfunction serializeHost(host) {\n  if (typeof host === \"number\") {\n    return serializeIPv4(host);\n  }\n\n  // IPv6 serializer\n  if (host instanceof Array) {\n    return \"[\" + serializeIPv6(host) + \"]\";\n  }\n\n  return host;\n}\n\nfunction domainToASCII(domain) {\n  const result = domain;\n\n  if (result === null) {\n    return failure;\n  }\n  return result;\n}\n\nfunction trimControlChars(url) {\n  return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\n}\n\nfunction trimTabAndNewline(url) {\n  return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\n}\n\nfunction shortenPath(url) {\n  const { path } = url;\n  if (path.length === 0) {\n    return;\n  }\n  if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\n    return;\n  }\n\n  path.pop();\n}\n\nfunction includesCredentials(url) {\n  return url.username !== \"\" || url.password !== \"\";\n}\n\nfunction cannotHaveAUsernamePasswordPort(url) {\n  return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\n}\n\nfunction isNormalizedWindowsDriveLetter(string) {\n  return /^[A-Za-z]:$/.test(string);\n}\n\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\n  this.pointer = 0;\n  this.input = input;\n  this.base = base || null;\n  this.encodingOverride = encodingOverride || \"utf-8\";\n  this.stateOverride = stateOverride;\n  this.url = url;\n  this.failure = false;\n  this.parseError = false;\n\n  if (!this.url) {\n    this.url = {\n      scheme: \"\",\n      username: \"\",\n      password: \"\",\n      host: null,\n      port: null,\n      path: [],\n      query: null,\n      fragment: null,\n\n      cannotBeABaseURL: false\n    };\n\n    const res = trimControlChars(this.input);\n    if (res !== this.input) {\n      this.parseError = true;\n    }\n    this.input = res;\n  }\n\n  const res = trimTabAndNewline(this.input);\n  if (res !== this.input) {\n    this.parseError = true;\n  }\n  this.input = res;\n\n  this.state = stateOverride || \"scheme start\";\n\n  this.buffer = \"\";\n  this.atFlag = false;\n  this.arrFlag = false;\n  this.passwordTokenSeenFlag = false;\n\n  this.input = punycode.ucs2.decode(this.input);\n\n  for (; this.pointer <= this.input.length; ++this.pointer) {\n    const c = this.input[this.pointer];\n    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\n\n    // exec state machine\n    const ret = this[\"parse \" + this.state](c, cStr);\n    if (!ret) {\n      break; // terminate algorithm\n    } else if (ret === failure) {\n      this.failure = true;\n      break;\n    }\n  }\n}\n\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\n  if (infra.isASCIIAlpha(c)) {\n    this.buffer += cStr.toLowerCase();\n    this.state = \"scheme\";\n  } else if (!this.stateOverride) {\n    this.state = \"no scheme\";\n    --this.pointer;\n  } else {\n    this.parseError = true;\n    return failure;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\n  if (infra.isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\n    this.buffer += cStr.toLowerCase();\n  } else if (c === 58) {\n    if (this.stateOverride) {\n      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\n        return false;\n      }\n\n      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\n        return false;\n      }\n\n      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\n        return false;\n      }\n\n      if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\n        return false;\n      }\n    }\n    this.url.scheme = this.buffer;\n    if (this.stateOverride) {\n      if (this.url.port === defaultPort(this.url.scheme)) {\n        this.url.port = null;\n      }\n      return false;\n    }\n    this.buffer = \"\";\n    if (this.url.scheme === \"file\") {\n      if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\n        this.parseError = true;\n      }\n      this.state = \"file\";\n    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\n      this.state = \"special relative or authority\";\n    } else if (isSpecial(this.url)) {\n      this.state = \"special authority slashes\";\n    } else if (this.input[this.pointer + 1] === 47) {\n      this.state = \"path or authority\";\n      ++this.pointer;\n    } else {\n      this.url.cannotBeABaseURL = true;\n      this.url.path.push(\"\");\n      this.state = \"cannot-be-a-base-URL path\";\n    }\n  } else if (!this.stateOverride) {\n    this.buffer = \"\";\n    this.state = \"no scheme\";\n    this.pointer = -1;\n  } else {\n    this.parseError = true;\n    return failure;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\n  if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\n    return failure;\n  } else if (this.base.cannotBeABaseURL && c === 35) {\n    this.url.scheme = this.base.scheme;\n    this.url.path = this.base.path.slice();\n    this.url.query = this.base.query;\n    this.url.fragment = \"\";\n    this.url.cannotBeABaseURL = true;\n    this.state = \"fragment\";\n  } else if (this.base.scheme === \"file\") {\n    this.state = \"file\";\n    --this.pointer;\n  } else {\n    this.state = \"relative\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\n  if (c === 47 && this.input[this.pointer + 1] === 47) {\n    this.state = \"special authority ignore slashes\";\n    ++this.pointer;\n  } else {\n    this.parseError = true;\n    this.state = \"relative\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\n  if (c === 47) {\n    this.state = \"authority\";\n  } else {\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\n  this.url.scheme = this.base.scheme;\n  if (isNaN(c)) {\n    this.url.username = this.base.username;\n    this.url.password = this.base.password;\n    this.url.host = this.base.host;\n    this.url.port = this.base.port;\n    this.url.path = this.base.path.slice();\n    this.url.query = this.base.query;\n  } else if (c === 47) {\n    this.state = \"relative slash\";\n  } else if (c === 63) {\n    this.url.username = this.base.username;\n    this.url.password = this.base.password;\n    this.url.host = this.base.host;\n    this.url.port = this.base.port;\n    this.url.path = this.base.path.slice();\n    this.url.query = \"\";\n    this.state = \"query\";\n  } else if (c === 35) {\n    this.url.username = this.base.username;\n    this.url.password = this.base.password;\n    this.url.host = this.base.host;\n    this.url.port = this.base.port;\n    this.url.path = this.base.path.slice();\n    this.url.query = this.base.query;\n    this.url.fragment = \"\";\n    this.state = \"fragment\";\n  } else if (isSpecial(this.url) && c === 92) {\n    this.parseError = true;\n    this.state = \"relative slash\";\n  } else {\n    this.url.username = this.base.username;\n    this.url.password = this.base.password;\n    this.url.host = this.base.host;\n    this.url.port = this.base.port;\n    this.url.path = this.base.path.slice(0, this.base.path.length - 1);\n\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\n  if (isSpecial(this.url) && (c === 47 || c === 92)) {\n    if (c === 92) {\n      this.parseError = true;\n    }\n    this.state = \"special authority ignore slashes\";\n  } else if (c === 47) {\n    this.state = \"authority\";\n  } else {\n    this.url.username = this.base.username;\n    this.url.password = this.base.password;\n    this.url.host = this.base.host;\n    this.url.port = this.base.port;\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\n  if (c === 47 && this.input[this.pointer + 1] === 47) {\n    this.state = \"special authority ignore slashes\";\n    ++this.pointer;\n  } else {\n    this.parseError = true;\n    this.state = \"special authority ignore slashes\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\n  if (c !== 47 && c !== 92) {\n    this.state = \"authority\";\n    --this.pointer;\n  } else {\n    this.parseError = true;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\n  if (c === 64) {\n    this.parseError = true;\n    if (this.atFlag) {\n      this.buffer = \"%40\" + this.buffer;\n    }\n    this.atFlag = true;\n\n    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\n    const len = countSymbols(this.buffer);\n    for (let pointer = 0; pointer < len; ++pointer) {\n      const codePoint = this.buffer.codePointAt(pointer);\n\n      if (codePoint === 58 && !this.passwordTokenSeenFlag) {\n        this.passwordTokenSeenFlag = true;\n        continue;\n      }\n      const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\n      if (this.passwordTokenSeenFlag) {\n        this.url.password += encodedCodePoints;\n      } else {\n        this.url.username += encodedCodePoints;\n      }\n    }\n    this.buffer = \"\";\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n             (isSpecial(this.url) && c === 92)) {\n    if (this.atFlag && this.buffer === \"\") {\n      this.parseError = true;\n      return failure;\n    }\n    this.pointer -= countSymbols(this.buffer) + 1;\n    this.buffer = \"\";\n    this.state = \"host\";\n  } else {\n    this.buffer += cStr;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse hostname\"] =\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\n  if (this.stateOverride && this.url.scheme === \"file\") {\n    --this.pointer;\n    this.state = \"file host\";\n  } else if (c === 58 && !this.arrFlag) {\n    if (this.buffer === \"\") {\n      this.parseError = true;\n      return failure;\n    }\n\n    const host = parseHost(this.buffer, isNotSpecial(this.url));\n    if (host === failure) {\n      return failure;\n    }\n\n    this.url.host = host;\n    this.buffer = \"\";\n    this.state = \"port\";\n    if (this.stateOverride === \"hostname\") {\n      return false;\n    }\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n             (isSpecial(this.url) && c === 92)) {\n    --this.pointer;\n    if (isSpecial(this.url) && this.buffer === \"\") {\n      this.parseError = true;\n      return failure;\n    } else if (this.stateOverride && this.buffer === \"\" &&\n               (includesCredentials(this.url) || this.url.port !== null)) {\n      this.parseError = true;\n      return false;\n    }\n\n    const host = parseHost(this.buffer, isNotSpecial(this.url));\n    if (host === failure) {\n      return failure;\n    }\n\n    this.url.host = host;\n    this.buffer = \"\";\n    this.state = \"path start\";\n    if (this.stateOverride) {\n      return false;\n    }\n  } else {\n    if (c === 91) {\n      this.arrFlag = true;\n    } else if (c === 93) {\n      this.arrFlag = false;\n    }\n    this.buffer += cStr;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\n  if (infra.isASCIIDigit(c)) {\n    this.buffer += cStr;\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\n             (isSpecial(this.url) && c === 92) ||\n             this.stateOverride) {\n    if (this.buffer !== \"\") {\n      const port = parseInt(this.buffer);\n      if (port > Math.pow(2, 16) - 1) {\n        this.parseError = true;\n        return failure;\n      }\n      this.url.port = port === defaultPort(this.url.scheme) ? null : port;\n      this.buffer = \"\";\n    }\n    if (this.stateOverride) {\n      return false;\n    }\n    this.state = \"path start\";\n    --this.pointer;\n  } else {\n    this.parseError = true;\n    return failure;\n  }\n\n  return true;\n};\n\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\n\nfunction startsWithWindowsDriveLetter(input, pointer) {\n  const length = input.length - pointer;\n  return length >= 2 &&\n    isWindowsDriveLetterCodePoints(input[pointer], input[pointer + 1]) &&\n    (length === 2 || fileOtherwiseCodePoints.has(input[pointer + 2]));\n}\n\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\n  this.url.scheme = \"file\";\n\n  if (c === 47 || c === 92) {\n    if (c === 92) {\n      this.parseError = true;\n    }\n    this.state = \"file slash\";\n  } else if (this.base !== null && this.base.scheme === \"file\") {\n    if (isNaN(c)) {\n      this.url.host = this.base.host;\n      this.url.path = this.base.path.slice();\n      this.url.query = this.base.query;\n    } else if (c === 63) {\n      this.url.host = this.base.host;\n      this.url.path = this.base.path.slice();\n      this.url.query = \"\";\n      this.state = \"query\";\n    } else if (c === 35) {\n      this.url.host = this.base.host;\n      this.url.path = this.base.path.slice();\n      this.url.query = this.base.query;\n      this.url.fragment = \"\";\n      this.state = \"fragment\";\n    } else {\n      if (!startsWithWindowsDriveLetter(this.input, this.pointer)) {\n        this.url.host = this.base.host;\n        this.url.path = this.base.path.slice();\n        shortenPath(this.url);\n      } else {\n        this.parseError = true;\n      }\n\n      this.state = \"path\";\n      --this.pointer;\n    }\n  } else {\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\n  if (c === 47 || c === 92) {\n    if (c === 92) {\n      this.parseError = true;\n    }\n    this.state = \"file host\";\n  } else {\n    if (this.base !== null && this.base.scheme === \"file\" &&\n        !startsWithWindowsDriveLetter(this.input, this.pointer)) {\n      if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\n        this.url.path.push(this.base.path[0]);\n      } else {\n        this.url.host = this.base.host;\n      }\n    }\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\n  if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\n    --this.pointer;\n    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\n      this.parseError = true;\n      this.state = \"path\";\n    } else if (this.buffer === \"\") {\n      this.url.host = \"\";\n      if (this.stateOverride) {\n        return false;\n      }\n      this.state = \"path start\";\n    } else {\n      let host = parseHost(this.buffer, isNotSpecial(this.url));\n      if (host === failure) {\n        return failure;\n      }\n      if (host === \"localhost\") {\n        host = \"\";\n      }\n      this.url.host = host;\n\n      if (this.stateOverride) {\n        return false;\n      }\n\n      this.buffer = \"\";\n      this.state = \"path start\";\n    }\n  } else {\n    this.buffer += cStr;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\n  if (isSpecial(this.url)) {\n    if (c === 92) {\n      this.parseError = true;\n    }\n    this.state = \"path\";\n\n    if (c !== 47 && c !== 92) {\n      --this.pointer;\n    }\n  } else if (!this.stateOverride && c === 63) {\n    this.url.query = \"\";\n    this.state = \"query\";\n  } else if (!this.stateOverride && c === 35) {\n    this.url.fragment = \"\";\n    this.state = \"fragment\";\n  } else if (c !== undefined) {\n    this.state = \"path\";\n    if (c !== 47) {\n      --this.pointer;\n    }\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\n  if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\n      (!this.stateOverride && (c === 63 || c === 35))) {\n    if (isSpecial(this.url) && c === 92) {\n      this.parseError = true;\n    }\n\n    if (isDoubleDot(this.buffer)) {\n      shortenPath(this.url);\n      if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\n        this.url.path.push(\"\");\n      }\n    } else if (isSingleDot(this.buffer) && c !== 47 &&\n               !(isSpecial(this.url) && c === 92)) {\n      this.url.path.push(\"\");\n    } else if (!isSingleDot(this.buffer)) {\n      if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\n        if (this.url.host !== \"\" && this.url.host !== null) {\n          this.parseError = true;\n          this.url.host = \"\";\n        }\n        this.buffer = this.buffer[0] + \":\";\n      }\n      this.url.path.push(this.buffer);\n    }\n    this.buffer = \"\";\n    if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\n      while (this.url.path.length > 1 && this.url.path[0] === \"\") {\n        this.parseError = true;\n        this.url.path.shift();\n      }\n    }\n    if (c === 63) {\n      this.url.query = \"\";\n      this.state = \"query\";\n    }\n    if (c === 35) {\n      this.url.fragment = \"\";\n      this.state = \"fragment\";\n    }\n  } else {\n    // TODO: If c is not a URL code point and not \"%\", parse error.\n\n    if (c === 37 &&\n      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n        !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n      this.parseError = true;\n    }\n\n    this.buffer += percentEncodeChar(c, isPathPercentEncode);\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\n  if (c === 63) {\n    this.url.query = \"\";\n    this.state = \"query\";\n  } else if (c === 35) {\n    this.url.fragment = \"\";\n    this.state = \"fragment\";\n  } else {\n    // TODO: Add: not a URL code point\n    if (!isNaN(c) && c !== 37) {\n      this.parseError = true;\n    }\n\n    if (c === 37 &&\n        (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n         !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n      this.parseError = true;\n    }\n\n    if (!isNaN(c)) {\n      this.url.path[0] += percentEncodeChar(c, isC0ControlPercentEncode);\n    }\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\n  if (isNaN(c) || (!this.stateOverride && c === 35)) {\n    if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\n      this.encodingOverride = \"utf-8\";\n    }\n\n    const buffer = Buffer.from(this.buffer); // TODO: Use encoding override instead\n    for (let i = 0; i < buffer.length; ++i) {\n      if (buffer[i] < 0x21 ||\n          buffer[i] > 0x7E ||\n          buffer[i] === 0x22 || buffer[i] === 0x23 || buffer[i] === 0x3C || buffer[i] === 0x3E ||\n          (buffer[i] === 0x27 && isSpecial(this.url))) {\n        this.url.query += percentEncode(buffer[i]);\n      } else {\n        this.url.query += String.fromCodePoint(buffer[i]);\n      }\n    }\n\n    this.buffer = \"\";\n    if (c === 35) {\n      this.url.fragment = \"\";\n      this.state = \"fragment\";\n    }\n  } else {\n    // TODO: If c is not a URL code point and not \"%\", parse error.\n    if (c === 37 &&\n      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n        !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n      this.parseError = true;\n    }\n\n    this.buffer += cStr;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\n  if (isNaN(c)) { // do nothing\n  } else if (c === 0x0) {\n    this.parseError = true;\n  } else {\n    // TODO: If c is not a URL code point and not \"%\", parse error.\n    if (c === 37 &&\n      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n        !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n      this.parseError = true;\n    }\n\n    this.url.fragment += percentEncodeChar(c, isFragmentPercentEncode);\n  }\n\n  return true;\n};\n\nfunction serializeURL(url, excludeFragment) {\n  let output = url.scheme + \":\";\n  if (url.host !== null) {\n    output += \"//\";\n\n    if (url.username !== \"\" || url.password !== \"\") {\n      output += url.username;\n      if (url.password !== \"\") {\n        output += \":\" + url.password;\n      }\n      output += \"@\";\n    }\n\n    output += serializeHost(url.host);\n\n    if (url.port !== null) {\n      output += \":\" + url.port;\n    }\n  } else if (url.host === null && url.scheme === \"file\") {\n    output += \"//\";\n  }\n\n  if (url.cannotBeABaseURL) {\n    output += url.path[0];\n  } else {\n    for (const string of url.path) {\n      output += \"/\" + string;\n    }\n  }\n\n  if (url.query !== null) {\n    output += \"?\" + url.query;\n  }\n\n  if (!excludeFragment && url.fragment !== null) {\n    output += \"#\" + url.fragment;\n  }\n\n  return output;\n}\n\nfunction serializeOrigin(tuple) {\n  let result = tuple.scheme + \"://\";\n  result += serializeHost(tuple.host);\n\n  if (tuple.port !== null) {\n    result += \":\" + tuple.port;\n  }\n\n  return result;\n}\n\nmodule.exports.serializeURL = serializeURL;\n\nmodule.exports.serializeURLOrigin = function (url) {\n  // https://url.spec.whatwg.org/#concept-url-origin\n  switch (url.scheme) {\n    case \"blob\":\n      try {\n        return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\n      } catch (e) {\n        // serializing an opaque origin returns \"null\"\n        return \"null\";\n      }\n    case \"ftp\":\n    case \"http\":\n    case \"https\":\n    case \"ws\":\n    case \"wss\":\n      return serializeOrigin({\n        scheme: url.scheme,\n        host: url.host,\n        port: url.port\n      });\n    case \"file\":\n      // The spec says:\n      // > Unfortunate as it is, this is left as an exercise to the reader. When in doubt, return a new opaque origin.\n      // Browsers tested so far:\n      // - Chrome says \"file://\", but treats file: URLs as cross-origin for most (all?) purposes; see e.g.\n      //   https://bugs.chromium.org/p/chromium/issues/detail?id=37586\n      // - Firefox says \"null\", but treats file: URLs as same-origin sometimes based on directory stuff; see\n      //   https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs\n      return \"null\";\n    default:\n      // serializing an opaque origin returns \"null\"\n      return \"null\";\n  }\n};\n\nmodule.exports.basicURLParse = function (input, options) {\n  if (options === undefined) {\n    options = {};\n  }\n\n  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\n  if (usm.failure) {\n    return null;\n  }\n\n  return usm.url;\n};\n\nmodule.exports.setTheUsername = function (url, username) {\n  url.username = \"\";\n  const decoded = punycode.ucs2.decode(username);\n  for (let i = 0; i < decoded.length; ++i) {\n    url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\n  }\n};\n\nmodule.exports.setThePassword = function (url, password) {\n  url.password = \"\";\n  const decoded = punycode.ucs2.decode(password);\n  for (let i = 0; i < decoded.length; ++i) {\n    url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\n  }\n};\n\nmodule.exports.serializeHost = serializeHost;\n\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\n\nmodule.exports.serializeInteger = function (integer) {\n  return String(integer);\n};\n\nmodule.exports.parseURL = function (input, options) {\n  if (options === undefined) {\n    options = {};\n  }\n\n  // We don't handle blobs, so this just delegates:\n  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1)\n    var proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  var buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  var valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  var b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(\n      value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n    )\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  var length = byteLength(string, encoding) | 0\n  var buf = createBuffer(length)\n\n  var actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  var buf = createBuffer(length)\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    var copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  var buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    var buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        Buffer.from(buf).copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  var len = string.length\n  var mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  var strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (var i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    var len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n  var alphabet = '0123456789abcdef'\n  var table = new Array(256)\n  for (var i = 0; i < 16; ++i) {\n    var i16 = i * 16\n    for (var j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","\"use strict\";\n\nfunction isASCIIDigit(c) {\n  return c >= 0x30 && c <= 0x39;\n}\n\nfunction isASCIIAlpha(c) {\n  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\n}\n\nfunction isASCIIAlphanumeric(c) {\n  return isASCIIAlpha(c) || isASCIIDigit(c);\n}\n\nfunction isASCIIHex(c) {\n  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\n}\n\nmodule.exports = {\n  isASCIIDigit,\n  isASCIIAlpha,\n  isASCIIAlphanumeric,\n  isASCIIHex\n};\n","\"use strict\";\nconst { Buffer } = require(\"buffer/\");\n\nconst { isASCIIHex } = require(\"./infra\");\n\nfunction strictlySplitByteSequence(buf, cp) {\n  const list = [];\n  let last = 0;\n  let i = buf.indexOf(cp);\n  while (i >= 0) {\n    list.push(buf.slice(last, i));\n    last = i + 1;\n    i = buf.indexOf(cp, last);\n  }\n  if (last !== buf.length) {\n    list.push(buf.slice(last));\n  }\n  return list;\n}\n\nfunction replaceByteInByteSequence(buf, from, to) {\n  let i = buf.indexOf(from);\n  while (i >= 0) {\n    buf[i] = to;\n    i = buf.indexOf(from, i + 1);\n  }\n  return buf;\n}\n\nfunction percentEncode(c) {\n  let hex = c.toString(16).toUpperCase();\n  if (hex.length === 1) {\n    hex = \"0\" + hex;\n  }\n\n  return \"%\" + hex;\n}\n\nfunction percentDecode(input) {\n  const output = Buffer.alloc(input.byteLength);\n  let ptr = 0;\n  for (let i = 0; i < input.length; ++i) {\n    if (input[i] !== 37 || !isASCIIHex(input[i + 1]) || !isASCIIHex(input[i + 2])) {\n      output[ptr++] = input[i];\n    } else {\n      output[ptr++] = parseInt(input.slice(i + 1, i + 3).toString(), 16);\n      i += 2;\n    }\n  }\n  return output.slice(0, ptr);\n}\n\nfunction parseUrlencoded(input) {\n  const sequences = strictlySplitByteSequence(input, 38);\n  const output = [];\n  for (const bytes of sequences) {\n    if (bytes.length === 0) {\n      continue;\n    }\n\n    let name;\n    let value;\n    const indexOfEqual = bytes.indexOf(61);\n\n    if (indexOfEqual >= 0) {\n      name = bytes.slice(0, indexOfEqual);\n      value = bytes.slice(indexOfEqual + 1);\n    } else {\n      name = bytes;\n      value = Buffer.alloc(0);\n    }\n\n    name = replaceByteInByteSequence(Buffer.from(name), 43, 32);\n    value = replaceByteInByteSequence(Buffer.from(value), 43, 32);\n\n    output.push([percentDecode(name).toString(), percentDecode(value).toString()]);\n  }\n  return output;\n}\n\nfunction serializeUrlencodedByte(input) {\n  let output = \"\";\n  for (const byte of input) {\n    if (byte === 32) {\n      output += \"+\";\n    } else if (byte === 42 ||\n               byte === 45 ||\n               byte === 46 ||\n               (byte >= 48 && byte <= 57) ||\n               (byte >= 65 && byte <= 90) ||\n               byte === 95 ||\n               (byte >= 97 && byte <= 122)) {\n      output += String.fromCodePoint(byte);\n    } else {\n      output += percentEncode(byte);\n    }\n  }\n  return output;\n}\n\nfunction serializeUrlencoded(tuples, encodingOverride = undefined) {\n  let encoding = \"utf-8\";\n  if (encodingOverride !== undefined) {\n    encoding = encodingOverride;\n  }\n\n  let output = \"\";\n  for (const [i, tuple] of tuples.entries()) {\n    // TODO: handle encoding override\n    const name = serializeUrlencodedByte(Buffer.from(tuple[0]));\n    let value = tuple[1];\n    if (tuple.length > 2 && tuple[2] !== undefined) {\n      if (tuple[2] === \"hidden\" && name === \"_charset_\") {\n        value = encoding;\n      } else if (tuple[2] === \"file\") {\n        // value is a File object\n        value = value.name;\n      }\n    }\n    value = serializeUrlencodedByte(Buffer.from(value));\n    if (i !== 0) {\n      output += \"&\";\n    }\n    output += `${name}=${value}`;\n  }\n  return output;\n}\n\nmodule.exports = {\n  percentEncode,\n  percentDecode,\n\n  // application/x-www-form-urlencoded string parser\n  parseUrlencoded(input) {\n    return parseUrlencoded(Buffer.from(input));\n  },\n\n  // application/x-www-form-urlencoded serializer\n  serializeUrlencoded\n};\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst impl = utils.implSymbol;\nconst ctorRegistry = utils.ctorRegistrySymbol;\n\nconst IteratorPrototype = Object.create(utils.IteratorPrototype, {\n  next: {\n    value: function next() {\n      const internal = this[utils.iterInternalSymbol];\n      const { target, kind, index } = internal;\n      const values = Array.from(target[impl]);\n      const len = values.length;\n      if (index >= len) {\n        return { value: undefined, done: true };\n      }\n\n      const pair = values[index];\n      internal.index = index + 1;\n      const [key, value] = pair.map(utils.tryWrapperForImpl);\n\n      let result;\n      switch (kind) {\n        case \"key\":\n          result = key;\n          break;\n        case \"value\":\n          result = value;\n          break;\n        case \"key+value\":\n          result = [key, value];\n          break;}\n\n      return { value: result, done: false };\n    },\n    writable: true,\n    enumerable: true,\n    configurable: true },\n\n  [Symbol.toStringTag]: {\n    value: \"URLSearchParams Iterator\",\n    configurable: true } });\n\n\n\nconst iface = {\n  // When an interface-module that implements this interface as a mixin is loaded, it will append its own `.is()`\n  // method into this array. It allows objects that directly implements *those* interfaces to be recognized as\n  // implementing this mixin interface.\n  _mixedIntoPredicates: [],\n  is(obj) {\n    if (obj) {\n      if (utils.hasOwn(obj, impl) && obj[impl] instanceof Impl.implementation) {\n        return true;\n      }\n      for (const isMixedInto of module.exports._mixedIntoPredicates) {\n        if (isMixedInto(obj)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  },\n  isImpl(obj) {\n    if (obj) {\n      if (obj instanceof Impl.implementation) {\n        return true;\n      }\n\n      const wrapper = utils.wrapperForImpl(obj);\n      for (const isMixedInto of module.exports._mixedIntoPredicates) {\n        if (isMixedInto(wrapper)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  },\n  convert(obj, { context = \"The provided value\" } = {}) {\n    if (module.exports.is(obj)) {\n      return utils.implForWrapper(obj);\n    }\n    throw new TypeError(`${context} is not of type 'URLSearchParams'.`);\n  },\n\n  createDefaultIterator(target, kind) {\n    const iterator = Object.create(IteratorPrototype);\n    Object.defineProperty(iterator, utils.iterInternalSymbol, {\n      value: { target, kind, index: 0 },\n      configurable: true });\n\n    return iterator;\n  },\n\n  create(globalObject, constructorArgs, privateData) {\n    if (globalObject[ctorRegistry] === undefined) {\n      throw new Error(\"Internal error: invalid global object\");\n    }\n\n    const ctor = globalObject[ctorRegistry][\"URLSearchParams\"];\n    if (ctor === undefined) {\n      throw new Error(\"Internal error: constructor URLSearchParams is not installed on the passed global object\");\n    }\n\n    let obj = Object.create(ctor.prototype);\n    obj = iface.setup(obj, globalObject, constructorArgs, privateData);\n    return obj;\n  },\n  createImpl(globalObject, constructorArgs, privateData) {\n    const obj = iface.create(globalObject, constructorArgs, privateData);\n    return utils.implForWrapper(obj);\n  },\n  _internalSetup(obj) {},\n  setup(obj, globalObject, constructorArgs = [], privateData = {}) {\n    privateData.wrapper = obj;\n\n    iface._internalSetup(obj);\n    Object.defineProperty(obj, impl, {\n      value: new Impl.implementation(globalObject, constructorArgs, privateData),\n      configurable: true });\n\n\n    obj[impl][utils.wrapperSymbol] = obj;\n    if (Impl.init) {\n      Impl.init(obj[impl], privateData);\n    }\n    return obj;\n  },\n\n  install(globalObject) {\n    class URLSearchParams {\n      constructor() {\n        const args = [];\n        {\n          let curArg = arguments[0];\n          if (curArg !== undefined) {\n            if (utils.isObject(curArg)) {\n              if (curArg[Symbol.iterator] !== undefined) {\n                if (!utils.isObject(curArg)) {\n                  throw new TypeError(\n                  \"Failed to construct 'URLSearchParams': parameter 1\" + \" sequence\" + \" is not an iterable object.\");\n\n                } else {\n                  const V = [];\n                  const tmp = curArg;\n                  for (let nextItem of tmp) {\n                    if (!utils.isObject(nextItem)) {\n                      throw new TypeError(\n                      \"Failed to construct 'URLSearchParams': parameter 1\" +\n                      \" sequence\" +\n                      \"'s element\" +\n                      \" is not an iterable object.\");\n\n                    } else {\n                      const V = [];\n                      const tmp = nextItem;\n                      for (let nextItem of tmp) {\n                        nextItem = conversions[\"USVString\"](nextItem, {\n                          context:\n                          \"Failed to construct 'URLSearchParams': parameter 1\" +\n                          \" sequence\" +\n                          \"'s element\" +\n                          \"'s element\" });\n\n\n                        V.push(nextItem);\n                      }\n                      nextItem = V;\n                    }\n\n                    V.push(nextItem);\n                  }\n                  curArg = V;\n                }\n              } else {\n                if (!utils.isObject(curArg)) {\n                  throw new TypeError(\n                  \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \" is not an object.\");\n\n                } else {\n                  const result = Object.create(null);\n                  for (const key of Reflect.ownKeys(curArg)) {\n                    const desc = Object.getOwnPropertyDescriptor(curArg, key);\n                    if (desc && desc.enumerable) {\n                      let typedKey = key;\n\n                      typedKey = conversions[\"USVString\"](typedKey, {\n                        context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s key\" });\n\n\n                      let typedValue = curArg[key];\n\n                      typedValue = conversions[\"USVString\"](typedValue, {\n                        context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s value\" });\n\n\n                      result[typedKey] = typedValue;\n                    }\n                  }\n                  curArg = result;\n                }\n              }\n            } else {\n              curArg = conversions[\"USVString\"](curArg, {\n                context: \"Failed to construct 'URLSearchParams': parameter 1\" });\n\n            }\n          } else {\n            curArg = \"\";\n          }\n          args.push(curArg);\n        }\n        return iface.setup(Object.create(this.constructor.prototype), globalObject, args);\n      }\n\n      append(name, value) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        if (arguments.length < 2) {\n          throw new TypeError(\n          \"Failed to execute 'append' on 'URLSearchParams': 2 arguments required, but only \" +\n          arguments.length +\n          \" present.\");\n\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'append' on 'URLSearchParams': parameter 1\" });\n\n          args.push(curArg);\n        }\n        {\n          let curArg = arguments[1];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'append' on 'URLSearchParams': parameter 2\" });\n\n          args.push(curArg);\n        }\n        return this[impl].append(...args);\n      }\n\n      delete(name) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        if (arguments.length < 1) {\n          throw new TypeError(\n          \"Failed to execute 'delete' on 'URLSearchParams': 1 argument required, but only \" +\n          arguments.length +\n          \" present.\");\n\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'delete' on 'URLSearchParams': parameter 1\" });\n\n          args.push(curArg);\n        }\n        return this[impl].delete(...args);\n      }\n\n      get(name) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        if (arguments.length < 1) {\n          throw new TypeError(\n          \"Failed to execute 'get' on 'URLSearchParams': 1 argument required, but only \" +\n          arguments.length +\n          \" present.\");\n\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'get' on 'URLSearchParams': parameter 1\" });\n\n          args.push(curArg);\n        }\n        return this[impl].get(...args);\n      }\n\n      getAll(name) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        if (arguments.length < 1) {\n          throw new TypeError(\n          \"Failed to execute 'getAll' on 'URLSearchParams': 1 argument required, but only \" +\n          arguments.length +\n          \" present.\");\n\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'getAll' on 'URLSearchParams': parameter 1\" });\n\n          args.push(curArg);\n        }\n        return utils.tryWrapperForImpl(this[impl].getAll(...args));\n      }\n\n      has(name) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        if (arguments.length < 1) {\n          throw new TypeError(\n          \"Failed to execute 'has' on 'URLSearchParams': 1 argument required, but only \" +\n          arguments.length +\n          \" present.\");\n\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'has' on 'URLSearchParams': parameter 1\" });\n\n          args.push(curArg);\n        }\n        return this[impl].has(...args);\n      }\n\n      set(name, value) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        if (arguments.length < 2) {\n          throw new TypeError(\n          \"Failed to execute 'set' on 'URLSearchParams': 2 arguments required, but only \" +\n          arguments.length +\n          \" present.\");\n\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'set' on 'URLSearchParams': parameter 1\" });\n\n          args.push(curArg);\n        }\n        {\n          let curArg = arguments[1];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'set' on 'URLSearchParams': parameter 2\" });\n\n          args.push(curArg);\n        }\n        return this[impl].set(...args);\n      }\n\n      sort() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl].sort();\n      }\n\n      toString() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n\n        return this[impl].toString();\n      }\n\n      keys() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n        return module.exports.createDefaultIterator(this, \"key\");\n      }\n\n      values() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n        return module.exports.createDefaultIterator(this, \"value\");\n      }\n\n      entries() {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n        return module.exports.createDefaultIterator(this, \"key+value\");\n      }\n\n      forEach(callback) {\n        if (!this || !module.exports.is(this)) {\n          throw new TypeError(\"Illegal invocation\");\n        }\n        if (arguments.length < 1) {\n          throw new TypeError(\n          \"Failed to execute 'forEach' on 'iterable': 1 argument required, \" + \"but only 0 present.\");\n\n        }\n        if (typeof callback !== \"function\") {\n          throw new TypeError(\n          \"Failed to execute 'forEach' on 'iterable': The callback provided \" + \"as parameter 1 is not a function.\");\n\n        }\n        const thisArg = arguments[1];\n        let pairs = Array.from(this[impl]);\n        let i = 0;\n        while (i < pairs.length) {\n          const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\n          callback.call(thisArg, value, key, this);\n          pairs = Array.from(this[impl]);\n          i++;\n        }\n      }}\n\n    Object.defineProperties(URLSearchParams.prototype, {\n      append: { enumerable: true },\n      delete: { enumerable: true },\n      get: { enumerable: true },\n      getAll: { enumerable: true },\n      has: { enumerable: true },\n      set: { enumerable: true },\n      sort: { enumerable: true },\n      toString: { enumerable: true },\n      keys: { enumerable: true },\n      values: { enumerable: true },\n      entries: { enumerable: true },\n      forEach: { enumerable: true },\n      [Symbol.toStringTag]: { value: \"URLSearchParams\", configurable: true },\n      [Symbol.iterator]: { value: URLSearchParams.prototype.entries, configurable: true, writable: true } });\n\n    if (globalObject[ctorRegistry] === undefined) {\n      globalObject[ctorRegistry] = Object.create(null);\n    }\n    globalObject[ctorRegistry][\"URLSearchParams\"] = URLSearchParams;\n\n    Object.defineProperty(globalObject, \"URLSearchParams\", {\n      configurable: true,\n      writable: true,\n      value: URLSearchParams });\n\n  } };\n// iface\nmodule.exports = iface;\n\nconst Impl = require(\"./URLSearchParams-impl.js\");","\"use strict\";\nconst urlencoded = require(\"./urlencoded\");\n\nfunction stableSortBy(arr, compare) {\n  return arr\n    .map((item, index) => ({ item, index }))\n    .sort((a, b) => compare(a.item, b.item) || a.index - b.index)\n    .map(({ item }) => item);\n}\n\nexports.implementation = class URLSearchParamsImpl {\n  constructor(globalObject, constructorArgs, { doNotStripQMark = false }) {\n    let init = constructorArgs[0];\n    this._list = [];\n    this._url = null;\n\n    if (!doNotStripQMark && typeof init === \"string\" && init[0] === \"?\") {\n      init = init.slice(1);\n    }\n\n    if (Array.isArray(init)) {\n      for (const pair of init) {\n        if (pair.length !== 2) {\n          throw new TypeError(\"Failed to construct 'URLSearchParams': parameter 1 sequence's element does not \" +\n                              \"contain exactly two elements.\");\n        }\n        this._list.push([pair[0], pair[1]]);\n      }\n    } else if (typeof init === \"object\" && Object.getPrototypeOf(init) === null) {\n      for (const name of Object.keys(init)) {\n        const value = init[name];\n        this._list.push([name, value]);\n      }\n    } else {\n      this._list = urlencoded.parseUrlencoded(init);\n    }\n  }\n\n  _updateSteps() {\n    if (this._url !== null) {\n      let query = urlencoded.serializeUrlencoded(this._list);\n      if (query === \"\") {\n        query = null;\n      }\n      this._url._url.query = query;\n    }\n  }\n\n  append(name, value) {\n    this._list.push([name, value]);\n    this._updateSteps();\n  }\n\n  delete(name) {\n    let i = 0;\n    while (i < this._list.length) {\n      if (this._list[i][0] === name) {\n        this._list.splice(i, 1);\n      } else {\n        i++;\n      }\n    }\n    this._updateSteps();\n  }\n\n  get(name) {\n    for (const tuple of this._list) {\n      if (tuple[0] === name) {\n        return tuple[1];\n      }\n    }\n    return null;\n  }\n\n  getAll(name) {\n    const output = [];\n    for (const tuple of this._list) {\n      if (tuple[0] === name) {\n        output.push(tuple[1]);\n      }\n    }\n    return output;\n  }\n\n  has(name) {\n    for (const tuple of this._list) {\n      if (tuple[0] === name) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  set(name, value) {\n    let found = false;\n    let i = 0;\n    while (i < this._list.length) {\n      if (this._list[i][0] === name) {\n        if (found) {\n          this._list.splice(i, 1);\n        } else {\n          found = true;\n          this._list[i][1] = value;\n          i++;\n        }\n      } else {\n        i++;\n      }\n    }\n    if (!found) {\n      this._list.push([name, value]);\n    }\n    this._updateSteps();\n  }\n\n  sort() {\n    this._list = stableSortBy(this._list, (a, b) => a[0] > b[0]);\n    this._updateSteps();\n  }\n\n  [Symbol.iterator]() {\n    return this._list[Symbol.iterator]();\n  }\n\n  toString() {\n    return urlencoded.serializeUrlencoded(this._list);\n  }\n};\n","// Copyright 2015-present 650 Industries. All rights reserved.\n\nimport { getBundleUrl } from '../utils/getBundleUrl';\n\n/**\n * Registry to handle import.meta functionality for React Native environment\n * Similar to how it works in the web, but adapted for the RN context\n * https://github.com/wintercg/import-meta-registry\n */\nexport const ImportMetaRegistry = {\n  get url() {\n    return getBundleUrl();\n  },\n};\n","// Copyright 2015-present 650 Industries. All rights reserved.\n\n/// <reference path=\"../ts-declarations/react-native.d.ts\" />\n\nimport SourceCode from 'react-native/Libraries/NativeModules/specs/NativeSourceCode';\n\nexport function getBundleUrl(): string | null {\n  let scriptURL = SourceCode.getConstants().scriptURL;\n  if (scriptURL == null) {\n    return null;\n  }\n  if (scriptURL.startsWith('/')) {\n    scriptURL = `file://${scriptURL}`;\n  }\n  const url = new URL(scriptURL);\n  return url.toString();\n}\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeSourceCode';\nimport NativeSourceCode from '../../../src/private/specs_DEPRECATED/modules/NativeSourceCode';\n\nexport default NativeSourceCode;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type SourceCodeConstants = {\n  scriptURL: string,\n};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => SourceCodeConstants;\n}\n\nconst NativeModule = TurboModuleRegistry.getEnforcing<Spec>('SourceCode');\nlet constants = null;\n\nconst NativeSourceCode = {\n  getConstants(): SourceCodeConstants {\n    if (constants == null) {\n      constants = NativeModule.getConstants();\n    }\n\n    return constants;\n  },\n};\n\nexport default NativeSourceCode;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from './RCTExport';\n\nimport invariant from 'invariant';\n\nconst NativeModules = require('../BatchedBridge/NativeModules').default;\n\nconst turboModuleProxy = global.__turboModuleProxy;\n\nfunction requireModule<T: TurboModule>(name: string): ?T {\n  if (turboModuleProxy != null) {\n    const module: ?T = turboModuleProxy(name);\n    if (module != null) {\n      return module;\n    }\n  }\n\n  if (\n    global.RN$Bridgeless !== true ||\n    global.RN$TurboInterop === true ||\n    global.RN$UnifiedNativeModuleProxy === true\n  ) {\n    const legacyModule: ?T = NativeModules[name];\n    if (legacyModule != null) {\n      return legacyModule;\n    }\n  }\n\n  return null;\n}\n\nexport function get<T: TurboModule>(name: string): ?T {\n  return requireModule<T>(name);\n}\n\nexport function getEnforcing<T: TurboModule>(name: string): T {\n  const module = requireModule<T>(name);\n  invariant(\n    module != null,\n    `TurboModuleRegistry.getEnforcing(...): '${name}' could not be found. ` +\n      'Verify that a module by this name is registered in the native binary.',\n  );\n  return module;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","/**\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {ExtendedError} from '../Core/ExtendedError';\n\nconst BatchedBridge = require('./BatchedBridge').default;\nconst invariant = require('invariant');\n\nexport type ModuleConfig = [\n  string /* name */,\n  ?{...} /* constants */,\n  ?$ReadOnlyArray<string> /* functions */,\n  ?$ReadOnlyArray<number> /* promise method IDs */,\n  ?$ReadOnlyArray<number> /* sync method IDs */,\n];\n\nexport type MethodType = 'async' | 'promise' | 'sync';\n\nfunction genModule(\n  config: ?ModuleConfig,\n  moduleID: number,\n): ?{\n  name: string,\n  module?: {...},\n  ...\n} {\n  if (!config) {\n    return null;\n  }\n\n  const [moduleName, constants, methods, promiseMethods, syncMethods] = config;\n  invariant(\n    !moduleName.startsWith('RCT') && !moduleName.startsWith('RK'),\n    \"Module name prefixes should've been stripped by the native side \" +\n      \"but wasn't for \" +\n      moduleName,\n  );\n\n  if (!constants && !methods) {\n    // Module contents will be filled in lazily later\n    return {name: moduleName};\n  }\n\n  const module: {[string]: mixed} = {};\n  methods &&\n    methods.forEach((methodName, methodID) => {\n      const isPromise =\n        (promiseMethods && arrayContains(promiseMethods, methodID)) || false;\n      const isSync =\n        (syncMethods && arrayContains(syncMethods, methodID)) || false;\n      invariant(\n        !isPromise || !isSync,\n        'Cannot have a method that is both async and a sync hook',\n      );\n      const methodType = isPromise ? 'promise' : isSync ? 'sync' : 'async';\n      module[methodName] = genMethod(moduleID, methodID, methodType);\n    });\n\n  // $FlowFixMe[unsafe-object-assign]\n  Object.assign(module, constants);\n\n  if (module.getConstants == null) {\n    module.getConstants = () => constants || Object.freeze({});\n  } else {\n    console.warn(\n      `Unable to define method 'getConstants()' on NativeModule '${moduleName}'. NativeModule '${moduleName}' already has a constant or method called 'getConstants'. Please remove it.`,\n    );\n  }\n\n  if (__DEV__) {\n    BatchedBridge.createDebugLookup(moduleID, moduleName, methods);\n  }\n\n  return {name: moduleName, module};\n}\n\n// export this method as a global so we can call it from native\nglobal.__fbGenNativeModule = genModule;\n\nfunction loadModule(name: string, moduleID: number): ?{...} {\n  invariant(\n    global.nativeRequireModuleConfig,\n    \"Can't lazily create module without nativeRequireModuleConfig\",\n  );\n  const config = global.nativeRequireModuleConfig(name);\n  const info = genModule(config, moduleID);\n  return info && info.module;\n}\n\nfunction genMethod(moduleID: number, methodID: number, type: MethodType) {\n  let fn = null;\n  if (type === 'promise') {\n    fn = function promiseMethodWrapper(...args: Array<mixed>) {\n      // In case we reject, capture a useful stack trace here.\n      /* $FlowFixMe[class-object-subtyping] added when improving typing for\n       * this parameters */\n      // $FlowFixMe[incompatible-type]\n      const enqueueingFrameError: ExtendedError = new Error();\n      return new Promise((resolve, reject) => {\n        BatchedBridge.enqueueNativeCall(\n          moduleID,\n          methodID,\n          args,\n          data => resolve(data),\n          errorData =>\n            reject(\n              updateErrorWithErrorData(\n                (errorData: $FlowFixMe),\n                enqueueingFrameError,\n              ),\n            ),\n        );\n      });\n    };\n  } else {\n    fn = function nonPromiseMethodWrapper(...args: Array<mixed>) {\n      const lastArg = args.length > 0 ? args[args.length - 1] : null;\n      const secondLastArg = args.length > 1 ? args[args.length - 2] : null;\n      const hasSuccessCallback = typeof lastArg === 'function';\n      const hasErrorCallback = typeof secondLastArg === 'function';\n      hasErrorCallback &&\n        invariant(\n          hasSuccessCallback,\n          'Cannot have a non-function arg after a function arg.',\n        );\n      // $FlowFixMe[incompatible-type]\n      const onSuccess: ?(mixed) => void = hasSuccessCallback ? lastArg : null;\n      // $FlowFixMe[incompatible-type]\n      const onFail: ?(mixed) => void = hasErrorCallback ? secondLastArg : null;\n      // $FlowFixMe[unsafe-addition]\n      const callbackCount = hasSuccessCallback + hasErrorCallback;\n      const newArgs = args.slice(0, args.length - callbackCount);\n      if (type === 'sync') {\n        return BatchedBridge.callNativeSyncHook(\n          moduleID,\n          methodID,\n          newArgs,\n          onFail,\n          onSuccess,\n        );\n      } else {\n        BatchedBridge.enqueueNativeCall(\n          moduleID,\n          methodID,\n          newArgs,\n          onFail,\n          onSuccess,\n        );\n      }\n    };\n  }\n  // $FlowFixMe[prop-missing]\n  fn.type = type;\n  return fn;\n}\n\nfunction arrayContains<T>(array: $ReadOnlyArray<T>, value: T): boolean {\n  return array.indexOf(value) !== -1;\n}\n\nfunction updateErrorWithErrorData(\n  errorData: {message: string, ...},\n  error: ExtendedError,\n): ExtendedError {\n  /* $FlowFixMe[class-object-subtyping] added when improving typing for this\n   * parameters */\n  // $FlowFixMe[incompatible-return]\n  // $FlowFixMe[unsafe-object-assign]\n  return Object.assign(error, errorData || {});\n}\n\n/* $FlowFixMe[unclear-type] unclear type of NativeModules */\nlet NativeModules: {[moduleName: string]: any, ...} = {};\nif (global.nativeModuleProxy) {\n  NativeModules = global.nativeModuleProxy;\n} else {\n  const bridgeConfig = global.__fbBatchedBridgeConfig;\n  invariant(\n    bridgeConfig,\n    '__fbBatchedBridgeConfig is not set, cannot invoke native modules',\n  );\n\n  const defineLazyObjectProperty =\n    require('../Utilities/defineLazyObjectProperty').default;\n  (bridgeConfig.remoteModuleConfig || []).forEach(\n    (config: ModuleConfig, moduleID: number) => {\n      // Initially this config will only contain the module name when running in JSC. The actual\n      // configuration of the module will be lazily loaded.\n      const info = genModule(config, moduleID);\n      if (!info) {\n        return;\n      }\n\n      if (info.module) {\n        NativeModules[info.name] = info.module;\n      }\n      // If there's no module config, define a lazy getter\n      else {\n        defineLazyObjectProperty(NativeModules, info.name, {\n          get: () => loadModule(info.name, moduleID),\n        });\n      }\n    },\n  );\n}\n\nexport default NativeModules;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport typeof MessageQueueT from './MessageQueue';\n\nconst MessageQueue: MessageQueueT = require('./MessageQueue').default;\n\nconst BatchedBridge: MessageQueue = new MessageQueue();\n\n// Wire up the batched bridge on the global object so that we can call into it.\n// Ideally, this would be the inverse relationship. I.e. the native environment\n// provides this global directly with its script embedded. Then this module\n// would export it. A possible fix would be to trim the dependencies in\n// MessageQueue to its minimal features and embed that in the native runtime.\n\nObject.defineProperty(global, '__fbBatchedBridge', {\n  configurable: true,\n  value: BatchedBridge,\n});\n\nexport default BatchedBridge;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst Systrace = require('../Performance/Systrace');\nconst deepFreezeAndThrowOnMutationInDev =\n  require('../Utilities/deepFreezeAndThrowOnMutationInDev').default;\nconst stringifySafe = require('../Utilities/stringifySafe').default;\nconst warnOnce = require('../Utilities/warnOnce').default;\nconst ErrorUtils = require('../vendor/core/ErrorUtils').default;\nconst invariant = require('invariant');\n\nexport type SpyData = {\n  type: number,\n  module: ?string,\n  method: string | number,\n  args: mixed[],\n  ...\n};\n\nconst TO_JS = 0;\nconst TO_NATIVE = 1;\n\nconst MODULE_IDS = 0;\nconst METHOD_IDS = 1;\nconst PARAMS = 2;\nconst MIN_TIME_BETWEEN_FLUSHES_MS = 5;\n\n// eslint-disable-next-line no-bitwise\nconst TRACE_TAG_REACT = 1 << 13;\n\nconst DEBUG_INFO_LIMIT = 32;\n\nclass MessageQueue {\n  _lazyCallableModules: {[key: string]: (void) => {...}, ...};\n  _queue: [number[], number[], mixed[], number];\n  _successCallbacks: Map<number, ?(...mixed[]) => void>;\n  _failureCallbacks: Map<number, ?(...mixed[]) => void>;\n  _callID: number;\n  _lastFlush: number;\n  _eventLoopStartTime: number;\n  _reactNativeMicrotasksCallback: ?() => void;\n\n  _debugInfo: {[number]: [number, number], ...};\n  _remoteModuleTable: {[number]: string, ...};\n  _remoteMethodTable: {[number]: $ReadOnlyArray<string>, ...};\n\n  __spy: ?(data: SpyData) => void;\n\n  constructor() {\n    this._lazyCallableModules = {};\n    this._queue = [[], [], [], 0];\n    this._successCallbacks = new Map();\n    this._failureCallbacks = new Map();\n    this._callID = 0;\n    this._lastFlush = 0;\n    this._eventLoopStartTime = Date.now();\n    this._reactNativeMicrotasksCallback = null;\n\n    if (__DEV__) {\n      this._debugInfo = {};\n      this._remoteModuleTable = {};\n      this._remoteMethodTable = {};\n    }\n\n    // $FlowFixMe[cannot-write]\n    this.callFunctionReturnFlushedQueue =\n      // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n      this.callFunctionReturnFlushedQueue.bind(this);\n    // $FlowFixMe[cannot-write]\n    // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n    this.flushedQueue = this.flushedQueue.bind(this);\n\n    // $FlowFixMe[cannot-write]\n    this.invokeCallbackAndReturnFlushedQueue =\n      // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n      this.invokeCallbackAndReturnFlushedQueue.bind(this);\n  }\n\n  /**\n   * Public APIs\n   */\n\n  static spy(spyOrToggle: boolean | ((data: SpyData) => void)) {\n    if (spyOrToggle === true) {\n      MessageQueue.prototype.__spy = info => {\n        console.log(\n          `${info.type === TO_JS ? 'N->JS' : 'JS->N'} : ` +\n            `${info.module != null ? info.module + '.' : ''}${info.method}` +\n            `(${JSON.stringify(info.args)})`,\n        );\n      };\n    } else if (spyOrToggle === false) {\n      MessageQueue.prototype.__spy = null;\n    } else {\n      MessageQueue.prototype.__spy = spyOrToggle;\n    }\n  }\n\n  callFunctionReturnFlushedQueue(\n    module: string,\n    method: string,\n    args: mixed[],\n  ): null | [Array<number>, Array<number>, Array<mixed>, number] {\n    this.__guard(() => {\n      this.__callFunction(module, method, args);\n    });\n\n    return this.flushedQueue();\n  }\n\n  invokeCallbackAndReturnFlushedQueue(\n    cbID: number,\n    args: mixed[],\n  ): null | [Array<number>, Array<number>, Array<mixed>, number] {\n    this.__guard(() => {\n      this.__invokeCallback(cbID, args);\n    });\n\n    return this.flushedQueue();\n  }\n\n  flushedQueue(): null | [Array<number>, Array<number>, Array<mixed>, number] {\n    this.__guard(() => {\n      this.__callReactNativeMicrotasks();\n    });\n\n    const queue = this._queue;\n    this._queue = [[], [], [], this._callID];\n    return queue[0].length ? queue : null;\n  }\n\n  getEventLoopRunningTime(): number {\n    return Date.now() - this._eventLoopStartTime;\n  }\n\n  registerCallableModule(name: string, module: {...}) {\n    this._lazyCallableModules[name] = () => module;\n  }\n\n  registerLazyCallableModule(name: string, factory: void => interface {}) {\n    let module: interface {};\n    let getValue: ?(void) => interface {} = factory;\n    this._lazyCallableModules[name] = () => {\n      if (getValue) {\n        module = getValue();\n        getValue = null;\n      }\n      /* $FlowFixMe[class-object-subtyping] added when improving typing for\n       * this parameters */\n      return module;\n    };\n  }\n\n  getCallableModule(name: string): {...} | null {\n    const getValue = this._lazyCallableModules[name];\n    return getValue ? getValue() : null;\n  }\n\n  callNativeSyncHook(\n    moduleID: number,\n    methodID: number,\n    params: mixed[],\n    onFail: ?(...mixed[]) => void,\n    onSucc: ?(...mixed[]) => void,\n  ): mixed {\n    if (__DEV__) {\n      invariant(\n        global.nativeCallSyncHook,\n        'Calling synchronous methods on native ' +\n          'modules is not supported in Chrome.\\n\\n Consider providing alternative ' +\n          'methods to expose this method in debug mode, e.g. by exposing constants ' +\n          'ahead-of-time.',\n      );\n    }\n    this.processCallbacks(moduleID, methodID, params, onFail, onSucc);\n    return global.nativeCallSyncHook(moduleID, methodID, params);\n  }\n\n  processCallbacks(\n    moduleID: number,\n    methodID: number,\n    params: mixed[],\n    onFail: ?(...mixed[]) => void,\n    onSucc: ?(...mixed[]) => void,\n  ): void {\n    if (onFail || onSucc) {\n      if (__DEV__) {\n        this._debugInfo[this._callID] = [moduleID, methodID];\n        if (this._callID > DEBUG_INFO_LIMIT) {\n          delete this._debugInfo[this._callID - DEBUG_INFO_LIMIT];\n        }\n        if (this._successCallbacks.size > 500) {\n          const info: {[number]: {method: string, module: string}} = {};\n          this._successCallbacks.forEach((_, callID) => {\n            const debug = this._debugInfo[callID];\n            const module = debug && this._remoteModuleTable[debug[0]];\n            const method = debug && this._remoteMethodTable[debug[0]][debug[1]];\n            info[callID] = {module, method};\n          });\n          warnOnce(\n            'excessive-number-of-pending-callbacks',\n            `Excessive number of pending callbacks: ${\n              this._successCallbacks.size\n            }. Some pending callbacks that might have leaked by never being called from native code: ${stringifySafe(\n              info,\n            )}`,\n          );\n        }\n      }\n      // Encode callIDs into pairs of callback identifiers by shifting left and using the rightmost bit\n      // to indicate fail (0) or success (1)\n      // eslint-disable-next-line no-bitwise\n      onFail && params.push(this._callID << 1);\n      // eslint-disable-next-line no-bitwise\n      onSucc && params.push((this._callID << 1) | 1);\n      this._successCallbacks.set(this._callID, onSucc);\n      this._failureCallbacks.set(this._callID, onFail);\n    }\n    if (__DEV__) {\n      global.nativeTraceBeginAsyncFlow &&\n        global.nativeTraceBeginAsyncFlow(\n          TRACE_TAG_REACT,\n          'native',\n          this._callID,\n        );\n    }\n    this._callID++;\n  }\n\n  enqueueNativeCall(\n    moduleID: number,\n    methodID: number,\n    params: mixed[],\n    onFail: ?(...mixed[]) => void,\n    onSucc: ?(...mixed[]) => void,\n  ): void {\n    this.processCallbacks(moduleID, methodID, params, onFail, onSucc);\n\n    this._queue[MODULE_IDS].push(moduleID);\n    this._queue[METHOD_IDS].push(methodID);\n\n    if (__DEV__) {\n      // Validate that parameters passed over the bridge are\n      // folly-convertible.  As a special case, if a prop value is a\n      // function it is permitted here, and special-cased in the\n      // conversion.\n      const isValidArgument = (val: mixed): boolean => {\n        switch (typeof val) {\n          case 'undefined':\n          case 'boolean':\n          case 'string':\n            return true;\n          case 'number':\n            return isFinite(val);\n          case 'object':\n            if (val == null) {\n              return true;\n            }\n\n            if (Array.isArray(val)) {\n              return val.every(isValidArgument);\n            }\n\n            for (const k in val) {\n              if (typeof val[k] !== 'function' && !isValidArgument(val[k])) {\n                return false;\n              }\n            }\n\n            return true;\n          case 'function':\n            return false;\n          default:\n            return false;\n        }\n      };\n\n      // Replacement allows normally non-JSON-convertible values to be\n      // seen.  There is ambiguity with string values, but in context,\n      // it should at least be a strong hint.\n      const replacer = (key: string, val: $FlowFixMe) => {\n        const t = typeof val;\n        if (t === 'function') {\n          return '<<Function ' + val.name + '>>';\n        } else if (t === 'number' && !isFinite(val)) {\n          return '<<' + val.toString() + '>>';\n        } else {\n          return val;\n        }\n      };\n\n      // Note that JSON.stringify\n      invariant(\n        isValidArgument(params),\n        '%s is not usable as a native method argument',\n        JSON.stringify(params, replacer),\n      );\n\n      // The params object should not be mutated after being queued\n      deepFreezeAndThrowOnMutationInDev(params);\n    }\n    this._queue[PARAMS].push(params);\n\n    const now = Date.now();\n    if (\n      global.nativeFlushQueueImmediate &&\n      now - this._lastFlush >= MIN_TIME_BETWEEN_FLUSHES_MS\n    ) {\n      const queue = this._queue;\n      this._queue = [[], [], [], this._callID];\n      this._lastFlush = now;\n      global.nativeFlushQueueImmediate(queue);\n    }\n    Systrace.counterEvent('pending_js_to_native_queue', this._queue[0].length);\n    if (__DEV__ && this.__spy && isFinite(moduleID)) {\n      // $FlowFixMe[not-a-function]\n      this.__spy({\n        type: TO_NATIVE,\n        module: this._remoteModuleTable[moduleID],\n        method: this._remoteMethodTable[moduleID][methodID],\n        args: params,\n      });\n    } else if (this.__spy) {\n      this.__spy({\n        type: TO_NATIVE,\n        module: moduleID + '',\n        method: methodID,\n        args: params,\n      });\n    }\n  }\n\n  createDebugLookup(\n    moduleID: number,\n    name: string,\n    methods: ?$ReadOnlyArray<string>,\n  ) {\n    if (__DEV__) {\n      this._remoteModuleTable[moduleID] = name;\n      this._remoteMethodTable[moduleID] = methods || [];\n    }\n  }\n\n  // For JSTimers to register its callback. Otherwise a circular dependency\n  // between modules is introduced. Note that only one callback may be\n  // registered at a time.\n  setReactNativeMicrotasksCallback(fn: () => void) {\n    this._reactNativeMicrotasksCallback = fn;\n  }\n\n  /**\n   * Private methods\n   */\n\n  __guard(fn: () => void) {\n    if (this.__shouldPauseOnThrow()) {\n      fn();\n    } else {\n      try {\n        fn();\n      } catch (error) {\n        ErrorUtils.reportFatalError(error);\n      }\n    }\n  }\n\n  // MessageQueue installs a global handler to catch all exceptions where JS users can register their own behavior\n  // This handler makes all exceptions to be propagated from inside MessageQueue rather than by the VM at their origin\n  // This makes stacktraces to be placed at MessageQueue rather than at where they were launched\n  // The parameter DebuggerInternal.shouldPauseOnThrow is used to check before catching all exceptions and\n  // can be configured by the VM or any Inspector\n  __shouldPauseOnThrow(): boolean {\n    return (\n      // $FlowFixMe[cannot-resolve-name]\n      typeof DebuggerInternal !== 'undefined' &&\n      // $FlowFixMe[cannot-resolve-name]\n      DebuggerInternal.shouldPauseOnThrow === true\n    );\n  }\n\n  __callReactNativeMicrotasks() {\n    Systrace.beginEvent('JSTimers.callReactNativeMicrotasks()');\n    try {\n      if (this._reactNativeMicrotasksCallback != null) {\n        this._reactNativeMicrotasksCallback();\n      }\n    } finally {\n      Systrace.endEvent();\n    }\n  }\n\n  __callFunction(module: string, method: string, args: mixed[]): void {\n    this._lastFlush = Date.now();\n    this._eventLoopStartTime = this._lastFlush;\n    if (__DEV__ || this.__spy) {\n      Systrace.beginEvent(`${module}.${method}(${stringifySafe(args)})`);\n    } else {\n      Systrace.beginEvent(`${module}.${method}(...)`);\n    }\n    try {\n      if (this.__spy) {\n        this.__spy({type: TO_JS, module, method, args});\n      }\n      const moduleMethods = this.getCallableModule(module);\n      if (!moduleMethods) {\n        const callableModuleNames = Object.keys(this._lazyCallableModules);\n        const n = callableModuleNames.length;\n        const callableModuleNameList = callableModuleNames.join(', ');\n\n        // TODO(T122225939): Remove after investigation: Why are we getting to this line in bridgeless mode?\n        const isBridgelessMode =\n          global.RN$Bridgeless === true ? 'true' : 'false';\n        invariant(\n          false,\n          `Failed to call into JavaScript module method ${module}.${method}(). Module has not been registered as callable. Bridgeless Mode: ${isBridgelessMode}. Registered callable JavaScript modules (n = ${n}): ${callableModuleNameList}.\n          A frequent cause of the error is that the application entry file path is incorrect. This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.`,\n        );\n      }\n      // $FlowFixMe[invalid-computed-prop]\n      if (!moduleMethods[method]) {\n        invariant(\n          false,\n          `Failed to call into JavaScript module method ${module}.${method}(). Module exists, but the method is undefined.`,\n        );\n      }\n      moduleMethods[method].apply(moduleMethods, args);\n    } finally {\n      Systrace.endEvent();\n    }\n  }\n\n  __invokeCallback(cbID: number, args: mixed[]): void {\n    this._lastFlush = Date.now();\n    this._eventLoopStartTime = this._lastFlush;\n\n    // The rightmost bit of cbID indicates fail (0) or success (1), the other bits are the callID shifted left.\n    // eslint-disable-next-line no-bitwise\n    const callID = cbID >>> 1;\n    // eslint-disable-next-line no-bitwise\n    const isSuccess = cbID & 1;\n    const callback = isSuccess\n      ? this._successCallbacks.get(callID)\n      : this._failureCallbacks.get(callID);\n\n    if (__DEV__) {\n      const debug = this._debugInfo[callID];\n      const module = debug && this._remoteModuleTable[debug[0]];\n      const method = debug && this._remoteMethodTable[debug[0]][debug[1]];\n      invariant(\n        callback,\n        `No callback found with cbID ${cbID} and callID ${callID} for ` +\n          (method\n            ? ` ${module}.${method} - most likely the callback was already invoked`\n            : `module ${module || '<unknown>'}`) +\n          `. Args: '${stringifySafe(args)}'`,\n      );\n      const profileName = debug\n        ? '<callback for ' + module + '.' + method + '>'\n        : cbID;\n      if (callback && this.__spy) {\n        this.__spy({type: TO_JS, module: null, method: profileName, args});\n      }\n      Systrace.beginEvent(\n        `MessageQueue.invokeCallback(${profileName}, ${stringifySafe(args)})`,\n      );\n    }\n\n    try {\n      if (!callback) {\n        return;\n      }\n\n      this._successCallbacks.delete(callID);\n      this._failureCallbacks.delete(callID);\n      callback(...args);\n    } finally {\n      if (__DEV__) {\n        Systrace.endEvent();\n      }\n    }\n  }\n}\n\nexport default MessageQueue;\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 * @flow strict\n * @format\n */\n\nimport typeof * as SystraceModule from './Systrace';\n\nconst TRACE_TAG_REACT = 1 << 13; // eslint-disable-line no-bitwise\n\nlet _asyncCookie = 0;\n\ntype EventName = string | (() => string);\ntype EventArgs = ?{[string]: string};\n\n/**\n * Indicates if the application is currently being traced.\n *\n * Calling methods on this module when the application isn't being traced is\n * cheap, but this method can be used to avoid computing expensive values for\n * those functions.\n *\n * @example\n * if (Systrace.isEnabled()) {\n *   const expensiveArgs = computeExpensiveArgs();\n *   Systrace.beginEvent('myEvent', expensiveArgs);\n * }\n */\nexport function isEnabled(): boolean {\n  return global.nativeTraceIsTracing\n    ? global.nativeTraceIsTracing(TRACE_TAG_REACT)\n    : Boolean(global.__RCTProfileIsProfiling);\n}\n\n/**\n * @deprecated This function is now a no-op but it's left for backwards\n * compatibility. `isEnabled` will now synchronously check if we're actively\n * profiling or not. This is necessary because we don't have callbacks to know\n * when profiling has started/stopped on Android APIs.\n */\nexport function setEnabled(_doEnable: boolean): void {}\n\n/**\n * Marks the start of a synchronous event that should end in the same stack\n * frame. The end of this event should be marked using the `endEvent` function.\n */\nexport function beginEvent(eventName: EventName, args?: EventArgs): void {\n  if (isEnabled()) {\n    const eventNameString =\n      typeof eventName === 'function' ? eventName() : eventName;\n    global.nativeTraceBeginSection(TRACE_TAG_REACT, eventNameString, args);\n  }\n}\n\n/**\n * Marks the end of a synchronous event started in the same stack frame.\n */\nexport function endEvent(args?: EventArgs): void {\n  if (isEnabled()) {\n    global.nativeTraceEndSection(TRACE_TAG_REACT, args);\n  }\n}\n\n/**\n * Marks the start of a potentially asynchronous event. The end of this event\n * should be marked calling the `endAsyncEvent` function with the cookie\n * returned by this function.\n */\nexport function beginAsyncEvent(\n  eventName: EventName,\n  args?: EventArgs,\n): number {\n  const cookie = _asyncCookie;\n  if (isEnabled()) {\n    _asyncCookie++;\n    const eventNameString =\n      typeof eventName === 'function' ? eventName() : eventName;\n    global.nativeTraceBeginAsyncSection(\n      TRACE_TAG_REACT,\n      eventNameString,\n      cookie,\n      args,\n    );\n  }\n  return cookie;\n}\n\n/**\n * Marks the end of a potentially asynchronous event, which was started with\n * the given cookie.\n */\nexport function endAsyncEvent(\n  eventName: EventName,\n  cookie: number,\n  args?: EventArgs,\n): void {\n  if (isEnabled()) {\n    const eventNameString =\n      typeof eventName === 'function' ? eventName() : eventName;\n    global.nativeTraceEndAsyncSection(\n      TRACE_TAG_REACT,\n      eventNameString,\n      cookie,\n      args,\n    );\n  }\n}\n\n/**\n * Registers a new value for a counter event.\n */\nexport function counterEvent(eventName: EventName, value: number): void {\n  if (isEnabled()) {\n    const eventNameString =\n      typeof eventName === 'function' ? eventName() : eventName;\n    global.nativeTraceCounter &&\n      global.nativeTraceCounter(TRACE_TAG_REACT, eventNameString, value);\n  }\n}\n\nif (__DEV__) {\n  const Systrace: SystraceModule = {\n    isEnabled,\n    setEnabled,\n    beginEvent,\n    endEvent,\n    beginAsyncEvent,\n    endAsyncEvent,\n    counterEvent,\n  };\n\n  // The metro require polyfill can not have dependencies (true for all polyfills).\n  // Ensure that `Systrace` is available in polyfill by exposing it globally.\n  global[(global.__METRO_GLOBAL_PREFIX__ || '') + '__SYSTRACE'] = Systrace;\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * If your application is accepting different values for the same field over\n * time and is doing a diff on them, you can either (1) create a copy or\n * (2) ensure that those values are not mutated behind two passes.\n * This function helps you with (2) by freezing the object and throwing if\n * the user subsequently modifies the value.\n *\n * There are two caveats with this function:\n *   - If the call site is not in strict mode, it will only throw when\n *     mutating existing fields, adding a new one\n *     will unfortunately fail silently :(\n *   - If the object is already frozen or sealed, it will not continue the\n *     deep traversal and will leave leaf nodes unfrozen.\n *\n * Freezing the object and adding the throw mechanism is expensive and will\n * only be used in DEV.\n */\nfunction deepFreezeAndThrowOnMutationInDev<T: {...} | Array<mixed>>(\n  object: T,\n): T {\n  if (__DEV__) {\n    if (\n      typeof object !== 'object' ||\n      object === null ||\n      Object.isFrozen(object) ||\n      Object.isSealed(object)\n    ) {\n      return object;\n    }\n\n    // $FlowFixMe[not-an-object] `object` can be an array, but Object.keys works with arrays too\n    const keys = Object.keys((object: {...} | Array<mixed>));\n    // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n    const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      if (hasOwnProperty.call(object, key)) {\n        Object.defineProperty(object, key, {\n          get: identity.bind(null, object[key]),\n        });\n        Object.defineProperty(object, key, {\n          set: throwOnImmutableMutation.bind(null, key),\n        });\n      }\n    }\n\n    Object.freeze(object);\n    Object.seal(object);\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      if (hasOwnProperty.call(object, key)) {\n        deepFreezeAndThrowOnMutationInDev(object[key]);\n      }\n    }\n  }\n  return object;\n}\n\n/* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's\n * LTI update could not be added via codemod */\nfunction throwOnImmutableMutation(key: empty, value) {\n  throw Error(\n    'You attempted to set the key `' +\n      key +\n      '` with the value `' +\n      JSON.stringify(value) +\n      '` on an object that is meant to be immutable ' +\n      'and has been frozen.',\n  );\n}\n\nfunction identity(value: mixed) {\n  return value;\n}\n\nexport default deepFreezeAndThrowOnMutationInDev;\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 * @flow strict\n * @format\n */\n\nimport invariant from 'invariant';\n\n/**\n * Tries to stringify with JSON.stringify and toString, but catches exceptions\n * (e.g. from circular objects) and always returns a string and never throws.\n */\nexport function createStringifySafeWithLimits(limits: {\n  maxDepth?: number,\n  maxStringLimit?: number,\n  maxArrayLimit?: number,\n  maxObjectKeysLimit?: number,\n}): mixed => string {\n  const {\n    maxDepth = Number.POSITIVE_INFINITY,\n    maxStringLimit = Number.POSITIVE_INFINITY,\n    maxArrayLimit = Number.POSITIVE_INFINITY,\n    maxObjectKeysLimit = Number.POSITIVE_INFINITY,\n  } = limits;\n  const stack: Array<mixed> = [];\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  function replacer(key: string, value: mixed): mixed {\n    while (stack.length && this !== stack[0]) {\n      stack.shift();\n    }\n\n    if (typeof value === 'string') {\n      const truncatedString = '...(truncated)...';\n      if (value.length > maxStringLimit + truncatedString.length) {\n        return value.substring(0, maxStringLimit) + truncatedString;\n      }\n      return value;\n    }\n    if (typeof value !== 'object' || value === null) {\n      return value;\n    }\n\n    let retval: mixed = value;\n    if (Array.isArray(value)) {\n      if (stack.length >= maxDepth) {\n        retval = `[ ... array with ${value.length} values ... ]`;\n      } else if (value.length > maxArrayLimit) {\n        retval = value\n          .slice(0, maxArrayLimit)\n          .concat([\n            `... extra ${value.length - maxArrayLimit} values truncated ...`,\n          ]);\n      }\n    } else {\n      // Add refinement after Array.isArray call.\n      invariant(typeof value === 'object', 'This was already found earlier');\n      let keys = Object.keys(value);\n      if (stack.length >= maxDepth) {\n        retval = `{ ... object with ${keys.length} keys ... }`;\n      } else if (keys.length > maxObjectKeysLimit) {\n        // Return a sample of the keys.\n        retval = ({}: {[string]: mixed});\n        for (let k of keys.slice(0, maxObjectKeysLimit)) {\n          retval[k] = value[k];\n        }\n        const truncatedKey = '...(truncated keys)...';\n        retval[truncatedKey] = keys.length - maxObjectKeysLimit;\n      }\n    }\n    stack.unshift(retval);\n    return retval;\n  }\n\n  return function stringifySafe(arg: mixed): string {\n    if (arg === undefined) {\n      return 'undefined';\n    } else if (arg === null) {\n      return 'null';\n    } else if (typeof arg === 'function') {\n      try {\n        return arg.toString();\n      } catch (e) {\n        return '[function unknown]';\n      }\n    } else if (arg instanceof Error) {\n      return arg.name + ': ' + arg.message;\n    } else {\n      // Perform a try catch, just in case the object has a circular\n      // reference or stringify throws for some other reason.\n      try {\n        const ret = JSON.stringify(arg, replacer);\n        if (ret === undefined) {\n          return '[\"' + typeof arg + '\" failed to stringify]';\n        }\n        return ret;\n      } catch (e) {\n        if (typeof arg.toString === 'function') {\n          try {\n            // $FlowFixMe[incompatible-use] : toString shouldn't take any arguments in general.\n            return arg.toString();\n          } catch (E) {}\n        }\n      }\n    }\n    return '[\"' + typeof arg + '\" failed to stringify]';\n  };\n}\n\nconst stringifySafe: mixed => string = createStringifySafeWithLimits({\n  maxDepth: 10,\n  maxStringLimit: 100,\n  maxArrayLimit: 50,\n  maxObjectKeysLimit: 50,\n});\n\nexport default stringifySafe;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst warnedKeys: {[string]: boolean, ...} = {};\n\n/**\n * A simple function that prints a warning message once per session.\n *\n * @param {string} key - The key used to ensure the message is printed once.\n *                       This should be unique to the callsite.\n * @param {string} message - The message to print\n */\nfunction warnOnce(key: string, message: string) {\n  if (warnedKeys[key]) {\n    return;\n  }\n\n  console.warn(message);\n\n  warnedKeys[key] = true;\n}\n\nexport default warnOnce;\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 * @flow strict\n * @format\n */\n\n// From @react-native/js-polyfills\ntype ErrorHandler = (error: mixed, isFatal: boolean) => void;\ntype Fn<Args: $ReadOnlyArray<mixed>, Return> = (...Args) => Return;\nexport type ErrorUtils = {\n  applyWithGuard<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    context?: mixed,\n    args?: ?TArgs,\n    unused_onError?: null,\n    unused_name?: ?string,\n  ): ?TOut,\n  applyWithGuardIfNeeded<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    context?: mixed,\n    args?: ?TArgs,\n  ): ?TOut,\n  getGlobalHandler(): ErrorHandler,\n  guard<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    name?: ?string,\n    context?: mixed,\n  ): ?(...TArgs) => ?TOut,\n  inGuard(): boolean,\n  reportError(error: mixed): void,\n  reportFatalError(error: mixed): void,\n  setGlobalHandler(fun: ErrorHandler): void,\n};\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n *\n * However, we still want to treat ErrorUtils as a module so that other modules\n * that use it aren't just using a global variable, so simply export the global\n * variable here. ErrorUtils is originally defined in a file named error-guard.js.\n */\nexport default global.ErrorUtils as ErrorUtils;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * Defines a lazily evaluated property on the supplied `object`.\n */\nfunction defineLazyObjectProperty<T>(\n  object: interface {},\n  name: string,\n  descriptor: {\n    get: () => T,\n    enumerable?: boolean,\n    writable?: boolean,\n    ...\n  },\n): void {\n  const {get} = descriptor;\n  const enumerable = descriptor.enumerable !== false;\n  const writable = descriptor.writable !== false;\n\n  let value;\n  let valueSet = false;\n  function getValue(): T {\n    // WORKAROUND: A weird infinite loop occurs where calling `getValue` calls\n    // `setValue` which calls `Object.defineProperty` which somehow triggers\n    // `getValue` again. Adding `valueSet` breaks this loop.\n    if (!valueSet) {\n      // Calling `get()` here can trigger an infinite loop if it fails to\n      // remove the getter on the property, which can happen when executing\n      // JS in a V8 context.  `valueSet = true` will break this loop, and\n      // sets the value of the property to undefined, until the code in `get()`\n      // finishes, at which point the property is set to the correct value.\n      valueSet = true;\n      setValue(get());\n    }\n    return value;\n  }\n  function setValue(newValue: T): void {\n    value = newValue;\n    valueSet = true;\n    Object.defineProperty(object, name, {\n      value: newValue,\n      configurable: true,\n      enumerable,\n      writable,\n    });\n  }\n\n  Object.defineProperty(object, name, {\n    get: getValue,\n    set: setValue,\n    configurable: true,\n    enumerable,\n  });\n}\n\nexport default defineLazyObjectProperty;\n","'use strict';\nconst {deserialize} = require('./deserialize.js');\nconst {serialize} = require('./serialize.js');\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nObject.defineProperty(exports, '__esModule', {value: true}).default = typeof structuredClone === \"function\" ?\n  /* c8 ignore start */\n  (any, options) => (\n    options && ('json' in options || 'lossy' in options) ?\n      deserialize(serialize(any, options)) : structuredClone(any)\n  ) :\n  (any, options) => deserialize(serialize(any, options));\n  /* c8 ignore stop */\n\nexports.deserialize = deserialize;\nexports.serialize = serialize;\n","'use strict';\nconst {\n  VOID, PRIMITIVE, ARRAY, OBJECT, DATE, REGEXP, MAP, SET, ERROR, BIGINT\n} = require('./types.js');\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n  const as = (out, index) => {\n    $.set(index, out);\n    return out;\n  };\n\n  const unpair = index => {\n    if ($.has(index))\n      return $.get(index);\n\n    const [type, value] = _[index];\n    switch (type) {\n      case PRIMITIVE:\n      case VOID:\n        return as(value, index);\n      case ARRAY: {\n        const arr = as([], index);\n        for (const index of value)\n          arr.push(unpair(index));\n        return arr;\n      }\n      case OBJECT: {\n        const object = as({}, index);\n        for (const [key, index] of value)\n          object[unpair(key)] = unpair(index);\n        return object;\n      }\n      case DATE:\n        return as(new Date(value), index);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as(new RegExp(source, flags), index);\n      }\n      case MAP: {\n        const map = as(new Map, index);\n        for (const [key, index] of value)\n          map.set(unpair(key), unpair(index));\n        return map;\n      }\n      case SET: {\n        const set = as(new Set, index);\n        for (const index of value)\n          set.add(unpair(index));\n        return set;\n      }\n      case ERROR: {\n        const {name, message} = value;\n        return as(new env[name](message), index);\n      }\n      case BIGINT:\n        return as(BigInt(value), index);\n      case 'BigInt':\n        return as(Object(BigInt(value)), index);\n      case 'ArrayBuffer':\n        return as(new Uint8Array(value).buffer, value);\n      case 'DataView': {\n        const { buffer } = new Uint8Array(value);\n        return as(new DataView(buffer), value);\n      }\n    }\n    return as(new env[type](value), index);\n  };\n\n  return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nconst deserialize = serialized => deserializer(new Map, serialized)(0);\nexports.deserialize = deserialize;\n","'use strict';\nconst VOID       = -1;\nexports.VOID = VOID;\nconst PRIMITIVE  = 0;\nexports.PRIMITIVE = PRIMITIVE;\nconst ARRAY      = 1;\nexports.ARRAY = ARRAY;\nconst OBJECT     = 2;\nexports.OBJECT = OBJECT;\nconst DATE       = 3;\nexports.DATE = DATE;\nconst REGEXP     = 4;\nexports.REGEXP = REGEXP;\nconst MAP        = 5;\nexports.MAP = MAP;\nconst SET        = 6;\nexports.SET = SET;\nconst ERROR      = 7;\nexports.ERROR = ERROR;\nconst BIGINT     = 8;\nexports.BIGINT = BIGINT;\n// export const SYMBOL = 9;\n","'use strict';\nconst {\n  VOID, PRIMITIVE, ARRAY, OBJECT, DATE, REGEXP, MAP, SET, ERROR, BIGINT\n} = require('./types.js');\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n  const type = typeof value;\n  if (type !== 'object' || !value)\n    return [PRIMITIVE, type];\n\n  const asString = toString.call(value).slice(8, -1);\n  switch (asString) {\n    case 'Array':\n      return [ARRAY, EMPTY];\n    case 'Object':\n      return [OBJECT, EMPTY];\n    case 'Date':\n      return [DATE, EMPTY];\n    case 'RegExp':\n      return [REGEXP, EMPTY];\n    case 'Map':\n      return [MAP, EMPTY];\n    case 'Set':\n      return [SET, EMPTY];\n    case 'DataView':\n      return [ARRAY, asString];\n  }\n\n  if (asString.includes('Array'))\n    return [ARRAY, asString];\n\n  if (asString.includes('Error'))\n    return [ERROR, asString];\n\n  return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n  TYPE === PRIMITIVE &&\n  (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n  const as = (out, value) => {\n    const index = _.push(out) - 1;\n    $.set(value, index);\n    return index;\n  };\n\n  const pair = value => {\n    if ($.has(value))\n      return $.get(value);\n\n    let [TYPE, type] = typeOf(value);\n    switch (TYPE) {\n      case PRIMITIVE: {\n        let entry = value;\n        switch (type) {\n          case 'bigint':\n            TYPE = BIGINT;\n            entry = value.toString();\n            break;\n          case 'function':\n          case 'symbol':\n            if (strict)\n              throw new TypeError('unable to serialize ' + type);\n            entry = null;\n            break;\n          case 'undefined':\n            return as([VOID], value);\n        }\n        return as([TYPE, entry], value);\n      }\n      case ARRAY: {\n        if (type) {\n          let spread = value;\n          if (type === 'DataView') {\n            spread = new Uint8Array(value.buffer);\n          }\n          else if (type === 'ArrayBuffer') {\n            spread = new Uint8Array(value);\n          }\n          return as([type, [...spread]], value);\n        }\n\n        const arr = [];\n        const index = as([TYPE, arr], value);\n        for (const entry of value)\n          arr.push(pair(entry));\n        return index;\n      }\n      case OBJECT: {\n        if (type) {\n          switch (type) {\n            case 'BigInt':\n              return as([type, value.toString()], value);\n            case 'Boolean':\n            case 'Number':\n            case 'String':\n              return as([type, value.valueOf()], value);\n          }\n        }\n\n        if (json && ('toJSON' in value))\n          return pair(value.toJSON());\n\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const key of keys(value)) {\n          if (strict || !shouldSkip(typeOf(value[key])))\n            entries.push([pair(key), pair(value[key])]);\n        }\n        return index;\n      }\n      case DATE:\n        return as([TYPE, value.toISOString()], value);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as([TYPE, {source, flags}], value);\n      }\n      case MAP: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const [key, entry] of value) {\n          if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n            entries.push([pair(key), pair(entry)]);\n        }\n        return index;\n      }\n      case SET: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const entry of value) {\n          if (strict || !shouldSkip(typeOf(entry)))\n            entries.push(pair(entry));\n        }\n        return index;\n      }\n    }\n\n    const {message} = value;\n    return as([TYPE, {name: type, message}], value);\n  };\n\n  return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n *  if `true`, will not throw errors on incompatible types, and behave more\n *  like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n const serialize = (value, {json, lossy} = {}) => {\n  const _ = [];\n  return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\nexports.serialize = serialize;\n","/**\n * Copyright © 2024 650 Industries.\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 */\nimport { buildAsyncRequire } from './buildAsyncRequire';\n\n// @ts-ignore: ignore the global which may not always be defined in jest environments.\nglobal[`${global.__METRO_GLOBAL_PREFIX__ ?? ''}__loadBundleAsync`] = buildAsyncRequire();\n","/**\n * Copyright © 2022 650 Industries.\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\nimport { loadBundleAsync } from './loadBundle';\n\n/**\n * Must satisfy the requirements of the Metro bundler.\n * https://github.com/react-native-community/discussions-and-proposals/blob/main/proposals/0605-lazy-bundling.md#__loadbundleasync-in-metro\n */\ntype AsyncRequire = (path: string) => Promise<void>;\n\n/** Create an `loadBundleAsync` function in the expected shape for Metro bundler. */\nexport function buildAsyncRequire(): AsyncRequire {\n  const cache = new Map<string, Promise<void>>();\n\n  return async function universal_loadBundleAsync(path: string): Promise<void> {\n    if (cache.has(path)) {\n      return cache.get(path)!;\n    }\n\n    const promise = loadBundleAsync(path).catch((error) => {\n      cache.delete(path);\n      throw error;\n    });\n\n    cache.set(path, promise);\n\n    return promise;\n  };\n}\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright © 2022 650 Industries.\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 */\nimport { buildUrlForBundle } from './buildUrlForBundle';\nimport { fetchThenEvalAsync } from './fetchThenEval';\n\n/**\n * Load a bundle for a URL using fetch + eval on native and script tag injection on web.\n *\n * @param bundlePath Given a statement like `import('./Bacon')` `bundlePath` would be `Bacon.bundle?params=from-metro`.\n */\nexport async function loadBundleAsync(bundlePath: string): Promise<void> {\n  const requestUrl = buildUrlForBundle(bundlePath);\n\n  if (process.env.NODE_ENV === 'production') {\n    return fetchThenEvalAsync(requestUrl);\n  } else {\n    return fetchThenEvalAsync(requestUrl).then(() => {\n      const HMRClient = require('./hmr').default as typeof import('./hmr').default;\n      HMRClient.registerBundle(requestUrl);\n    });\n  }\n}\n","/**\n * Copyright © 2022 650 Industries.\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\nexport function buildUrlForBundle(bundlePath: string): string {\n  if (bundlePath.match(/^https?:\\/\\//)) {\n    return bundlePath;\n  }\n\n  if (typeof location !== 'undefined') {\n    return joinComponents(location.origin, bundlePath);\n  }\n  if (process.env.NODE_ENV === 'production') {\n    throw new Error(\n      'Unable to determine the production URL where additional JavaScript chunks are hosted because the global \"location\" variable is not defined.'\n    );\n  } else {\n    const getDevServer = require('./getDevServer')\n      .default as typeof import('./getDevServer').default;\n\n    const { url: serverUrl } = getDevServer();\n\n    return joinComponents(serverUrl, bundlePath);\n  }\n}\n\nfunction joinComponents(prefix: string, suffix: string): string {\n  return prefix.replace(/\\/+$/, '') + '/' + suffix.replace(/^\\/+/, '');\n}\n","export { fetchThenEvalAsync } from './fetchThenEvalJs';\n","/**\n * Copyright © 2022 650 Industries.\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 */\nimport { MetroServerError } from './errors';\nimport { fetchAsync } from './fetchAsync';\n/**\n * Load a bundle for a URL using fetch + eval on native and script tag injection on web.\n *\n * @param url Given a statement like `import('./Bacon')` `bundlePath` would be `Bacon`.\n */\nexport function fetchThenEvalAsync(url: string): Promise<void> {\n  return fetchAsync(url).then(({ body, status, headers }) => {\n    if (\n      headers?.has?.('Content-Type') != null &&\n      headers.get('Content-Type')!.includes('application/json')\n    ) {\n      // Errors are returned as JSON.\n      throw new Error(JSON.parse(body).message || `Unknown error fetching '${url}'`);\n    }\n\n    if (status === 200) {\n      // eslint-disable-next-line no-eval\n      return eval(body);\n    } else {\n      // Format Metro errors if possible.\n      if (process.env.NODE_ENV === 'development') {\n        // body can be an error from Metro if a module is missing.\n        // {\"originModulePath\":\"/Users/evanbacon/Documents/GitHub/expo/.\",\"targetModuleName\":\"./http://localhost:8081/node_modules/react-native/index.js\",\"message\":\"...\"}\n        const error = jsonParseOptional(body);\n        if (error) {\n          // TODO: This is essentially like the Metro native red box errors. We should do a better job formatting them so\n          // the user experience doesn't feel bad. This can be tested by loading a split bundle that results in a missing module error from Metro.\n          throw new MetroServerError(error, url);\n        }\n      }\n\n      throw new Error(`Failed to load split bundle from URL: ${url}\\n${body}`);\n    }\n  });\n}\n\nfunction jsonParseOptional(json: string): any {\n  try {\n    return JSON.parse(json);\n  } catch {\n    return null;\n  }\n}\n","export class MetroServerError extends Error {\n  code = 'METRO_SERVER_ERROR';\n  url: string;\n\n  constructor(errorObject: { message: string } & Record<string, any>, url: string) {\n    super(errorObject.message);\n    this.name = 'MetroServerError';\n    this.url = url;\n    for (const key in errorObject) {\n      (this as any)[key] = errorObject[key];\n    }\n  }\n}\n","/**\n * Copyright (c) 650 Industries.\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// @ts-expect-error\nimport { Networking } from 'react-native';\n\ntype Subscriber = { remove: () => void };\n\nclass LoadBundleFromServerError extends Error {\n  name = 'LoadBundleFromServerError';\n\n  constructor(\n    message: string,\n    public url: string,\n    public isTimeout: boolean,\n    options?: ErrorOptions\n  ) {\n    super(message, options);\n  }\n}\n\nclass LoadBundleFromServerRequestError extends LoadBundleFromServerError {\n  name = 'LoadBundleFromServerRequestError';\n}\n\nexport function fetchAsync(\n  url: string\n): Promise<{ body: string; status: number; headers: Record<string, string> }> {\n  let id: string | null = null;\n  let statusCode: number | null = null;\n  let responseText: string | null = null;\n  let headers: Record<string, string> = {};\n  let dataListener: Subscriber | null = null;\n  let completeListener: Subscriber | null = null;\n  let responseListener: Subscriber | null = null;\n  let incrementalDataListener: Subscriber | null = null;\n  return new Promise<{ body: string; status: number; headers: Record<string, string> }>(\n    (resolve, reject) => {\n      const addListener = Networking.addListener.bind() as (\n        event: string,\n        callback: (props: [string, any, any]) => any\n      ) => Subscriber;\n      dataListener = addListener('didReceiveNetworkData', ([requestId, response]) => {\n        if (requestId === id) {\n          responseText = response;\n        }\n      });\n      incrementalDataListener = addListener(\n        'didReceiveNetworkIncrementalData',\n        ([requestId, data]) => {\n          if (requestId === id) {\n            if (responseText != null) {\n              responseText += data;\n            } else {\n              responseText = data;\n            }\n          }\n        }\n      );\n      responseListener = addListener(\n        'didReceiveNetworkResponse',\n        ([requestId, status, responseHeaders]) => {\n          if (requestId === id) {\n            statusCode = status;\n            headers = responseHeaders;\n          }\n        }\n      );\n      completeListener = addListener(\n        'didCompleteNetworkResponse',\n        ([requestId, error, isTimeout]) => {\n          if (requestId === id) {\n            if (error) {\n              reject(\n                new LoadBundleFromServerRequestError('Could not load bundle', url, isTimeout, {\n                  cause: error,\n                })\n              );\n            } else {\n              resolve({ body: responseText!, status: statusCode!, headers });\n            }\n          }\n        }\n      );\n      (Networking.sendRequest as any)(\n        'GET',\n        'asyncRequest',\n        url,\n        {\n          'expo-platform': process.env.EXPO_OS,\n        },\n        '',\n        'text',\n        true,\n        0,\n        (requestId: string) => {\n          id = requestId;\n        },\n        true\n      );\n    }\n  ).finally(() => {\n    dataListener?.remove();\n    completeListener?.remove();\n    responseListener?.remove();\n    incrementalDataListener?.remove();\n  });\n}\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 * @flow strict-local\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\n'use strict';\n'use client';\n\n// ----------------------------------------------------------------------------\n// Runtime entry point for react-native.\n//\n// This module is separate from index.js.flow as it provides a more lenient\n// `module.exports` API at runtime, for lazy module loading and backwards\n// compatibility.\n//\n// IMPORTANT: Keep this file in sync with index.js.flow. Test your changes\n// whenever updating React Native's public API.\n// ----------------------------------------------------------------------------\n\nimport typeof * as ReactNativePublicAPI from './index.js.flow';\n\nconst warnOnce = require('./Libraries/Utilities/warnOnce').default;\nconst invariant = require('invariant');\n\nmodule.exports = {\n  // #region Components\n  get ActivityIndicator() {\n    return require('./Libraries/Components/ActivityIndicator/ActivityIndicator')\n      .default;\n  },\n  get Button() {\n    return require('./Libraries/Components/Button').default;\n  },\n  get DrawerLayoutAndroid() {\n    return require('./Libraries/Components/DrawerAndroid/DrawerLayoutAndroid')\n      .default;\n  },\n  get FlatList() {\n    return require('./Libraries/Lists/FlatList').default;\n  },\n  get Image() {\n    return require('./Libraries/Image/Image').default;\n  },\n  get ImageBackground() {\n    return require('./Libraries/Image/ImageBackground').default;\n  },\n  get InputAccessoryView() {\n    return require('./Libraries/Components/TextInput/InputAccessoryView')\n      .default;\n  },\n  get KeyboardAvoidingView() {\n    return require('./Libraries/Components/Keyboard/KeyboardAvoidingView')\n      .default;\n  },\n  get experimental_LayoutConformance() {\n    return require('./Libraries/Components/LayoutConformance/LayoutConformance')\n      .default;\n  },\n  get Modal() {\n    return require('./Libraries/Modal/Modal').default;\n  },\n  get Pressable() {\n    return require('./Libraries/Components/Pressable/Pressable').default;\n  },\n  get ProgressBarAndroid() {\n    warnOnce(\n      'progress-bar-android-moved',\n      'ProgressBarAndroid has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/progress-bar-android' instead of 'react-native'. \" +\n        'See https://github.com/react-native-progress-view/progress-bar-android',\n    );\n    return require('./Libraries/Components/ProgressBarAndroid/ProgressBarAndroid')\n      .default;\n  },\n  get RefreshControl() {\n    return require('./Libraries/Components/RefreshControl/RefreshControl')\n      .default;\n  },\n  /**\n   * @deprecated SafeAreaView has been deprecated and will be removed in a future release.\n   * Please use 'react-native-safe-area-context' instead.\n   * See https://github.com/th3rdwave/react-native-safe-area-context\n   */\n  get SafeAreaView() {\n    warnOnce(\n      'safe-area-view-deprecated',\n      'SafeAreaView has been deprecated and will be removed in a future release. ' +\n        \"Please use 'react-native-safe-area-context' instead. \" +\n        'See https://github.com/th3rdwave/react-native-safe-area-context',\n    );\n    return require('./Libraries/Components/SafeAreaView/SafeAreaView').default;\n  },\n  get ScrollView() {\n    return require('./Libraries/Components/ScrollView/ScrollView').default;\n  },\n  get SectionList() {\n    return require('./Libraries/Lists/SectionList').default;\n  },\n  get StatusBar() {\n    return require('./Libraries/Components/StatusBar/StatusBar').default;\n  },\n  get Switch() {\n    return require('./Libraries/Components/Switch/Switch').default;\n  },\n  get Text() {\n    return require('./Libraries/Text/Text').default;\n  },\n  get unstable_TextAncestorContext() {\n    return require('./Libraries/Text/TextAncestorContext').default;\n  },\n  get TextInput() {\n    return require('./Libraries/Components/TextInput/TextInput').default;\n  },\n  get Touchable() {\n    return require('./Libraries/Components/Touchable/Touchable').default;\n  },\n  get TouchableHighlight() {\n    return require('./Libraries/Components/Touchable/TouchableHighlight')\n      .default;\n  },\n  get TouchableNativeFeedback() {\n    return require('./Libraries/Components/Touchable/TouchableNativeFeedback')\n      .default;\n  },\n  get TouchableOpacity() {\n    return require('./Libraries/Components/Touchable/TouchableOpacity').default;\n  },\n  get TouchableWithoutFeedback() {\n    return require('./Libraries/Components/Touchable/TouchableWithoutFeedback')\n      .default;\n  },\n  get View() {\n    return require('./Libraries/Components/View/View').default;\n  },\n  get VirtualizedList() {\n    return require('./Libraries/Lists/VirtualizedList').default;\n  },\n  get VirtualizedSectionList() {\n    return require('./Libraries/Lists/VirtualizedSectionList').default;\n  },\n  get unstable_VirtualView() {\n    return require('./src/private/components/virtualview/VirtualView').default;\n  },\n  // #endregion\n  // #region APIs\n  get AccessibilityInfo() {\n    return require('./Libraries/Components/AccessibilityInfo/AccessibilityInfo')\n      .default;\n  },\n  get ActionSheetIOS() {\n    return require('./Libraries/ActionSheetIOS/ActionSheetIOS').default;\n  },\n  get Alert() {\n    return require('./Libraries/Alert/Alert').default;\n  },\n  // Include any types exported in the Animated module together with its default export, so\n  // you can references types such as Animated.Numeric\n  get Animated() {\n    return require('./Libraries/Animated/Animated').default;\n  },\n  get Appearance() {\n    return require('./Libraries/Utilities/Appearance');\n  },\n  get AppRegistry() {\n    return require('./Libraries/ReactNative/AppRegistry').AppRegistry;\n  },\n  get AppState() {\n    return require('./Libraries/AppState/AppState').default;\n  },\n  get BackHandler() {\n    return require('./Libraries/Utilities/BackHandler').default;\n  },\n  get Clipboard() {\n    warnOnce(\n      'clipboard-moved',\n      'Clipboard has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-clipboard/clipboard' instead of 'react-native'. \" +\n        'See https://github.com/react-native-clipboard/clipboard',\n    );\n    return require('./Libraries/Components/Clipboard/Clipboard').default;\n  },\n  get codegenNativeCommands() {\n    return require('./Libraries/Utilities/codegenNativeCommands').default;\n  },\n  get codegenNativeComponent() {\n    return require('./Libraries/Utilities/codegenNativeComponent').default;\n  },\n  get DeviceEventEmitter() {\n    return require('./Libraries/EventEmitter/RCTDeviceEventEmitter').default;\n  },\n  get DeviceInfo() {\n    return require('./Libraries/Utilities/DeviceInfo').default;\n  },\n  get DevMenu() {\n    return require('./src/private/devsupport/devmenu/DevMenu').default;\n  },\n  get DevSettings() {\n    return require('./Libraries/Utilities/DevSettings').default;\n  },\n  get Dimensions() {\n    return require('./Libraries/Utilities/Dimensions').default;\n  },\n  get DynamicColorIOS() {\n    return require('./Libraries/StyleSheet/PlatformColorValueTypesIOS')\n      .DynamicColorIOS;\n  },\n  get Easing() {\n    return require('./Libraries/Animated/Easing').default;\n  },\n  get findNodeHandle() {\n    return require('./Libraries/ReactNative/RendererProxy').findNodeHandle;\n  },\n  get I18nManager() {\n    return require('./Libraries/ReactNative/I18nManager').default;\n  },\n  /**\n   * @deprecated\n   */\n  get InteractionManager() {\n    return require('./Libraries/Interaction/InteractionManager').default;\n  },\n  get Keyboard() {\n    return require('./Libraries/Components/Keyboard/Keyboard').default;\n  },\n  get LayoutAnimation() {\n    return require('./Libraries/LayoutAnimation/LayoutAnimation').default;\n  },\n  get Linking() {\n    return require('./Libraries/Linking/Linking').default;\n  },\n  get LogBox() {\n    return require('./Libraries/LogBox/LogBox').default;\n  },\n  get NativeAppEventEmitter() {\n    return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default;\n  },\n  get NativeDialogManagerAndroid() {\n    return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid')\n      .default;\n  },\n  get NativeEventEmitter() {\n    return require('./Libraries/EventEmitter/NativeEventEmitter').default;\n  },\n  get NativeModules() {\n    return require('./Libraries/BatchedBridge/NativeModules').default;\n  },\n  get Networking() {\n    return require('./Libraries/Network/RCTNetworking').default;\n  },\n  get PanResponder() {\n    return require('./Libraries/Interaction/PanResponder').default;\n  },\n  get PermissionsAndroid() {\n    return require('./Libraries/PermissionsAndroid/PermissionsAndroid').default;\n  },\n  get PixelRatio() {\n    return require('./Libraries/Utilities/PixelRatio').default;\n  },\n  get Platform() {\n    return require('./Libraries/Utilities/Platform').default;\n  },\n  get PlatformColor() {\n    return require('./Libraries/StyleSheet/PlatformColorValueTypes')\n      .PlatformColor;\n  },\n  get PushNotificationIOS() {\n    warnOnce(\n      'pushNotificationIOS-moved',\n      'PushNotificationIOS has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/push-notification-ios' instead of 'react-native'. \" +\n        'See https://github.com/react-native-push-notification/ios',\n    );\n    return require('./Libraries/PushNotificationIOS/PushNotificationIOS')\n      .default;\n  },\n  get processColor() {\n    return require('./Libraries/StyleSheet/processColor').default;\n  },\n  get registerCallableModule() {\n    return require('./Libraries/Core/registerCallableModule').default;\n  },\n  get requireNativeComponent() {\n    return require('./Libraries/ReactNative/requireNativeComponent').default;\n  },\n  get RootTagContext() {\n    return require('./Libraries/ReactNative/RootTag').RootTagContext;\n  },\n  get Settings() {\n    return require('./Libraries/Settings/Settings').default;\n  },\n  get Share() {\n    return require('./Libraries/Share/Share').default;\n  },\n  get StyleSheet() {\n    return require('./Libraries/StyleSheet/StyleSheet').default;\n  },\n  get Systrace() {\n    return require('./Libraries/Performance/Systrace');\n  },\n  get ToastAndroid() {\n    return require('./Libraries/Components/ToastAndroid/ToastAndroid').default;\n  },\n  get TurboModuleRegistry() {\n    return require('./Libraries/TurboModule/TurboModuleRegistry');\n  },\n  get UIManager() {\n    return require('./Libraries/ReactNative/UIManager').default;\n  },\n  get unstable_batchedUpdates() {\n    return require('./Libraries/ReactNative/RendererProxy')\n      .unstable_batchedUpdates;\n  },\n  get useAnimatedValue() {\n    return require('./Libraries/Animated/useAnimatedValue').default;\n  },\n  get useColorScheme() {\n    return require('./Libraries/Utilities/useColorScheme').default;\n  },\n  get useWindowDimensions() {\n    return require('./Libraries/Utilities/useWindowDimensions').default;\n  },\n  get UTFSequence() {\n    return require('./Libraries/UTFSequence').default;\n  },\n  get Vibration() {\n    return require('./Libraries/Vibration/Vibration').default;\n  },\n  get VirtualViewMode() {\n    return require('./src/private/components/virtualview/VirtualView')\n      .VirtualViewMode;\n  },\n  // #endregion\n} as ReactNativePublicAPI;\n\nif (__DEV__) {\n  /* $FlowFixMe[prop-missing] This is intentional: Flow will error when\n   * attempting to access AsyncStorage. */\n  /* $FlowFixMe[invalid-export] This is intentional: Flow will error when\n   * attempting to access AsyncStorage. */\n  Object.defineProperty(module.exports, 'AsyncStorage', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'AsyncStorage has been removed from react-native core. ' +\n          \"It can now be installed and imported from '@react-native-async-storage/async-storage' instead of 'react-native'. \" +\n          'See https://github.com/react-native-async-storage/async-storage',\n      );\n    },\n  });\n  /* $FlowFixMe[prop-missing] This is intentional: Flow will error when\n   * attempting to access ImagePickerIOS. */\n  /* $FlowFixMe[invalid-export] This is intentional: Flow will error when\n   * attempting to access ImagePickerIOS. */\n  Object.defineProperty(module.exports, 'ImagePickerIOS', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'ImagePickerIOS has been removed from React Native. ' +\n          \"Please upgrade to use either 'react-native-image-picker' or 'expo-image-picker'. \" +\n          \"If you cannot upgrade to a different library, please install the deprecated '@react-native-community/image-picker-ios' package. \" +\n          'See https://github.com/rnc-archive/react-native-image-picker-ios',\n      );\n    },\n  });\n  /* $FlowFixMe[prop-missing] This is intentional: Flow will error when\n   * attempting to access ProgressViewIOS. */\n  /* $FlowFixMe[invalid-export] This is intentional: Flow will error when\n   * attempting to access ProgressViewIOS. */\n  Object.defineProperty(module.exports, 'ProgressViewIOS', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'ProgressViewIOS has been removed from react-native core. ' +\n          \"It can now be installed and imported from '@react-native-community/progress-view' instead of 'react-native'. \" +\n          'See https://github.com/react-native-progress-view/progress-view',\n      );\n    },\n  });\n  /* $FlowFixMe[prop-missing] This is intentional: Flow will error when\n   * attempting to access DatePickerIOS. */\n  /* $FlowFixMe[invalid-export] This is intentional: Flow will error when\n   * attempting to access DatePickerIOS. */\n  Object.defineProperty(module.exports, 'DatePickerIOS', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'DatePickerIOS has been removed from react-native core. ' +\n          \"It can now be installed and imported from '@react-native-community/datetimepicker' instead of 'react-native'. \" +\n          'See https://github.com/react-native-datetimepicker/datetimepicker',\n      );\n    },\n  });\n  /* $FlowFixMe[prop-missing] This is intentional: Flow will error when\n   * attempting to access Slider. */\n  /* $FlowFixMe[invalid-export] This is intentional: Flow will error when\n   * attempting to access Slider. */\n  Object.defineProperty(module.exports, 'Slider', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'Slider has been removed from react-native core. ' +\n          \"It can now be installed and imported from '@react-native-community/slider' instead of 'react-native'. \" +\n          'See https://github.com/callstack/react-native-slider',\n      );\n    },\n  });\n}\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 * @flow\n * @format\n */\n\n'use strict';\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport StyleSheet, {type ColorValue} from '../../StyleSheet/StyleSheet';\nimport Platform from '../../Utilities/Platform';\nimport View from '../View/View';\nimport * as React from 'react';\n\nconst PlatformActivityIndicator =\n  Platform.OS === 'android'\n    ? require('../ProgressBarAndroid/ProgressBarAndroid').default\n    : require('./ActivityIndicatorViewNativeComponent').default;\n\nconst GRAY = '#999999';\n\ntype IndicatorSize = number | 'small' | 'large';\n\ntype ActivityIndicatorIOSProps = $ReadOnly<{\n  /**\n    Whether the indicator should hide when not animating.\n\n    @platform ios\n  */\n  hidesWhenStopped?: ?boolean,\n}>;\nexport type ActivityIndicatorProps = $ReadOnly<{\n  ...ViewProps,\n  ...ActivityIndicatorIOSProps,\n\n  /**\n   \tWhether to show the indicator (`true`) or hide it (`false`).\n   */\n  animating?: ?boolean,\n\n  /**\n    The foreground color of the spinner.\n\n    @default {@platform android} `null` (system accent default color)\n    @default {@platform ios} '#999999'\n  */\n  color?: ?ColorValue,\n\n  /**\n    Size of the indicator.\n\n    @type enum(`'small'`, `'large'`)\n    @type {@platform android} number\n  */\n  size?: ?IndicatorSize,\n}>;\n\nconst ActivityIndicator: component(\n  ref?: React.RefSetter<HostComponent<empty>>,\n  ...props: ActivityIndicatorProps\n) = ({\n  ref: forwardedRef,\n  animating = true,\n  color = Platform.OS === 'ios' ? GRAY : null,\n  hidesWhenStopped = true,\n  onLayout,\n  size = 'small',\n  style,\n  ...restProps\n}: {\n  ref?: any,\n  ...ActivityIndicatorProps,\n}) => {\n  let sizeStyle;\n  let sizeProp;\n\n  switch (size) {\n    case 'small':\n      sizeStyle = styles.sizeSmall;\n      sizeProp = 'small';\n      break;\n    case 'large':\n      sizeStyle = styles.sizeLarge;\n      sizeProp = 'large';\n      break;\n    default:\n      sizeStyle = {height: size, width: size};\n      break;\n  }\n\n  const nativeProps = {\n    animating,\n    color,\n    hidesWhenStopped,\n    ...restProps,\n    ref: forwardedRef,\n    style: sizeStyle,\n    size: sizeProp,\n  };\n\n  const androidProps = {\n    styleAttr: 'Normal',\n    indeterminate: true,\n  };\n\n  return (\n    <View\n      onLayout={onLayout}\n      style={StyleSheet.compose(styles.container, style)}>\n      {Platform.OS === 'android' ? (\n        // $FlowFixMe[prop-missing] Flow doesn't know when this is the android component\n        // $FlowFixMe[incompatible-type]\n        <PlatformActivityIndicator {...nativeProps} {...androidProps} />\n      ) : (\n        /* $FlowFixMe[incompatible-type] (>=0.106.0 site=react_native_android_fb) This comment\n         * suppresses an error found when Flow v0.106 was deployed. To see the\n         * error, delete this comment and run Flow. */\n        <PlatformActivityIndicator {...nativeProps} />\n      )}\n    </View>\n  );\n};\n\n/**\n  Displays a circular loading indicator.\n\n  ```SnackPlayer name=ActivityIndicator%20Example\n  import React from 'react';\n  import {ActivityIndicator, StyleSheet, View} from 'react-native';\n\n  const App = () => (\n    <View style={[styles.container, styles.horizontal]}>\n      <ActivityIndicator />\n      <ActivityIndicator size=\"large\" />\n      <ActivityIndicator size=\"small\" color=\"#0000ff\" />\n      <ActivityIndicator size=\"large\" color=\"#00ff00\" />\n    </View>\n  );\n\n  const styles = StyleSheet.create({\n    container: {\n      flex: 1,\n      justifyContent: 'center',\n    },\n    horizontal: {\n      flexDirection: 'row',\n      justifyContent: 'space-around',\n      padding: 10,\n    },\n  });\n\n  export default App;\n```\n*/\n\nActivityIndicator.displayName = 'ActivityIndicator';\n\nconst styles = StyleSheet.create({\n  container: {\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  sizeSmall: {\n    width: 20,\n    height: 20,\n  },\n  sizeLarge: {\n    width: 36,\n    height: 36,\n  },\n});\n\nexport default ActivityIndicator;\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var n = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport typeof * as StyleSheetExports from './StyleSheetExports';\nimport type {\n  ____ColorValue_Internal,\n  ____DangerouslyImpreciseStyle_Internal,\n  ____DangerouslyImpreciseStyleProp_Internal,\n  ____FontVariant_Internal,\n  ____ImageStyle_Internal,\n  ____ImageStyleProp_Internal,\n  ____TextStyle_Internal,\n  ____TextStyleProp_Internal,\n  ____TransformStyle_Internal,\n  ____ViewStyle_Internal,\n  ____ViewStyleProp_Internal,\n  NativeColorValue,\n} from './StyleSheetTypes';\n\nconst StyleSheet: StyleSheetExports = (\n  require('./StyleSheetExports') as $FlowFixMe\n).default;\n\nexport type {\n  BoxShadowValue,\n  NativeColorValue,\n  FilterFunction,\n} from './StyleSheetTypes';\n\n/**\n * This type should be used as the type for anything that is a color. It is\n * most useful when using DynamicColorIOS which can be a string or a dynamic\n * color object.\n *\n * type props = {backgroundColor: ColorValue};\n */\nexport type ColorValue = ____ColorValue_Internal;\n\n/**\n * Expose the opaque type for NativeColorValue.\n * @deprecated Use NativeColorValue instead.\n */\nexport type OpaqueColorValue = NativeColorValue;\n\n/**\n * This type is an object of the properties related to transforms.\n */\nexport type TransformsStyle = ____TransformStyle_Internal;\n\n/**\n * This type holds possible values for the `fontVariant` style property.\n */\nexport type FontVariant = ____FontVariant_Internal;\n\n/**\n * This type should be used as the type for a prop that is passed through\n * to a <View>'s `style` prop. This ensures call sites of the component\n * can't pass styles that View doesn't support such as `fontSize`.`\n *\n * type Props = {style: ViewStyleProp}\n * const MyComponent = (props: Props) => <View style={props.style} />\n */\nexport type ViewStyleProp = ____ViewStyleProp_Internal;\n\n/**\n * This type should be used as the type for a prop that is passed through\n * to a <Text>'s `style` prop. This ensures call sites of the component\n * can't pass styles that Text doesn't support such as `resizeMode`.`\n *\n * type Props = {style: TextStyleProp}\n * const MyComponent = (props: Props) => <Text style={props.style} />\n */\nexport type TextStyleProp = ____TextStyleProp_Internal;\n\n/**\n * This type should be used as the type for a prop that is passed through\n * to an <Image>'s `style` prop. This ensures call sites of the component\n * can't pass styles that Image doesn't support such as `fontSize`.`\n *\n * type Props = {style: ImageStyleProp}\n * const MyComponent = (props: Props) => <Image style={props.style} />\n */\nexport type ImageStyleProp = ____ImageStyleProp_Internal;\n\n/**\n * WARNING: You probably shouldn't be using this type. This type\n * is similar to the ones above except it allows styles that are accepted\n * by all of View, Text, or Image. It is therefore very unsafe to pass this\n * through to an underlying component. Using this is almost always a mistake\n * and using one of the other more restrictive types is likely the right choice.\n */\nexport type DangerouslyImpreciseStyleProp =\n  ____DangerouslyImpreciseStyleProp_Internal;\n\n/**\n * Utility type for getting the values for specific style keys.\n *\n * The following is bad because position is more restrictive than 'string':\n * ```\n * type Props = {position: string};\n * ```\n *\n * You should use the following instead:\n *\n * ```\n * type Props = {position: TypeForStyleKey<'position'>};\n * ```\n *\n * This will correctly give you the type 'absolute' | 'relative'\n */\nexport type TypeForStyleKey<\n  +key: $Keys<____DangerouslyImpreciseStyle_Internal>,\n> = ____DangerouslyImpreciseStyle_Internal[key];\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for View.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using ViewStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to a View that can't be precomputed with\n * StyleSheet.create.\n */\nexport type ViewStyle = ____ViewStyle_Internal;\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for Text.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using TextStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to a Text that can't be precomputed with\n * StyleSheet.create.\n */\nexport type TextStyle = ____TextStyle_Internal;\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for Image.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using ImageStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to an Image that can't be precomputed with\n * StyleSheet.create.\n */\nexport type ImageStyle = ____ImageStyle_Internal;\n\n/**\n * WARNING: You probably shouldn't be using this type. This type is an object\n * with all possible style keys and their values. Note that this isn't\n * a safe way to type a style prop for a component as results from\n * StyleSheet.create return an internal identifier, not an object of styles.\n *\n * If you want to type the style prop of a function, consider using\n * ViewStyleProp, TextStyleProp, or ImageStyleProp.\n *\n * This should only be used by very core utilities that operate on an object\n * containing any possible style value.\n */\nexport type DangerouslyImpreciseStyle = ____DangerouslyImpreciseStyle_Internal;\n\nexport default StyleSheet;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {____Styles_Internal} from './StyleSheetTypes';\n\nimport composeStyles from '../../src/private/styles/composeStyles';\nimport flatten from './flattenStyle';\n\nconst ReactNativeStyleAttributes =\n  require('../Components/View/ReactNativeStyleAttributes').default;\nconst PixelRatio = require('../Utilities/PixelRatio').default;\n\nlet hairlineWidth: number = PixelRatio.roundToNearestPixel(0.4);\nif (hairlineWidth === 0) {\n  hairlineWidth = 1 / PixelRatio.get();\n}\n\nconst absoluteFill: {\n  +bottom: 0,\n  +left: 0,\n  +position: 'absolute',\n  +right: 0,\n  +top: 0,\n} = {\n  position: 'absolute',\n  left: 0,\n  right: 0,\n  top: 0,\n  bottom: 0,\n};\nif (__DEV__) {\n  Object.freeze(absoluteFill);\n}\n\n/**\n * A StyleSheet is an abstraction similar to CSS StyleSheets\n *\n * Create a new StyleSheet:\n *\n * ```\n * const styles = StyleSheet.create({\n *   container: {\n *     borderRadius: 4,\n *     borderWidth: 0.5,\n *     borderColor: '#d6d7da',\n *   },\n *   title: {\n *     fontSize: 19,\n *     fontWeight: 'bold',\n *   },\n *   activeTitle: {\n *     color: 'red',\n *   },\n * });\n * ```\n *\n * Use a StyleSheet:\n *\n * ```\n * <View style={styles.container}>\n *   <Text style={[styles.title, this.props.isActive && styles.activeTitle]} />\n * </View>\n * ```\n *\n * Code quality:\n *\n *  - By moving styles away from the render function, you're making the code\n *    easier to understand.\n *  - Naming the styles is a good way to add meaning to the low level components\n *  in the render function, and encourage reuse.\n *  - In most IDEs, using `StyleSheet.create()` will offer static type checking\n *  and suggestions to help you write valid styles.\n *\n */\nexport default {\n  /**\n   * This is defined as the width of a thin line on the platform. It can be\n   * used as the thickness of a border or division between two elements.\n   * Example:\n   * ```\n   *   {\n   *     borderBottomColor: '#bbb',\n   *     borderBottomWidth: StyleSheet.hairlineWidth\n   *   }\n   * ```\n   *\n   * This constant will always be a round number of pixels (so a line defined\n   * by it look crisp) and will try to match the standard width of a thin line\n   * on the underlying platform. However, you should not rely on it being a\n   * constant size, because on different platforms and screen densities its\n   * value may be calculated differently.\n   *\n   * A line with hairline width may not be visible if your simulator is downscaled.\n   */\n  hairlineWidth,\n\n  /**\n   * A very common pattern is to create overlays with position absolute and zero positioning,\n   * so `absoluteFill` can be used for convenience and to reduce duplication of these repeated\n   * styles.\n   */\n  absoluteFill: (absoluteFill: any), // TODO: This should be updated after we fix downstream Flow sites.\n\n  /**\n   * Sometimes you may want `absoluteFill` but with a couple tweaks - `absoluteFillObject` can be\n   * used to create a customized entry in a `StyleSheet`, e.g.:\n   *\n   *   const styles = StyleSheet.create({\n   *     wrapper: {\n   *       ...StyleSheet.absoluteFillObject,\n   *       top: 10,\n   *       backgroundColor: 'transparent',\n   *     },\n   *   });\n   */\n  absoluteFillObject: absoluteFill,\n\n  /**\n   * Combines two styles such that `style2` will override any styles in `style1`.\n   * If either style is falsy, the other one is returned without allocating an\n   * array, saving allocations and maintaining reference equality for\n   * PureComponent checks.\n   */\n  compose: composeStyles,\n\n  /**\n   * Flattens an array of style objects, into one aggregated style object.\n   *\n   * Example:\n   * ```\n   * const styles = StyleSheet.create({\n   *   listItem: {\n   *     flex: 1,\n   *     fontSize: 16,\n   *     color: 'white'\n   *   },\n   *   selectedListItem: {\n   *     color: 'green'\n   *   }\n   * });\n   *\n   * StyleSheet.flatten([styles.listItem, styles.selectedListItem])\n   * // returns { flex: 1, fontSize: 16, color: 'green' }\n   * ```\n   */\n  flatten,\n\n  /**\n   * WARNING: EXPERIMENTAL. Breaking changes will probably happen a lot and will\n   * not be reliably announced. The whole thing might be deleted, who knows? Use\n   * at your own risk.\n   *\n   * Sets a function to use to pre-process a style property value. This is used\n   * internally to process color and transform values. You should not use this\n   * unless you really know what you are doing and have exhausted other options.\n   */\n  setStyleAttributePreprocessor(\n    property: string,\n    process: (nextProp: mixed) => mixed,\n  ) {\n    let value;\n\n    if (ReactNativeStyleAttributes[property] === true) {\n      value = {process};\n    } else if (typeof ReactNativeStyleAttributes[property] === 'object') {\n      value = {...ReactNativeStyleAttributes[property], process};\n    } else {\n      console.error(`${property} is not a valid style attribute`);\n      return;\n    }\n\n    if (\n      __DEV__ &&\n      typeof value.process === 'function' &&\n      typeof ReactNativeStyleAttributes[property]?.process === 'function' &&\n      value.process !== ReactNativeStyleAttributes[property]?.process\n    ) {\n      console.warn(`Overwriting ${property} style attribute preprocessor`);\n    }\n\n    ReactNativeStyleAttributes[property] = value;\n  },\n\n  /**\n   * An identity function for creating style sheets.\n   */\n  // $FlowFixMe[unsupported-variance-annotation]\n  create<+S: ____Styles_Internal>(obj: S): $ReadOnly<S> {\n    // TODO: This should return S as the return type. But first,\n    // we need to codemod all the callsites that are typing this\n    // return value as a number (even though it was opaque).\n    if (__DEV__) {\n      for (const key in obj) {\n        if (obj[key]) {\n          Object.freeze(obj[key]);\n        }\n      }\n    }\n    return obj;\n  },\n};\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 * @flow strict\n * @format\n */\n\n/**\n * Combines two styles such that `style2` will override any styles in `style1`.\n * If either style is null or undefined, the other one is returned without\n * allocating an array, saving allocations and enabling memoization.\n */\nexport default function composeStyles<T, U: T, V: T>(\n  style1: ?U,\n  style2: ?V,\n): ?(T | $ReadOnlyArray<T>) {\n  if (style1 == null) {\n    return style2;\n  }\n  if (style2 == null) {\n    return style1;\n  }\n  return [style1, style2];\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type AnimatedNode from '../Animated/nodes/AnimatedNode';\nimport type {\n  ____DangerouslyImpreciseAnimatedStyleProp_Internal,\n  ____FlattenStyleProp_Internal,\n} from './StyleSheetTypes';\n\ntype NonAnimatedNodeObject<TStyleProp> = TStyleProp extends AnimatedNode\n  ? empty\n  : TStyleProp;\n\nfunction flattenStyle<\n  TStyleProp: ____DangerouslyImpreciseAnimatedStyleProp_Internal,\n>(\n  style: ?TStyleProp,\n  // $FlowFixMe[underconstrained-implicit-instantiation]\n): ?NonAnimatedNodeObject<____FlattenStyleProp_Internal<TStyleProp>> {\n  if (style === null || typeof style !== 'object') {\n    return undefined;\n  }\n\n  if (!Array.isArray(style)) {\n    // $FlowFixMe[incompatible-return]\n    return style;\n  }\n\n  const result: {[string]: $FlowFixMe} = {};\n  for (let i = 0, styleLength = style.length; i < styleLength; ++i) {\n    // $FlowFixMe[underconstrained-implicit-instantiation]\n    const computedStyle = flattenStyle(style[i]);\n    if (computedStyle) {\n      // $FlowFixMe[invalid-in-rhs]\n      for (const key in computedStyle) {\n        // $FlowFixMe[incompatible-use]\n        // $FlowFixMe[invalid-computed-prop]\n        // $FlowFixMe[prop-missing]\n        result[key] = computedStyle[key];\n      }\n    }\n  }\n  // $FlowFixMe[incompatible-return]\n  return result;\n}\n\nexport default flattenStyle;\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 * @flow strict-local\n * @format strict-local\n */\n\nimport type {AnyAttributeType} from '../../Renderer/shims/ReactNativeTypes';\n\nimport * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';\nimport processAspectRatio from '../../StyleSheet/processAspectRatio';\nimport processBackgroundImage from '../../StyleSheet/processBackgroundImage';\nimport processBoxShadow from '../../StyleSheet/processBoxShadow';\nimport processColor from '../../StyleSheet/processColor';\nimport processFilter from '../../StyleSheet/processFilter';\nimport processFontVariant from '../../StyleSheet/processFontVariant';\nimport processTransform from '../../StyleSheet/processTransform';\nimport processTransformOrigin from '../../StyleSheet/processTransformOrigin';\nimport sizesDiffer from '../../Utilities/differ/sizesDiffer';\n\nconst colorAttributes = {process: processColor};\n\nconst ReactNativeStyleAttributes: {[string]: AnyAttributeType, ...} = {\n  /**\n   * Layout\n   */\n  alignContent: true,\n  alignItems: true,\n  alignSelf: true,\n  aspectRatio: {process: processAspectRatio},\n  borderBottomWidth: true,\n  borderEndWidth: true,\n  borderLeftWidth: true,\n  borderRightWidth: true,\n  borderStartWidth: true,\n  borderTopWidth: true,\n  boxSizing: true,\n  columnGap: true,\n  borderWidth: true,\n  bottom: true,\n  direction: true,\n  display: true,\n  end: true,\n  flex: true,\n  flexBasis: true,\n  flexDirection: true,\n  flexGrow: true,\n  flexShrink: true,\n  flexWrap: true,\n  gap: true,\n  height: true,\n  inset: true,\n  insetBlock: true,\n  insetBlockEnd: true,\n  insetBlockStart: true,\n  insetInline: true,\n  insetInlineEnd: true,\n  insetInlineStart: true,\n  justifyContent: true,\n  left: true,\n  margin: true,\n  marginBlock: true,\n  marginBlockEnd: true,\n  marginBlockStart: true,\n  marginBottom: true,\n  marginEnd: true,\n  marginHorizontal: true,\n  marginInline: true,\n  marginInlineEnd: true,\n  marginInlineStart: true,\n  marginLeft: true,\n  marginRight: true,\n  marginStart: true,\n  marginTop: true,\n  marginVertical: true,\n  maxHeight: true,\n  maxWidth: true,\n  minHeight: true,\n  minWidth: true,\n  overflow: true,\n  padding: true,\n  paddingBlock: true,\n  paddingBlockEnd: true,\n  paddingBlockStart: true,\n  paddingBottom: true,\n  paddingEnd: true,\n  paddingHorizontal: true,\n  paddingInline: true,\n  paddingInlineEnd: true,\n  paddingInlineStart: true,\n  paddingLeft: true,\n  paddingRight: true,\n  paddingStart: true,\n  paddingTop: true,\n  paddingVertical: true,\n  position: true,\n  right: true,\n  rowGap: true,\n  start: true,\n  top: true,\n  width: true,\n  zIndex: true,\n\n  /**\n   * Shadow\n   */\n  elevation: true,\n  shadowColor: colorAttributes,\n  shadowOffset: {diff: sizesDiffer},\n  shadowOpacity: true,\n  shadowRadius: true,\n\n  /**\n   * Transform\n   */\n  transform: {process: processTransform},\n  transformOrigin: {process: processTransformOrigin},\n\n  /**\n   * Filter\n   */\n  filter: ReactNativeFeatureFlags.enableNativeCSSParsing()\n    ? true\n    : {process: processFilter},\n\n  /**\n   * MixBlendMode\n   */\n  mixBlendMode: true,\n\n  /**\n   * Isolation\n   */\n  isolation: true,\n\n  /*\n   * BoxShadow\n   */\n  boxShadow: ReactNativeFeatureFlags.enableNativeCSSParsing()\n    ? true\n    : {process: processBoxShadow},\n\n  /**\n   * Linear Gradient\n   */\n  experimental_backgroundImage: {process: processBackgroundImage},\n\n  /**\n   * View\n   */\n  backfaceVisibility: true,\n  backgroundColor: colorAttributes,\n  borderBlockColor: colorAttributes,\n  borderBlockEndColor: colorAttributes,\n  borderBlockStartColor: colorAttributes,\n  borderBottomColor: colorAttributes,\n  borderBottomEndRadius: true,\n  borderBottomLeftRadius: true,\n  borderBottomRightRadius: true,\n  borderBottomStartRadius: true,\n  borderColor: colorAttributes,\n  borderCurve: true,\n  borderEndColor: colorAttributes,\n  borderEndEndRadius: true,\n  borderEndStartRadius: true,\n  borderLeftColor: colorAttributes,\n  borderRadius: true,\n  borderRightColor: colorAttributes,\n  borderStartColor: colorAttributes,\n  borderStartEndRadius: true,\n  borderStartStartRadius: true,\n  borderStyle: true,\n  borderTopColor: colorAttributes,\n  borderTopEndRadius: true,\n  borderTopLeftRadius: true,\n  borderTopRightRadius: true,\n  borderTopStartRadius: true,\n  cursor: true,\n  opacity: true,\n  outlineColor: colorAttributes,\n  outlineOffset: true,\n  outlineStyle: true,\n  outlineWidth: true,\n  pointerEvents: true,\n\n  /**\n   * Text\n   */\n  color: colorAttributes,\n  fontFamily: true,\n  fontSize: true,\n  fontStyle: true,\n  fontVariant: {process: processFontVariant},\n  fontWeight: true,\n  includeFontPadding: true,\n  letterSpacing: true,\n  lineHeight: true,\n  textAlign: true,\n  textAlignVertical: true,\n  textDecorationColor: colorAttributes,\n  textDecorationLine: true,\n  textDecorationStyle: true,\n  textShadowColor: colorAttributes,\n  textShadowOffset: true,\n  textShadowRadius: true,\n  textTransform: true,\n  userSelect: true,\n  verticalAlign: true,\n  writingDirection: true,\n\n  /**\n   * Image\n   */\n  overlayColor: colorAttributes,\n  resizeMode: true,\n  tintColor: colorAttributes,\n  objectFit: true,\n};\n\nexport default ReactNativeStyleAttributes;\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 * @generated SignedSource<<f17b8e4e33228e19b346837e7a33a2dd>>\n * @flow strict\n * @noformat\n */\n\n/**\n * IMPORTANT: Do NOT modify this file directly.\n *\n * To change the definition of the flags, edit\n *   packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js.\n *\n * To regenerate this code, run the following script from the repo root:\n *   yarn featureflags --update\n */\n\nimport {\n  type Getter,\n  type OverridesFor,\n  createJavaScriptFlagGetter,\n  createNativeFlagGetter,\n  setOverrides,\n} from './ReactNativeFeatureFlagsBase';\n\nexport type ReactNativeFeatureFlagsJsOnly = $ReadOnly<{\n  jsOnlyTestFlag: Getter<boolean>,\n  alwaysFlattenAnimatedStyles: Getter<boolean>,\n  animatedShouldDebounceQueueFlush: Getter<boolean>,\n  animatedShouldUseSingleOp: Getter<boolean>,\n  avoidStateUpdateInAnimatedPropsMemo: Getter<boolean>,\n  deferFlatListFocusChangeRenderUpdate: Getter<boolean>,\n  disableInteractionManager: Getter<boolean>,\n  enableAccessToHostTreeInFabric: Getter<boolean>,\n  fixVirtualizeListCollapseWindowSize: Getter<boolean>,\n  isLayoutAnimationEnabled: Getter<boolean>,\n  reduceDefaultPropsInView: Getter<boolean>,\n  scheduleAnimatedCleanupInMicrotask: Getter<boolean>,\n  shouldUseAnimatedObjectForTransform: Getter<boolean>,\n  shouldUseRemoveClippedSubviewsAsDefaultOnIOS: Getter<boolean>,\n  shouldUseSetNativePropsInFabric: Getter<boolean>,\n  utilizeTokensInIntersectionObserver: Getter<boolean>,\n}>;\n\nexport type ReactNativeFeatureFlagsJsOnlyOverrides = OverridesFor<ReactNativeFeatureFlagsJsOnly>;\n\nexport type ReactNativeFeatureFlags = $ReadOnly<{\n  ...ReactNativeFeatureFlagsJsOnly,\n  commonTestFlag: Getter<boolean>,\n  commonTestFlagWithoutNativeImplementation: Getter<boolean>,\n  animatedShouldSignalBatch: Getter<boolean>,\n  cxxNativeAnimatedEnabled: Getter<boolean>,\n  cxxNativeAnimatedRemoveJsSync: Getter<boolean>,\n  disableMainQueueSyncDispatchIOS: Getter<boolean>,\n  disableMountItemReorderingAndroid: Getter<boolean>,\n  disableTextLayoutManagerCacheAndroid: Getter<boolean>,\n  enableAccessibilityOrder: Getter<boolean>,\n  enableAccumulatedUpdatesInRawPropsAndroid: Getter<boolean>,\n  enableAndroidTextMeasurementOptimizations: Getter<boolean>,\n  enableBridgelessArchitecture: Getter<boolean>,\n  enableCppPropsIteratorSetter: Getter<boolean>,\n  enableCustomFocusSearchOnClippedElementsAndroid: Getter<boolean>,\n  enableDestroyShadowTreeRevisionAsync: Getter<boolean>,\n  enableDoubleMeasurementFixAndroid: Getter<boolean>,\n  enableEagerRootViewAttachment: Getter<boolean>,\n  enableFabricLogs: Getter<boolean>,\n  enableFabricRenderer: Getter<boolean>,\n  enableFixForParentTagDuringReparenting: Getter<boolean>,\n  enableFontScaleChangesUpdatingLayout: Getter<boolean>,\n  enableIOSTextBaselineOffsetPerLine: Getter<boolean>,\n  enableIOSViewClipToPaddingBox: Getter<boolean>,\n  enableInteropViewManagerClassLookUpOptimizationIOS: Getter<boolean>,\n  enableLayoutAnimationsOnAndroid: Getter<boolean>,\n  enableLayoutAnimationsOnIOS: Getter<boolean>,\n  enableMainQueueCoordinatorOnIOS: Getter<boolean>,\n  enableMainQueueModulesOnIOS: Getter<boolean>,\n  enableModuleArgumentNSNullConversionIOS: Getter<boolean>,\n  enableNativeCSSParsing: Getter<boolean>,\n  enableNetworkEventReporting: Getter<boolean>,\n  enableNewBackgroundAndBorderDrawables: Getter<boolean>,\n  enablePreparedTextLayout: Getter<boolean>,\n  enablePropsUpdateReconciliationAndroid: Getter<boolean>,\n  enableResourceTimingAPI: Getter<boolean>,\n  enableSynchronousStateUpdates: Getter<boolean>,\n  enableViewCulling: Getter<boolean>,\n  enableViewRecycling: Getter<boolean>,\n  enableViewRecyclingForText: Getter<boolean>,\n  enableViewRecyclingForView: Getter<boolean>,\n  enableVirtualViewDebugFeatures: Getter<boolean>,\n  enableVirtualViewRenderState: Getter<boolean>,\n  enableVirtualViewWindowFocusDetection: Getter<boolean>,\n  fixMappingOfEventPrioritiesBetweenFabricAndReact: Getter<boolean>,\n  fuseboxEnabledRelease: Getter<boolean>,\n  fuseboxNetworkInspectionEnabled: Getter<boolean>,\n  hideOffscreenVirtualViewsOnIOS: Getter<boolean>,\n  preparedTextCacheSize: Getter<number>,\n  preventShadowTreeCommitExhaustion: Getter<boolean>,\n  traceTurboModulePromiseRejectionsOnAndroid: Getter<boolean>,\n  updateRuntimeShadowNodeReferencesOnCommit: Getter<boolean>,\n  useAlwaysAvailableJSErrorHandling: Getter<boolean>,\n  useFabricInterop: Getter<boolean>,\n  useNativeEqualsInNativeReadableArrayAndroid: Getter<boolean>,\n  useNativeTransformHelperAndroid: Getter<boolean>,\n  useNativeViewConfigsInBridgelessMode: Getter<boolean>,\n  useOptimizedEventBatchingOnAndroid: Getter<boolean>,\n  useRawPropsJsiValue: Getter<boolean>,\n  useShadowNodeStateOnClone: Getter<boolean>,\n  useTurboModuleInterop: Getter<boolean>,\n  useTurboModules: Getter<boolean>,\n  virtualViewPrerenderRatio: Getter<number>,\n}>;\n\n/**\n * JS-only flag for testing. Do NOT modify.\n */\nexport const jsOnlyTestFlag: Getter<boolean> = createJavaScriptFlagGetter('jsOnlyTestFlag', false);\n\n/**\n * Changes `Animated` to always flatten style, fixing a bug with shadowed `AnimatedNode` instances.\n */\nexport const alwaysFlattenAnimatedStyles: Getter<boolean> = createJavaScriptFlagGetter('alwaysFlattenAnimatedStyles', false);\n\n/**\n * Enables an experimental flush-queue debouncing in Animated.js.\n */\nexport const animatedShouldDebounceQueueFlush: Getter<boolean> = createJavaScriptFlagGetter('animatedShouldDebounceQueueFlush', false);\n\n/**\n * Enables an experimental mega-operation for Animated.js that replaces many calls to native with a single call into native, to reduce JSI/JNI traffic.\n */\nexport const animatedShouldUseSingleOp: Getter<boolean> = createJavaScriptFlagGetter('animatedShouldUseSingleOp', false);\n\n/**\n * Changes `useAnimatedPropsMemo` to avoid state updates to invalidate the cached `AnimatedProps`.\n */\nexport const avoidStateUpdateInAnimatedPropsMemo: Getter<boolean> = createJavaScriptFlagGetter('avoidStateUpdateInAnimatedPropsMemo', true);\n\n/**\n * Use the deferred cell render update mechanism for focus change in FlatList.\n */\nexport const deferFlatListFocusChangeRenderUpdate: Getter<boolean> = createJavaScriptFlagGetter('deferFlatListFocusChangeRenderUpdate', false);\n\n/**\n * Disables InteractionManager and replaces its scheduler with `setImmediate`.\n */\nexport const disableInteractionManager: Getter<boolean> = createJavaScriptFlagGetter('disableInteractionManager', true);\n\n/**\n * Enables access to the host tree in Fabric using DOM-compatible APIs.\n */\nexport const enableAccessToHostTreeInFabric: Getter<boolean> = createJavaScriptFlagGetter('enableAccessToHostTreeInFabric', false);\n\n/**\n * Fixing an edge case where the current window size is not properly calculated with fast scrolling. Window size collapsed to 1 element even if windowSize more than the current amount of elements\n */\nexport const fixVirtualizeListCollapseWindowSize: Getter<boolean> = createJavaScriptFlagGetter('fixVirtualizeListCollapseWindowSize', false);\n\n/**\n * Function used to enable / disabled Layout Animations in React Native.\n */\nexport const isLayoutAnimationEnabled: Getter<boolean> = createJavaScriptFlagGetter('isLayoutAnimationEnabled', true);\n\n/**\n * Optimize how default (accessibility) props are processed in View to avoid unnecessary keys.\n */\nexport const reduceDefaultPropsInView: Getter<boolean> = createJavaScriptFlagGetter('reduceDefaultPropsInView', true);\n\n/**\n * Changes the cleanup of `AnimatedProps` to occur in a microtask instead of synchronously during effect cleanup (for unmount) or subsequent mounts (for updates).\n */\nexport const scheduleAnimatedCleanupInMicrotask: Getter<boolean> = createJavaScriptFlagGetter('scheduleAnimatedCleanupInMicrotask', true);\n\n/**\n * Enables use of AnimatedObject for animating transform values.\n */\nexport const shouldUseAnimatedObjectForTransform: Getter<boolean> = createJavaScriptFlagGetter('shouldUseAnimatedObjectForTransform', false);\n\n/**\n * removeClippedSubviews prop will be used as the default in FlatList on iOS to match Android\n */\nexport const shouldUseRemoveClippedSubviewsAsDefaultOnIOS: Getter<boolean> = createJavaScriptFlagGetter('shouldUseRemoveClippedSubviewsAsDefaultOnIOS', false);\n\n/**\n * Enables use of setNativeProps in JS driven animations.\n */\nexport const shouldUseSetNativePropsInFabric: Getter<boolean> = createJavaScriptFlagGetter('shouldUseSetNativePropsInFabric', true);\n\n/**\n * Use tokens in IntersectionObserver vs ShadowNode.\n */\nexport const utilizeTokensInIntersectionObserver: Getter<boolean> = createJavaScriptFlagGetter('utilizeTokensInIntersectionObserver', true);\n\n/**\n * Common flag for testing. Do NOT modify.\n */\nexport const commonTestFlag: Getter<boolean> = createNativeFlagGetter('commonTestFlag', false);\n/**\n * Common flag for testing (without native implementation). Do NOT modify.\n */\nexport const commonTestFlagWithoutNativeImplementation: Getter<boolean> = createNativeFlagGetter('commonTestFlagWithoutNativeImplementation', false);\n/**\n * Enables start- and finishOperationBatch on any platform.\n */\nexport const animatedShouldSignalBatch: Getter<boolean> = createNativeFlagGetter('animatedShouldSignalBatch', false);\n/**\n * Use a C++ implementation of Native Animated instead of the platform implementation.\n */\nexport const cxxNativeAnimatedEnabled: Getter<boolean> = createNativeFlagGetter('cxxNativeAnimatedEnabled', false);\n/**\n * Removes JS sync at end of native animation\n */\nexport const cxxNativeAnimatedRemoveJsSync: Getter<boolean> = createNativeFlagGetter('cxxNativeAnimatedRemoveJsSync', false);\n/**\n * Disable sync dispatch on the main queue on iOS\n */\nexport const disableMainQueueSyncDispatchIOS: Getter<boolean> = createNativeFlagGetter('disableMainQueueSyncDispatchIOS', false);\n/**\n * Prevent FabricMountingManager from reordering mountItems, which may lead to invalid state on the UI thread\n */\nexport const disableMountItemReorderingAndroid: Getter<boolean> = createNativeFlagGetter('disableMountItemReorderingAndroid', false);\n/**\n * Turns off the global measurement cache used by TextLayoutManager on Android.\n */\nexport const disableTextLayoutManagerCacheAndroid: Getter<boolean> = createNativeFlagGetter('disableTextLayoutManagerCacheAndroid', false);\n/**\n * When enabled, the accessibilityOrder prop will propagate to native platforms and define the accessibility order.\n */\nexport const enableAccessibilityOrder: Getter<boolean> = createNativeFlagGetter('enableAccessibilityOrder', false);\n/**\n * When enabled, Android will accumulate updates in rawProps to reduce the number of mounting instructions for cascading re-renders.\n */\nexport const enableAccumulatedUpdatesInRawPropsAndroid: Getter<boolean> = createNativeFlagGetter('enableAccumulatedUpdatesInRawPropsAndroid', false);\n/**\n * Enables various optimizations throughout the path of measuring text on Android.\n */\nexport const enableAndroidTextMeasurementOptimizations: Getter<boolean> = createNativeFlagGetter('enableAndroidTextMeasurementOptimizations', false);\n/**\n * Feature flag to enable the new bridgeless architecture. Note: Enabling this will force enable the following flags: `useTurboModules` & `enableFabricRenderer`.\n */\nexport const enableBridgelessArchitecture: Getter<boolean> = createNativeFlagGetter('enableBridgelessArchitecture', false);\n/**\n * Enable prop iterator setter-style construction of Props in C++ (this flag is not used in Java).\n */\nexport const enableCppPropsIteratorSetter: Getter<boolean> = createNativeFlagGetter('enableCppPropsIteratorSetter', false);\n/**\n * This enables the fabric implementation of focus search so that we can focus clipped elements\n */\nexport const enableCustomFocusSearchOnClippedElementsAndroid: Getter<boolean> = createNativeFlagGetter('enableCustomFocusSearchOnClippedElementsAndroid', true);\n/**\n * Enables destructor calls for ShadowTreeRevision in the background to reduce UI thread work.\n */\nexport const enableDestroyShadowTreeRevisionAsync: Getter<boolean> = createNativeFlagGetter('enableDestroyShadowTreeRevisionAsync', false);\n/**\n * When enabled a subset of components will avoid double measurement on Android.\n */\nexport const enableDoubleMeasurementFixAndroid: Getter<boolean> = createNativeFlagGetter('enableDoubleMeasurementFixAndroid', false);\n/**\n * Feature flag to configure eager attachment of the root view/initialisation of the JS code.\n */\nexport const enableEagerRootViewAttachment: Getter<boolean> = createNativeFlagGetter('enableEagerRootViewAttachment', false);\n/**\n * This feature flag enables logs for Fabric.\n */\nexport const enableFabricLogs: Getter<boolean> = createNativeFlagGetter('enableFabricLogs', false);\n/**\n * Enables the use of the Fabric renderer in the whole app.\n */\nexport const enableFabricRenderer: Getter<boolean> = createNativeFlagGetter('enableFabricRenderer', false);\n/**\n * This feature flag enables a fix for reparenting fix in differentiator\n */\nexport const enableFixForParentTagDuringReparenting: Getter<boolean> = createNativeFlagGetter('enableFixForParentTagDuringReparenting', false);\n/**\n * Enables font scale changes updating layout for measurable nodes.\n */\nexport const enableFontScaleChangesUpdatingLayout: Getter<boolean> = createNativeFlagGetter('enableFontScaleChangesUpdatingLayout', false);\n/**\n * Applies base offset for each line of text separately on iOS.\n */\nexport const enableIOSTextBaselineOffsetPerLine: Getter<boolean> = createNativeFlagGetter('enableIOSTextBaselineOffsetPerLine', false);\n/**\n * iOS Views will clip to their padding box vs border box\n */\nexport const enableIOSViewClipToPaddingBox: Getter<boolean> = createNativeFlagGetter('enableIOSViewClipToPaddingBox', false);\n/**\n * This is to fix the issue with interop view manager where component descriptor lookup is causing ViewManager to preload.\n */\nexport const enableInteropViewManagerClassLookUpOptimizationIOS: Getter<boolean> = createNativeFlagGetter('enableInteropViewManagerClassLookUpOptimizationIOS', false);\n/**\n * When enabled, LayoutAnimations API will animate state changes on Android.\n */\nexport const enableLayoutAnimationsOnAndroid: Getter<boolean> = createNativeFlagGetter('enableLayoutAnimationsOnAndroid', false);\n/**\n * When enabled, LayoutAnimations API will animate state changes on iOS.\n */\nexport const enableLayoutAnimationsOnIOS: Getter<boolean> = createNativeFlagGetter('enableLayoutAnimationsOnIOS', true);\n/**\n * Make RCTUnsafeExecuteOnMainQueueSync less likely to deadlock, when used in conjuction with sync rendering/events.\n */\nexport const enableMainQueueCoordinatorOnIOS: Getter<boolean> = createNativeFlagGetter('enableMainQueueCoordinatorOnIOS', false);\n/**\n * Makes modules requiring main queue setup initialize on the main thread, during React Native init.\n */\nexport const enableMainQueueModulesOnIOS: Getter<boolean> = createNativeFlagGetter('enableMainQueueModulesOnIOS', false);\n/**\n * Enable NSNull conversion when handling module arguments on iOS\n */\nexport const enableModuleArgumentNSNullConversionIOS: Getter<boolean> = createNativeFlagGetter('enableModuleArgumentNSNullConversionIOS', false);\n/**\n * Parse CSS strings using the Fabric CSS parser instead of ViewConfig processing\n */\nexport const enableNativeCSSParsing: Getter<boolean> = createNativeFlagGetter('enableNativeCSSParsing', false);\n/**\n * Enable network event reporting hooks in each native platform through `NetworkReporter`. This flag should be combined with `enableResourceTimingAPI` and `fuseboxNetworkInspectionEnabled` to enable end-to-end reporting behaviour via the Web Performance API and CDP debugging respectively.\n */\nexport const enableNetworkEventReporting: Getter<boolean> = createNativeFlagGetter('enableNetworkEventReporting', false);\n/**\n * Use BackgroundDrawable and BorderDrawable instead of CSSBackgroundDrawable\n */\nexport const enableNewBackgroundAndBorderDrawables: Getter<boolean> = createNativeFlagGetter('enableNewBackgroundAndBorderDrawables', true);\n/**\n * Enables caching text layout artifacts for later reuse\n */\nexport const enablePreparedTextLayout: Getter<boolean> = createNativeFlagGetter('enablePreparedTextLayout', false);\n/**\n * When enabled, Android will receive prop updates based on the differences between the last rendered shadow node and the last committed shadow node.\n */\nexport const enablePropsUpdateReconciliationAndroid: Getter<boolean> = createNativeFlagGetter('enablePropsUpdateReconciliationAndroid', false);\n/**\n * Enables the reporting of network resource timings through `PerformanceObserver`.\n */\nexport const enableResourceTimingAPI: Getter<boolean> = createNativeFlagGetter('enableResourceTimingAPI', false);\n/**\n * Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).\n */\nexport const enableSynchronousStateUpdates: Getter<boolean> = createNativeFlagGetter('enableSynchronousStateUpdates', false);\n/**\n * Enables View Culling: as soon as a view goes off screen, it can be reused anywhere in the UI and pieced together with other items to create new UI elements.\n */\nexport const enableViewCulling: Getter<boolean> = createNativeFlagGetter('enableViewCulling', false);\n/**\n * Enables View Recycling. When enabled, individual ViewManagers must still opt-in.\n */\nexport const enableViewRecycling: Getter<boolean> = createNativeFlagGetter('enableViewRecycling', false);\n/**\n * Enables View Recycling for <Text> via ReactTextView/ReactTextViewManager.\n */\nexport const enableViewRecyclingForText: Getter<boolean> = createNativeFlagGetter('enableViewRecyclingForText', true);\n/**\n * Enables View Recycling for <View> via ReactViewGroup/ReactViewManager.\n */\nexport const enableViewRecyclingForView: Getter<boolean> = createNativeFlagGetter('enableViewRecyclingForView', true);\n/**\n * Enables VirtualView debug features such as logging and overlays.\n */\nexport const enableVirtualViewDebugFeatures: Getter<boolean> = createNativeFlagGetter('enableVirtualViewDebugFeatures', false);\n/**\n * Enables reading render state when dispatching VirtualView events.\n */\nexport const enableVirtualViewRenderState: Getter<boolean> = createNativeFlagGetter('enableVirtualViewRenderState', false);\n/**\n * Enables window focus detection for prioritizing VirtualView events.\n */\nexport const enableVirtualViewWindowFocusDetection: Getter<boolean> = createNativeFlagGetter('enableVirtualViewWindowFocusDetection', false);\n/**\n * Uses the default event priority instead of the discreet event priority by default when dispatching events from Fabric to React.\n */\nexport const fixMappingOfEventPrioritiesBetweenFabricAndReact: Getter<boolean> = createNativeFlagGetter('fixMappingOfEventPrioritiesBetweenFabricAndReact', false);\n/**\n * Flag determining if the React Native DevTools (Fusebox) CDP backend should be enabled in release builds. This flag is global and should not be changed across React Host lifetimes.\n */\nexport const fuseboxEnabledRelease: Getter<boolean> = createNativeFlagGetter('fuseboxEnabledRelease', false);\n/**\n * Enable network inspection support in the React Native DevTools CDP backend. Requires `enableBridgelessArchitecture`. This flag is global and should not be changed across React Host lifetimes.\n */\nexport const fuseboxNetworkInspectionEnabled: Getter<boolean> = createNativeFlagGetter('fuseboxNetworkInspectionEnabled', false);\n/**\n * Hides offscreen VirtualViews on iOS by setting hidden = YES to avoid extra cost of views\n */\nexport const hideOffscreenVirtualViewsOnIOS: Getter<boolean> = createNativeFlagGetter('hideOffscreenVirtualViewsOnIOS', false);\n/**\n * Number cached PreparedLayouts in TextLayoutManager cache\n */\nexport const preparedTextCacheSize: Getter<number> = createNativeFlagGetter('preparedTextCacheSize', 200);\n/**\n * Enables a new mechanism in ShadowTree to prevent problems caused by multiple threads trying to commit concurrently. If a thread tries to commit a few times unsuccessfully, it will acquire a lock and try again.\n */\nexport const preventShadowTreeCommitExhaustion: Getter<boolean> = createNativeFlagGetter('preventShadowTreeCommitExhaustion', false);\n/**\n * Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause.\n */\nexport const traceTurboModulePromiseRejectionsOnAndroid: Getter<boolean> = createNativeFlagGetter('traceTurboModulePromiseRejectionsOnAndroid', false);\n/**\n * When enabled, runtime shadow node references will be updated during the commit. This allows running RSNRU from any thread without corrupting the renderer state.\n */\nexport const updateRuntimeShadowNodeReferencesOnCommit: Getter<boolean> = createNativeFlagGetter('updateRuntimeShadowNodeReferencesOnCommit', false);\n/**\n * In Bridgeless mode, use the always available javascript error reporting pipeline.\n */\nexport const useAlwaysAvailableJSErrorHandling: Getter<boolean> = createNativeFlagGetter('useAlwaysAvailableJSErrorHandling', false);\n/**\n * Should this application enable the Fabric Interop Layer for Android? If yes, the application will behave so that it can accept non-Fabric components and render them on Fabric. This toggle is controlling extra logic such as custom event dispatching that are needed for the Fabric Interop Layer to work correctly.\n */\nexport const useFabricInterop: Getter<boolean> = createNativeFlagGetter('useFabricInterop', true);\n/**\n * Use a native implementation of equals in NativeReadableArray.\n */\nexport const useNativeEqualsInNativeReadableArrayAndroid: Getter<boolean> = createNativeFlagGetter('useNativeEqualsInNativeReadableArrayAndroid', false);\n/**\n * Use a native implementation of TransformHelper\n */\nexport const useNativeTransformHelperAndroid: Getter<boolean> = createNativeFlagGetter('useNativeTransformHelperAndroid', false);\n/**\n * When enabled, the native view configs are used in bridgeless mode.\n */\nexport const useNativeViewConfigsInBridgelessMode: Getter<boolean> = createNativeFlagGetter('useNativeViewConfigsInBridgelessMode', false);\n/**\n * Uses an optimized mechanism for event batching on Android that does not need to wait for a Choreographer frame callback.\n */\nexport const useOptimizedEventBatchingOnAndroid: Getter<boolean> = createNativeFlagGetter('useOptimizedEventBatchingOnAndroid', false);\n/**\n * Instead of using folly::dynamic as internal representation in RawProps and RawValue, use jsi::Value\n */\nexport const useRawPropsJsiValue: Getter<boolean> = createNativeFlagGetter('useRawPropsJsiValue', false);\n/**\n * Use the state stored on the source shadow node when cloning it instead of reading in the most recent state on the shadow node family.\n */\nexport const useShadowNodeStateOnClone: Getter<boolean> = createNativeFlagGetter('useShadowNodeStateOnClone', false);\n/**\n * In Bridgeless mode, should legacy NativeModules use the TurboModule system?\n */\nexport const useTurboModuleInterop: Getter<boolean> = createNativeFlagGetter('useTurboModuleInterop', false);\n/**\n * When enabled, NativeModules will be executed by using the TurboModule system\n */\nexport const useTurboModules: Getter<boolean> = createNativeFlagGetter('useTurboModules', false);\n/**\n * Initial prerender ratio for VirtualView.\n */\nexport const virtualViewPrerenderRatio: Getter<number> = createNativeFlagGetter('virtualViewPrerenderRatio', 5);\n\n/**\n * Overrides the feature flags with the provided methods.\n * NOTE: Only JS-only flags can be overridden from JavaScript using this API.\n */\nexport const override = setOverrides;\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 * @flow strict\n * @format\n */\n\nimport type {\n  ReactNativeFeatureFlagsJsOnly,\n  ReactNativeFeatureFlagsJsOnlyOverrides,\n} from './ReactNativeFeatureFlags';\n\nimport NativeReactNativeFeatureFlags from './specs/NativeReactNativeFeatureFlags';\n\nconst accessedFeatureFlags: Set<string> = new Set();\nlet overrides: ?ReactNativeFeatureFlagsJsOnlyOverrides;\n\nexport type Getter<T> = () => T;\n\n// This defines the types for the overrides object, whose methods also receive\n// the default value as a parameter.\nexport type OverridesFor<T> = Partial<{\n  [key in keyof T]: (ReturnType<T[key]>) => ReturnType<T[key]>,\n}>;\n\nfunction createGetter<T: boolean | number | string>(\n  configName: string,\n  customValueGetter: Getter<?T>,\n  defaultValue: T,\n): Getter<T> {\n  let cachedValue: ?T;\n\n  return () => {\n    if (cachedValue == null) {\n      cachedValue = customValueGetter() ?? defaultValue;\n    }\n    return cachedValue;\n  };\n}\n\nexport function createJavaScriptFlagGetter<\n  K: $Keys<ReactNativeFeatureFlagsJsOnly>,\n>(\n  configName: K,\n  defaultValue: ReturnType<ReactNativeFeatureFlagsJsOnly[K]>,\n): Getter<ReturnType<ReactNativeFeatureFlagsJsOnly[K]>> {\n  return createGetter(\n    configName,\n    () => {\n      accessedFeatureFlags.add(configName);\n      return overrides?.[configName]?.(defaultValue);\n    },\n    defaultValue,\n  );\n}\n\ntype NativeFeatureFlags = $NonMaybeType<typeof NativeReactNativeFeatureFlags>;\n\nexport function createNativeFlagGetter<K: $Keys<NativeFeatureFlags>>(\n  configName: K,\n  defaultValue: ReturnType<$NonMaybeType<NativeFeatureFlags[K]>>,\n  skipUnavailableNativeModuleError: boolean = false,\n): Getter<ReturnType<$NonMaybeType<NativeFeatureFlags[K]>>> {\n  return createGetter(\n    configName,\n    () => {\n      maybeLogUnavailableNativeModuleError(configName);\n      return NativeReactNativeFeatureFlags?.[configName]?.();\n    },\n    defaultValue,\n  );\n}\n\nexport function getOverrides(): ?ReactNativeFeatureFlagsJsOnlyOverrides {\n  return overrides;\n}\n\nexport function setOverrides(\n  newOverrides: ReactNativeFeatureFlagsJsOnlyOverrides,\n): void {\n  if (overrides != null) {\n    throw new Error('Feature flags cannot be overridden more than once');\n  }\n\n  if (accessedFeatureFlags.size > 0) {\n    const accessedFeatureFlagsStr = Array.from(accessedFeatureFlags).join(', ');\n    throw new Error(\n      `Feature flags were accessed before being overridden: ${accessedFeatureFlagsStr}`,\n    );\n  }\n\n  overrides = newOverrides;\n}\n\nconst reportedConfigNames: Set<string> = new Set();\nconst hasTurboModules =\n  global.RN$Bridgeless === true || global.__turboModuleProxy != null;\n\nfunction maybeLogUnavailableNativeModuleError(configName: string): void {\n  if (\n    !NativeReactNativeFeatureFlags &&\n    // Don't log in tests.\n    process.env.NODE_ENV !== 'test' &&\n    // Don't log more than once per config\n    !reportedConfigNames.has(configName) &&\n    // Don't log in the legacy architecture.\n    hasTurboModules\n  ) {\n    reportedConfigNames.add(configName);\n    console.error(\n      `Could not access feature flag '${configName}' because native module method was not available`,\n    );\n  }\n}\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 * @generated SignedSource<<8b4f1275a16d5b83f5594da1eb89c6c1>>\n * @flow strict\n * @noformat\n */\n\n/**\n * IMPORTANT: Do NOT modify this file directly.\n *\n * To change the definition of the flags, edit\n *   packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js.\n *\n * To regenerate this code, run the following script from the repo root:\n *   yarn featureflags --update\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +commonTestFlag?: () => boolean;\n  +commonTestFlagWithoutNativeImplementation?: () => boolean;\n  +animatedShouldSignalBatch?: () => boolean;\n  +cxxNativeAnimatedEnabled?: () => boolean;\n  +cxxNativeAnimatedRemoveJsSync?: () => boolean;\n  +disableMainQueueSyncDispatchIOS?: () => boolean;\n  +disableMountItemReorderingAndroid?: () => boolean;\n  +disableTextLayoutManagerCacheAndroid?: () => boolean;\n  +enableAccessibilityOrder?: () => boolean;\n  +enableAccumulatedUpdatesInRawPropsAndroid?: () => boolean;\n  +enableAndroidTextMeasurementOptimizations?: () => boolean;\n  +enableBridgelessArchitecture?: () => boolean;\n  +enableCppPropsIteratorSetter?: () => boolean;\n  +enableCustomFocusSearchOnClippedElementsAndroid?: () => boolean;\n  +enableDestroyShadowTreeRevisionAsync?: () => boolean;\n  +enableDoubleMeasurementFixAndroid?: () => boolean;\n  +enableEagerRootViewAttachment?: () => boolean;\n  +enableFabricLogs?: () => boolean;\n  +enableFabricRenderer?: () => boolean;\n  +enableFixForParentTagDuringReparenting?: () => boolean;\n  +enableFontScaleChangesUpdatingLayout?: () => boolean;\n  +enableIOSTextBaselineOffsetPerLine?: () => boolean;\n  +enableIOSViewClipToPaddingBox?: () => boolean;\n  +enableInteropViewManagerClassLookUpOptimizationIOS?: () => boolean;\n  +enableLayoutAnimationsOnAndroid?: () => boolean;\n  +enableLayoutAnimationsOnIOS?: () => boolean;\n  +enableMainQueueCoordinatorOnIOS?: () => boolean;\n  +enableMainQueueModulesOnIOS?: () => boolean;\n  +enableModuleArgumentNSNullConversionIOS?: () => boolean;\n  +enableNativeCSSParsing?: () => boolean;\n  +enableNetworkEventReporting?: () => boolean;\n  +enableNewBackgroundAndBorderDrawables?: () => boolean;\n  +enablePreparedTextLayout?: () => boolean;\n  +enablePropsUpdateReconciliationAndroid?: () => boolean;\n  +enableResourceTimingAPI?: () => boolean;\n  +enableSynchronousStateUpdates?: () => boolean;\n  +enableViewCulling?: () => boolean;\n  +enableViewRecycling?: () => boolean;\n  +enableViewRecyclingForText?: () => boolean;\n  +enableViewRecyclingForView?: () => boolean;\n  +enableVirtualViewDebugFeatures?: () => boolean;\n  +enableVirtualViewRenderState?: () => boolean;\n  +enableVirtualViewWindowFocusDetection?: () => boolean;\n  +fixMappingOfEventPrioritiesBetweenFabricAndReact?: () => boolean;\n  +fuseboxEnabledRelease?: () => boolean;\n  +fuseboxNetworkInspectionEnabled?: () => boolean;\n  +hideOffscreenVirtualViewsOnIOS?: () => boolean;\n  +preparedTextCacheSize?: () => number;\n  +preventShadowTreeCommitExhaustion?: () => boolean;\n  +traceTurboModulePromiseRejectionsOnAndroid?: () => boolean;\n  +updateRuntimeShadowNodeReferencesOnCommit?: () => boolean;\n  +useAlwaysAvailableJSErrorHandling?: () => boolean;\n  +useFabricInterop?: () => boolean;\n  +useNativeEqualsInNativeReadableArrayAndroid?: () => boolean;\n  +useNativeTransformHelperAndroid?: () => boolean;\n  +useNativeViewConfigsInBridgelessMode?: () => boolean;\n  +useOptimizedEventBatchingOnAndroid?: () => boolean;\n  +useRawPropsJsiValue?: () => boolean;\n  +useShadowNodeStateOnClone?: () => boolean;\n  +useTurboModuleInterop?: () => boolean;\n  +useTurboModules?: () => boolean;\n  +virtualViewPrerenderRatio?: () => number;\n}\n\nconst NativeReactNativeFeatureFlags: ?Spec = TurboModuleRegistry.get<Spec>(\n  'NativeReactNativeFeatureFlagsCxx',\n);\n\nexport default NativeReactNativeFeatureFlags;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nfunction processAspectRatio(aspectRatio?: number | string): ?number {\n  if (typeof aspectRatio === 'number') {\n    return aspectRatio;\n  }\n  if (typeof aspectRatio !== 'string') {\n    if (__DEV__) {\n      invariant(\n        !aspectRatio,\n        'aspectRatio must either be a number, a ratio string or `auto`. You passed: %s',\n        aspectRatio,\n      );\n    }\n    return;\n  }\n\n  const matches = aspectRatio.split('/').map(s => s.trim());\n\n  if (matches.includes('auto')) {\n    if (__DEV__) {\n      invariant(\n        matches.length,\n        'aspectRatio does not support `auto <ratio>`. You passed: %s',\n        aspectRatio,\n      );\n    }\n    return;\n  }\n\n  const hasNonNumericValues = matches.some(n => Number.isNaN(Number(n)));\n  if (__DEV__) {\n    invariant(\n      !hasNonNumericValues && (matches.length === 1 || matches.length === 2),\n      'aspectRatio must either be a number, a ratio string or `auto`. You passed: %s',\n      aspectRatio,\n    );\n  }\n\n  if (hasNonNumericValues) {\n    return;\n  }\n\n  if (matches.length === 2) {\n    return Number(matches[0]) / Number(matches[1]);\n  }\n\n  return Number(matches[0]);\n}\n\nexport default processAspectRatio;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {ProcessedColorValue} from './processColor';\nimport type {\n  BackgroundImageValue,\n  RadialGradientPosition,\n  RadialGradientShape,\n  RadialGradientSize,\n} from './StyleSheetTypes';\n\nconst processColor = require('./processColor').default;\n\n// Linear Gradient\nconst LINEAR_GRADIENT_DIRECTION_REGEX =\n  /^to\\s+(?:top|bottom|left|right)(?:\\s+(?:top|bottom|left|right))?/i;\nconst LINEAR_GRADIENT_ANGLE_UNIT_REGEX =\n  /^([+-]?\\d*\\.?\\d+)(deg|grad|rad|turn)$/i;\nconst LINEAR_GRADIENT_DEFAULT_DIRECTION: LinearGradientDirection = {\n  type: 'angle',\n  value: 180,\n};\n\ntype LinearGradientDirection =\n  | {type: 'angle', value: number}\n  | {type: 'keyword', value: string};\n\ntype LinearGradientBackgroundImage = {\n  type: 'linear-gradient',\n  direction: LinearGradientDirection,\n  colorStops: $ReadOnlyArray<{\n    color: ColorStopColor,\n    position: ColorStopPosition,\n  }>,\n};\n\n// Radial Gradient\nconst DEFAULT_RADIAL_SHAPE = 'ellipse';\nconst DEFAULT_RADIAL_SIZE = 'farthest-corner';\n// center\nconst DEFAULT_RADIAL_POSITION: RadialGradientPosition = {\n  top: '50%',\n  left: '50%',\n};\n\ntype RadialGradientBackgroundImage = {\n  type: 'radial-gradient',\n  shape: RadialGradientShape,\n  size: RadialGradientSize,\n  position: RadialGradientPosition,\n  colorStops: $ReadOnlyArray<{\n    color: ColorStopColor,\n    position: ColorStopPosition,\n  }>,\n};\n\n// null color indicate that the transition hint syntax is used. e.g. red, 20%, blue\ntype ColorStopColor = ProcessedColorValue | null;\n// percentage or pixel value\ntype ColorStopPosition = number | string | null;\n\ntype ParsedBackgroundImageValue =\n  | LinearGradientBackgroundImage\n  | RadialGradientBackgroundImage;\n\nexport default function processBackgroundImage(\n  backgroundImage: ?($ReadOnlyArray<BackgroundImageValue> | string),\n): $ReadOnlyArray<ParsedBackgroundImageValue> {\n  let result: $ReadOnlyArray<ParsedBackgroundImageValue> = [];\n  if (backgroundImage == null) {\n    return result;\n  }\n\n  if (typeof backgroundImage === 'string') {\n    result = parseBackgroundImageCSSString(backgroundImage.replace(/\\n/g, ' '));\n  } else if (Array.isArray(backgroundImage)) {\n    for (const bgImage of backgroundImage) {\n      const processedColorStops = processColorStops(bgImage);\n      if (processedColorStops == null) {\n        // If a color stop is invalid, return an empty array and do not apply any gradient. Same as web.\n        return [];\n      }\n\n      if (bgImage.type === 'linear-gradient') {\n        let direction: LinearGradientDirection =\n          LINEAR_GRADIENT_DEFAULT_DIRECTION;\n        const bgDirection =\n          bgImage.direction != null ? bgImage.direction.toLowerCase() : null;\n\n        if (bgDirection != null) {\n          if (LINEAR_GRADIENT_ANGLE_UNIT_REGEX.test(bgDirection)) {\n            const parsedAngle = getAngleInDegrees(bgDirection);\n            if (parsedAngle != null) {\n              direction = {\n                type: 'angle',\n                value: parsedAngle,\n              };\n            } else {\n              // If an angle is invalid, return an empty array and do not apply any gradient. Same as web.\n              return [];\n            }\n          } else if (LINEAR_GRADIENT_DIRECTION_REGEX.test(bgDirection)) {\n            const parsedDirection = getDirectionForKeyword(bgDirection);\n            if (parsedDirection != null) {\n              direction = parsedDirection;\n            } else {\n              // If a direction is invalid, return an empty array and do not apply any gradient. Same as web.\n              return [];\n            }\n          } else {\n            // If a direction is invalid, return an empty array and do not apply any gradient. Same as web.\n            return [];\n          }\n        }\n\n        result = result.concat({\n          type: 'linear-gradient',\n          direction,\n          colorStops: processedColorStops,\n        });\n      } else if (bgImage.type === 'radial-gradient') {\n        let shape: RadialGradientShape = DEFAULT_RADIAL_SHAPE;\n        let size: RadialGradientSize = DEFAULT_RADIAL_SIZE;\n        let position: RadialGradientPosition = {...DEFAULT_RADIAL_POSITION};\n\n        if (bgImage.shape != null) {\n          if (bgImage.shape === 'circle' || bgImage.shape === 'ellipse') {\n            shape = bgImage.shape;\n          } else {\n            // If the shape is invalid, return an empty array and do not apply any gradient. Same as web.\n            return [];\n          }\n        }\n\n        if (bgImage.size != null) {\n          if (\n            typeof bgImage.size === 'string' &&\n            (bgImage.size === 'closest-side' ||\n              bgImage.size === 'closest-corner' ||\n              bgImage.size === 'farthest-side' ||\n              bgImage.size === 'farthest-corner')\n          ) {\n            size = bgImage.size;\n          } else if (\n            typeof bgImage.size === 'object' &&\n            bgImage.size.x != null &&\n            bgImage.size.y != null\n          ) {\n            size = {\n              x: bgImage.size.x,\n              y: bgImage.size.y,\n            };\n          } else {\n            // If the size is invalid, return an empty array and do not apply any gradient. Same as web.\n            return [];\n          }\n        }\n\n        if (bgImage.position != null) {\n          position = bgImage.position;\n        }\n\n        result = result.concat({\n          type: 'radial-gradient',\n          shape,\n          size,\n          position,\n          colorStops: processedColorStops,\n        });\n      }\n    }\n  }\n\n  return result;\n}\n\nfunction processColorStops(bgImage: BackgroundImageValue): $ReadOnlyArray<{\n  color: ColorStopColor,\n  position: ColorStopPosition,\n}> | null {\n  const processedColorStops: Array<{\n    color: ColorStopColor,\n    position: ColorStopPosition,\n  }> = [];\n\n  for (let index = 0; index < bgImage.colorStops.length; index++) {\n    const colorStop = bgImage.colorStops[index];\n    const positions = colorStop.positions;\n    // Color transition hint syntax (red, 20%, blue)\n    if (\n      colorStop.color == null &&\n      Array.isArray(positions) &&\n      positions.length === 1\n    ) {\n      const position = positions[0];\n      if (\n        typeof position === 'number' ||\n        (typeof position === 'string' && position.endsWith('%'))\n      ) {\n        processedColorStops.push({\n          color: null,\n          position,\n        });\n      } else {\n        // If a position is invalid, return null and do not apply gradient. Same as web.\n        return null;\n      }\n    } else {\n      const processedColor = processColor(colorStop.color);\n      if (processedColor == null) {\n        // If a color is invalid, return null and do not apply gradient. Same as web.\n        return null;\n      }\n      if (positions != null && positions.length > 0) {\n        for (const position of positions) {\n          if (\n            typeof position === 'number' ||\n            (typeof position === 'string' && position.endsWith('%'))\n          ) {\n            processedColorStops.push({\n              color: processedColor,\n              position,\n            });\n          } else {\n            // If a position is invalid, return null and do not apply gradient. Same as web.\n            return null;\n          }\n        }\n      } else {\n        processedColorStops.push({\n          color: processedColor,\n          position: null,\n        });\n      }\n    }\n  }\n\n  return processedColorStops;\n}\n\nfunction parseBackgroundImageCSSString(\n  cssString: string,\n): $ReadOnlyArray<ParsedBackgroundImageValue> {\n  const gradients = [];\n  const bgImageStrings = splitGradients(cssString);\n\n  for (const bgImageString of bgImageStrings) {\n    const bgImage = bgImageString.toLowerCase();\n    const gradientRegex = /^(linear|radial)-gradient\\(((?:\\([^)]*\\)|[^()])*)\\)/;\n\n    const match = gradientRegex.exec(bgImage);\n    if (match) {\n      const [, type, gradientContent] = match;\n      const isRadial = type.toLowerCase() === 'radial';\n      const gradient = isRadial\n        ? parseRadialGradientCSSString(gradientContent)\n        : parseLinearGradientCSSString(gradientContent);\n\n      if (gradient != null) {\n        gradients.push(gradient);\n      }\n    }\n  }\n  return gradients;\n}\n\nfunction parseRadialGradientCSSString(\n  gradientContent: string,\n): RadialGradientBackgroundImage | null {\n  let shape: RadialGradientShape = DEFAULT_RADIAL_SHAPE;\n  let size: RadialGradientSize = DEFAULT_RADIAL_SIZE;\n  let position: RadialGradientPosition = {...DEFAULT_RADIAL_POSITION};\n\n  // split the content by commas, but not if inside parentheses (for color values)\n  const parts = gradientContent.split(/,(?![^(]*\\))/);\n  // first part may contain shape, size, and position\n  // [ <radial-shape> || <radial-size> ]? [ at <position> ]?\n  const firstPartStr = parts[0].trim();\n  const remainingParts = [...parts];\n  let hasShapeSizeOrPositionString = false;\n  let hasExplicitSingleSize = false;\n  let hasExplicitShape = false;\n  const firstPartTokens = firstPartStr.split(/\\s+/);\n\n  // firstPartTokens is the shape, size, and position\n  while (firstPartTokens.length > 0) {\n    let token = firstPartTokens.shift();\n    if (token == null) {\n      continue;\n    }\n    let tokenTrimmed = token.toLowerCase().trim();\n\n    if (tokenTrimmed === 'circle' || tokenTrimmed === 'ellipse') {\n      shape = tokenTrimmed === 'circle' ? 'circle' : 'ellipse';\n      hasShapeSizeOrPositionString = true;\n      hasExplicitShape = true;\n    } else if (\n      tokenTrimmed === 'closest-corner' ||\n      tokenTrimmed === 'farthest-corner' ||\n      tokenTrimmed === 'closest-side' ||\n      tokenTrimmed === 'farthest-side'\n    ) {\n      size = tokenTrimmed;\n      hasShapeSizeOrPositionString = true;\n    } else if (tokenTrimmed.endsWith('px') || tokenTrimmed.endsWith('%')) {\n      let sizeX = getPositionFromCSSValue(tokenTrimmed);\n      if (sizeX == null) {\n        // If a size is invalid, return null and do not apply any gradient. Same as web.\n        return null;\n      }\n      if (typeof sizeX === 'number' && sizeX < 0) {\n        // If a size is invalid, return null and do not apply any gradient. Same as web.\n        return null;\n      }\n      hasShapeSizeOrPositionString = true;\n      size = {x: sizeX, y: sizeX};\n      token = firstPartTokens.shift();\n      if (token == null) {\n        hasExplicitSingleSize = true;\n        continue;\n      }\n      tokenTrimmed = token.toLowerCase().trim();\n      if (tokenTrimmed.endsWith('px') || tokenTrimmed.endsWith('%')) {\n        const sizeY = getPositionFromCSSValue(tokenTrimmed);\n        if (sizeY == null) {\n          // If a size is invalid, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n        if (typeof sizeY === 'number' && sizeY < 0) {\n          // If a size is invalid, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n        size = {x: sizeX, y: sizeY};\n      } else {\n        hasExplicitSingleSize = true;\n      }\n    } else if (tokenTrimmed === 'at') {\n      let top: string | number;\n      let left: string | number;\n      let right: string | number;\n      let bottom: string | number;\n      hasShapeSizeOrPositionString = true;\n\n      if (firstPartTokens.length === 0) {\n        // If 'at' is not followed by a position, return null and do not apply any gradient. Same as web.\n        return null;\n      }\n\n      // 1. [ left | center | right | top | bottom | <length-percentage> ]\n      if (firstPartTokens.length === 1) {\n        token = firstPartTokens.shift();\n        if (token == null) {\n          // If 'at' is not followed by a position, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n        tokenTrimmed = token.toLowerCase().trim();\n        if (tokenTrimmed === 'left') {\n          left = '0%';\n          top = '50%';\n        } else if (tokenTrimmed === 'center') {\n          left = '50%';\n          top = '50%';\n        } else if (tokenTrimmed === 'right') {\n          left = '100%';\n          top = '50%';\n        } else if (tokenTrimmed === 'top') {\n          left = '50%';\n          top = '0%';\n        } else if (tokenTrimmed === 'bottom') {\n          left = '50%';\n          top = '100%';\n        } else if (tokenTrimmed.endsWith('px') || tokenTrimmed.endsWith('%')) {\n          const value = getPositionFromCSSValue(tokenTrimmed);\n          if (value == null) {\n            // If a position is invalid, return null and do not apply any gradient. Same as web.\n            return null;\n          }\n          left = value;\n          top = '50%';\n        }\n      }\n\n      if (firstPartTokens.length === 2) {\n        const t1 = firstPartTokens.shift();\n        const t2 = firstPartTokens.shift();\n        if (t1 == null || t2 == null) {\n          // If a position is invalid, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n\n        const token1 = t1.toLowerCase().trim();\n        const token2 = t2.toLowerCase().trim();\n\n        // 2. [ left | center | right ] && [ top | center | bottom ]\n        const horizontalPositions = ['left', 'center', 'right'];\n        const verticalPositions = ['top', 'center', 'bottom'];\n\n        if (\n          horizontalPositions.includes(token1) &&\n          verticalPositions.includes(token2)\n        ) {\n          left =\n            token1 === 'left' ? '0%' : token1 === 'center' ? '50%' : '100%';\n          top = token2 === 'top' ? '0%' : token2 === 'center' ? '50%' : '100%';\n        } else if (\n          verticalPositions.includes(token1) &&\n          horizontalPositions.includes(token2)\n        ) {\n          left =\n            token2 === 'left' ? '0%' : token2 === 'center' ? '50%' : '100%';\n          top = token1 === 'top' ? '0%' : token1 === 'center' ? '50%' : '100%';\n        }\n        // 3. [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]\n        else {\n          if (token1 === 'left') {\n            left = '0%';\n          } else if (token1 === 'center') {\n            left = '50%';\n          } else if (token1 === 'right') {\n            left = '100%';\n          } else if (token1.endsWith('px') || token1.endsWith('%')) {\n            const value = getPositionFromCSSValue(token1);\n            if (value == null) {\n              // If a position is invalid, return null and do not apply any gradient. Same as web.\n              return null;\n            }\n            left = value;\n          } else {\n            // If a position is invalid, return null and do not apply any gradient. Same as web.\n            return null;\n          }\n\n          if (token2 === 'top') {\n            top = '0%';\n          } else if (token2 === 'center') {\n            top = '50%';\n          } else if (token2 === 'bottom') {\n            top = '100%';\n          } else if (token2.endsWith('px') || token2.endsWith('%')) {\n            const value = getPositionFromCSSValue(token2);\n            if (value == null) {\n              // If a position is invalid, return null and do not apply any gradient. Same as web.\n              return null;\n            }\n            top = value;\n          } else {\n            // If a position is invalid, return null and do not apply any gradient. Same as web.\n            return null;\n          }\n        }\n      }\n\n      // 4. [ [ left | right ] <length-percentage> ] && [ [ top | bottom ] <length-percentage> ]\n      if (firstPartTokens.length === 4) {\n        const t1 = firstPartTokens.shift();\n        const t2 = firstPartTokens.shift();\n        const t3 = firstPartTokens.shift();\n        const t4 = firstPartTokens.shift();\n\n        if (t1 == null || t2 == null || t3 == null || t4 == null) {\n          // If a position is invalid, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n        const token1 = t1.toLowerCase().trim();\n        const token2 = t2.toLowerCase().trim();\n        const token3 = t3.toLowerCase().trim();\n        const token4 = t4.toLowerCase().trim();\n        const keyword1 = token1;\n        const value1 = getPositionFromCSSValue(token2);\n        const keyword2 = token3;\n        const value2 = getPositionFromCSSValue(token4);\n        if (value1 == null || value2 == null) {\n          // If a position is invalid, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n\n        if (keyword1 === 'left') {\n          left = value1;\n        } else if (keyword1 === 'right') {\n          right = value1;\n        } else if (keyword1 === 'top') {\n          top = value1;\n        } else if (keyword1 === 'bottom') {\n          bottom = value1;\n        } else {\n          // If a position is invalid, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n\n        if (keyword2 === 'left') {\n          left = value2;\n        } else if (keyword2 === 'right') {\n          right = value2;\n        } else if (keyword2 === 'top') {\n          top = value2;\n        } else if (keyword2 === 'bottom') {\n          bottom = value2;\n        } else {\n          // If a position is invalid, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n      }\n\n      if (top != null && left != null) {\n        position = {\n          top,\n          left,\n        };\n      } else if (bottom != null && right != null) {\n        position = {\n          bottom,\n          right,\n        };\n      } else if (top != null && right != null) {\n        position = {\n          top,\n          right,\n        };\n      } else if (bottom != null && left != null) {\n        position = {\n          bottom,\n          left,\n        };\n      } else {\n        // If a position is invalid, return null and do not apply any gradient. Same as web.\n        return null;\n      }\n      // 'at' comes at the end of first part of radial gradient syntax;\n      break;\n    }\n\n    // if there is no shape, size, or position string found in first token, break\n    // if might be a color stop\n    if (!hasShapeSizeOrPositionString) {\n      break;\n    }\n  }\n\n  if (hasShapeSizeOrPositionString) {\n    remainingParts.shift();\n\n    if (!hasExplicitShape && hasExplicitSingleSize) {\n      shape = 'circle';\n    }\n\n    if (hasExplicitSingleSize && hasExplicitShape && shape === 'ellipse') {\n      // If a single size is explicitly set and the shape is an ellipse, return null and do not apply any gradient. Same as web.\n      return null;\n    }\n  }\n\n  const colorStops = parseColorStopsCSSString(remainingParts);\n  if (colorStops == null) {\n    // If color stops are invalid, return null and do not apply any gradient. Same as web.\n    return null;\n  }\n\n  return {\n    type: 'radial-gradient',\n    shape,\n    size,\n    position,\n    colorStops,\n  };\n}\n\nfunction parseLinearGradientCSSString(\n  gradientContent: string,\n): LinearGradientBackgroundImage | null {\n  const parts = gradientContent.split(',');\n  let direction: LinearGradientDirection = LINEAR_GRADIENT_DEFAULT_DIRECTION;\n  const trimmedDirection = parts[0].trim().toLowerCase();\n\n  if (LINEAR_GRADIENT_ANGLE_UNIT_REGEX.test(trimmedDirection)) {\n    const parsedAngle = getAngleInDegrees(trimmedDirection);\n    if (parsedAngle != null) {\n      direction = {\n        type: 'angle',\n        value: parsedAngle,\n      };\n      parts.shift();\n    } else {\n      // If an angle is invalid, return null and do not apply any gradient. Same as web.\n      return null;\n    }\n  } else if (LINEAR_GRADIENT_DIRECTION_REGEX.test(trimmedDirection)) {\n    const parsedDirection = getDirectionForKeyword(trimmedDirection);\n    if (parsedDirection != null) {\n      direction = parsedDirection;\n      parts.shift();\n    } else {\n      // If a direction is invalid, return null and do not apply any gradient. Same as web.\n      return null;\n    }\n  }\n\n  const colorStops = parseColorStopsCSSString(parts);\n  if (colorStops == null) {\n    // If a color stop is invalid, return null and do not apply any gradient. Same as web.\n    return null;\n  }\n\n  return {\n    type: 'linear-gradient',\n    direction,\n    colorStops,\n  };\n}\n\nfunction parseColorStopsCSSString(parts: Array<string>): Array<{\n  color: ColorStopColor,\n  position: ColorStopPosition,\n}> | null {\n  const colorStopsString = parts.join(',');\n  const colorStops: Array<{\n    color: ColorStopColor,\n    position: ColorStopPosition,\n  }> = [];\n  // split by comma, but not if it's inside a parentheses. e.g. red, rgba(0, 0, 0, 0.5), green => [\"red\", \"rgba(0, 0, 0, 0.5)\", \"green\"]\n  const stops = colorStopsString.split(/,(?![^(]*\\))/);\n  let prevStop = null;\n  for (let i = 0; i < stops.length; i++) {\n    const stop = stops[i];\n    const trimmedStop = stop.trim().toLowerCase();\n    // Match function like pattern or single words\n    const colorStopParts = trimmedStop.match(/\\S+\\([^)]*\\)|\\S+/g);\n    if (colorStopParts == null) {\n      // If a color stop is invalid, return null and do not apply any gradient. Same as web.\n      return null;\n    }\n    // Case 1: [color, position, position]\n    if (colorStopParts.length === 3) {\n      const color = colorStopParts[0];\n      const position1 = getPositionFromCSSValue(colorStopParts[1]);\n      const position2 = getPositionFromCSSValue(colorStopParts[2]);\n      const processedColor = processColor(color);\n      if (processedColor == null) {\n        // If a color is invalid, return null and do not apply any gradient. Same as web.\n        return null;\n      }\n\n      if (position1 == null || position2 == null) {\n        // If a position is invalid, return null and do not apply any gradient. Same as web.\n        return null;\n      }\n\n      colorStops.push({\n        color: processedColor,\n        position: position1,\n      });\n      colorStops.push({\n        color: processedColor,\n        position: position2,\n      });\n    }\n    // Case 2: [color, position]\n    else if (colorStopParts.length === 2) {\n      const color = colorStopParts[0];\n      const position = getPositionFromCSSValue(colorStopParts[1]);\n      const processedColor = processColor(color);\n      if (processedColor == null) {\n        // If a color is invalid, return null and do not apply any gradient. Same as web.\n        return null;\n      }\n      if (position == null) {\n        // If a position is invalid, return null and do not apply any gradient. Same as web.\n        return null;\n      }\n      colorStops.push({\n        color: processedColor,\n        position,\n      });\n    }\n    // Case 3: [color]\n    // Case 4: [position] => transition hint syntax\n    else if (colorStopParts.length === 1) {\n      const position = getPositionFromCSSValue(colorStopParts[0]);\n      if (position != null) {\n        // handle invalid transition hint syntax. transition hint syntax must have color before and after the position. e.g. red, 20%, blue\n        if (\n          (prevStop != null &&\n            prevStop.length === 1 &&\n            getPositionFromCSSValue(prevStop[0]) != null) ||\n          i === stops.length - 1 ||\n          i === 0\n        ) {\n          // If the last stop is a transition hint syntax, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n        colorStops.push({\n          color: null,\n          position,\n        });\n      } else {\n        const processedColor = processColor(colorStopParts[0]);\n        if (processedColor == null) {\n          // If a color is invalid, return null and do not apply any gradient. Same as web.\n          return null;\n        }\n        colorStops.push({\n          color: processedColor,\n          position: null,\n        });\n      }\n    } else {\n      // If a color stop is invalid, return null and do not apply any gradient. Same as web.\n      return null;\n    }\n    prevStop = colorStopParts;\n  }\n\n  return colorStops;\n}\n\nfunction getDirectionForKeyword(direction?: string): ?LinearGradientDirection {\n  if (direction == null) {\n    return null;\n  }\n  // Remove extra whitespace\n  const normalized = direction.replace(/\\s+/g, ' ').toLowerCase();\n\n  switch (normalized) {\n    case 'to top':\n      return {type: 'angle', value: 0};\n    case 'to right':\n      return {type: 'angle', value: 90};\n    case 'to bottom':\n      return {type: 'angle', value: 180};\n    case 'to left':\n      return {type: 'angle', value: 270};\n    case 'to top right':\n    case 'to right top':\n      return {type: 'keyword', value: 'to top right'};\n    case 'to bottom right':\n    case 'to right bottom':\n      return {type: 'keyword', value: 'to bottom right'};\n    case 'to top left':\n    case 'to left top':\n      return {type: 'keyword', value: 'to top left'};\n    case 'to bottom left':\n    case 'to left bottom':\n      return {type: 'keyword', value: 'to bottom left'};\n    default:\n      return null;\n  }\n}\n\nfunction getAngleInDegrees(angle?: string): ?number {\n  if (angle == null) {\n    return null;\n  }\n  const match = angle.match(LINEAR_GRADIENT_ANGLE_UNIT_REGEX);\n  if (!match) {\n    return null;\n  }\n\n  const [, value, unit] = match;\n\n  const numericValue = parseFloat(value);\n  switch (unit) {\n    case 'deg':\n      return numericValue;\n    case 'grad':\n      return numericValue * 0.9; // 1 grad = 0.9 degrees\n    case 'rad':\n      return (numericValue * 180) / Math.PI;\n    case 'turn':\n      return numericValue * 360; // 1 turn = 360 degrees\n    default:\n      return null;\n  }\n}\n\nfunction getPositionFromCSSValue(position: string) {\n  if (position.endsWith('px')) {\n    return parseFloat(position);\n  }\n\n  if (position.endsWith('%')) {\n    return position;\n  }\n}\n\nfunction splitGradients(input: string) {\n  const result = [];\n  let current = '';\n  let depth = 0;\n\n  for (let i = 0; i < input.length; i++) {\n    const char = input[i];\n\n    if (char === '(') {\n      depth++;\n    } else if (char === ')') {\n      depth--;\n    } else if (char === ',' && depth === 0) {\n      result.push(current.trim());\n      current = '';\n      continue;\n    }\n\n    current += char;\n  }\n\n  if (current.trim() !== '') {\n    result.push(current.trim());\n  }\n\n  return result;\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {ColorValue, NativeColorValue} from './StyleSheet';\n\nconst Platform = require('../Utilities/Platform').default;\nconst normalizeColor = require('./normalizeColor').default;\n\nexport type ProcessedColorValue = number | NativeColorValue;\n\n/* eslint no-bitwise: 0 */\nfunction processColor(color?: ?(number | ColorValue)): ?ProcessedColorValue {\n  if (color === undefined || color === null) {\n    return color;\n  }\n\n  let normalizedColor = normalizeColor(color);\n  if (normalizedColor === null || normalizedColor === undefined) {\n    return undefined;\n  }\n\n  if (typeof normalizedColor === 'object') {\n    const processColorObject =\n      require('./PlatformColorValueTypes').processColorObject;\n\n    const processedColorObj = processColorObject(normalizedColor);\n\n    if (processedColorObj != null) {\n      return processedColorObj;\n    }\n  }\n\n  if (typeof normalizedColor !== 'number') {\n    return null;\n  }\n\n  // Converts 0xrrggbbaa into 0xaarrggbb\n  normalizedColor = ((normalizedColor << 24) | (normalizedColor >>> 8)) >>> 0;\n\n  if (Platform.OS === 'android') {\n    // Android use 32 bit *signed* integer to represent the color\n    // We utilize the fact that bitwise operations in JS also operates on\n    // signed 32 bit integers, so that we can use those to convert from\n    // *unsigned* to *signed* 32bit int that way.\n    normalizedColor = normalizedColor | 0x0;\n  }\n  return normalizedColor;\n}\n\nexport default processColor;\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 * @flow strict-local\n * @format\n */\n\n/* eslint no-bitwise: 0 */\n\nimport type {ProcessedColorValue} from './processColor';\nimport type {ColorValue} from './StyleSheet';\n\nimport _normalizeColor from '@react-native/normalize-colors';\n\nfunction normalizeColor(\n  color: ?(ColorValue | ProcessedColorValue),\n): ?ProcessedColorValue {\n  if (typeof color === 'object' && color != null) {\n    const {normalizeColorObject} = require('./PlatformColorValueTypes');\n    const normalizedColor = normalizeColorObject(color);\n    if (normalizedColor != null) {\n      return normalizedColor;\n    }\n  }\n\n  if (typeof color === 'string' || typeof color === 'number') {\n    return _normalizeColor(color);\n  }\n}\n\nexport default normalizeColor;\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 * @format\n * @noflow\n */\n\n/* eslint no-bitwise: 0 */\n\n'use strict';\n\nfunction normalizeColor(color) {\n  if (typeof color === 'number') {\n    if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n      return color;\n    }\n    return null;\n  }\n\n  if (typeof color !== 'string') {\n    return null;\n  }\n\n  const matchers = getMatchers();\n  let match;\n\n  // Ordered based on occurrences on Facebook codebase\n  if ((match = matchers.hex6.exec(color))) {\n    return parseInt(match[1] + 'ff', 16) >>> 0;\n  }\n\n  const colorFromKeyword = normalizeKeyword(color);\n  if (colorFromKeyword != null) {\n    return colorFromKeyword;\n  }\n\n  if ((match = matchers.rgba.exec(color) || matchers.rgb.exec(color))) {\n    // rgb(R G B / A) / rgba(R G B / A) notation\n    if (match[9] !== undefined) {\n      return (\n        ((parse255(match[9]) << 24) | // r\n          (parse255(match[10]) << 16) | // g\n          (parse255(match[11]) << 8) | // b\n          parse1(match[12])) >>> // a\n        0\n      );\n    }\n    // rgb(R, G, B, A) / rgba(R, G, B, A) notation\n    else if (match[5] !== undefined) {\n      return (\n        ((parse255(match[5]) << 24) | // r\n          (parse255(match[6]) << 16) | // g\n          (parse255(match[7]) << 8) | // b\n          parse1(match[8])) >>> // a\n        0\n      );\n    }\n    // rgb(R, G, B) / rgba(R, G, B) notation\n    return (\n      ((parse255(match[2]) << 24) | // r\n        (parse255(match[3]) << 16) | // g\n        (parse255(match[4]) << 8) | // b\n        0x000000ff) >>> // a\n      0\n    );\n  }\n\n  if ((match = matchers.hex3.exec(color))) {\n    return (\n      parseInt(\n        match[1] +\n          match[1] + // r\n          match[2] +\n          match[2] + // g\n          match[3] +\n          match[3] + // b\n          'ff', // a\n        16,\n      ) >>> 0\n    );\n  }\n\n  // https://drafts.csswg.org/css-color-4/#hex-notation\n  if ((match = matchers.hex8.exec(color))) {\n    return parseInt(match[1], 16) >>> 0;\n  }\n\n  if ((match = matchers.hex4.exec(color))) {\n    return (\n      parseInt(\n        match[1] +\n          match[1] + // r\n          match[2] +\n          match[2] + // g\n          match[3] +\n          match[3] + // b\n          match[4] +\n          match[4], // a\n        16,\n      ) >>> 0\n    );\n  }\n\n  if ((match = matchers.hsl.exec(color))) {\n    return (\n      (hslToRgb(\n        parse360(match[1]), // h\n        parsePercentage(match[2]), // s\n        parsePercentage(match[3]), // l\n      ) |\n        0x000000ff) >>> // a\n      0\n    );\n  }\n\n  if ((match = matchers.hsla.exec(color))) {\n    // hsla(H S L / A) notation\n    if (match[6] !== undefined) {\n      return (\n        (hslToRgb(\n          parse360(match[6]), // h\n          parsePercentage(match[7]), // s\n          parsePercentage(match[8]), // l\n        ) |\n          parse1(match[9])) >>> // a\n        0\n      );\n    }\n\n    // hsla(H, S, L, A) notation\n    return (\n      (hslToRgb(\n        parse360(match[2]), // h\n        parsePercentage(match[3]), // s\n        parsePercentage(match[4]), // l\n      ) |\n        parse1(match[5])) >>> // a\n      0\n    );\n  }\n\n  if ((match = matchers.hwb.exec(color))) {\n    if (match[5] !== undefined) {\n      // hwb(H W B / A) notation\n      return (\n        (hwbToRgb(\n          parse360(match[5]), // h\n          parsePercentage(match[6]), // w\n          parsePercentage(match[7]), // b\n        ) |\n          parse1(match[8])) >>> // a\n        0\n      );\n    }\n    // hwb(H W B) notation\n    return (\n      (hwbToRgb(\n        parse360(match[2]), // h\n        parsePercentage(match[3]), // w\n        parsePercentage(match[4]), // b\n      ) |\n        0x000000ff) >>> // a\n      0\n    );\n  }\n\n  return null;\n}\n\nfunction hue2rgb(p, q, t) {\n  if (t < 0) {\n    t += 1;\n  }\n  if (t > 1) {\n    t -= 1;\n  }\n  if (t < 1 / 6) {\n    return p + (q - p) * 6 * t;\n  }\n  if (t < 1 / 2) {\n    return q;\n  }\n  if (t < 2 / 3) {\n    return p + (q - p) * (2 / 3 - t) * 6;\n  }\n  return p;\n}\n\nfunction hslToRgb(h, s, l) {\n  const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n  const p = 2 * l - q;\n  const r = hue2rgb(p, q, h + 1 / 3);\n  const g = hue2rgb(p, q, h);\n  const b = hue2rgb(p, q, h - 1 / 3);\n\n  return (\n    (Math.round(r * 255) << 24) |\n    (Math.round(g * 255) << 16) |\n    (Math.round(b * 255) << 8)\n  );\n}\n\nfunction hwbToRgb(h, w, b) {\n  if (w + b >= 1) {\n    const gray = Math.round((w * 255) / (w + b));\n\n    return (gray << 24) | (gray << 16) | (gray << 8);\n  }\n\n  const red = hue2rgb(0, 1, h + 1 / 3) * (1 - w - b) + w;\n  const green = hue2rgb(0, 1, h) * (1 - w - b) + w;\n  const blue = hue2rgb(0, 1, h - 1 / 3) * (1 - w - b) + w;\n\n  return (\n    (Math.round(red * 255) << 24) |\n    (Math.round(green * 255) << 16) |\n    (Math.round(blue * 255) << 8)\n  );\n}\n\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...args) {\n  return '\\\\(\\\\s*(' + args.join(')\\\\s*,?\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nfunction callModern(...args) {\n  return '\\\\(\\\\s*(' + args.join(')\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nfunction callWithSlashSeparator(...args) {\n  return (\n    '\\\\(\\\\s*(' +\n    args.slice(0, args.length - 1).join(')\\\\s*,?\\\\s*(') +\n    ')\\\\s*/\\\\s*(' +\n    args[args.length - 1] +\n    ')\\\\s*\\\\)'\n  );\n}\n\nfunction commaSeparatedCall(...args) {\n  return '\\\\(\\\\s*(' + args.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nlet cachedMatchers;\n\nfunction getMatchers() {\n  if (cachedMatchers === undefined) {\n    const rgbRegexPattern =\n      call(NUMBER, NUMBER, NUMBER) +\n      '|' +\n      commaSeparatedCall(NUMBER, NUMBER, NUMBER, NUMBER) +\n      '|' +\n      callWithSlashSeparator(NUMBER, NUMBER, NUMBER, NUMBER);\n\n    cachedMatchers = {\n      rgb: new RegExp('rgb(' + rgbRegexPattern + ')'),\n      rgba: new RegExp('rgba(' + rgbRegexPattern + ')'),\n      hsl: new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)),\n      hsla: new RegExp(\n        'hsla(' +\n          commaSeparatedCall(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER) +\n          '|' +\n          callWithSlashSeparator(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER) +\n          ')',\n      ),\n      hwb: new RegExp(\n        'hwb(' +\n          callModern(NUMBER, PERCENTAGE, PERCENTAGE) +\n          '|' +\n          callWithSlashSeparator(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER) +\n          ')',\n      ),\n      hex3: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n      hex4: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n      hex6: /^#([0-9a-fA-F]{6})$/,\n      hex8: /^#([0-9a-fA-F]{8})$/,\n    };\n  }\n  return cachedMatchers;\n}\n\nfunction parse255(str) {\n  const int = parseInt(str, 10);\n  if (int < 0) {\n    return 0;\n  }\n  if (int > 255) {\n    return 255;\n  }\n  return int;\n}\n\nfunction parse360(str) {\n  const int = parseFloat(str);\n  return (((int % 360) + 360) % 360) / 360;\n}\n\nfunction parse1(str) {\n  const num = parseFloat(str);\n  if (num < 0) {\n    return 0;\n  }\n  if (num > 1) {\n    return 255;\n  }\n  return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n  // parseFloat conveniently ignores the final %\n  const int = parseFloat(str);\n  if (int < 0) {\n    return 0;\n  }\n  if (int > 100) {\n    return 1;\n  }\n  return int / 100;\n}\n\nfunction normalizeKeyword(name) {\n  // prettier-ignore\n  switch (name) {\n    case 'transparent': return 0x00000000;\n    // http://www.w3.org/TR/css3-color/#svg-color\n    case 'aliceblue': return 0xf0f8ffff;\n    case 'antiquewhite': return 0xfaebd7ff;\n    case 'aqua': return 0x00ffffff;\n    case 'aquamarine': return 0x7fffd4ff;\n    case 'azure': return 0xf0ffffff;\n    case 'beige': return 0xf5f5dcff;\n    case 'bisque': return 0xffe4c4ff;\n    case 'black': return 0x000000ff;\n    case 'blanchedalmond': return 0xffebcdff;\n    case 'blue': return 0x0000ffff;\n    case 'blueviolet': return 0x8a2be2ff;\n    case 'brown': return 0xa52a2aff;\n    case 'burlywood': return 0xdeb887ff;\n    case 'burntsienna': return 0xea7e5dff;\n    case 'cadetblue': return 0x5f9ea0ff;\n    case 'chartreuse': return 0x7fff00ff;\n    case 'chocolate': return 0xd2691eff;\n    case 'coral': return 0xff7f50ff;\n    case 'cornflowerblue': return 0x6495edff;\n    case 'cornsilk': return 0xfff8dcff;\n    case 'crimson': return 0xdc143cff;\n    case 'cyan': return 0x00ffffff;\n    case 'darkblue': return 0x00008bff;\n    case 'darkcyan': return 0x008b8bff;\n    case 'darkgoldenrod': return 0xb8860bff;\n    case 'darkgray': return 0xa9a9a9ff;\n    case 'darkgreen': return 0x006400ff;\n    case 'darkgrey': return 0xa9a9a9ff;\n    case 'darkkhaki': return 0xbdb76bff;\n    case 'darkmagenta': return 0x8b008bff;\n    case 'darkolivegreen': return 0x556b2fff;\n    case 'darkorange': return 0xff8c00ff;\n    case 'darkorchid': return 0x9932ccff;\n    case 'darkred': return 0x8b0000ff;\n    case 'darksalmon': return 0xe9967aff;\n    case 'darkseagreen': return 0x8fbc8fff;\n    case 'darkslateblue': return 0x483d8bff;\n    case 'darkslategray': return 0x2f4f4fff;\n    case 'darkslategrey': return 0x2f4f4fff;\n    case 'darkturquoise': return 0x00ced1ff;\n    case 'darkviolet': return 0x9400d3ff;\n    case 'deeppink': return 0xff1493ff;\n    case 'deepskyblue': return 0x00bfffff;\n    case 'dimgray': return 0x696969ff;\n    case 'dimgrey': return 0x696969ff;\n    case 'dodgerblue': return 0x1e90ffff;\n    case 'firebrick': return 0xb22222ff;\n    case 'floralwhite': return 0xfffaf0ff;\n    case 'forestgreen': return 0x228b22ff;\n    case 'fuchsia': return 0xff00ffff;\n    case 'gainsboro': return 0xdcdcdcff;\n    case 'ghostwhite': return 0xf8f8ffff;\n    case 'gold': return 0xffd700ff;\n    case 'goldenrod': return 0xdaa520ff;\n    case 'gray': return 0x808080ff;\n    case 'green': return 0x008000ff;\n    case 'greenyellow': return 0xadff2fff;\n    case 'grey': return 0x808080ff;\n    case 'honeydew': return 0xf0fff0ff;\n    case 'hotpink': return 0xff69b4ff;\n    case 'indianred': return 0xcd5c5cff;\n    case 'indigo': return 0x4b0082ff;\n    case 'ivory': return 0xfffff0ff;\n    case 'khaki': return 0xf0e68cff;\n    case 'lavender': return 0xe6e6faff;\n    case 'lavenderblush': return 0xfff0f5ff;\n    case 'lawngreen': return 0x7cfc00ff;\n    case 'lemonchiffon': return 0xfffacdff;\n    case 'lightblue': return 0xadd8e6ff;\n    case 'lightcoral': return 0xf08080ff;\n    case 'lightcyan': return 0xe0ffffff;\n    case 'lightgoldenrodyellow': return 0xfafad2ff;\n    case 'lightgray': return 0xd3d3d3ff;\n    case 'lightgreen': return 0x90ee90ff;\n    case 'lightgrey': return 0xd3d3d3ff;\n    case 'lightpink': return 0xffb6c1ff;\n    case 'lightsalmon': return 0xffa07aff;\n    case 'lightseagreen': return 0x20b2aaff;\n    case 'lightskyblue': return 0x87cefaff;\n    case 'lightslategray': return 0x778899ff;\n    case 'lightslategrey': return 0x778899ff;\n    case 'lightsteelblue': return 0xb0c4deff;\n    case 'lightyellow': return 0xffffe0ff;\n    case 'lime': return 0x00ff00ff;\n    case 'limegreen': return 0x32cd32ff;\n    case 'linen': return 0xfaf0e6ff;\n    case 'magenta': return 0xff00ffff;\n    case 'maroon': return 0x800000ff;\n    case 'mediumaquamarine': return 0x66cdaaff;\n    case 'mediumblue': return 0x0000cdff;\n    case 'mediumorchid': return 0xba55d3ff;\n    case 'mediumpurple': return 0x9370dbff;\n    case 'mediumseagreen': return 0x3cb371ff;\n    case 'mediumslateblue': return 0x7b68eeff;\n    case 'mediumspringgreen': return 0x00fa9aff;\n    case 'mediumturquoise': return 0x48d1ccff;\n    case 'mediumvioletred': return 0xc71585ff;\n    case 'midnightblue': return 0x191970ff;\n    case 'mintcream': return 0xf5fffaff;\n    case 'mistyrose': return 0xffe4e1ff;\n    case 'moccasin': return 0xffe4b5ff;\n    case 'navajowhite': return 0xffdeadff;\n    case 'navy': return 0x000080ff;\n    case 'oldlace': return 0xfdf5e6ff;\n    case 'olive': return 0x808000ff;\n    case 'olivedrab': return 0x6b8e23ff;\n    case 'orange': return 0xffa500ff;\n    case 'orangered': return 0xff4500ff;\n    case 'orchid': return 0xda70d6ff;\n    case 'palegoldenrod': return 0xeee8aaff;\n    case 'palegreen': return 0x98fb98ff;\n    case 'paleturquoise': return 0xafeeeeff;\n    case 'palevioletred': return 0xdb7093ff;\n    case 'papayawhip': return 0xffefd5ff;\n    case 'peachpuff': return 0xffdab9ff;\n    case 'peru': return 0xcd853fff;\n    case 'pink': return 0xffc0cbff;\n    case 'plum': return 0xdda0ddff;\n    case 'powderblue': return 0xb0e0e6ff;\n    case 'purple': return 0x800080ff;\n    case 'rebeccapurple': return 0x663399ff;\n    case 'red': return 0xff0000ff;\n    case 'rosybrown': return 0xbc8f8fff;\n    case 'royalblue': return 0x4169e1ff;\n    case 'saddlebrown': return 0x8b4513ff;\n    case 'salmon': return 0xfa8072ff;\n    case 'sandybrown': return 0xf4a460ff;\n    case 'seagreen': return 0x2e8b57ff;\n    case 'seashell': return 0xfff5eeff;\n    case 'sienna': return 0xa0522dff;\n    case 'silver': return 0xc0c0c0ff;\n    case 'skyblue': return 0x87ceebff;\n    case 'slateblue': return 0x6a5acdff;\n    case 'slategray': return 0x708090ff;\n    case 'slategrey': return 0x708090ff;\n    case 'snow': return 0xfffafaff;\n    case 'springgreen': return 0x00ff7fff;\n    case 'steelblue': return 0x4682b4ff;\n    case 'tan': return 0xd2b48cff;\n    case 'teal': return 0x008080ff;\n    case 'thistle': return 0xd8bfd8ff;\n    case 'tomato': return 0xff6347ff;\n    case 'turquoise': return 0x40e0d0ff;\n    case 'violet': return 0xee82eeff;\n    case 'wheat': return 0xf5deb3ff;\n    case 'white': return 0xffffffff;\n    case 'whitesmoke': return 0xf5f5f5ff;\n    case 'yellow': return 0xffff00ff;\n    case 'yellowgreen': return 0x9acd32ff;\n  }\n  return null;\n}\n\nmodule.exports = normalizeColor;\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 * @flow strict-local\n * @format\n */\n\nimport type {ProcessedColorValue} from './processColor';\nimport type {BoxShadowValue} from './StyleSheetTypes';\n\nimport processColor from './processColor';\n\nexport type ParsedBoxShadow = {\n  offsetX: number,\n  offsetY: number,\n  color?: ProcessedColorValue,\n  blurRadius?: number,\n  spreadDistance?: number,\n  inset?: boolean,\n};\n\nexport default function processBoxShadow(\n  rawBoxShadows: ?($ReadOnlyArray<BoxShadowValue> | string),\n): Array<ParsedBoxShadow> {\n  const result: Array<ParsedBoxShadow> = [];\n  if (rawBoxShadows == null) {\n    return result;\n  }\n\n  const boxShadowList =\n    typeof rawBoxShadows === 'string'\n      ? parseBoxShadowString(rawBoxShadows.replace(/\\n/g, ' '))\n      : rawBoxShadows;\n\n  for (const rawBoxShadow of boxShadowList) {\n    const parsedBoxShadow: ParsedBoxShadow = {\n      offsetX: 0,\n      offsetY: 0,\n    };\n\n    let value;\n    for (const arg in rawBoxShadow) {\n      switch (arg) {\n        case 'offsetX':\n          value =\n            typeof rawBoxShadow.offsetX === 'string'\n              ? parseLength(rawBoxShadow.offsetX)\n              : rawBoxShadow.offsetX;\n          if (value == null) {\n            return [];\n          }\n\n          parsedBoxShadow.offsetX = value;\n          break;\n        case 'offsetY':\n          value =\n            typeof rawBoxShadow.offsetY === 'string'\n              ? parseLength(rawBoxShadow.offsetY)\n              : rawBoxShadow.offsetY;\n          if (value == null) {\n            return [];\n          }\n\n          parsedBoxShadow.offsetY = value;\n          break;\n        case 'spreadDistance':\n          value =\n            typeof rawBoxShadow.spreadDistance === 'string'\n              ? parseLength(rawBoxShadow.spreadDistance)\n              : rawBoxShadow.spreadDistance;\n          if (value == null) {\n            return [];\n          }\n\n          parsedBoxShadow.spreadDistance = value;\n          break;\n        case 'blurRadius':\n          value =\n            typeof rawBoxShadow.blurRadius === 'string'\n              ? parseLength(rawBoxShadow.blurRadius)\n              : rawBoxShadow.blurRadius;\n          if (value == null || value < 0) {\n            return [];\n          }\n\n          parsedBoxShadow.blurRadius = value;\n          break;\n        case 'color':\n          const color = processColor(rawBoxShadow.color);\n          if (color == null) {\n            return [];\n          }\n\n          parsedBoxShadow.color = color;\n          break;\n        case 'inset':\n          parsedBoxShadow.inset = rawBoxShadow.inset;\n      }\n    }\n    result.push(parsedBoxShadow);\n  }\n  return result;\n}\n\nfunction parseBoxShadowString(rawBoxShadows: string): Array<BoxShadowValue> {\n  let result: Array<BoxShadowValue> = [];\n\n  for (const rawBoxShadow of rawBoxShadows\n    .split(/,(?![^()]*\\))/) // split by comma that is not in parenthesis\n    .map(bS => bS.trim())\n    .filter(bS => bS !== '')) {\n    const boxShadow: BoxShadowValue = {\n      offsetX: 0,\n      offsetY: 0,\n    };\n    let offsetX: number | string;\n    let offsetY: number | string;\n    let keywordDetectedAfterLength = false;\n\n    let lengthCount = 0;\n\n    // split rawBoxShadow string by all whitespaces that are not in parenthesis\n    const args = rawBoxShadow.split(/\\s+(?![^(]*\\))/);\n    for (const arg of args) {\n      const processedColor = processColor(arg);\n      if (processedColor != null) {\n        if (boxShadow.color != null) {\n          return [];\n        }\n        if (offsetX != null) {\n          keywordDetectedAfterLength = true;\n        }\n        boxShadow.color = arg;\n        continue;\n      }\n\n      if (arg === 'inset') {\n        if (boxShadow.inset != null) {\n          return [];\n        }\n        if (offsetX != null) {\n          keywordDetectedAfterLength = true;\n        }\n        boxShadow.inset = true;\n        continue;\n      }\n\n      switch (lengthCount) {\n        case 0:\n          offsetX = arg;\n          lengthCount++;\n          break;\n        case 1:\n          if (keywordDetectedAfterLength) {\n            return [];\n          }\n          offsetY = arg;\n          lengthCount++;\n          break;\n        case 2:\n          if (keywordDetectedAfterLength) {\n            return [];\n          }\n          boxShadow.blurRadius = arg;\n          lengthCount++;\n          break;\n        case 3:\n          if (keywordDetectedAfterLength) {\n            return [];\n          }\n          boxShadow.spreadDistance = arg;\n          lengthCount++;\n          break;\n        default:\n          return [];\n      }\n    }\n\n    if (offsetX == null || offsetY == null) {\n      return [];\n    }\n\n    boxShadow.offsetX = offsetX;\n    boxShadow.offsetY = offsetY;\n\n    result.push(boxShadow);\n  }\n  return result;\n}\n\nfunction parseLength(length: string): ?number {\n  // matches on args with units like \"1.5 5% -80deg\"\n  const argsWithUnitsRegex = /([+-]?\\d*(\\.\\d+)?)([\\w\\W]+)?/g;\n  const match = argsWithUnitsRegex.exec(length);\n\n  if (!match || Number.isNaN(match[1])) {\n    return null;\n  }\n\n  if (match[3] != null && match[3] !== 'px') {\n    return null;\n  }\n\n  if (match[3] == null && match[1] !== '0') {\n    return null;\n  }\n\n  return Number(match[1]);\n}\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 * @flow\n * @format strict-local\n */\n\n'use strict';\n\nimport type {ColorValue} from './StyleSheet';\nimport type {DropShadowValue, FilterFunction} from './StyleSheetTypes';\n\nimport processColor from './processColor';\n\ntype ParsedFilter =\n  | {brightness: number}\n  | {blur: number}\n  | {contrast: number}\n  | {grayscale: number}\n  | {hueRotate: number}\n  | {invert: number}\n  | {opacity: number}\n  | {saturate: number}\n  | {sepia: number}\n  | {dropShadow: ParsedDropShadow};\n\ntype ParsedDropShadow = {\n  offsetX: number,\n  offsetY: number,\n  standardDeviation?: number,\n  color?: ColorValue,\n};\n\nexport default function processFilter(\n  filter: ?($ReadOnlyArray<FilterFunction> | string),\n): $ReadOnlyArray<ParsedFilter> {\n  let result: Array<ParsedFilter> = [];\n  if (filter == null) {\n    return result;\n  }\n\n  if (typeof filter === 'string') {\n    filter = filter.replace(/\\n/g, ' ');\n\n    // matches on functions with args and nested functions like \"drop-shadow(10 10 10 rgba(0, 0, 0, 1))\"\n    const regex = /([\\w-]+)\\(([^()]*|\\([^()]*\\)|[^()]*\\([^()]*\\)[^()]*)\\)/g;\n    let matches;\n\n    while ((matches = regex.exec(filter))) {\n      let filterName = matches[1].toLowerCase();\n      if (filterName === 'drop-shadow') {\n        const dropShadow = parseDropShadow(matches[2]);\n        if (dropShadow != null) {\n          result.push({dropShadow});\n        } else {\n          return [];\n        }\n      } else {\n        const camelizedName =\n          filterName === 'drop-shadow'\n            ? 'dropShadow'\n            : filterName === 'hue-rotate'\n              ? 'hueRotate'\n              : filterName;\n        const amount = _getFilterAmount(camelizedName, matches[2]);\n\n        if (amount != null) {\n          const filterFunction = {};\n          // $FlowFixMe The key will be the correct one but flow can't see that.\n          filterFunction[camelizedName] = amount;\n          // $FlowFixMe The key will be the correct one but flow can't see that.\n          result.push(filterFunction);\n        } else {\n          // If any primitive is invalid then apply none of the filters. This is how\n          // web works and makes it clear that something is wrong becuase no\n          // graphical effects are happening.\n          return [];\n        }\n      }\n    }\n  } else if (Array.isArray(filter)) {\n    for (const filterFunction of filter) {\n      const [filterName, filterValue] = Object.entries(filterFunction)[0];\n      if (filterName === 'dropShadow') {\n        // $FlowFixMe\n        const dropShadow = parseDropShadow(filterValue);\n        if (dropShadow == null) {\n          return [];\n        }\n        result.push({dropShadow});\n      } else {\n        const amount = _getFilterAmount(filterName, filterValue);\n\n        if (amount != null) {\n          const resultObject = {};\n          // $FlowFixMe\n          resultObject[filterName] = amount;\n          // $FlowFixMe\n          result.push(resultObject);\n        } else {\n          // If any primitive is invalid then apply none of the filters. This is how\n          // web works and makes it clear that something is wrong becuase no\n          // graphical effects are happening.\n          return [];\n        }\n      }\n    }\n  } else {\n    throw new TypeError(`${typeof filter} filter is not a string or array`);\n  }\n\n  return result;\n}\n\nfunction _getFilterAmount(filterName: string, filterArgs: mixed): ?number {\n  let filterArgAsNumber: number;\n  let unit: string;\n  if (typeof filterArgs === 'string') {\n    // matches on args with units like \"1.5 5% -80deg\"\n    const argsWithUnitsRegex = new RegExp(/([+-]?\\d*(\\.\\d+)?)([a-zA-Z%]+)?/g);\n    const match = argsWithUnitsRegex.exec(filterArgs);\n\n    if (!match || isNaN(Number(match[1]))) {\n      return undefined;\n    }\n\n    filterArgAsNumber = Number(match[1]);\n    unit = match[3];\n  } else if (typeof filterArgs === 'number') {\n    filterArgAsNumber = filterArgs;\n  } else {\n    return undefined;\n  }\n\n  switch (filterName) {\n    // Hue rotate takes some angle that can have a unit and can be\n    // negative. Additionally, 0 with no unit is allowed.\n    case 'hueRotate':\n      if (filterArgAsNumber === 0) {\n        return 0;\n      }\n      if (unit !== 'deg' && unit !== 'rad') {\n        return undefined;\n      }\n      return unit === 'rad'\n        ? (180 * filterArgAsNumber) / Math.PI\n        : filterArgAsNumber;\n    // blur takes any positive CSS length that is not a percent. In RN\n    // we currently only have DIPs, so we are not parsing units here.\n    case 'blur':\n      if ((unit && unit !== 'px') || filterArgAsNumber < 0) {\n        return undefined;\n      }\n      return filterArgAsNumber;\n    // All other filters except take a non negative number or percentage. There\n    // are no units associated with this value and percentage numbers map 1-to-1\n    // to a non-percentage number (e.g. 50% == 0.5).\n    case 'brightness':\n    case 'contrast':\n    case 'grayscale':\n    case 'invert':\n    case 'opacity':\n    case 'saturate':\n    case 'sepia':\n      if ((unit && unit !== '%' && unit !== 'px') || filterArgAsNumber < 0) {\n        return undefined;\n      }\n      if (unit === '%') {\n        filterArgAsNumber /= 100;\n      }\n      return filterArgAsNumber;\n    default:\n      return undefined;\n  }\n}\n\nfunction parseDropShadow(\n  rawDropShadow: string | DropShadowValue,\n): ?ParsedDropShadow {\n  const dropShadow =\n    typeof rawDropShadow === 'string'\n      ? parseDropShadowString(rawDropShadow)\n      : rawDropShadow;\n\n  const parsedDropShadow: ParsedDropShadow = {\n    offsetX: 0,\n    offsetY: 0,\n  };\n  let offsetX: number;\n  let offsetY: number;\n\n  for (const arg in dropShadow) {\n    let value;\n    switch (arg) {\n      case 'offsetX':\n        value =\n          typeof dropShadow.offsetX === 'string'\n            ? parseLength(dropShadow.offsetX)\n            : dropShadow.offsetX;\n        if (value == null) {\n          return null;\n        }\n        offsetX = value;\n        break;\n      case 'offsetY':\n        value =\n          typeof dropShadow.offsetY === 'string'\n            ? parseLength(dropShadow.offsetY)\n            : dropShadow.offsetY;\n        if (value == null) {\n          return null;\n        }\n        offsetY = value;\n        break;\n      case 'standardDeviation':\n        value =\n          typeof dropShadow.standardDeviation === 'string'\n            ? parseLength(dropShadow.standardDeviation)\n            : dropShadow.standardDeviation;\n        if (value == null || value < 0) {\n          return null;\n        }\n        parsedDropShadow.standardDeviation = value;\n        break;\n      case 'color':\n        const color = processColor(dropShadow.color);\n        if (color == null) {\n          return null;\n        }\n        parsedDropShadow.color = color;\n        break;\n      default:\n        return null;\n    }\n  }\n\n  if (offsetX == null || offsetY == null) {\n    return null;\n  }\n\n  parsedDropShadow.offsetX = offsetX;\n  parsedDropShadow.offsetY = offsetY;\n\n  return parsedDropShadow;\n}\n\nfunction parseDropShadowString(rawDropShadow: string): ?DropShadowValue {\n  const dropShadow: DropShadowValue = {\n    offsetX: 0,\n    offsetY: 0,\n  };\n  let offsetX: string;\n  let offsetY: string;\n  let lengthCount = 0;\n  let keywordDetectedAfterLength = false;\n\n  // split args by all whitespaces that are not in parenthesis\n  for (const arg of rawDropShadow.split(/\\s+(?![^(]*\\))/)) {\n    const processedColor = processColor(arg);\n    if (processedColor != null) {\n      if (dropShadow.color != null) {\n        return null;\n      }\n      if (offsetX != null) {\n        keywordDetectedAfterLength = true;\n      }\n      dropShadow.color = arg;\n      continue;\n    }\n\n    switch (lengthCount) {\n      case 0:\n        offsetX = arg;\n        lengthCount++;\n        break;\n      case 1:\n        if (keywordDetectedAfterLength) {\n          return null;\n        }\n        offsetY = arg;\n        lengthCount++;\n        break;\n      case 2:\n        if (keywordDetectedAfterLength) {\n          return null;\n        }\n        dropShadow.standardDeviation = arg;\n        lengthCount++;\n        break;\n      default:\n        return null;\n    }\n  }\n  if (offsetX == null || offsetY == null) {\n    return null;\n  }\n\n  dropShadow.offsetX = offsetX;\n  dropShadow.offsetY = offsetY;\n  return dropShadow;\n}\n\nfunction parseLength(length: string): ?number {\n  // matches on args with units like \"1.5 5% -80deg\"\n  const argsWithUnitsRegex = /([+-]?\\d*(\\.\\d+)?)([\\w\\W]+)?/g;\n  const match = argsWithUnitsRegex.exec(length);\n\n  if (!match || Number.isNaN(match[1])) {\n    return null;\n  }\n\n  if (match[3] != null && match[3] !== 'px') {\n    return null;\n  }\n\n  if (match[3] == null && match[1] !== '0') {\n    return null;\n  }\n\n  return Number(match[1]);\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {____FontVariantArray_Internal} from './StyleSheetTypes';\n\nfunction processFontVariant(\n  fontVariant: ____FontVariantArray_Internal | string,\n): ?____FontVariantArray_Internal {\n  if (Array.isArray(fontVariant)) {\n    return fontVariant;\n  }\n\n  // $FlowFixMe[incompatible-type]\n  const match: ?____FontVariantArray_Internal = fontVariant\n    .split(' ')\n    .filter(Boolean);\n\n  return match;\n}\n\nexport default processFontVariant;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst stringifySafe = require('../Utilities/stringifySafe').default;\nconst invariant = require('invariant');\n\n/**\n * Generate a transform matrix based on the provided transforms, and use that\n * within the style object instead.\n *\n * This allows us to provide an API that is similar to CSS, where transforms may\n * be applied in an arbitrary order, and yet have a universal, singular\n * interface to native code.\n */\nfunction processTransform(\n  transform: Array<Object> | string,\n): Array<Object> | Array<number> {\n  if (typeof transform === 'string') {\n    const regex = new RegExp(/(\\w+)\\(([^)]+)\\)/g);\n    const transformArray: Array<Object> = [];\n    let matches;\n\n    while ((matches = regex.exec(transform))) {\n      const {key, value} = _getKeyAndValueFromCSSTransform(\n        matches[1],\n        matches[2],\n      );\n\n      if (value !== undefined) {\n        transformArray.push({[key]: value});\n      }\n    }\n    transform = transformArray;\n  }\n\n  if (__DEV__) {\n    _validateTransforms(transform);\n  }\n\n  return transform;\n}\n\nconst _getKeyAndValueFromCSSTransform: (\n  key: string,\n  args: string,\n) => {key: string, value?: Array<string | number> | number | string} = (\n  key,\n  args,\n) => {\n  const argsWithUnitsRegex = new RegExp(/([+-]?\\d+(\\.\\d+)?)([a-zA-Z]+|%)?/g);\n\n  switch (key) {\n    case 'matrix':\n      return {key, value: args.match(/[+-]?\\d+(\\.\\d+)?/g)?.map(Number)};\n    case 'translate':\n    case 'translate3d':\n      const parsedArgs = [];\n      let missingUnitOfMeasurement = false;\n\n      let matches;\n      while ((matches = argsWithUnitsRegex.exec(args))) {\n        const value = Number(matches[1]);\n        const unitOfMeasurement = matches[3];\n\n        if (value !== 0 && !unitOfMeasurement) {\n          missingUnitOfMeasurement = true;\n        }\n\n        if (unitOfMeasurement === '%') {\n          parsedArgs.push(`${value}%`);\n        } else {\n          parsedArgs.push(value);\n        }\n      }\n\n      if (__DEV__) {\n        invariant(\n          !missingUnitOfMeasurement,\n          `Transform with key ${key} must have units unless the provided value is 0, found %s`,\n          `${key}(${args})`,\n        );\n\n        if (key === 'translate') {\n          invariant(\n            parsedArgs?.length === 1 || parsedArgs?.length === 2,\n            'Transform with key translate must be an string with 1 or 2 parameters, found %s: %s',\n            parsedArgs?.length,\n            `${key}(${args})`,\n          );\n        } else {\n          invariant(\n            parsedArgs?.length === 3,\n            'Transform with key translate3d must be an string with 3 parameters, found %s: %s',\n            parsedArgs?.length,\n            `${key}(${args})`,\n          );\n        }\n      }\n\n      if (parsedArgs?.length === 1) {\n        parsedArgs.push(0);\n      }\n\n      return {key: 'translate', value: parsedArgs};\n    case 'translateX':\n    case 'translateY':\n    case 'perspective':\n      const argMatches = argsWithUnitsRegex.exec(args);\n\n      if (!argMatches?.length) {\n        return {key, value: undefined};\n      }\n\n      const value = Number(argMatches[1]);\n      const unitOfMeasurement = argMatches[3];\n\n      if (__DEV__) {\n        invariant(\n          value === 0 || unitOfMeasurement,\n          `Transform with key ${key} must have units unless the provided value is 0, found %s`,\n          `${key}(${args})`,\n        );\n      }\n\n      return {key, value};\n\n    default:\n      return {key, value: !isNaN(args) ? Number(args) : args};\n  }\n};\n\nfunction _validateTransforms(transform: Array<Object>): void {\n  transform.forEach(transformation => {\n    const keys = Object.keys(transformation);\n    invariant(\n      keys.length === 1,\n      'You must specify exactly one property per transform object. Passed properties: %s',\n      stringifySafe(transformation),\n    );\n    const key = keys[0];\n    const value = transformation[key];\n    if (key === 'matrix' && transform.length > 1) {\n      console.error(\n        'When using a matrix transform, you must specify exactly one transform object. Passed transform: ' +\n          stringifySafe(transform),\n      );\n    }\n    _validateTransform(key, value, transformation);\n  });\n}\n\nfunction _validateTransform(\n  key: string,\n  value: any | number | string,\n  transformation: any,\n) {\n  invariant(\n    !value.getValue,\n    'You passed an Animated.Value to a normal component. ' +\n      'You need to wrap that component in an Animated. For example, ' +\n      'replace <View /> by <Animated.View />.',\n  );\n\n  const multivalueTransforms = ['matrix', 'translate'];\n  if (multivalueTransforms.indexOf(key) !== -1) {\n    invariant(\n      Array.isArray(value),\n      'Transform with key of %s must have an array as the value: %s',\n      key,\n      stringifySafe(transformation),\n    );\n  }\n  switch (key) {\n    case 'matrix':\n      invariant(\n        value.length === 9 || value.length === 16,\n        'Matrix transform must have a length of 9 (2d) or 16 (3d). ' +\n          'Provided matrix has a length of %s: %s',\n        /* $FlowFixMe[prop-missing] (>=0.84.0 site=react_native_fb) This\n         * comment suppresses an error found when Flow v0.84 was deployed. To\n         * see the error, delete this comment and run Flow. */\n        value.length,\n        stringifySafe(transformation),\n      );\n      break;\n    case 'translate':\n      invariant(\n        value.length === 2 || value.length === 3,\n        'Transform with key translate must be an array of length 2 or 3, found %s: %s',\n        /* $FlowFixMe[prop-missing] (>=0.84.0 site=react_native_fb) This\n         * comment suppresses an error found when Flow v0.84 was deployed. To\n         * see the error, delete this comment and run Flow. */\n        value.length,\n        stringifySafe(transformation),\n      );\n      break;\n    case 'rotateX':\n    case 'rotateY':\n    case 'rotateZ':\n    case 'rotate':\n    case 'skewX':\n    case 'skewY':\n      invariant(\n        typeof value === 'string',\n        'Transform with key of \"%s\" must be a string: %s',\n        key,\n        stringifySafe(transformation),\n      );\n      invariant(\n        value.indexOf('deg') > -1 || value.indexOf('rad') > -1,\n        'Rotate transform must be expressed in degrees (deg) or radians ' +\n          '(rad): %s',\n        stringifySafe(transformation),\n      );\n      break;\n    case 'perspective':\n      invariant(\n        typeof value === 'number',\n        'Transform with key of \"%s\" must be a number: %s',\n        key,\n        stringifySafe(transformation),\n      );\n      invariant(\n        value !== 0,\n        'Transform with key of \"%s\" cannot be zero: %s',\n        key,\n        stringifySafe(transformation),\n      );\n      break;\n    case 'translateX':\n    case 'translateY':\n      invariant(\n        typeof value === 'number' ||\n          (typeof value === 'string' && value.endsWith('%')),\n        'Transform with key of \"%s\" must be number or a percentage. Passed value: %s.',\n        key,\n        stringifySafe(transformation),\n      );\n      break;\n    case 'scale':\n    case 'scaleX':\n    case 'scaleY':\n      invariant(\n        typeof value === 'number',\n        'Transform with key of \"%s\" must be a number: %s',\n        key,\n        stringifySafe(transformation),\n      );\n      break;\n    default:\n      invariant(\n        false,\n        'Invalid transform %s: %s',\n        key,\n        stringifySafe(transformation),\n      );\n  }\n}\n\nexport default processTransform;\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 * @flow\n * @format\n */\n\nimport invariant from 'invariant';\n\nconst INDEX_X = 0;\nconst INDEX_Y = 1;\nconst INDEX_Z = 2;\n\n/* eslint-disable no-labels */\nexport default function processTransformOrigin(\n  transformOrigin: Array<string | number> | string,\n): Array<string | number> {\n  if (typeof transformOrigin === 'string') {\n    const transformOriginString = transformOrigin;\n    const regex = /(top|bottom|left|right|center|\\d+(?:%|px)|0)/gi;\n    const transformOriginArray: Array<string | number> = ['50%', '50%', 0];\n\n    let index = INDEX_X;\n    let matches;\n    outer: while ((matches = regex.exec(transformOriginString))) {\n      let nextIndex = index + 1;\n\n      const value = matches[0];\n      const valueLower = value.toLowerCase();\n\n      switch (valueLower) {\n        case 'left':\n        case 'right': {\n          invariant(\n            index === INDEX_X,\n            'Transform-origin %s can only be used for x-position',\n            value,\n          );\n          transformOriginArray[INDEX_X] = valueLower === 'left' ? 0 : '100%';\n          break;\n        }\n        case 'top':\n        case 'bottom': {\n          invariant(\n            index !== INDEX_Z,\n            'Transform-origin %s can only be used for y-position',\n            value,\n          );\n          transformOriginArray[INDEX_Y] = valueLower === 'top' ? 0 : '100%';\n\n          // Handle [[ center | left | right ] && [ center | top | bottom ]] <length>?\n          if (index === INDEX_X) {\n            const horizontal = regex.exec(transformOriginString);\n            if (horizontal == null) {\n              break outer;\n            }\n\n            switch (horizontal[0].toLowerCase()) {\n              case 'left':\n                transformOriginArray[INDEX_X] = 0;\n                break;\n              case 'right':\n                transformOriginArray[INDEX_X] = '100%';\n                break;\n              case 'center':\n                transformOriginArray[INDEX_X] = '50%';\n                break;\n              default:\n                invariant(\n                  false,\n                  'Could not parse transform-origin: %s',\n                  transformOriginString,\n                );\n            }\n            nextIndex = INDEX_Z;\n          }\n\n          break;\n        }\n        case 'center': {\n          invariant(\n            index !== INDEX_Z,\n            'Transform-origin value %s cannot be used for z-position',\n            value,\n          );\n          transformOriginArray[index] = '50%';\n          break;\n        }\n        default: {\n          if (value.endsWith('%')) {\n            transformOriginArray[index] = value;\n          } else {\n            transformOriginArray[index] = parseFloat(value); // Remove `px`\n          }\n          break;\n        }\n      }\n\n      index = nextIndex;\n    }\n\n    transformOrigin = transformOriginArray;\n  }\n\n  if (__DEV__) {\n    _validateTransformOrigin(transformOrigin);\n  }\n\n  return transformOrigin;\n}\n\nfunction _validateTransformOrigin(transformOrigin: Array<string | number>) {\n  invariant(\n    transformOrigin.length === 3,\n    'Transform origin must have exactly 3 values.',\n  );\n  const [x, y, z] = transformOrigin;\n  invariant(\n    typeof x === 'number' || (typeof x === 'string' && x.endsWith('%')),\n    'Transform origin x-position must be a number. Passed value: %s.',\n    x,\n  );\n  invariant(\n    typeof y === 'number' || (typeof y === 'string' && y.endsWith('%')),\n    'Transform origin y-position must be a number. Passed value: %s.',\n    y,\n  );\n  invariant(\n    typeof z === 'number',\n    'Transform origin z-position must be a number. Passed value: %s.',\n    z,\n  );\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst dummySize = {width: undefined, height: undefined};\ntype Size = {width: ?number, height: ?number};\n\nfunction sizesDiffer(one: Size, two: Size): boolean {\n  const defaultedOne = one || dummySize;\n  const defaultedTwo = two || dummySize;\n  return (\n    defaultedOne !== defaultedTwo &&\n    (defaultedOne.width !== defaultedTwo.width ||\n      defaultedOne.height !== defaultedTwo.height)\n  );\n}\n\nexport default sizesDiffer;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst Dimensions = require('./Dimensions').default;\n\n/**\n * PixelRatio class gives access to the device pixel density.\n *\n * ## Fetching a correctly sized image\n *\n * You should get a higher resolution image if you are on a high pixel density\n * device. A good rule of thumb is to multiply the size of the image you display\n * by the pixel ratio.\n *\n * ```\n * var image = getImage({\n *   width: PixelRatio.getPixelSizeForLayoutSize(200),\n *   height: PixelRatio.getPixelSizeForLayoutSize(100),\n * });\n * <Image source={image} style={{width: 200, height: 100}} />\n * ```\n *\n * ## Pixel grid snapping\n *\n * In iOS, you can specify positions and dimensions for elements with arbitrary\n * precision, for example 29.674825. But, ultimately the physical display only\n * have a fixed number of pixels, for example 640×960 for iPhone 4 or 750×1334\n * for iPhone 6. iOS tries to be as faithful as possible to the user value by\n * spreading one original pixel into multiple ones to trick the eye. The\n * downside of this technique is that it makes the resulting element look\n * blurry.\n *\n * In practice, we found out that developers do not want this feature and they\n * have to work around it by doing manual rounding in order to avoid having\n * blurry elements. In React Native, we are rounding all the pixels\n * automatically.\n *\n * We have to be careful when to do this rounding. You never want to work with\n * rounded and unrounded values at the same time as you're going to accumulate\n * rounding errors. Having even one rounding error is deadly because a one\n * pixel border may vanish or be twice as big.\n *\n * In React Native, everything in JavaScript and within the layout engine works\n * with arbitrary precision numbers. It's only when we set the position and\n * dimensions of the native element on the main thread that we round. Also,\n * rounding is done relative to the root rather than the parent, again to avoid\n * accumulating rounding errors.\n *\n */\nclass PixelRatio {\n  /**\n   * Returns the device pixel density. Some examples:\n   *\n   *   - PixelRatio.get() === 1\n   *     - mdpi Android devices (160 dpi)\n   *   - PixelRatio.get() === 1.5\n   *     - hdpi Android devices (240 dpi)\n   *   - PixelRatio.get() === 2\n   *     - iPhone 4, 4S\n   *     - iPhone 5, 5c, 5s\n   *     - iPhone 6\n   *     - iPhone 7\n   *     - iPhone 8\n   *     - iPhone SE\n   *     - xhdpi Android devices (320 dpi)\n   *   - PixelRatio.get() === 3\n   *     - iPhone 6 Plus\n   *     - iPhone 7 Plus\n   *     - iPhone 8 Plus\n   *     - iPhone X\n   *     - xxhdpi Android devices (480 dpi)\n   *   - PixelRatio.get() === 3.5\n   *     - Nexus 6\n   */\n  static get(): number {\n    return Dimensions.get('window').scale;\n  }\n\n  /**\n   * Returns the scaling factor for font sizes. This is the ratio that is used to calculate the\n   * absolute font size, so any elements that heavily depend on that should use this to do\n   * calculations.\n   *\n   * If a font scale is not set, this returns the device pixel ratio.\n   *\n   * This reflects the user preference set in:\n   *  - Settings > Display > Font size on Android,\n   *  - Settings > Display & Brightness > Text Size on iOS.\n   */\n  static getFontScale(): number {\n    return Dimensions.get('window').fontScale || PixelRatio.get();\n  }\n\n  /**\n   * Converts a layout size (dp) to pixel size (px).\n   *\n   * Guaranteed to return an integer number.\n   */\n  static getPixelSizeForLayoutSize(layoutSize: number): number {\n    return Math.round(layoutSize * PixelRatio.get());\n  }\n\n  /**\n   * Rounds a layout size (dp) to the nearest layout size that corresponds to\n   * an integer number of pixels. For example, on a device with a PixelRatio\n   * of 3, `PixelRatio.roundToNearestPixel(8.4) = 8.33`, which corresponds to\n   * exactly (8.33 * 3) = 25 pixels.\n   */\n  static roundToNearestPixel(layoutSize: number): number {\n    const ratio = PixelRatio.get();\n    return Math.round(layoutSize * ratio) / ratio;\n  }\n\n  // No-op for iOS, but used on the web. Should not be documented.\n  static startDetecting() {}\n}\n\nexport default PixelRatio;\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 * @flow\n * @format\n */\n\nimport RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';\nimport EventEmitter, {\n  type EventSubscription,\n} from '../vendor/emitter/EventEmitter';\nimport NativeDeviceInfo, {\n  type DimensionsPayload,\n  type DisplayMetrics,\n  type DisplayMetricsAndroid,\n} from './NativeDeviceInfo';\nimport invariant from 'invariant';\n\nexport type {DimensionsPayload, DisplayMetrics, DisplayMetricsAndroid};\n\n/** @deprecated Use DisplayMetrics */\nexport type ScaledSize = DisplayMetrics;\n\nconst eventEmitter = new EventEmitter<{\n  change: [DimensionsPayload],\n}>();\nlet dimensionsInitialized = false;\nlet dimensions: DimensionsPayload;\n\nclass Dimensions {\n  /**\n   * NOTE: `useWindowDimensions` is the preferred API for React components.\n   *\n   * Initial dimensions are set before `runApplication` is called so they should\n   * be available before any other require's are run, but may be updated later.\n   *\n   * Note: Although dimensions are available immediately, they may change (e.g\n   * due to device rotation) so any rendering logic or styles that depend on\n   * these constants should try to call this function on every render, rather\n   * than caching the value (for example, using inline styles rather than\n   * setting a value in a `StyleSheet`).\n   *\n   * Example: `const {height, width} = Dimensions.get('window');`\n   *\n   * @param {string} dim Name of dimension as defined when calling `set`.\n   * @returns {DisplayMetrics? | DisplayMetricsAndroid?} Value for the dimension.\n   */\n  static get(dim: string): DisplayMetrics | DisplayMetricsAndroid {\n    // $FlowFixMe[invalid-computed-prop]\n    invariant(dimensions[dim], 'No dimension set for key ' + dim);\n    return dimensions[dim];\n  }\n\n  /**\n   * This should only be called from native code by sending the\n   * didUpdateDimensions event.\n   *\n   * @param {DimensionsPayload} dims Simple string-keyed object of dimensions to set\n   */\n  static set(dims: $ReadOnly<DimensionsPayload>): void {\n    // We calculate the window dimensions in JS so that we don't encounter loss of\n    // precision in transferring the dimensions (which could be non-integers) over\n    // the bridge.\n    let {screen, window} = dims;\n    const {windowPhysicalPixels} = dims;\n    if (windowPhysicalPixels) {\n      window = {\n        width: windowPhysicalPixels.width / windowPhysicalPixels.scale,\n        height: windowPhysicalPixels.height / windowPhysicalPixels.scale,\n        scale: windowPhysicalPixels.scale,\n        fontScale: windowPhysicalPixels.fontScale,\n      };\n    }\n    const {screenPhysicalPixels} = dims;\n    if (screenPhysicalPixels) {\n      screen = {\n        width: screenPhysicalPixels.width / screenPhysicalPixels.scale,\n        height: screenPhysicalPixels.height / screenPhysicalPixels.scale,\n        scale: screenPhysicalPixels.scale,\n        fontScale: screenPhysicalPixels.fontScale,\n      };\n    } else if (screen == null) {\n      screen = window;\n    }\n\n    dimensions = {window, screen};\n    if (dimensionsInitialized) {\n      // Don't fire 'change' the first time the dimensions are set.\n      eventEmitter.emit('change', dimensions);\n    } else {\n      dimensionsInitialized = true;\n    }\n  }\n\n  /**\n   * Add an event handler. Supported events:\n   *\n   * - `change`: Fires when a property within the `Dimensions` object changes. The argument\n   *   to the event handler is an object with `window` and `screen` properties whose values\n   *   are the same as the return values of `Dimensions.get('window')` and\n   *   `Dimensions.get('screen')`, respectively.\n   */\n  static addEventListener(\n    type: 'change',\n    handler: Function,\n  ): EventSubscription {\n    invariant(\n      type === 'change',\n      'Trying to subscribe to unknown event: \"%s\"',\n      type,\n    );\n    return eventEmitter.addListener(type, handler);\n  }\n}\n\n// Subscribe before calling getConstants to make sure we don't miss any updates in between.\nRCTDeviceEventEmitter.addListener(\n  'didUpdateDimensions',\n  (update: DimensionsPayload) => {\n    Dimensions.set(update);\n  },\n);\nDimensions.set(NativeDeviceInfo.getConstants().Dimensions);\n\nexport default Dimensions;\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 * @flow strict\n * @format\n */\n\nimport type {IEventEmitter} from '../vendor/emitter/EventEmitter';\n\nimport {beginEvent, endEvent} from '../Performance/Systrace';\nimport EventEmitter from '../vendor/emitter/EventEmitter';\n\n// FIXME: use typed events\n/* $FlowFixMe[unclear-type] unclear type of events */\ntype RCTDeviceEventDefinitions = {[name: string]: Array<any>};\n\n/**\n * Global EventEmitter used by the native platform to emit events to JavaScript.\n * Events are identified by globally unique event names.\n *\n * NativeModules that emit events should instead subclass `NativeEventEmitter`.\n */\nclass RCTDeviceEventEmitterImpl extends EventEmitter<RCTDeviceEventDefinitions> {\n  // Add systrace to RCTDeviceEventEmitter.emit method for debugging\n  emit<TEvent: $Keys<RCTDeviceEventDefinitions>>(\n    eventType: TEvent,\n    ...args: RCTDeviceEventDefinitions[TEvent]\n  ): void {\n    beginEvent(() => `RCTDeviceEventEmitter.emit#${eventType}`);\n    super.emit(eventType, ...args);\n    endEvent();\n  }\n}\nconst RCTDeviceEventEmitter: IEventEmitter<RCTDeviceEventDefinitions> =\n  new RCTDeviceEventEmitterImpl();\n\nObject.defineProperty(global, '__rctDeviceEventEmitter', {\n  configurable: true,\n  value: RCTDeviceEventEmitter,\n});\n\nexport default (RCTDeviceEventEmitter: IEventEmitter<RCTDeviceEventDefinitions>);\n","var get = require(\"./get.js\");\nvar getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropGet(t, o, e, r) {\n  var p = get(getPrototypeOf(1 & r ? t.prototype : t), o, e);\n  return 2 & r && \"function\" == typeof p ? function (t) {\n    return p.apply(e, t);\n  } : p;\n}\nmodule.exports = _superPropGet, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n  return module.exports = _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {\n    var p = superPropBase(e, t);\n    if (p) {\n      var n = Object.getOwnPropertyDescriptor(p, t);\n      return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;\n    }\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _get.apply(null, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(t, o) {\n  for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););\n  return t;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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 * @flow strict\n * @format\n */\n\n// $FlowFixMe[unclear-type] unclear type of events\ntype UnsafeEventObject = Object;\n\nexport interface EventSubscription {\n  remove(): void;\n}\n\nexport interface IEventEmitter<\n  TEventToArgsMap: $ReadOnly<Record<string, $ReadOnlyArray<UnsafeEventObject>>>,\n> {\n  addListener<TEvent: $Keys<TEventToArgsMap>>(\n    eventType: TEvent,\n    listener: (...args: TEventToArgsMap[TEvent]) => mixed,\n    context?: mixed,\n  ): EventSubscription;\n\n  emit<TEvent: $Keys<TEventToArgsMap>>(\n    eventType: TEvent,\n    ...args: TEventToArgsMap[TEvent]\n  ): void;\n\n  removeAllListeners<TEvent: $Keys<TEventToArgsMap>>(eventType?: ?TEvent): void;\n\n  listenerCount<TEvent: $Keys<TEventToArgsMap>>(eventType: TEvent): number;\n}\n\ninterface Registration<TArgs> {\n  +context: mixed;\n  +listener: (...args: TArgs) => mixed;\n  +remove: () => void;\n}\n\ntype Registry<\n  TEventToArgsMap: $ReadOnly<Record<string, $ReadOnlyArray<UnsafeEventObject>>>,\n> = {\n  [K in keyof TEventToArgsMap]: Set<Registration<TEventToArgsMap[K]>>,\n};\n\n/**\n * EventEmitter manages listeners and publishes events to them.\n *\n * EventEmitter accepts a single type parameter that defines the valid events\n * and associated listener argument(s).\n *\n * @example\n *\n *   const emitter = new EventEmitter<{\n *     success: [number, string],\n *     error: [Error],\n *   }>();\n *\n *   emitter.on('success', (statusCode, responseText) => {...});\n *   emitter.emit('success', 200, '...');\n *\n *   emitter.on('error', error => {...});\n *   emitter.emit('error', new Error('Resource not found'));\n *\n */\nexport default class EventEmitter<\n  TEventToArgsMap: $ReadOnly<\n    Record<string, $ReadOnlyArray<UnsafeEventObject>>,\n  > = $ReadOnly<Record<string, $ReadOnlyArray<UnsafeEventObject>>>,\n> implements IEventEmitter<TEventToArgsMap>\n{\n  #registry: Registry<TEventToArgsMap>;\n\n  constructor() {\n    // $FlowFixMe[incompatible-type]\n    this.#registry = {};\n  }\n\n  /**\n   * Registers a listener that is called when the supplied event is emitted.\n   * Returns a subscription that has a `remove` method to undo registration.\n   */\n  addListener<TEvent: $Keys<TEventToArgsMap>>(\n    eventType: TEvent,\n    listener: (...args: TEventToArgsMap[TEvent]) => mixed,\n    context: mixed,\n  ): EventSubscription {\n    if (typeof listener !== 'function') {\n      throw new TypeError(\n        'EventEmitter.addListener(...): 2nd argument must be a function.',\n      );\n    }\n    const registrations = allocate<\n      TEventToArgsMap,\n      $Keys<TEventToArgsMap>,\n      TEventToArgsMap[TEvent],\n    >(this.#registry, eventType);\n    const registration: Registration<TEventToArgsMap[TEvent]> = {\n      context,\n      listener,\n      remove(): void {\n        registrations.delete(registration);\n      },\n    };\n    registrations.add(registration);\n    return registration;\n  }\n\n  /**\n   * Emits the supplied event. Additional arguments supplied to `emit` will be\n   * passed through to each of the registered listeners.\n   *\n   * If a listener modifies the listeners registered for the same event, those\n   * changes will not be reflected in the current invocation of `emit`.\n   */\n  emit<TEvent: $Keys<TEventToArgsMap>>(\n    eventType: TEvent,\n    ...args: TEventToArgsMap[TEvent]\n  ): void {\n    const registrations: ?Set<Registration<TEventToArgsMap[TEvent]>> =\n      this.#registry[eventType];\n    if (registrations != null) {\n      // Copy `registrations` to take a snapshot when we invoke `emit`, in case\n      // registrations are added or removed when listeners are invoked.\n      for (const registration of Array.from(registrations)) {\n        // $FlowFixMe[incompatible-call]\n        registration.listener.apply(registration.context, args);\n      }\n    }\n  }\n\n  /**\n   * Removes all registered listeners.\n   */\n  removeAllListeners<TEvent: $Keys<TEventToArgsMap>>(\n    eventType?: ?TEvent,\n  ): void {\n    if (eventType == null) {\n      // $FlowFixMe[incompatible-type]\n      this.#registry = {};\n    } else {\n      delete this.#registry[eventType];\n    }\n  }\n\n  /**\n   * Returns the number of registered listeners for the supplied event.\n   */\n  listenerCount<TEvent: $Keys<TEventToArgsMap>>(eventType: TEvent): number {\n    const registrations: ?Set<Registration<TEventToArgsMap[TEvent]>> =\n      this.#registry[eventType];\n    return registrations == null ? 0 : registrations.size;\n  }\n}\n\nfunction allocate<\n  TEventToArgsMap: $ReadOnly<Record<string, $ReadOnlyArray<UnsafeEventObject>>>,\n  TEvent: $Keys<TEventToArgsMap>,\n  TEventArgs: TEventToArgsMap[TEvent],\n>(\n  registry: Registry<TEventToArgsMap>,\n  eventType: TEvent,\n): Set<Registration<TEventToArgsMap[TEvent]>> {\n  let registrations: ?Set<Registration<TEventToArgsMap[TEvent]>> =\n    registry[eventType];\n  if (registrations == null) {\n    registrations = new Set();\n    registry[eventType] = registrations;\n  }\n  return registrations;\n}\n","function _classPrivateFieldBase(e, t) {\n  if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\");\n  return e;\n}\nmodule.exports = _classPrivateFieldBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var id = 0;\nfunction _classPrivateFieldKey(e) {\n  return \"__private_\" + id++ + \"_\" + e;\n}\nmodule.exports = _classPrivateFieldKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeDeviceInfo';\nexport {default} from '../../src/private/specs_DEPRECATED/modules/NativeDeviceInfo';\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type DisplayMetricsAndroid = {\n  width: number,\n  height: number,\n  scale: number,\n  fontScale: number,\n  densityDpi: number,\n};\n\nexport type DisplayMetrics = {\n  width: number,\n  height: number,\n  scale: number,\n  fontScale: number,\n};\n\nexport type DimensionsPayload = {\n  window?: DisplayMetrics,\n  screen?: DisplayMetrics,\n  windowPhysicalPixels?: DisplayMetricsAndroid,\n  screenPhysicalPixels?: DisplayMetricsAndroid,\n};\n\nexport type DeviceInfoConstants = {\n  +Dimensions: DimensionsPayload,\n  +isEdgeToEdge?: boolean,\n  +isIPhoneX_deprecated?: boolean,\n};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => DeviceInfoConstants;\n}\n\nconst NativeModule: Spec = TurboModuleRegistry.getEnforcing<Spec>('DeviceInfo');\nlet constants: ?DeviceInfoConstants = null;\n\nconst NativeDeviceInfo = {\n  getConstants(): DeviceInfoConstants {\n    if (constants == null) {\n      constants = NativeModule.getConstants();\n    }\n    return constants;\n  },\n};\n\nexport default NativeDeviceInfo;\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from './ViewPropTypes';\n\nimport * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';\nimport TextAncestorContext from '../../Text/TextAncestorContext';\nimport ViewNativeComponent from './ViewNativeComponent';\nimport * as React from 'react';\nimport {use} from 'react';\n\n/**\n * The most fundamental component for building a UI, View is a container that\n * supports layout with flexbox, style, some touch handling, and accessibility\n * controls.\n *\n * @see https://reactnative.dev/docs/view\n */\ncomponent View(\n  ref?: React.RefSetter<React.ElementRef<typeof ViewNativeComponent>>,\n  ...props: ViewProps\n) {\n  const hasTextAncestor = use(TextAncestorContext);\n\n  let actualView;\n  if (ReactNativeFeatureFlags.reduceDefaultPropsInView()) {\n    const {\n      accessibilityState,\n      accessibilityValue,\n      'aria-busy': ariaBusy,\n      'aria-checked': ariaChecked,\n      'aria-disabled': ariaDisabled,\n      'aria-expanded': ariaExpanded,\n      'aria-hidden': ariaHidden,\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledBy,\n      'aria-live': ariaLive,\n      'aria-selected': ariaSelected,\n      'aria-valuemax': ariaValueMax,\n      'aria-valuemin': ariaValueMin,\n      'aria-valuenow': ariaValueNow,\n      'aria-valuetext': ariaValueText,\n      id,\n      tabIndex,\n      ...otherProps\n    } = props;\n\n    // Since we destructured props, we can now treat it as mutable\n    const processedProps = otherProps as {...ViewProps};\n\n    const parsedAriaLabelledBy = ariaLabelledBy?.split(/\\s*,\\s*/g);\n    if (parsedAriaLabelledBy !== undefined) {\n      processedProps.accessibilityLabelledBy = parsedAriaLabelledBy;\n    }\n\n    if (ariaLabel !== undefined) {\n      processedProps.accessibilityLabel = ariaLabel;\n    }\n\n    if (ariaLive !== undefined) {\n      processedProps.accessibilityLiveRegion =\n        ariaLive === 'off' ? 'none' : ariaLive;\n    }\n\n    if (ariaHidden !== undefined) {\n      processedProps.accessibilityElementsHidden = ariaHidden;\n      if (ariaHidden === true) {\n        processedProps.importantForAccessibility = 'no-hide-descendants';\n      }\n    }\n\n    if (id !== undefined) {\n      processedProps.nativeID = id;\n    }\n\n    if (tabIndex !== undefined) {\n      processedProps.focusable = !tabIndex;\n    }\n\n    if (\n      accessibilityState != null ||\n      ariaBusy != null ||\n      ariaChecked != null ||\n      ariaDisabled != null ||\n      ariaExpanded != null ||\n      ariaSelected != null\n    ) {\n      processedProps.accessibilityState = {\n        busy: ariaBusy ?? accessibilityState?.busy,\n        checked: ariaChecked ?? accessibilityState?.checked,\n        disabled: ariaDisabled ?? accessibilityState?.disabled,\n        expanded: ariaExpanded ?? accessibilityState?.expanded,\n        selected: ariaSelected ?? accessibilityState?.selected,\n      };\n    }\n\n    if (\n      accessibilityValue != null ||\n      ariaValueMax != null ||\n      ariaValueMin != null ||\n      ariaValueNow != null ||\n      ariaValueText != null\n    ) {\n      processedProps.accessibilityValue = {\n        max: ariaValueMax ?? accessibilityValue?.max,\n        min: ariaValueMin ?? accessibilityValue?.min,\n        now: ariaValueNow ?? accessibilityValue?.now,\n        text: ariaValueText ?? accessibilityValue?.text,\n      };\n    }\n\n    actualView =\n      ref == null ? (\n        <ViewNativeComponent {...processedProps} />\n      ) : (\n        <ViewNativeComponent {...processedProps} ref={ref} />\n      );\n  } else {\n    const {\n      accessibilityElementsHidden,\n      accessibilityLabel,\n      accessibilityLabelledBy,\n      accessibilityLiveRegion,\n      accessibilityState,\n      accessibilityValue,\n      'aria-busy': ariaBusy,\n      'aria-checked': ariaChecked,\n      'aria-disabled': ariaDisabled,\n      'aria-expanded': ariaExpanded,\n      'aria-hidden': ariaHidden,\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledBy,\n      'aria-live': ariaLive,\n      'aria-selected': ariaSelected,\n      'aria-valuemax': ariaValueMax,\n      'aria-valuemin': ariaValueMin,\n      'aria-valuenow': ariaValueNow,\n      'aria-valuetext': ariaValueText,\n      focusable,\n      id,\n      importantForAccessibility,\n      nativeID,\n      tabIndex,\n      ...otherProps\n    } = props;\n    const _accessibilityLabelledBy =\n      ariaLabelledBy?.split(/\\s*,\\s*/g) ?? accessibilityLabelledBy;\n\n    const _accessibilityState =\n      accessibilityState != null ||\n      ariaBusy != null ||\n      ariaChecked != null ||\n      ariaDisabled != null ||\n      ariaExpanded != null ||\n      ariaSelected != null\n        ? {\n            busy: ariaBusy ?? accessibilityState?.busy,\n            checked: ariaChecked ?? accessibilityState?.checked,\n            disabled: ariaDisabled ?? accessibilityState?.disabled,\n            expanded: ariaExpanded ?? accessibilityState?.expanded,\n            selected: ariaSelected ?? accessibilityState?.selected,\n          }\n        : undefined;\n\n    const _accessibilityValue =\n      accessibilityValue != null ||\n      ariaValueMax != null ||\n      ariaValueMin != null ||\n      ariaValueNow != null ||\n      ariaValueText != null\n        ? {\n            max: ariaValueMax ?? accessibilityValue?.max,\n            min: ariaValueMin ?? accessibilityValue?.min,\n            now: ariaValueNow ?? accessibilityValue?.now,\n            text: ariaValueText ?? accessibilityValue?.text,\n          }\n        : undefined;\n\n    actualView = (\n      <ViewNativeComponent\n        {...otherProps}\n        accessibilityLiveRegion={\n          ariaLive === 'off' ? 'none' : ariaLive ?? accessibilityLiveRegion\n        }\n        accessibilityLabel={ariaLabel ?? accessibilityLabel}\n        focusable={tabIndex !== undefined ? !tabIndex : focusable}\n        accessibilityState={_accessibilityState}\n        accessibilityElementsHidden={ariaHidden ?? accessibilityElementsHidden}\n        accessibilityLabelledBy={_accessibilityLabelledBy}\n        accessibilityValue={_accessibilityValue}\n        importantForAccessibility={\n          ariaHidden === true\n            ? 'no-hide-descendants'\n            : importantForAccessibility\n        }\n        nativeID={id ?? nativeID}\n        ref={ref}\n      />\n    );\n  }\n\n  if (hasTextAncestor) {\n    return (\n      <TextAncestorContext value={false}>{actualView}</TextAncestorContext>\n    );\n  }\n  return actualView;\n}\n\nView.displayName = 'View';\n\nexport default View;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\nimport {createContext} from 'react';\n\n/**\n * Whether the current element is the descendant of a <Text> element.\n */\nconst TextAncestorContext: React.Context<boolean> = createContext(false);\nif (__DEV__) {\n  TextAncestorContext.displayName = 'TextAncestorContext';\n}\nexport default TextAncestorContext;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\n    throw Error(\n      \"takes an object of state variables to update or a function which returns an object of state variables.\"\n    );\n  this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n  self = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== self ? self : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(\n    oldElement.type,\n    newKey,\n    void 0,\n    void 0,\n    void 0,\n    oldElement.props\n  );\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop$1, noop$1)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\n  invokeCallback = 0;\n  var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n  if (isArrayImpl(children))\n    for (var i = 0; i < children.length; i++)\n      (nameSoFar = children[i]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (\"object\" === type) {\n    if (\"function\" === typeof children.then)\n      return mapIntoArray(\n        resolveThenable(children),\n        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result;\n    ctor = ctor();\n    ctor.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1), (payload._result = moduleObject);\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2), (payload._result = error);\n      }\n    );\n    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction noop() {}\nexports.Children = {\n  map: mapChildren,\n  forEach: function (children, forEachFunc, forEachContext) {\n    mapChildren(\n      children,\n      function () {\n        forEachFunc.apply(this, arguments);\n      },\n      forEachContext\n    );\n  },\n  count: function (children) {\n    var n = 0;\n    mapChildren(children, function () {\n      n++;\n    });\n    return n;\n  },\n  toArray: function (children) {\n    return (\n      mapChildren(children, function (child) {\n        return child;\n      }) || []\n    );\n  },\n  only: function (children) {\n    if (!isValidElement(children))\n      throw Error(\n        \"React.Children.only expected to receive a single React element child.\"\n      );\n    return children;\n  }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n  __proto__: null,\n  c: function (size) {\n    return ReactSharedInternals.H.useMemoCache(size);\n  }\n};\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cloneElement = function (element, config, children) {\n  if (null === element || void 0 === element)\n    throw Error(\n      \"The argument must be a React element, but you passed \" + element + \".\"\n    );\n  var props = assign({}, element.props),\n    key = element.key,\n    owner = void 0;\n  if (null != config)\n    for (propName in (void 0 !== config.ref && (owner = void 0),\n    void 0 !== config.key && (key = \"\" + config.key),\n    config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (props[propName] = config[propName]);\n  var propName = arguments.length - 2;\n  if (1 === propName) props.children = children;\n  else if (1 < propName) {\n    for (var childArray = Array(propName), i = 0; i < propName; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n  defaultValue = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    _threadCount: 0,\n    Provider: null,\n    Consumer: null\n  };\n  defaultValue.Provider = defaultValue;\n  defaultValue.Consumer = {\n    $$typeof: REACT_CONSUMER_TYPE,\n    _context: defaultValue\n  };\n  return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (props[propName] = config[propName]);\n  var childrenLength = arguments.length - 2;\n  if (1 === childrenLength) props.children = children;\n  else if (1 < childrenLength) {\n    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  if (type && type.defaultProps)\n    for (propName in ((childrenLength = type.defaultProps), childrenLength))\n      void 0 === props[propName] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = function (scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    ReactSharedInternals.T = prevTransition;\n  }\n};\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n  var dispatcher = ReactSharedInternals.H;\n  if (\"function\" === typeof update)\n    throw Error(\n      \"useEffect CRUD overload is not enabled in this build of React.\"\n    );\n  return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.0\";\n","/**\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {HostInstance} from '../../../src/private/types/HostInstance';\n\nimport * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport {type ViewProps as Props} from './ViewPropTypes';\n\nconst ViewNativeComponent: HostComponent<Props> =\n  NativeComponentRegistry.get<Props>('RCTView', () => ({\n    uiViewClassName: 'RCTView',\n  }));\n\ninterface NativeCommands {\n  +hotspotUpdate: (viewRef: HostInstance, x: number, y: number) => void;\n  +setPressed: (viewRef: HostInstance, pressed: boolean) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['hotspotUpdate', 'setPressed'],\n});\n\nexport default ViewNativeComponent;\n\nexport type ViewNativeComponentType = HostComponent<Props>;\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../src/private/types/HostComponent';\nimport type {\n  PartialViewConfig,\n  ViewConfig,\n} from '../Renderer/shims/ReactNativeTypes';\n\nimport getNativeComponentAttributes from '../ReactNative/getNativeComponentAttributes';\nimport UIManager from '../ReactNative/UIManager';\nimport * as ReactNativeViewConfigRegistry from '../Renderer/shims/ReactNativeViewConfigRegistry';\nimport * as StaticViewConfigValidator from './StaticViewConfigValidator';\nimport {createViewConfig} from './ViewConfig';\nimport invariant from 'invariant';\nimport * as React from 'react';\n\nlet getRuntimeConfig;\n\n/**\n * Configures a function that is called to determine whether a given component\n * should be registered using reflection of the native component at runtime.\n *\n * The provider should return null if the native component is unavailable in\n * the current environment.\n */\nexport function setRuntimeConfigProvider(\n  runtimeConfigProvider: (name: string) => ?{\n    native: boolean,\n    verify: boolean,\n  },\n): void {\n  if (getRuntimeConfig === undefined) {\n    getRuntimeConfig = runtimeConfigProvider;\n  }\n}\n\n/**\n * Gets a `NativeComponent` that can be rendered by React Native.\n *\n * The supplied `viewConfigProvider` may or may not be invoked and utilized,\n * depending on how `setRuntimeConfigProvider` is configured.\n */\nexport function get<Config: {...}>(\n  name: string,\n  viewConfigProvider: () => PartialViewConfig,\n): HostComponent<Config> {\n  ReactNativeViewConfigRegistry.register(name, () => {\n    const {native, verify} = getRuntimeConfig?.(name) ?? {\n      native: !global.RN$Bridgeless,\n      verify: false,\n    };\n\n    let viewConfig: ViewConfig;\n    if (native) {\n      viewConfig =\n        getNativeComponentAttributes(name) ??\n        createViewConfig(viewConfigProvider());\n    } else {\n      viewConfig =\n        createViewConfig(viewConfigProvider()) ??\n        getNativeComponentAttributes(name);\n    }\n\n    invariant(\n      viewConfig != null,\n      'NativeComponentRegistry.get: both static and native view config are missing for native component \"%s\".',\n      name,\n    );\n\n    if (verify) {\n      const nativeViewConfig = native\n        ? viewConfig\n        : getNativeComponentAttributes(name);\n\n      if (nativeViewConfig == null) {\n        // Defer to static view config if native view config is missing.\n        return viewConfig;\n      }\n\n      const staticViewConfig: ViewConfig = native\n        ? createViewConfig(viewConfigProvider())\n        : viewConfig;\n\n      const validationOutput = StaticViewConfigValidator.validate(\n        name,\n        nativeViewConfig,\n        staticViewConfig,\n      );\n\n      if (validationOutput.type === 'invalid') {\n        console.error(\n          StaticViewConfigValidator.stringifyValidationResult(\n            name,\n            validationOutput,\n          ),\n        );\n      }\n    }\n\n    return viewConfig;\n  });\n\n  // $FlowFixMe[incompatible-return] `NativeComponent` is actually string!\n  return name;\n}\n\n/**\n * Same as `NativeComponentRegistry.get(...)`, except this will check either\n * the `setRuntimeConfigProvider` configuration or use native reflection (slow)\n * to determine whether this native component is available.\n *\n * If the native component is not available, a stub component is returned. Note\n * that the return value of this is not `HostComponent` because the returned\n * component instance is not guaranteed to have native methods.\n */\nexport function getWithFallback_DEPRECATED<Config: {...}>(\n  name: string,\n  viewConfigProvider: () => PartialViewConfig,\n): React.ComponentType<Config> {\n  if (getRuntimeConfig == null) {\n    // `getRuntimeConfig == null` when static view configs are disabled\n    // If `setRuntimeConfigProvider` is not configured, use native reflection.\n    if (hasNativeViewConfig(name)) {\n      return get<Config>(name, viewConfigProvider);\n    }\n  } else {\n    // If there is no runtime config, then the native component is unavailable.\n    if (getRuntimeConfig(name) != null) {\n      return get<Config>(name, viewConfigProvider);\n    }\n  }\n\n  const FallbackNativeComponent = function (props: Config): React.Node {\n    return null;\n  };\n  FallbackNativeComponent.displayName = `Fallback(${name})`;\n  return FallbackNativeComponent;\n}\n\nfunction hasNativeViewConfig(name: string): boolean {\n  invariant(getRuntimeConfig == null, 'Unexpected invocation!');\n  return UIManager.getViewManagerConfig(name) != null;\n}\n\n/**\n * Unstable API. Do not use!\n *\n * This method returns if there is a StaticViewConfig registered for the\n * component name received as a parameter.\n */\nexport function unstable_hasStaticViewConfig(name: string): boolean {\n  const {native} = getRuntimeConfig?.(name) ?? {\n    native: true,\n  };\n  return !native;\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport processBoxShadow from '../StyleSheet/processBoxShadow';\n\nconst ReactNativeStyleAttributes =\n  require('../Components/View/ReactNativeStyleAttributes').default;\nconst resolveAssetSource = require('../Image/resolveAssetSource').default;\nconst processBackgroundImage =\n  require('../StyleSheet/processBackgroundImage').default;\nconst processColor = require('../StyleSheet/processColor').default;\nconst processColorArray = require('../StyleSheet/processColorArray').default;\nconst processFilter = require('../StyleSheet/processFilter').default;\nconst insetsDiffer = require('../Utilities/differ/insetsDiffer').default;\nconst matricesDiffer = require('../Utilities/differ/matricesDiffer').default;\nconst pointsDiffer = require('../Utilities/differ/pointsDiffer').default;\nconst sizesDiffer = require('../Utilities/differ/sizesDiffer').default;\nconst UIManager = require('./UIManager').default;\nconst nullthrows = require('nullthrows');\n\nfunction getNativeComponentAttributes(uiViewClassName: string): any {\n  const viewConfig = UIManager.getViewManagerConfig(uiViewClassName);\n\n  if (viewConfig == null) {\n    return null;\n  }\n\n  // TODO: This seems like a whole lot of runtime initialization for every\n  // native component that can be either avoided or simplified.\n  let {baseModuleName, bubblingEventTypes, directEventTypes} = viewConfig;\n  let nativeProps = viewConfig.NativeProps;\n\n  bubblingEventTypes = bubblingEventTypes ?? {};\n  directEventTypes = directEventTypes ?? {};\n\n  while (baseModuleName) {\n    const baseModule = UIManager.getViewManagerConfig(baseModuleName);\n    if (!baseModule) {\n      baseModuleName = null;\n    } else {\n      bubblingEventTypes = {\n        ...baseModule.bubblingEventTypes,\n        ...bubblingEventTypes,\n      };\n      directEventTypes = {\n        ...baseModule.directEventTypes,\n        ...directEventTypes,\n      };\n      nativeProps = {\n        ...baseModule.NativeProps,\n        ...nativeProps,\n      };\n      baseModuleName = baseModule.baseModuleName;\n    }\n  }\n\n  const validAttributes: {[string]: mixed} = {};\n\n  for (const key in nativeProps) {\n    const typeName = nativeProps[key];\n    const diff = getDifferForType(typeName);\n    const process = getProcessorForType(typeName);\n\n    // If diff or process == null, omit the corresponding property from the Attribute\n    // Why:\n    //  1. Consistency with AttributeType flow type\n    //  2. Consistency with Static View Configs, which omit the null properties\n    validAttributes[key] =\n      diff == null\n        ? process == null\n          ? true\n          : {process}\n        : process == null\n          ? {diff}\n          : {diff, process};\n  }\n\n  // Unfortunately, the current setup declares style properties as top-level\n  // props. This makes it so we allow style properties in the `style` prop.\n  // TODO: Move style properties into a `style` prop and disallow them as\n  // top-level props on the native side.\n  validAttributes.style = ReactNativeStyleAttributes;\n\n  // $FlowFixMe[unsafe-object-assign]\n  Object.assign(viewConfig, {\n    uiViewClassName,\n    validAttributes,\n    bubblingEventTypes,\n    directEventTypes,\n  });\n\n  attachDefaultEventTypes(viewConfig);\n\n  return viewConfig;\n}\n\nfunction attachDefaultEventTypes(viewConfig: any) {\n  // This is supported on UIManager platforms (ex: Android),\n  // as lazy view managers are not implemented for all platforms.\n  // See [UIManager] for details on constants and implementations.\n  const constants = UIManager.getConstants();\n  if (constants.ViewManagerNames || constants.LazyViewManagersEnabled) {\n    // Lazy view managers enabled.\n    viewConfig = merge(\n      viewConfig,\n      nullthrows(UIManager.getDefaultEventTypes)(),\n    );\n  } else {\n    viewConfig.bubblingEventTypes = merge(\n      viewConfig.bubblingEventTypes,\n      constants.genericBubblingEventTypes,\n    );\n    viewConfig.directEventTypes = merge(\n      viewConfig.directEventTypes,\n      constants.genericDirectEventTypes,\n    );\n  }\n}\n\n// TODO: Figure out how to avoid all this runtime initialization cost.\nfunction merge(destination: ?Object, source: ?Object): ?Object {\n  if (!source) {\n    return destination;\n  }\n  if (!destination) {\n    return source;\n  }\n\n  for (const key in source) {\n    if (!source.hasOwnProperty(key)) {\n      continue;\n    }\n\n    let sourceValue = source[key];\n    if (destination.hasOwnProperty(key)) {\n      const destinationValue = destination[key];\n      if (\n        typeof sourceValue === 'object' &&\n        typeof destinationValue === 'object'\n      ) {\n        sourceValue = merge(destinationValue, sourceValue);\n      }\n    }\n    destination[key] = sourceValue;\n  }\n  return destination;\n}\n\nfunction getDifferForType(\n  typeName: string,\n): ?(prevProp: any, nextProp: any) => boolean {\n  switch (typeName) {\n    // iOS Types\n    case 'CATransform3D':\n      return matricesDiffer;\n    case 'CGPoint':\n      return pointsDiffer;\n    case 'CGSize':\n      return sizesDiffer;\n    case 'UIEdgeInsets':\n      return insetsDiffer;\n    // Android Types\n    case 'Point':\n      return pointsDiffer;\n    case 'EdgeInsets':\n      return insetsDiffer;\n  }\n  return null;\n}\n\nfunction getProcessorForType(typeName: string): ?(nextProp: any) => any {\n  switch (typeName) {\n    // iOS Types\n    case 'CGColor':\n    case 'UIColor':\n      return processColor;\n    case 'CGColorArray':\n    case 'UIColorArray':\n      return processColorArray;\n    case 'CGImage':\n    case 'UIImage':\n    case 'RCTImageSource':\n      return resolveAssetSource;\n    case 'BoxShadowArray':\n      return processBoxShadow;\n    case 'FilterArray':\n      return processFilter;\n    // Android Types\n    case 'Color':\n      return processColor;\n    case 'ColorArray':\n      return processColorArray;\n    case 'Filter':\n      return processFilter;\n    case 'BackgroundImage':\n      return processBackgroundImage;\n    case 'ImageSource':\n      return resolveAssetSource;\n    case 'BoxShadow':\n      return processBoxShadow;\n  }\n  return null;\n}\n\nexport default getNativeComponentAttributes;\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 * @flow strict-local\n * @format\n */\n\n// Utilities for resolving an asset into a `source` for e.g. `Image`\n\nimport type {ResolvedAssetSource} from './AssetSourceResolver';\nimport typeof AssetSourceResolverT from './AssetSourceResolver';\nimport type {ImageSource} from './ImageSource';\n\nimport SourceCode from '../NativeModules/specs/NativeSourceCode';\n\nconst AssetSourceResolver: AssetSourceResolverT =\n  require('./AssetSourceResolver').default;\nconst {pickScale} = require('./AssetUtils');\nconst AssetRegistry = require('@react-native/assets-registry/registry');\n\ntype CustomSourceTransformer = (\n  resolver: AssetSourceResolver,\n) => ?ResolvedAssetSource;\n\nlet _customSourceTransformers: Array<CustomSourceTransformer> = [];\nlet _serverURL: ?string;\nlet _scriptURL: ?string;\nlet _sourceCodeScriptURL: ?string;\n\nfunction getSourceCodeScriptURL(): ?string {\n  if (_sourceCodeScriptURL != null) {\n    return _sourceCodeScriptURL;\n  }\n\n  _sourceCodeScriptURL = SourceCode.getConstants().scriptURL;\n  return _sourceCodeScriptURL;\n}\n\nfunction getDevServerURL(): ?string {\n  if (_serverURL === undefined) {\n    const sourceCodeScriptURL = getSourceCodeScriptURL();\n    const match = sourceCodeScriptURL?.match(/^https?:\\/\\/.*?\\//);\n    if (match) {\n      // jsBundle was loaded from network\n      _serverURL = match[0];\n    } else {\n      // jsBundle was loaded from file\n      _serverURL = null;\n    }\n  }\n  return _serverURL;\n}\n\nfunction _coerceLocalScriptURL(scriptURL: ?string): ?string {\n  let normalizedScriptURL = scriptURL;\n\n  if (normalizedScriptURL != null) {\n    if (normalizedScriptURL.startsWith('assets://')) {\n      // android: running from within assets, no offline path to use\n      return null;\n    }\n    normalizedScriptURL = normalizedScriptURL.substring(\n      0,\n      normalizedScriptURL.lastIndexOf('/') + 1,\n    );\n    if (!normalizedScriptURL.includes('://')) {\n      // Add file protocol in case we have an absolute file path and not a URL.\n      // This shouldn't really be necessary. scriptURL should be a URL.\n      normalizedScriptURL = 'file://' + normalizedScriptURL;\n    }\n  }\n\n  return normalizedScriptURL;\n}\n\nfunction getScriptURL(): ?string {\n  if (_scriptURL === undefined) {\n    _scriptURL = _coerceLocalScriptURL(getSourceCodeScriptURL());\n  }\n  return _scriptURL;\n}\n\n/**\n * `transformer` can optionally be used to apply a custom transformation when\n * resolving an asset source. This methods overrides all other custom transformers\n * that may have been previously registered.\n */\nfunction setCustomSourceTransformer(\n  transformer: CustomSourceTransformer,\n): void {\n  _customSourceTransformers = [transformer];\n}\n\n/**\n * Adds a `transformer` into the chain of custom source transformers, which will\n * be applied in the order registered, until one returns a non-null value.\n */\nfunction addCustomSourceTransformer(\n  transformer: CustomSourceTransformer,\n): void {\n  _customSourceTransformers.push(transformer);\n}\n\n/**\n * `source` is either a number (opaque type returned by require('./foo.png'))\n * or an `ImageSource` like { uri: '<http location || file path>' }\n */\nfunction resolveAssetSource(source: ?ImageSource): ?ResolvedAssetSource {\n  if (source == null || typeof source === 'object') {\n    // $FlowFixMe[incompatible-exact] `source` doesn't exactly match `ResolvedAssetSource`\n    // $FlowFixMe[incompatible-return] `source` doesn't exactly match `ResolvedAssetSource`\n    return source;\n  }\n\n  const asset = AssetRegistry.getAssetByID(source);\n  if (!asset) {\n    return null;\n  }\n\n  const resolver = new AssetSourceResolver(\n    getDevServerURL(),\n    getScriptURL(),\n    asset,\n  );\n\n  // Apply (chained) custom source transformers, if any\n  if (_customSourceTransformers) {\n    for (const customSourceTransformer of _customSourceTransformers) {\n      const transformedSource = customSourceTransformer(resolver);\n      if (transformedSource != null) {\n        return transformedSource;\n      }\n    }\n  }\n\n  return resolver.defaultAsset();\n}\n\nresolveAssetSource.pickScale = pickScale;\nresolveAssetSource.setCustomSourceTransformer = setCustomSourceTransformer;\nresolveAssetSource.addCustomSourceTransformer = addCustomSourceTransformer;\nexport default resolveAssetSource;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nexport type ResolvedAssetSource = {\n  +__packager_asset: boolean,\n  +width: ?number,\n  +height: ?number,\n  +uri: string,\n  +scale: number,\n};\n\n// From @react-native/assets-registry\ntype AssetDestPathResolver = 'android' | 'generic';\n\n// From @react-native/assets-registry\ntype PackagerAsset = $ReadOnly<{\n  __packager_asset: boolean,\n  fileSystemLocation: string,\n  httpServerLocation: string,\n  width: ?number,\n  height: ?number,\n  scales: Array<number>,\n  hash: string,\n  name: string,\n  type: string,\n  resolver?: AssetDestPathResolver,\n  ...\n}>;\n\nconst PixelRatio = require('../Utilities/PixelRatio').default;\nconst Platform = require('../Utilities/Platform').default;\nconst {pickScale} = require('./AssetUtils');\nconst {\n  getAndroidResourceFolderName,\n  getAndroidResourceIdentifier,\n  getBasePath,\n} = require('@react-native/assets-registry/path-support');\nconst invariant = require('invariant');\n\n/**\n * Returns a path like 'assets/AwesomeModule/icon@2x.png'\n */\nfunction getScaledAssetPath(asset: PackagerAsset): string {\n  const scale = pickScale(asset.scales, PixelRatio.get());\n  const scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';\n  const assetDir = getBasePath(asset);\n  return assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;\n}\n\n/**\n * Returns a path like 'drawable-mdpi/icon.png'\n */\nfunction getAssetPathInDrawableFolder(asset: PackagerAsset): string {\n  const scale = pickScale(asset.scales, PixelRatio.get());\n  const drawableFolder = getAndroidResourceFolderName(asset, scale);\n  const fileName = getAndroidResourceIdentifier(asset);\n  return drawableFolder + '/' + fileName + '.' + asset.type;\n}\n\n/**\n * Returns true if the asset can be loaded over the network.\n *\n * This prevents an issue loading XML assets on Android. XML asset types like\n * vector drawables can only be loaded from precompiled source. Android does\n * not support loading these over the network, and AAPT precompiles data by\n * breaking path data and resource information apart into multiple files,\n * stuffing it all into the resource table. As a result, we should only attempt\n * to load resources as we would in release builds: by the resource name.\n *\n * For more information, see:\n * https://issuetracker.google.com/issues/62435069\n * https://issuetracker.google.com/issues/68293189\n */\nfunction assetSupportsNetworkLoads(asset: PackagerAsset): boolean {\n  return !(asset.type === 'xml' && Platform.OS === 'android');\n}\n\nclass AssetSourceResolver {\n  serverUrl: ?string;\n  // where the jsbundle is being run from\n  jsbundleUrl: ?string;\n  // the asset to resolve\n  asset: PackagerAsset;\n\n  constructor(serverUrl: ?string, jsbundleUrl: ?string, asset: PackagerAsset) {\n    this.serverUrl = serverUrl;\n    this.jsbundleUrl = jsbundleUrl;\n    this.asset = asset;\n  }\n\n  isLoadedFromServer(): boolean {\n    return (\n      this.serverUrl != null &&\n      this.serverUrl !== '' &&\n      assetSupportsNetworkLoads(this.asset)\n    );\n  }\n\n  isLoadedFromFileSystem(): boolean {\n    return this.jsbundleUrl != null && this.jsbundleUrl?.startsWith('file://');\n  }\n\n  defaultAsset(): ResolvedAssetSource {\n    if (this.isLoadedFromServer()) {\n      return this.assetServerURL();\n    }\n\n    if (this.asset.resolver != null) {\n      return this.getAssetUsingResolver(this.asset.resolver);\n    }\n\n    if (Platform.OS === 'android') {\n      return this.isLoadedFromFileSystem()\n        ? this.drawableFolderInBundle()\n        : this.resourceIdentifierWithoutScale();\n    } else {\n      return this.scaledAssetURLNearBundle();\n    }\n  }\n\n  getAssetUsingResolver(resolver: AssetDestPathResolver): ResolvedAssetSource {\n    switch (resolver) {\n      case 'android':\n        return this.isLoadedFromFileSystem()\n          ? this.drawableFolderInBundle()\n          : this.resourceIdentifierWithoutScale();\n      case 'generic':\n        return this.scaledAssetURLNearBundle();\n      default:\n        throw new Error(\n          \"Don't know how to get asset via provided resolver: \" +\n            resolver +\n            '\\nAsset: ' +\n            JSON.stringify(this.asset, null, '\\t') +\n            '\\nPossible resolvers are:' +\n            JSON.stringify(['android', 'generic'], null, '\\t'),\n        );\n    }\n  }\n\n  /**\n   * Returns an absolute URL which can be used to fetch the asset\n   * from the devserver\n   */\n  assetServerURL(): ResolvedAssetSource {\n    invariant(this.serverUrl != null, 'need server to load from');\n    return this.fromSource(\n      this.serverUrl +\n        getScaledAssetPath(this.asset) +\n        '?platform=' +\n        Platform.OS +\n        '&hash=' +\n        this.asset.hash,\n    );\n  }\n\n  /**\n   * Resolves to just the scaled asset filename\n   * E.g. 'assets/AwesomeModule/icon@2x.png'\n   */\n  scaledAssetPath(): ResolvedAssetSource {\n    return this.fromSource(getScaledAssetPath(this.asset));\n  }\n\n  /**\n   * Resolves to where the bundle is running from, with a scaled asset filename\n   * E.g. 'file:///sdcard/bundle/assets/AwesomeModule/icon@2x.png'\n   */\n  scaledAssetURLNearBundle(): ResolvedAssetSource {\n    const path = this.jsbundleUrl ?? 'file://';\n    return this.fromSource(\n      // Assets can have relative paths outside of the project root.\n      // When bundling them we replace `../` with `_` to make sure they\n      // don't end up outside of the expected assets directory.\n      path + getScaledAssetPath(this.asset).replace(/\\.\\.\\//g, '_'),\n    );\n  }\n\n  /**\n   * The default location of assets bundled with the app, located by\n   * resource identifier\n   * The Android resource system picks the correct scale.\n   * E.g. 'assets_awesomemodule_icon'\n   */\n  resourceIdentifierWithoutScale(): ResolvedAssetSource {\n    invariant(\n      Platform.OS === 'android',\n      'resource identifiers work on Android',\n    );\n    return this.fromSource(getAndroidResourceIdentifier(this.asset));\n  }\n\n  /**\n   * If the jsbundle is running from a sideload location, this resolves assets\n   * relative to its location\n   * E.g. 'file:///sdcard/AwesomeModule/drawable-mdpi/icon.png'\n   */\n  drawableFolderInBundle(): ResolvedAssetSource {\n    const path = this.jsbundleUrl ?? 'file://';\n    return this.fromSource(path + getAssetPathInDrawableFolder(this.asset));\n  }\n\n  fromSource(source: string): ResolvedAssetSource {\n    return {\n      __packager_asset: true,\n      width: this.asset.width,\n      height: this.asset.height,\n      uri: source,\n      scale: pickScale(this.asset.scales, PixelRatio.get()),\n    };\n  }\n\n  static pickScale: (scales: Array<number>, deviceScale?: number) => number =\n    pickScale;\n}\n\nexport default AssetSourceResolver;\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 * @flow strict-local\n * @format\n */\n\nimport PixelRatio from '../Utilities/PixelRatio';\n\nlet cacheBreaker;\nlet warnIfCacheBreakerUnset = true;\n\nexport function pickScale(scales: Array<number>, deviceScale?: number): number {\n  const requiredDeviceScale = deviceScale ?? PixelRatio.get();\n\n  // Packager guarantees that `scales` array is sorted\n  for (let i = 0; i < scales.length; i++) {\n    if (scales[i] >= requiredDeviceScale) {\n      return scales[i];\n    }\n  }\n\n  // If nothing matches, device scale is larger than any available\n  // scales, so we return the biggest one. Unless the array is empty,\n  // in which case we default to 1\n  return scales[scales.length - 1] || 1;\n}\n\nexport function setUrlCacheBreaker(appendage: string) {\n  cacheBreaker = appendage;\n}\n\nexport function getUrlCacheBreaker(): string {\n  if (cacheBreaker == null) {\n    if (__DEV__ && warnIfCacheBreakerUnset) {\n      warnIfCacheBreakerUnset = false;\n      console.warn(\n        'AssetUtils.getUrlCacheBreaker: Cache breaker value is unset',\n      );\n    }\n    return '';\n  }\n  return cacheBreaker;\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/*:: import type {PackagerAsset} from './registry.js'; */\n\nconst androidScaleSuffix = {\n  '0.75': 'ldpi',\n  '1': 'mdpi',\n  '1.5': 'hdpi',\n  '2': 'xhdpi',\n  '3': 'xxhdpi',\n  '4': 'xxxhdpi',\n};\n\nconst ANDROID_BASE_DENSITY = 160;\n\n/**\n * FIXME: using number to represent discrete scale numbers is fragile in essence because of\n * floating point numbers imprecision.\n */\nfunction getAndroidAssetSuffix(scale /*: number */) /*: string */ {\n  if (scale.toString() in androidScaleSuffix) {\n    // $FlowFixMe[invalid-computed-prop]\n    return androidScaleSuffix[scale.toString()];\n  }\n  // NOTE: Android Gradle Plugin does not fully support the nnndpi format.\n  // See https://issuetracker.google.com/issues/72884435\n  if (Number.isFinite(scale) && scale > 0) {\n    return Math.round(scale * ANDROID_BASE_DENSITY) + 'dpi';\n  }\n  throw new Error('no such scale ' + scale.toString());\n}\n\n// See https://developer.android.com/guide/topics/resources/drawable-resource.html\nconst drawableFileTypes = new Set([\n  'gif',\n  'jpeg',\n  'jpg',\n  'ktx',\n  'png',\n  'webp',\n  'xml',\n]);\n\nfunction getAndroidResourceFolderName(\n  asset /*: PackagerAsset */,\n  scale /*: number */,\n) /*: string */ {\n  if (!drawableFileTypes.has(asset.type)) {\n    return 'raw';\n  }\n  const suffix = getAndroidAssetSuffix(scale);\n  if (!suffix) {\n    throw new Error(\n      \"Don't know which android drawable suffix to use for scale: \" +\n        scale +\n        '\\nAsset: ' +\n        JSON.stringify(asset, null, '\\t') +\n        '\\nPossible scales are:' +\n        JSON.stringify(androidScaleSuffix, null, '\\t'),\n    );\n  }\n  return 'drawable-' + suffix;\n}\n\nfunction getAndroidResourceIdentifier(\n  asset /*: PackagerAsset */,\n) /*: string */ {\n  return (getBasePath(asset) + '/' + asset.name)\n    .toLowerCase()\n    .replace(/\\//g, '_') // Encode folder structure in file name\n    .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n    .replace(/^(?:assets|assetsunstable_path)_/, ''); // Remove \"assets_\" or \"assetsunstable_path_\" prefix\n}\n\nfunction getBasePath(asset /*: PackagerAsset */) /*: string */ {\n  const basePath = asset.httpServerLocation;\n  return basePath.startsWith('/') ? basePath.slice(1) : basePath;\n}\n\nmodule.exports = {\n  getAndroidResourceFolderName,\n  getAndroidResourceIdentifier,\n  getBasePath,\n};\n","const assets=[];module.exports={registerAsset:s=>assets.push(s),getAssetByID:s=>assets[s-1]};","/**\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {ColorValue} from './StyleSheet';\n\nimport processColor, {type ProcessedColorValue} from './processColor';\n\nconst TRANSPARENT = 0; // rgba(0, 0, 0, 0)\n\nfunction processColorArray(\n  colors: ?$ReadOnlyArray<ColorValue>,\n): ?$ReadOnlyArray<ProcessedColorValue> {\n  return colors == null ? null : colors.map(processColorElement);\n}\n\nfunction processColorElement(color: ColorValue): ProcessedColorValue {\n  const value = processColor(color);\n  // For invalid colors, fallback to transparent.\n  if (value == null) {\n    console.error('Invalid value in color array:', color);\n    return TRANSPARENT;\n  }\n  return value;\n}\n\nexport default processColorArray;\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 * @flow\n * @format\n */\n\n'use strict';\n\ntype Inset = {\n  top: ?number,\n  left: ?number,\n  right: ?number,\n  bottom: ?number,\n  ...\n};\n\nconst dummyInsets = {\n  top: undefined,\n  left: undefined,\n  right: undefined,\n  bottom: undefined,\n};\n\nfunction insetsDiffer(one: Inset, two: Inset): boolean {\n  one = one || dummyInsets;\n  two = two || dummyInsets;\n  return (\n    one !== two &&\n    (one.top !== two.top ||\n      one.left !== two.left ||\n      one.right !== two.right ||\n      one.bottom !== two.bottom)\n  );\n}\n\nexport default insetsDiffer;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * Unrolls an array comparison specially for matrices. Prioritizes\n * checking of indices that are most likely to change so that the comparison\n * bails as early as possible.\n *\n * @param {MatrixMath.Matrix} one First matrix.\n * @param {MatrixMath.Matrix} two Second matrix.\n * @return {boolean} Whether or not the two matrices differ.\n */\nfunction matricesDiffer(one: ?Array<number>, two: ?Array<number>): boolean {\n  if (one === two) {\n    return false;\n  }\n  return (\n    !one ||\n    !two ||\n    one[12] !== two[12] ||\n    one[13] !== two[13] ||\n    one[14] !== two[14] ||\n    one[5] !== two[5] ||\n    one[10] !== two[10] ||\n    one[0] !== two[0] ||\n    one[1] !== two[1] ||\n    one[2] !== two[2] ||\n    one[3] !== two[3] ||\n    one[4] !== two[4] ||\n    one[6] !== two[6] ||\n    one[7] !== two[7] ||\n    one[8] !== two[8] ||\n    one[9] !== two[9] ||\n    one[11] !== two[11] ||\n    one[15] !== two[15]\n  );\n}\n\nexport default matricesDiffer;\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 * @flow\n * @format\n */\n\n'use strict';\n\ntype Point = {\n  x: ?number,\n  y: ?number,\n  ...\n};\n\nconst dummyPoint = {x: undefined, y: undefined};\n\nfunction pointsDiffer(one: ?Point, two: ?Point): boolean {\n  one = one || dummyPoint;\n  two = two || dummyPoint;\n  return one !== two && (one.x !== two.x || one.y !== two.y);\n}\n\nexport default pointsDiffer;\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 * @flow\n * @format\n */\n\nimport type {UIManagerJSInterface} from '../Types/UIManagerJSInterface';\n\nimport {getFabricUIManager} from './FabricUIManager';\nimport nullthrows from 'nullthrows';\n\nfunction isFabricReactTag(reactTag: number): boolean {\n  // React reserves even numbers for Fabric.\n  return reactTag % 2 === 0;\n}\n\nconst UIManagerImpl: UIManagerJSInterface =\n  global.RN$Bridgeless === true\n    ? require('./BridgelessUIManager').default\n    : require('./PaperUIManager').default;\n\n// $FlowFixMe[cannot-spread-interface]\nconst UIManager: UIManagerJSInterface = {\n  ...UIManagerImpl,\n  measure(\n    reactTag: number,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n      pageX: number,\n      pageY: number,\n    ) => void,\n  ): void {\n    if (isFabricReactTag(reactTag)) {\n      const FabricUIManager = nullthrows(getFabricUIManager());\n      const shadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n      if (shadowNode) {\n        FabricUIManager.measure(shadowNode, callback);\n      } else {\n        console.warn(`measure cannot find view with tag #${reactTag}`);\n        // $FlowFixMe[incompatible-call]\n        callback();\n      }\n    } else {\n      // Paper\n      UIManagerImpl.measure(reactTag, callback);\n    }\n  },\n\n  measureInWindow(\n    reactTag: number,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ): void {\n    if (isFabricReactTag(reactTag)) {\n      const FabricUIManager = nullthrows(getFabricUIManager());\n      const shadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n      if (shadowNode) {\n        FabricUIManager.measureInWindow(shadowNode, callback);\n      } else {\n        console.warn(`measure cannot find view with tag #${reactTag}`);\n        // $FlowFixMe[incompatible-call]\n        callback();\n      }\n    } else {\n      // Paper\n      UIManagerImpl.measureInWindow(reactTag, callback);\n    }\n  },\n\n  measureLayout(\n    reactTag: number,\n    ancestorReactTag: number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ): void {\n    if (isFabricReactTag(reactTag)) {\n      const FabricUIManager = nullthrows(getFabricUIManager());\n      const shadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n      const ancestorShadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(ancestorReactTag);\n\n      if (!shadowNode || !ancestorShadowNode) {\n        return;\n      }\n\n      FabricUIManager.measureLayout(\n        shadowNode,\n        ancestorShadowNode,\n        errorCallback,\n        callback,\n      );\n    } else {\n      // Paper\n      UIManagerImpl.measureLayout(\n        reactTag,\n        ancestorReactTag,\n        errorCallback,\n        callback,\n      );\n    }\n  },\n\n  measureLayoutRelativeToParent(\n    reactTag: number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ): void {\n    if (isFabricReactTag(reactTag)) {\n      console.warn(\n        'RCTUIManager.measureLayoutRelativeToParent method is deprecated and it will not be implemented in newer versions of RN (Fabric) - T47686450',\n      );\n      const FabricUIManager = nullthrows(getFabricUIManager());\n      const shadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n      if (shadowNode) {\n        FabricUIManager.measure(\n          shadowNode,\n          (left, top, width, height, pageX, pageY) => {\n            callback(left, top, width, height);\n          },\n        );\n      }\n    } else {\n      // Paper\n      UIManagerImpl.measureLayoutRelativeToParent(\n        reactTag,\n        errorCallback,\n        callback,\n      );\n    }\n  },\n\n  dispatchViewManagerCommand(\n    reactTag: number,\n    commandName: number | string,\n    commandArgs: any[],\n  ) {\n    // Sometimes, libraries directly pass in the output of `findNodeHandle` to\n    // this function without checking if it's null. This guards against that\n    // case. We throw early here in Javascript so we can get a JS stacktrace\n    // instead of a harder-to-debug native Java or Objective-C stacktrace.\n    if (typeof reactTag !== 'number') {\n      throw new Error('dispatchViewManagerCommand: found null reactTag');\n    }\n\n    if (isFabricReactTag(reactTag)) {\n      const FabricUIManager = nullthrows(getFabricUIManager());\n      const shadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n      if (shadowNode) {\n        // Transform the accidental CommandID into a CommandName which is the stringified number.\n        // The interop layer knows how to convert this number into the right method name.\n        // Stringify a string is a no-op, so it's safe.\n        commandName = `${commandName}`;\n        FabricUIManager.dispatchCommand(shadowNode, commandName, commandArgs);\n      }\n    } else {\n      UIManagerImpl.dispatchViewManagerCommand(\n        reactTag,\n        // We have some legacy components that are actually already using strings. ¯\\_(ツ)_/¯\n        // $FlowFixMe[incompatible-call]\n        commandName,\n        commandArgs,\n      );\n    }\n  },\n};\n\nexport default UIManager;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {\n  MeasureInWindowOnSuccessCallback,\n  MeasureLayoutOnSuccessCallback,\n  MeasureOnSuccessCallback,\n} from '../../src/private/types/HostInstance';\nimport type {NativeElementReference} from '../../src/private/webapis/dom/nodes/specs/NativeDOM';\nimport type {\n  InternalInstanceHandle,\n  LayoutAnimationConfig,\n  Node,\n} from '../Renderer/shims/ReactNativeTypes';\nimport type {RootTag} from '../Types/RootTagTypes';\n\nimport defineLazyObjectProperty from '../Utilities/defineLazyObjectProperty';\n\nexport type NodeSet = Array<Node>;\nexport type NodeProps = {...};\nexport interface Spec {\n  +createNode: (\n    reactTag: number,\n    viewName: string,\n    rootTag: RootTag,\n    props: NodeProps,\n    instanceHandle: InternalInstanceHandle,\n  ) => Node;\n  +cloneNode: (node: Node) => Node;\n  +cloneNodeWithNewChildren: (node: Node) => Node;\n  +cloneNodeWithNewProps: (node: Node, newProps: NodeProps) => Node;\n  +cloneNodeWithNewChildrenAndProps: (node: Node, newProps: NodeProps) => Node;\n  +createChildSet: (rootTag: RootTag) => NodeSet;\n  +appendChild: (parentNode: Node, child: Node) => Node;\n  +appendChildToSet: (childSet: NodeSet, child: Node) => void;\n  +completeRoot: (rootTag: RootTag, childSet: NodeSet) => void;\n  +measure: (\n    node: Node | NativeElementReference,\n    callback: MeasureOnSuccessCallback,\n  ) => void;\n  +measureInWindow: (\n    node: Node | NativeElementReference,\n    callback: MeasureInWindowOnSuccessCallback,\n  ) => void;\n  +measureLayout: (\n    node: Node | NativeElementReference,\n    relativeNode: Node | NativeElementReference,\n    onFail: () => void,\n    onSuccess: MeasureLayoutOnSuccessCallback,\n  ) => void;\n  +configureNextLayoutAnimation: (\n    config: LayoutAnimationConfig,\n    callback: () => void, // check what is returned here\n    errorCallback: () => void,\n  ) => void;\n  +sendAccessibilityEvent: (node: Node, eventType: string) => void;\n  +findShadowNodeByTag_DEPRECATED: (reactTag: number) => ?Node;\n  +setNativeProps: (\n    node: Node | NativeElementReference,\n    newProps: NodeProps,\n  ) => void;\n  +dispatchCommand: (\n    node: Node,\n    commandName: string,\n    args: Array<mixed>,\n  ) => void;\n  +findNodeAtPoint: (\n    node: Node,\n    locationX: number,\n    locationY: number,\n    callback: (instanceHandle: ?InternalInstanceHandle) => void,\n  ) => void;\n  +compareDocumentPosition: (\n    node: Node | NativeElementReference,\n    otherNode: Node | NativeElementReference,\n  ) => number;\n  +getBoundingClientRect: (\n    node: Node | NativeElementReference,\n    includeTransform: boolean,\n  ) => ?[\n    /* x: */ number,\n    /* y: */ number,\n    /* width: */ number,\n    /* height: */ number,\n  ];\n  +unstable_DefaultEventPriority: number;\n  +unstable_DiscreteEventPriority: number;\n  +unstable_ContinuousEventPriority: number;\n  +unstable_IdleEventPriority: number;\n  +unstable_getCurrentEventPriority: () => number;\n}\n\nlet nativeFabricUIManagerProxy: ?Spec;\n\n// This is a list of all the methods in global.nativeFabricUIManager that we'll\n// cache in JavaScript, as the current implementation of the binding\n// creates a new host function every time methods are accessed.\nconst CACHED_PROPERTIES = [\n  'createNode',\n  'cloneNode',\n  'cloneNodeWithNewChildren',\n  'cloneNodeWithNewProps',\n  'cloneNodeWithNewChildrenAndProps',\n  'createChildSet',\n  'appendChild',\n  'appendChildToSet',\n  'completeRoot',\n  'measure',\n  'measureInWindow',\n  'measureLayout',\n  'configureNextLayoutAnimation',\n  'sendAccessibilityEvent',\n  'findShadowNodeByTag_DEPRECATED',\n  'setNativeProps',\n  'dispatchCommand',\n  'compareDocumentPosition',\n  'getBoundingClientRect',\n  'unstable_DefaultEventPriority',\n  'unstable_DiscreteEventPriority',\n  'unstable_ContinuousEventPriority',\n  'unstable_IdleEventPriority',\n  'unstable_getCurrentEventPriority',\n];\n\n// This is exposed as a getter because apps using the legacy renderer AND\n// Fabric can define the binding lazily. If we evaluated the global and cached\n// it in the module we might be caching an `undefined` value before it is set.\nexport function getFabricUIManager(): ?Spec {\n  if (\n    nativeFabricUIManagerProxy == null &&\n    global.nativeFabricUIManager != null\n  ) {\n    nativeFabricUIManagerProxy = createProxyWithCachedProperties(\n      global.nativeFabricUIManager,\n      CACHED_PROPERTIES,\n    );\n  }\n  return nativeFabricUIManagerProxy;\n}\n\n/**\n *\n * Returns an object that caches the specified properties the first time they\n * are accessed, and falls back to the original object for other properties.\n */\nfunction createProxyWithCachedProperties(\n  implementation: Spec,\n  propertiesToCache: $ReadOnlyArray<string>,\n): Spec {\n  const proxy = Object.create(implementation);\n  for (const propertyName of propertiesToCache) {\n    defineLazyObjectProperty(proxy, propertyName, {\n      // $FlowExpectedError[prop-missing]\n      get: () => implementation[propertyName],\n    });\n  }\n  return proxy;\n}\n","'use strict';\n\nfunction nullthrows(x, message) {\n  if (x != null) {\n    return x;\n  }\n  var error = new Error(message !== undefined ? message : 'Got unexpected ' + x);\n  error.framesToPop = 1; // Skip nullthrows's own stack frame.\n  throw error;\n}\n\nmodule.exports = nullthrows;\nmodule.exports.default = nullthrows;\n\nObject.defineProperty(module.exports, '__esModule', {value: true});\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {RootTag} from '../Types/RootTagTypes';\nimport type {UIManagerJSInterface} from '../Types/UIManagerJSInterface';\n\nimport {unstable_hasComponent} from '../NativeComponent/NativeComponentRegistryUnstable';\nimport defineLazyObjectProperty from '../Utilities/defineLazyObjectProperty';\nimport Platform from '../Utilities/Platform';\nimport {getFabricUIManager} from './FabricUIManager';\nimport nullthrows from 'nullthrows';\n\nfunction raiseSoftError(methodName: string, details?: string): void {\n  console.error(\n    `[ReactNative Architecture][JS] '${methodName}' is not available in the new React Native architecture.` +\n      (details ? ` ${details}` : ''),\n  );\n}\n\nconst getUIManagerConstants: ?() => {[viewManagerName: string]: Object} =\n  global.RN$LegacyInterop_UIManager_getConstants;\n\nconst getUIManagerConstantsCached = (function () {\n  let wasCalledOnce = false;\n  let result: {[viewManagerName: string]: Object} = {};\n  return (): {[viewManagerName: string]: Object} => {\n    if (!wasCalledOnce) {\n      result = nullthrows(getUIManagerConstants)();\n      wasCalledOnce = true;\n    }\n    return result;\n  };\n})();\n\nconst getConstantsForViewManager: ?(viewManagerName: string) => ?Object =\n  global.RN$LegacyInterop_UIManager_getConstantsForViewManager;\n\nconst getDefaultEventTypes: ?() => Object =\n  global.RN$LegacyInterop_UIManager_getDefaultEventTypes;\n\nconst getDefaultEventTypesCached = (function () {\n  let wasCalledOnce = false;\n  let result = null;\n  return (): Object => {\n    if (!wasCalledOnce) {\n      result = nullthrows(getDefaultEventTypes)();\n      wasCalledOnce = true;\n    }\n    return result;\n  };\n})();\n\n/**\n * UIManager.js overrides these APIs.\n * Pull them out from the BridgelessUIManager implementation. So, we can ignore them.\n */\nconst UIManagerJSOverridenAPIs = {\n  measure: (\n    reactTag: number,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n      pageX: number,\n      pageY: number,\n    ) => void,\n  ): void => {\n    raiseSoftError('measure');\n  },\n  measureInWindow: (\n    reactTag: number,\n    callback: (x: number, y: number, width: number, height: number) => void,\n  ): void => {\n    raiseSoftError('measureInWindow');\n  },\n  measureLayout: (\n    reactTag: number,\n    ancestorReactTag: number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ): void => {\n    raiseSoftError('measureLayout');\n  },\n  measureLayoutRelativeToParent: (\n    reactTag: number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ): void => {\n    raiseSoftError('measureLayoutRelativeToParent');\n  },\n  dispatchViewManagerCommand: (\n    reactTag: number,\n    commandID: number,\n    commandArgs: ?Array<string | number | boolean>,\n  ): void => {\n    raiseSoftError('dispatchViewManagerCommand');\n  },\n};\n\n/**\n * Leave Unimplemented: The only thing that called these methods was the paper renderer.\n * In OSS, the New Architecture will just use the Fabric renderer, which uses\n * different APIs.\n */\nconst UIManagerJSUnusedInNewArchAPIs = {\n  createView: (\n    reactTag: number,\n    viewName: string,\n    rootTag: RootTag,\n    props: Object,\n  ): void => {\n    raiseSoftError('createView');\n  },\n  updateView: (reactTag: number, viewName: string, props: Object): void => {\n    raiseSoftError('updateView');\n  },\n  setChildren: (containerTag: number, reactTags: Array<number>): void => {\n    raiseSoftError('setChildren');\n  },\n  manageChildren: (\n    containerTag: number,\n    moveFromIndices: Array<number>,\n    moveToIndices: Array<number>,\n    addChildReactTags: Array<number>,\n    addAtIndices: Array<number>,\n    removeAtIndices: Array<number>,\n  ): void => {\n    raiseSoftError('manageChildren');\n  },\n  setJSResponder: (reactTag: number, blockNativeResponder: boolean): void => {\n    raiseSoftError('setJSResponder');\n  },\n  clearJSResponder: (): void => {\n    raiseSoftError('clearJSResponder');\n  },\n};\n\n/**\n * Leave unimplemented: These APIs are deprecated in UIManager. We will eventually remove\n * them from React Native.\n */\nconst UIManagerJSDeprecatedPlatformAPIs = Platform.select({\n  android: {},\n});\n\nconst UIManagerJSPlatformAPIs = Platform.select({\n  android: {\n    getConstantsForViewManager: (viewManagerName: string): ?Object => {\n      if (getConstantsForViewManager) {\n        return getConstantsForViewManager(viewManagerName);\n      }\n\n      raiseSoftError('getConstantsForViewManager');\n      return {};\n    },\n    getDefaultEventTypes: (): Array<string> => {\n      if (getDefaultEventTypes) {\n        return getDefaultEventTypesCached();\n      }\n\n      raiseSoftError('getDefaultEventTypes');\n      return [];\n    },\n    setLayoutAnimationEnabledExperimental: (enabled: boolean): void => {\n      if (__DEV__) {\n        console.warn(\n          'setLayoutAnimationEnabledExperimental is currently a no-op in the New Architecture.',\n        );\n      }\n    },\n    sendAccessibilityEvent: (reactTag: number, eventType: number): void => {\n      // Keep this in sync with java:FabricUIManager.sendAccessibilityEventFromJS\n      // and legacySendAccessibilityEvent.android.js\n      const AccessibilityEvent = {\n        TYPE_VIEW_FOCUSED: 0x00000008,\n        TYPE_WINDOW_STATE_CHANGED: 0x00000020,\n        TYPE_VIEW_CLICKED: 0x00000001,\n        TYPE_VIEW_HOVER_ENTER: 0x00000080,\n      };\n\n      let eventName = null;\n      if (eventType === AccessibilityEvent.TYPE_VIEW_FOCUSED) {\n        eventName = 'focus';\n      } else if (eventType === AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {\n        eventName = 'windowStateChange';\n      } else if (eventType === AccessibilityEvent.TYPE_VIEW_CLICKED) {\n        eventName = 'click';\n      } else if (eventType === AccessibilityEvent.TYPE_VIEW_HOVER_ENTER) {\n        eventName = 'viewHoverEnter';\n      } else {\n        console.error(\n          `sendAccessibilityEvent() dropping event: Called with unsupported eventType: ${eventType}`,\n        );\n        return;\n      }\n\n      const FabricUIManager = nullthrows(getFabricUIManager());\n      const shadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n      if (!shadowNode) {\n        console.error(\n          `sendAccessibilityEvent() dropping event: Cannot find view with tag #${reactTag}`,\n        );\n        return;\n      }\n\n      FabricUIManager.sendAccessibilityEvent(shadowNode, eventName);\n    },\n  },\n  ios: {\n    /**\n     * TODO(T174674274): Implement lazy loading of legacy view managers in the new architecture.\n     *\n     * Leave this unimplemented until we implement lazy loading of legacy modules and view managers in the new architecture.\n     */\n    lazilyLoadView: (name: string): Object => {\n      raiseSoftError('lazilyLoadView');\n      return {};\n    },\n    focus: (reactTag: number): void => {\n      const FabricUIManager = nullthrows(getFabricUIManager());\n      const shadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n      if (!shadowNode) {\n        console.error(`focus() noop: Cannot find view with tag #${reactTag}`);\n        return;\n      }\n      FabricUIManager.dispatchCommand(shadowNode, 'focus', []);\n    },\n    blur: (reactTag: number): void => {\n      const FabricUIManager = nullthrows(getFabricUIManager());\n      const shadowNode =\n        FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n      if (!shadowNode) {\n        console.error(`blur() noop: Cannot find view with tag #${reactTag}`);\n        return;\n      }\n      FabricUIManager.dispatchCommand(shadowNode, 'blur', []);\n    },\n  },\n});\n\nconst UIManagerJS: UIManagerJSInterface & {[string]: any} = {\n  ...UIManagerJSOverridenAPIs,\n  ...UIManagerJSDeprecatedPlatformAPIs,\n  ...UIManagerJSPlatformAPIs,\n  ...UIManagerJSUnusedInNewArchAPIs,\n  getViewManagerConfig: (viewManagerName: string): mixed => {\n    if (getUIManagerConstants) {\n      const constants = getUIManagerConstantsCached();\n      if (\n        !constants[viewManagerName] &&\n        UIManagerJS.getConstantsForViewManager\n      ) {\n        constants[viewManagerName] =\n          UIManagerJS.getConstantsForViewManager(viewManagerName);\n      }\n      return constants[viewManagerName];\n    } else {\n      raiseSoftError(\n        `getViewManagerConfig('${viewManagerName}')`,\n        `If '${viewManagerName}' has a ViewManager and you want to retrieve its native ViewConfig, please turn on the native ViewConfig interop layer. If you want to see if this component is registered with React Native, please call hasViewManagerConfig('${viewManagerName}') instead.`,\n      );\n      return null;\n    }\n  },\n  hasViewManagerConfig: (viewManagerName: string): boolean => {\n    return unstable_hasComponent(viewManagerName);\n  },\n  getConstants: (): Object => {\n    if (getUIManagerConstants) {\n      return getUIManagerConstantsCached();\n    } else {\n      raiseSoftError('getConstants');\n      return null;\n    }\n  },\n  findSubviewIn: (\n    reactTag: number,\n    point: Array<number>,\n    callback: (\n      nativeViewTag: number,\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ): void => {\n    const FabricUIManager = nullthrows(getFabricUIManager());\n    const shadowNode = FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n\n    if (!shadowNode) {\n      console.error(\n        `findSubviewIn() noop: Cannot find view with reactTag ${reactTag}`,\n      );\n      return;\n    }\n\n    FabricUIManager.findNodeAtPoint(\n      shadowNode,\n      point[0],\n      point[1],\n      function (internalInstanceHandle) {\n        if (internalInstanceHandle == null) {\n          console.error('findSubviewIn(): Cannot find node at point');\n          return;\n        }\n\n        let instanceHandle: Object = internalInstanceHandle;\n        let node = instanceHandle.stateNode.node;\n\n        if (!node) {\n          console.error('findSubviewIn(): Cannot find node at point');\n          return;\n        }\n\n        let nativeViewTag: number =\n          instanceHandle.stateNode.canonical.nativeTag;\n\n        FabricUIManager.measure(\n          node,\n          function (x, y, width, height, pageX, pageY) {\n            callback(nativeViewTag, pageX, pageY, width, height);\n          },\n        );\n      },\n    );\n  },\n  viewIsDescendantOf: (\n    reactTag: number,\n    ancestorReactTag: number,\n    callback: (result: Array<boolean>) => void,\n  ): void => {\n    const FabricUIManager = nullthrows(getFabricUIManager());\n    const shadowNode = FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);\n    if (!shadowNode) {\n      console.error(\n        `viewIsDescendantOf() noop: Cannot find view with reactTag ${reactTag}`,\n      );\n      return;\n    }\n\n    const ancestorShadowNode =\n      FabricUIManager.findShadowNodeByTag_DEPRECATED(ancestorReactTag);\n    if (!ancestorShadowNode) {\n      console.error(\n        `viewIsDescendantOf() noop: Cannot find view with ancestorReactTag ${ancestorReactTag}`,\n      );\n      return;\n    }\n\n    // Keep this in sync with ReadOnlyNode.js\n    const DOCUMENT_POSITION_CONTAINED_BY = 16;\n\n    let result = FabricUIManager.compareDocumentPosition(\n      ancestorShadowNode,\n      shadowNode,\n    );\n\n    // eslint-disable-next-line no-bitwise\n    let isAncestor = (result & DOCUMENT_POSITION_CONTAINED_BY) !== 0;\n\n    callback([isAncestor]);\n  },\n  configureNextLayoutAnimation: (\n    config: Object,\n    callback: () => void,\n    errorCallback: (error: Object) => void,\n  ): void => {\n    const FabricUIManager = nullthrows(getFabricUIManager());\n    FabricUIManager.configureNextLayoutAnimation(\n      config,\n      callback,\n      errorCallback,\n    );\n  },\n};\n\nif (getUIManagerConstants) {\n  Object.keys(getUIManagerConstantsCached()).forEach(viewConfigName => {\n    UIManagerJS[viewConfigName] = getUIManagerConstantsCached()[viewConfigName];\n  });\n\n  if (UIManagerJS.getConstants().ViewManagerNames) {\n    UIManagerJS.getConstants().ViewManagerNames.forEach(viewManagerName => {\n      defineLazyObjectProperty(UIManagerJS, viewManagerName, {\n        get: () =>\n          nullthrows(UIManagerJS.getConstantsForViewManager)(viewManagerName),\n      });\n    });\n  }\n}\n\nexport default UIManagerJS;\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 * @flow strict\n * @format\n */\n\nlet componentNameToExists: Map<string, boolean> = new Map();\n\n/**\n * Unstable API. Do not use!\n *\n * This method returns if the component with name received as a parameter\n * is registered in the native platform.\n */\nexport function unstable_hasComponent(name: string): boolean {\n  let hasNativeComponent = componentNameToExists.get(name);\n  if (hasNativeComponent == null) {\n    if (global.__nativeComponentRegistry__hasComponent) {\n      hasNativeComponent = global.__nativeComponentRegistry__hasComponent(name);\n      componentNameToExists.set(name, hasNativeComponent);\n    } else {\n      throw `unstable_hasComponent('${name}'): Global function is not registered`;\n    }\n  }\n  return hasNativeComponent;\n}\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 * @flow\n * @format\n */\n\nimport type {RootTag} from '../Types/RootTagTypes';\nimport type {UIManagerJSInterface} from '../Types/UIManagerJSInterface';\n\nimport NativeUIManager from './NativeUIManager';\nimport nullthrows from 'nullthrows';\n\nconst NativeModules = require('../BatchedBridge/NativeModules').default;\nconst defineLazyObjectProperty =\n  require('../Utilities/defineLazyObjectProperty').default;\nconst Platform = require('../Utilities/Platform').default;\nconst UIManagerProperties = require('./UIManagerProperties').default;\n\nconst viewManagerConfigs: {[string]: any | null} = {};\n\nconst triedLoadingConfig = new Set<string>();\n\nlet NativeUIManagerConstants = {};\nlet isNativeUIManagerConstantsSet = false;\nfunction getConstants(): Object {\n  if (!isNativeUIManagerConstantsSet) {\n    NativeUIManagerConstants = NativeUIManager.getConstants();\n    isNativeUIManagerConstantsSet = true;\n  }\n  return NativeUIManagerConstants;\n}\n\nfunction getViewManagerConfig(viewManagerName: string): any {\n  if (\n    viewManagerConfigs[viewManagerName] === undefined &&\n    NativeUIManager.getConstantsForViewManager\n  ) {\n    try {\n      viewManagerConfigs[viewManagerName] =\n        NativeUIManager.getConstantsForViewManager(viewManagerName);\n    } catch (e) {\n      console.error(\n        \"NativeUIManager.getConstantsForViewManager('\" +\n          viewManagerName +\n          \"') threw an exception.\",\n        e,\n      );\n      viewManagerConfigs[viewManagerName] = null;\n    }\n  }\n\n  const config = viewManagerConfigs[viewManagerName];\n  if (config) {\n    return config;\n  }\n\n  // If we're in the Chrome Debugger, let's not even try calling the sync\n  // method.\n  if (!global.nativeCallSyncHook) {\n    return config;\n  }\n\n  if (\n    NativeUIManager.lazilyLoadView &&\n    !triedLoadingConfig.has(viewManagerName)\n  ) {\n    const result = nullthrows(NativeUIManager.lazilyLoadView)(viewManagerName);\n    triedLoadingConfig.add(viewManagerName);\n    if (result != null && result.viewConfig != null) {\n      getConstants()[viewManagerName] = result.viewConfig;\n      lazifyViewManagerConfig(viewManagerName);\n    }\n  }\n\n  return viewManagerConfigs[viewManagerName];\n}\n\n// $FlowFixMe[cannot-spread-interface]\nconst UIManagerJS: UIManagerJSInterface = {\n  ...NativeUIManager,\n  createView(\n    reactTag: number,\n    viewName: string,\n    rootTag: RootTag,\n    props: Object,\n  ): void {\n    if (Platform.OS === 'ios' && viewManagerConfigs[viewName] === undefined) {\n      // This is necessary to force the initialization of native viewManager\n      // classes in iOS when using static ViewConfigs\n      getViewManagerConfig(viewName);\n    }\n\n    NativeUIManager.createView(reactTag, viewName, rootTag, props);\n  },\n  getConstants(): Object {\n    return getConstants();\n  },\n  getViewManagerConfig(viewManagerName: string): any {\n    return getViewManagerConfig(viewManagerName);\n  },\n  hasViewManagerConfig(viewManagerName: string): boolean {\n    return getViewManagerConfig(viewManagerName) != null;\n  },\n};\n\n// TODO (T45220498): Remove this.\n// 3rd party libs may be calling `NativeModules.UIManager.getViewManagerConfig()`\n// instead of `UIManager.getViewManagerConfig()` off UIManager.js.\n// This is a workaround for now.\n// $FlowFixMe[prop-missing]\nNativeUIManager.getViewManagerConfig = UIManagerJS.getViewManagerConfig;\n\nfunction lazifyViewManagerConfig(viewName: string) {\n  const viewConfig = getConstants()[viewName];\n  viewManagerConfigs[viewName] = viewConfig;\n  if (viewConfig.Manager) {\n    defineLazyObjectProperty(viewConfig, 'Constants', {\n      get: () => {\n        const viewManager = NativeModules[viewConfig.Manager];\n        const constants: {[string]: mixed} = {};\n        viewManager &&\n          Object.keys(viewManager).forEach(key => {\n            const value = viewManager[key];\n            if (typeof value !== 'function') {\n              constants[key] = value;\n            }\n          });\n        return constants;\n      },\n    });\n    defineLazyObjectProperty(viewConfig, 'Commands', {\n      get: () => {\n        const viewManager = NativeModules[viewConfig.Manager];\n        const commands: {[string]: number} = {};\n        let index = 0;\n        viewManager &&\n          Object.keys(viewManager).forEach(key => {\n            const value = viewManager[key];\n            if (typeof value === 'function') {\n              commands[key] = index++;\n            }\n          });\n        return commands;\n      },\n    });\n  }\n}\n\n/**\n * Copies the ViewManager constants and commands into UIManager. This is\n * only needed for iOS, which puts the constants in the ViewManager\n * namespace instead of UIManager, unlike Android.\n */\nif (Platform.OS === 'ios') {\n  Object.keys(getConstants()).forEach(viewName => {\n    lazifyViewManagerConfig(viewName);\n  });\n} else if (getConstants().ViewManagerNames) {\n  NativeUIManager.getConstants().ViewManagerNames.forEach(viewManagerName => {\n    defineLazyObjectProperty(NativeUIManager, viewManagerName, {\n      get: () =>\n        nullthrows(NativeUIManager.getConstantsForViewManager)(viewManagerName),\n    });\n  });\n}\n\nif (!global.nativeCallSyncHook) {\n  Object.keys(getConstants()).forEach(viewManagerName => {\n    if (!UIManagerProperties.includes(viewManagerName)) {\n      if (!viewManagerConfigs[viewManagerName]) {\n        viewManagerConfigs[viewManagerName] = getConstants()[viewManagerName];\n      }\n      defineLazyObjectProperty(NativeUIManager, viewManagerName, {\n        get: () => {\n          console.warn(\n            `Accessing view manager configs directly off UIManager via UIManager['${viewManagerName}'] ` +\n              `is no longer supported. Use UIManager.getViewManagerConfig('${viewManagerName}') instead.`,\n          );\n\n          return UIManagerJS.getViewManagerConfig(viewManagerName);\n        },\n      });\n    }\n  });\n}\n\nexport default UIManagerJS;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeUIManager';\nimport NativeUIManager from '../../src/private/specs_DEPRECATED/modules/NativeUIManager';\n\nexport default NativeUIManager;\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 * @flow\n * @format\n */\n\nimport type {RootTag} from '../../../../Libraries/TurboModule/RCTExport';\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type NativeMeasureOnSuccessCallback = (\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n  pageX: number,\n  pageY: number,\n) => void;\n\nexport type NativeMeasureInWindowOnSuccessCallback = (\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n) => void;\n\nexport type NativeMeasureLayoutOnSuccessCallback = (\n  left: number,\n  top: number,\n  width: number,\n  height: number,\n) => void;\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => Object;\n  +createView: (\n    reactTag: number,\n    viewName: string,\n    rootTag: RootTag,\n    props: Object,\n  ) => void;\n  +updateView: (reactTag: number, viewName: string, props: Object) => void;\n  +findSubviewIn: (\n    reactTag: number,\n    point: Array<number>,\n    callback: (\n      nativeViewTag: number,\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ) => void;\n  /**\n   * Used to call a native view method from JavaScript\n   *\n   * reactTag - Id of react view.\n   * commandID - Id of the native method that should be called.\n   * commandArgs - Args of the native method that we can pass from JS to native.\n   */\n  +dispatchViewManagerCommand: (\n    reactTag: number,\n    commandID: number, // number || string\n    commandArgs?: Array<any>,\n  ) => void;\n  /**\n   * Determines the location on screen, width, and height of the given view and\n   * returns the values via an async callback. If successful, the callback will\n   * be called with the following arguments:\n   *\n   *  - x\n   *  - y\n   *  - width\n   *  - height\n   *  - pageX\n   *  - pageY\n   *\n   * Note that these measurements are not available until after the rendering\n   * has been completed in native. If you need the measurements as soon as\n   * possible, consider using the [`onLayout`\n   * prop](docs/view.html#onlayout) instead.\n   *\n   * @deprecated Use `ref.measure` instead.\n   */\n  +measure: (\n    reactTag: number,\n    callback: NativeMeasureOnSuccessCallback,\n  ) => void;\n  /**\n   * Determines the location of the given view in the window and returns the\n   * values via an async callback. If the React root view is embedded in\n   * another native view, this will give you the absolute coordinates. If\n   * successful, the callback will be called with the following\n   * arguments:\n   *\n   *  - x\n   *  - y\n   *  - width\n   *  - height\n   *\n   * Note that these measurements are not available until after the rendering\n   * has been completed in native.\n   *\n   * @deprecated Use `ref.measureInWindow` instead.\n   */\n  +measureInWindow: (\n    reactTag: number,\n    callback: NativeMeasureInWindowOnSuccessCallback,\n  ) => void;\n  +viewIsDescendantOf: (\n    reactTag: number,\n    ancestorReactTag: number,\n    callback: (result: Array<boolean>) => void,\n  ) => void;\n  /**\n   * Like [`measure()`](#measure), but measures the view relative an ancestor,\n   * specified as `relativeToNativeNode`. This means that the returned x, y\n   * are relative to the origin x, y of the ancestor view.\n   *\n   * As always, to obtain a native node handle for a component, you can use\n   * `React.findNodeHandle(component)`.\n   *\n   * @deprecated Use `ref.measureLayout` instead.\n   */\n  +measureLayout: (\n    reactTag: number,\n    ancestorReactTag: number,\n    errorCallback: (error: Object) => void,\n    callback: NativeMeasureLayoutOnSuccessCallback,\n  ) => void;\n  +measureLayoutRelativeToParent: (\n    reactTag: number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ) => void;\n  +setJSResponder: (reactTag: number, blockNativeResponder: boolean) => void;\n  +clearJSResponder: () => void;\n  +configureNextLayoutAnimation: (\n    config: Object,\n    callback: () => void, // check what is returned here\n    errorCallback: (error: Object) => void,\n  ) => void;\n  +setChildren: (containerTag: number, reactTags: Array<number>) => void;\n  +manageChildren: (\n    containerTag: number,\n    moveFromIndices: Array<number>,\n    moveToIndices: Array<number>,\n    addChildReactTags: Array<number>,\n    addAtIndices: Array<number>,\n    removeAtIndices: Array<number>,\n  ) => void;\n\n  // Android only\n  +getConstantsForViewManager?: (viewManagerName: string) => ?Object;\n  +getDefaultEventTypes?: () => Array<string>;\n  /**\n   * Automatically animates views to their new positions when the\n   * next layout happens.\n   *\n   * A common way to use this API is to call it before calling `setState`.\n   *\n   * Note that in order to get this to work on **Android** you need to set the following flags via `UIManager`:\n   *\n   * ```js\n   * UIManager.setLayoutAnimationEnabledExperimental && UIManager.setLayoutAnimationEnabledExperimental(true);\n   * ```\n   */\n  +setLayoutAnimationEnabledExperimental?: (enabled: boolean) => void;\n  +sendAccessibilityEvent?: (reactTag: number, eventType: number) => void;\n\n  // ios only\n  +lazilyLoadView?: (name: string) => Object; // revisit return\n  +focus?: (reactTag: number) => void;\n  +blur?: (reactTag: number) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('UIManager'): Spec);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * The list of non-ViewManager related UIManager properties.\n *\n * In an effort to improve startup performance by lazily loading view managers,\n * the interface to access view managers will change from\n * UIManager['viewManagerName'] to UIManager.getViewManagerConfig('viewManagerName').\n * By using a function call instead of a property access, the UIManager will\n * be able to initialize and load the required view manager from native\n * synchronously. All of React Native's core components have been updated to\n * use getViewManagerConfig(). For the next few releases, any usage of\n * UIManager['viewManagerName'] will result in a warning. Because React Native\n * does not support Proxy objects, a view manager access is implied if any of\n * UIManager's properties that are not one of the properties below is being\n * accessed. Once UIManager property accesses for view managers has been fully\n * deprecated, this file will also be removed.\n */\nconst UIManagerProperties: $ReadOnlyArray<string> = [\n  'clearJSResponder',\n  'configureNextLayoutAnimation',\n  'createView',\n  'dispatchViewManagerCommand',\n  'findSubviewIn',\n  'getConstantsForViewManager',\n  'getDefaultEventTypes',\n  'manageChildren',\n  'measure',\n  'measureInWindow',\n  'measureLayout',\n  'measureLayoutRelativeToParent',\n  'removeRootView',\n  'sendAccessibilityEvent',\n  'setChildren',\n  'setJSResponder',\n  'setLayoutAnimationEnabledExperimental',\n  'updateView',\n  'viewIsDescendantOf',\n  'LazyViewManagersEnabled',\n  'ViewManagerNames',\n  'StyleConstants',\n  'AccessibilityEventTypes',\n  'UIView',\n  'getViewManagerConfig',\n  'hasViewManagerConfig',\n  'blur',\n  'focus',\n  'genericBubblingEventTypes',\n  'genericDirectEventTypes',\n  'lazilyLoadView',\n];\n\nexport default UIManagerProperties;\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 * @noformat\n * @nolint\n * @flow strict-local\n * @generated SignedSource<<83073425aa3f71ced2c8c51f25a25938>>\n */\n\n'use strict';\n\nimport {type ViewConfig} from './ReactNativeTypes';\nimport invariant from 'invariant';\n\n// Event configs\nexport const customBubblingEventTypes: {\n  [eventName: string]: $ReadOnly<{\n    phasedRegistrationNames: $ReadOnly<{\n      captured: string,\n      bubbled: string,\n      skipBubbling?: ?boolean,\n    }>,\n  }>,\n} = {};\nexport const customDirectEventTypes: {\n  [eventName: string]: $ReadOnly<{\n    registrationName: string,\n  }>,\n} = {};\n\nconst viewConfigCallbacks = new Map<string, ?() => ViewConfig>();\nconst viewConfigs = new Map<string, ViewConfig>();\n\nfunction processEventTypes(viewConfig: ViewConfig): void {\n  const {bubblingEventTypes, directEventTypes} = viewConfig;\n\n  if (__DEV__) {\n    if (bubblingEventTypes != null && directEventTypes != null) {\n      for (const topLevelType in directEventTypes) {\n        invariant(\n          bubblingEventTypes[topLevelType] == null,\n          'Event cannot be both direct and bubbling: %s',\n          topLevelType,\n        );\n      }\n    }\n  }\n\n  if (bubblingEventTypes != null) {\n    for (const topLevelType in bubblingEventTypes) {\n      if (customBubblingEventTypes[topLevelType] == null) {\n        customBubblingEventTypes[topLevelType] =\n          bubblingEventTypes[topLevelType];\n      }\n    }\n  }\n\n  if (directEventTypes != null) {\n    for (const topLevelType in directEventTypes) {\n      if (customDirectEventTypes[topLevelType] == null) {\n        customDirectEventTypes[topLevelType] = directEventTypes[topLevelType];\n      }\n    }\n  }\n}\n\n/**\n * Registers a native view/component by name.\n * A callback is provided to load the view config from UIManager.\n * The callback is deferred until the view is actually rendered.\n */\nexport function register(name: string, callback: () => ViewConfig): string {\n  invariant(\n    !viewConfigCallbacks.has(name),\n    'Tried to register two views with the same name %s',\n    name,\n  );\n  invariant(\n    typeof callback === 'function',\n    'View config getter callback for component `%s` must be a function (received `%s`)',\n    name,\n    callback === null ? 'null' : typeof callback,\n  );\n  viewConfigCallbacks.set(name, callback);\n  return name;\n}\n\n/**\n * Retrieves a config for the specified view.\n * If this is the first time the view has been used,\n * This configuration will be lazy-loaded from UIManager.\n */\nexport function get(name: string): ViewConfig {\n  let viewConfig = viewConfigs.get(name);\n  if (viewConfig == null) {\n    const callback = viewConfigCallbacks.get(name);\n    if (typeof callback !== 'function') {\n      invariant(\n        false,\n        'View config getter callback for component `%s` must be a function (received `%s`).%s',\n        name,\n        callback === null ? 'null' : typeof callback,\n        // $FlowFixMe[recursive-definition]\n        typeof name[0] === 'string' && /[a-z]/.test(name[0])\n          ? ' Make sure to start component names with a capital letter.'\n          : '',\n      );\n    }\n    viewConfig = callback();\n    invariant(viewConfig, 'View config not found for component `%s`', name);\n\n    processEventTypes(viewConfig);\n    viewConfigs.set(name, viewConfig);\n\n    // Clear the callback after the config is set so that\n    // we don't mask any errors during registration.\n    viewConfigCallbacks.set(name, null);\n  }\n  return viewConfig;\n}\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 * @flow strict\n * @format\n */\n\nimport * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';\nimport {type ViewConfig} from '../Renderer/shims/ReactNativeTypes';\n\nexport type Difference =\n  | {\n      type: 'missing',\n      path: Array<string>,\n      nativeValue: mixed,\n    }\n  | {\n      type: 'unequal',\n      path: Array<string>,\n      nativeValue: mixed,\n      staticValue: mixed,\n    };\n\nexport type ValidationResult = ValidResult | InvalidResult;\ntype ValidResult = {\n  type: 'valid',\n};\ntype InvalidResult = {\n  type: 'invalid',\n  differences: Array<Difference>,\n};\n\n/**\n * During the migration from native view configs to static view configs, this is\n * used to validate that the two are equivalent.\n */\nexport function validate(\n  name: string,\n  nativeViewConfig: ViewConfig,\n  staticViewConfig: ViewConfig,\n): ValidationResult {\n  const differences: Array<Difference> = [];\n  accumulateDifferences(\n    differences,\n    [],\n    {\n      bubblingEventTypes: nativeViewConfig.bubblingEventTypes,\n      directEventTypes: nativeViewConfig.directEventTypes,\n      uiViewClassName: nativeViewConfig.uiViewClassName,\n      validAttributes: nativeViewConfig.validAttributes,\n    },\n    {\n      bubblingEventTypes: staticViewConfig.bubblingEventTypes,\n      directEventTypes: staticViewConfig.directEventTypes,\n      uiViewClassName: staticViewConfig.uiViewClassName,\n      validAttributes: staticViewConfig.validAttributes,\n    },\n  );\n\n  if (differences.length === 0) {\n    return {type: 'valid'};\n  }\n\n  return {\n    type: 'invalid',\n    differences,\n  };\n}\n\nexport function stringifyValidationResult(\n  name: string,\n  validationResult: InvalidResult,\n): string {\n  const {differences} = validationResult;\n  return [\n    `StaticViewConfigValidator: Invalid static view config for '${name}'.`,\n    '',\n    ...differences.map(difference => {\n      const {type, path} = difference;\n      switch (type) {\n        case 'missing':\n          return `- '${path.join('.')}' is missing.`;\n        case 'unequal':\n          return `- '${path.join('.')}' is the wrong value.`;\n      }\n    }),\n    '',\n  ].join('\\n');\n}\n\nfunction accumulateDifferences(\n  differences: Array<Difference>,\n  path: Array<string>,\n  nativeObject: {...},\n  staticObject: {...},\n): void {\n  for (const nativeKey in nativeObject) {\n    // $FlowFixMe[invalid-computed-prop]\n    const nativeValue = nativeObject[nativeKey];\n\n    if (!staticObject.hasOwnProperty(nativeKey)) {\n      differences.push({\n        path: [...path, nativeKey],\n        type: 'missing',\n        nativeValue,\n      });\n      continue;\n    }\n\n    // $FlowFixMe[invalid-computed-prop]\n    const staticValue = staticObject[nativeKey];\n\n    const nativeValueIfObject = ifObject(nativeValue);\n    if (nativeValueIfObject != null) {\n      const staticValueIfObject = ifObject(staticValue);\n      if (staticValueIfObject != null) {\n        path.push(nativeKey);\n        accumulateDifferences(\n          differences,\n          path,\n          nativeValueIfObject,\n          staticValueIfObject,\n        );\n        path.pop();\n        continue;\n      }\n    }\n\n    if (\n      nativeValue !== staticValue &&\n      !ReactNativeFeatureFlags.enableNativeCSSParsing()\n    ) {\n      differences.push({\n        path: [...path, nativeKey],\n        type: 'unequal',\n        nativeValue,\n        staticValue,\n      });\n    }\n  }\n}\n\nfunction ifObject(value: mixed): ?{...} {\n  return typeof value === 'object' && !Array.isArray(value) ? value : null;\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {\n  PartialViewConfig,\n  ViewConfig,\n} from '../Renderer/shims/ReactNativeTypes';\n\nimport PlatformBaseViewConfig from './PlatformBaseViewConfig';\n\n/**\n * Creates a complete `ViewConfig` from a `PartialViewConfig`.\n */\nexport function createViewConfig(\n  partialViewConfig: PartialViewConfig,\n): ViewConfig {\n  return {\n    uiViewClassName: partialViewConfig.uiViewClassName,\n    Commands: {},\n    bubblingEventTypes: composeIndexers(\n      PlatformBaseViewConfig.bubblingEventTypes,\n      partialViewConfig.bubblingEventTypes,\n    ),\n    directEventTypes: composeIndexers(\n      PlatformBaseViewConfig.directEventTypes,\n      partialViewConfig.directEventTypes,\n    ),\n    // $FlowFixMe[incompatible-return]\n    validAttributes: composeIndexers(\n      // $FlowFixMe[incompatible-call] `style` property confuses Flow.\n      PlatformBaseViewConfig.validAttributes,\n      // $FlowFixMe[incompatible-call] `style` property confuses Flow.\n      partialViewConfig.validAttributes,\n    ),\n  };\n}\n\nfunction composeIndexers<T>(\n  maybeA: ?{+[string]: T},\n  maybeB: ?{+[string]: T},\n): {+[string]: T} {\n  return maybeA == null || maybeB == null\n    ? maybeA ?? maybeB ?? {}\n    : {...maybeA, ...maybeB};\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {PartialViewConfig} from '../Renderer/shims/ReactNativeTypes';\n\nimport BaseViewConfig from './BaseViewConfig';\n\nexport type PartialViewConfigWithoutName = Omit<\n  PartialViewConfig,\n  'uiViewClassName',\n>;\n\nconst PlatformBaseViewConfig: PartialViewConfigWithoutName = BaseViewConfig;\n\n// In Wilde/FB4A, use RNHostComponentListRoute in Bridge mode to verify\n// whether the JS props defined here match the native props defined\n// in RCTViewManagers in iOS, and ViewManagers in Android.\nexport default PlatformBaseViewConfig;\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 * @flow strict\n * @format\n */\n\nimport Platform from '../Utilities/Platform';\n\nconst ignoredViewConfigProps = new WeakSet<{...}>();\n\n/**\n * Decorates ViewConfig values that are dynamically injected by the library,\n * react-native-gesture-handler. (T45765076)\n */\nexport function DynamicallyInjectedByGestureHandler<T: {...}>(object: T): T {\n  ignoredViewConfigProps.add(object);\n  return object;\n}\n\n/**\n * On iOS, ViewManager event declarations generate {eventName}: true entries\n * in ViewConfig valueAttributes. These entries aren't generated for Android.\n * This annotation allows Static ViewConfigs to insert these entries into\n * iOS but not Android.\n *\n * In the future, we want to remove this platform-inconsistency. We want\n * to set RN$ViewConfigEventValidAttributesDisabled = true server-side,\n * so that iOS does not generate validAttributes from event props in iOS RCTViewManager,\n * since Android does not generate validAttributes from events props in Android ViewManager.\n *\n * TODO(T110872225): Remove this logic, after achieving platform-consistency\n */\nexport function ConditionallyIgnoredEventHandlers<\n  const T: {+[name: string]: true},\n>(value: T): T | void {\n  if (Platform.OS === 'ios') {\n    return value;\n  }\n  return undefined;\n}\n\nexport function isIgnored(value: mixed): boolean {\n  if (typeof value === 'object' && value != null) {\n    return ignoredViewConfigProps.has(value);\n  }\n  return false;\n}\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 * @flow\n * @format\n */\n\nconst {dispatchCommand} = require('../ReactNative/RendererProxy');\n\ntype NativeCommandsOptions<T = string> = $ReadOnly<{\n  supportedCommands: $ReadOnlyArray<T>,\n}>;\n\nfunction codegenNativeCommands<T: interface {}>(\n  options: NativeCommandsOptions<$Keys<T>>,\n): T {\n  const commandObj: {[$Keys<T>]: (...$ReadOnlyArray<mixed>) => void} = {};\n\n  options.supportedCommands.forEach(command => {\n    // $FlowFixMe[missing-local-annot]\n    commandObj[command] = (ref, ...args) => {\n      // $FlowFixMe[incompatible-call]\n      dispatchCommand(ref, command, args);\n    };\n  });\n\n  return ((commandObj: any): T);\n}\n\nexport default codegenNativeCommands;\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 * @flow strict-local\n * @format\n */\n\n/**\n * This module exists to allow apps to select their renderer implementation\n * (e.g.: Fabric-only, Paper-only) without having to pull all the renderer\n * implementations into their app bundle, which affects app size.\n *\n * By default, the setup will be:\n *   -> RendererProxy\n *     -> RendererImplementation (which uses Fabric or Paper depending on a flag at runtime)\n *\n * But this will allow a setup like this without duplicating logic:\n *   -> RendererProxy (fork)\n *     -> RendererImplementation (which uses Fabric or Paper depending on a flag at runtime)\n *     or -> OtherImplementation (which uses Fabric only)\n */\n\nexport * from './RendererImplementation';\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 * @flow strict-local\n * @format\n */\n\nimport type {HostInstance} from '../../src/private/types/HostInstance';\nimport type {\n  InternalInstanceHandle,\n  Node,\n} from '../Renderer/shims/ReactNativeTypes';\n\nimport {\n  onCaughtError,\n  onRecoverableError,\n  onUncaughtError,\n} from '../../src/private/renderer/errorhandling/ErrorHandlers';\nimport {type RootTag} from './RootTag';\nimport * as React from 'react';\n\nexport function renderElement({\n  element,\n  rootTag,\n  useFabric,\n  useConcurrentRoot,\n}: {\n  element: React.MixedElement,\n  rootTag: number,\n  useFabric: boolean,\n  useConcurrentRoot: boolean,\n}): void {\n  if (useFabric) {\n    require('../Renderer/shims/ReactFabric').default.render(\n      element,\n      rootTag,\n      null,\n      useConcurrentRoot,\n      {\n        onCaughtError,\n        onUncaughtError,\n        onRecoverableError,\n      },\n    );\n  } else {\n    require('../Renderer/shims/ReactNative').default.render(\n      element,\n      rootTag,\n      undefined,\n      {\n        onCaughtError,\n        onUncaughtError,\n        onRecoverableError,\n      },\n    );\n  }\n}\n\nexport function findHostInstance_DEPRECATED<TElementType: React.ElementType>(\n  // $FlowFixMe[incompatible-call]\n  componentOrHandle: ?(React.ElementRef<TElementType> | number),\n): ?HostInstance {\n  return require('../Renderer/shims/ReactNative').default.findHostInstance_DEPRECATED(\n    // $FlowFixMe[incompatible-call]\n    componentOrHandle,\n  );\n}\n\nexport function findNodeHandle<TElementType: React.ElementType>(\n  // $FlowFixMe[incompatible-call]\n  componentOrHandle: ?(React.ElementRef<TElementType> | number),\n): ?number {\n  return require('../Renderer/shims/ReactNative').default.findNodeHandle(\n    // $FlowFixMe[incompatible-call]\n    componentOrHandle,\n  );\n}\n\nexport function dispatchCommand(\n  handle: HostInstance,\n  command: string,\n  args: Array<mixed>,\n): void {\n  if (global.RN$Bridgeless === true) {\n    // Note: this function has the same implementation in the legacy and new renderer.\n    // However, evaluating the old renderer comes with some side effects.\n    return require('../Renderer/shims/ReactFabric').default.dispatchCommand(\n      handle,\n      command,\n      args,\n    );\n  } else {\n    return require('../Renderer/shims/ReactNative').default.dispatchCommand(\n      handle,\n      command,\n      args,\n    );\n  }\n}\n\nexport function sendAccessibilityEvent(\n  handle: HostInstance,\n  eventType: string,\n): void {\n  return require('../Renderer/shims/ReactNative').default.sendAccessibilityEvent(\n    handle,\n    eventType,\n  );\n}\n\n/**\n * This method is used by AppRegistry to unmount a root when using the old\n * React Native renderer (Paper).\n */\nexport function unmountComponentAtNodeAndRemoveContainer(rootTag: RootTag) {\n  // $FlowExpectedError[incompatible-type] rootTag is an opaque type so we can't really cast it as is.\n  const rootTagAsNumber: number = rootTag;\n  require('../Renderer/shims/ReactNative').default.unmountComponentAtNodeAndRemoveContainer(\n    rootTagAsNumber,\n  );\n}\n\nexport function unstable_batchedUpdates<T>(\n  fn: T => void,\n  bookkeeping: T,\n): void {\n  // This doesn't actually do anything when batching updates for a Fabric root.\n  return require('../Renderer/shims/ReactNative').default.unstable_batchedUpdates(\n    fn,\n    bookkeeping,\n  );\n}\n\nexport function isProfilingRenderer(): boolean {\n  return Boolean(__DEV__);\n}\n\nexport function isChildPublicInstance(\n  parentInstance: HostInstance,\n  childInstance: HostInstance,\n): boolean {\n  return require('../Renderer/shims/ReactNative').default.isChildPublicInstance(\n    parentInstance,\n    childInstance,\n  );\n}\n\nexport function getNodeFromInternalInstanceHandle(\n  internalInstanceHandle: InternalInstanceHandle,\n): ?Node {\n  // This is only available in Fabric\n  return require('../Renderer/shims/ReactFabric').default.getNodeFromInternalInstanceHandle(\n    internalInstanceHandle,\n  );\n}\n\nexport function getPublicInstanceFromInternalInstanceHandle(\n  internalInstanceHandle: InternalInstanceHandle,\n): mixed /*PublicInstance | PublicTextInstance | null*/ {\n  // This is only available in Fabric\n  return require('../Renderer/shims/ReactFabric').default.getPublicInstanceFromInternalInstanceHandle(\n    internalInstanceHandle,\n  );\n}\n\nexport function getPublicInstanceFromRootTag(\n  rootTag: number,\n): mixed /*PublicRootInstance | null*/ {\n  // This is only available in Fabric\n  return require('../Renderer/shims/ReactFabric').default.getPublicInstanceFromRootTag(\n    rootTag,\n  );\n}\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 * @flow strict\n * @format\n */\n\nimport type {ExtendedError} from '../../../../Libraries/Core/ExtendedError';\n\nimport ExceptionsManager, {\n  SyntheticError,\n} from '../../../../Libraries/Core/ExceptionsManager';\nimport * as React from 'react';\n\ntype ErrorInfo = {\n  +componentStack?: ?string,\n  // $FlowFixMe[unclear-type] unknown props and state.\n  +errorBoundary?: ?React.Component<any, any>,\n};\n\nfunction getExtendedError(\n  errorValue: mixed,\n  errorInfo: ErrorInfo,\n): ExtendedError {\n  let error;\n\n  // Typically, `errorValue` should be an error. However, other values such as\n  // strings (or even null) are sometimes thrown.\n  if (errorValue instanceof Error) {\n    /* $FlowFixMe[class-object-subtyping] added when improving typing for\n     * this parameters */\n    // $FlowFixMe[incompatible-cast]\n    error = (errorValue: ExtendedError);\n  } else if (typeof errorValue === 'string') {\n    /* $FlowFixMe[class-object-subtyping] added when improving typing for\n     * this parameters */\n    // $FlowFixMe[incompatible-cast]\n    error = (new SyntheticError(errorValue): ExtendedError);\n  } else {\n    /* $FlowFixMe[class-object-subtyping] added when improving typing for\n     * this parameters */\n    // $FlowFixMe[incompatible-cast]\n    error = (new SyntheticError('Unspecified error'): ExtendedError);\n  }\n  try {\n    // $FlowFixMe[incompatible-use] this is in try/catch.\n    error.componentStack = errorInfo.componentStack;\n    error.isComponentError = true;\n  } catch {\n    // Ignored.\n  }\n\n  return error;\n}\n\nexport function onUncaughtError(errorValue: mixed, errorInfo: ErrorInfo): void {\n  const error = getExtendedError(errorValue, errorInfo);\n\n  // Uncaught errors are fatal.\n  ExceptionsManager.handleException(error, true);\n}\n\nexport function onCaughtError(errorValue: mixed, errorInfo: ErrorInfo): void {\n  const error = getExtendedError(errorValue, errorInfo);\n\n  // Caught errors are not fatal.\n  ExceptionsManager.handleException(error, false);\n}\n\nexport function onRecoverableError(\n  errorValue: mixed,\n  errorInfo: ErrorInfo,\n): void {\n  const error = getExtendedError(errorValue, errorInfo);\n\n  // Recoverable errors should only be warnings.\n  // This will make it a soft error in LogBox.\n  // TODO: improve the logging for recoverable errors in prod.\n  console.warn(error);\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {ExtendedError} from './ExtendedError';\nimport type {ExceptionData} from './NativeExceptionsManager';\n\nexport class SyntheticError extends Error {\n  name: string = '';\n}\n\ntype ExceptionDecorator = ExceptionData => ExceptionData;\n\nlet userExceptionDecorator: ?ExceptionDecorator;\nlet inUserExceptionDecorator = false;\n\n// This string is used to decorate an ExtendedError with extra data in select usecases.\n// Note that data passed using this method should be strictly contained,\n// as data that's not serializable/too large may cause issues with passing the error to the native code.\n// TODO(T204185517): We should use a Symbol for this, but jsi through jsc doesn't support it yet.\nconst decoratedExtraDataKey = 'RN$ErrorExtraDataKey';\n\n/**\n * Allows the app to add information to the exception report before it is sent\n * to native. This API is not final.\n */\n\nfunction unstable_setExceptionDecorator(\n  exceptionDecorator: ?ExceptionDecorator,\n) {\n  userExceptionDecorator = exceptionDecorator;\n}\n\nfunction preprocessException(data: ExceptionData): ExceptionData {\n  if (userExceptionDecorator && !inUserExceptionDecorator) {\n    inUserExceptionDecorator = true;\n    try {\n      return userExceptionDecorator(data);\n    } catch {\n      // Fall through\n    } finally {\n      inUserExceptionDecorator = false;\n    }\n  }\n  return data;\n}\n\n/**\n * Handles the developer-visible aspect of errors and exceptions\n */\nlet exceptionID = 0;\nfunction reportException(\n  e: ExtendedError,\n  isFatal: boolean,\n  reportToConsole: boolean, // only true when coming from handleException; the error has not yet been logged\n) {\n  const parseErrorStack = require('./Devtools/parseErrorStack').default;\n  const stack = parseErrorStack(e?.stack);\n  const currentExceptionID = ++exceptionID;\n  const originalMessage = e.message || '';\n  let message = originalMessage;\n  if (e.componentStack != null) {\n    message += `\\n\\nThis error is located at:${e.componentStack}`;\n  }\n  const namePrefix = e.name == null || e.name === '' ? '' : `${e.name}: `;\n\n  if (!message.startsWith(namePrefix)) {\n    message = namePrefix + message;\n  }\n\n  // $FlowFixMe[unclear-type]\n  const extraData: Object = {\n    // $FlowFixMe[incompatible-use] we can't define a type with a Symbol-keyed field in flow\n    ...e[decoratedExtraDataKey],\n    jsEngine: e.jsEngine,\n    rawStack: e.stack,\n  };\n  if (e.cause != null && typeof e.cause === 'object') {\n    extraData.stackSymbols = e.cause.stackSymbols;\n    extraData.stackReturnAddresses = e.cause.stackReturnAddresses;\n    extraData.stackElements = e.cause.stackElements;\n  }\n\n  const data = preprocessException({\n    message,\n    originalMessage: message === originalMessage ? null : originalMessage,\n    name: e.name == null || e.name === '' ? null : e.name,\n    componentStack:\n      typeof e.componentStack === 'string' ? e.componentStack : null,\n    stack,\n    id: currentExceptionID,\n    isFatal,\n    extraData,\n  });\n\n  if (reportToConsole) {\n    // we feed back into console.error, to make sure any methods that are\n    // monkey patched on top of console.error are called when coming from\n    // handleException\n    console.error(e);\n  }\n\n  if (__DEV__) {\n    // reportToConsole is only true when coming from handleException,\n    // and the error has not yet been logged. If it's false, then it was\n    // reported to LogBox in reactConsoleErrorHandler, and we don't need to.\n    if (reportToConsole) {\n      const LogBox = require('../LogBox/LogBox').default;\n      LogBox.addException({\n        ...data,\n        isComponentError: !!e.isComponentError,\n      });\n    }\n  } else if (isFatal || e.type !== 'warn') {\n    const NativeExceptionsManager =\n      require('./NativeExceptionsManager').default;\n    if (NativeExceptionsManager) {\n      if (isFatal) {\n        if (global.RN$hasHandledFatalException?.()) {\n          return;\n        }\n        global.RN$notifyOfFatalException?.();\n      }\n      NativeExceptionsManager.reportException(data);\n    }\n  }\n}\n\ndeclare var console: {\n  error: (...data: $ReadOnlyArray<mixed>) => void,\n  _errorOriginal: (...data: $ReadOnlyArray<mixed>) => void,\n  reportErrorsAsExceptions: boolean,\n  ...\n};\n\n// If we trigger console.error _from_ handleException,\n// we do want to make sure that console.error doesn't trigger error reporting again\nlet inExceptionHandler = false;\n\n/**\n * Logs exceptions to the (native) console and displays them\n */\nfunction handleException(e: mixed, isFatal: boolean) {\n  // TODO(T196834299): We should really use a c++ turbomodule for this\n  const reportToConsole = true;\n  if (\n    !global.RN$handleException ||\n    !global.RN$handleException(e, isFatal, reportToConsole)\n  ) {\n    let error: Error;\n    if (e instanceof Error) {\n      error = e;\n    } else {\n      // Workaround for reporting errors caused by `throw 'some string'`\n      // Unfortunately there is no way to figure out the stacktrace in this\n      // case, so if you ended up here trying to trace an error, look for\n      // `throw '<error message>'` somewhere in your codebase.\n      error = new SyntheticError(e);\n    }\n    try {\n      inExceptionHandler = true;\n      /* $FlowFixMe[class-object-subtyping] added when improving typing for this\n       * parameters */\n      // $FlowFixMe[incompatible-call]\n      reportException(error, isFatal, reportToConsole);\n    } finally {\n      inExceptionHandler = false;\n    }\n  }\n}\n\n/* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's\n * LTI update could not be added via codemod */\nfunction reactConsoleErrorHandler(...args) {\n  // bubble up to any original handlers\n  console._errorOriginal(...args);\n  if (!console.reportErrorsAsExceptions) {\n    return;\n  }\n  if (inExceptionHandler || global.RN$inExceptionHandler?.()) {\n    // The fundamental trick here is that are multiple entry point to logging errors:\n    // (see D19743075 for more background)\n    //\n    // 1. An uncaught exception being caught by the global handler\n    // 2. An error being logged throw console.error\n    //\n    // However, console.error is monkey patched multiple times: by this module, and by the\n    // DevTools setup that sends messages to Metro.\n    // The patching order cannot be relied upon.\n    //\n    // So, some scenarios that are handled by this flag:\n    //\n    // Logging an error:\n    // 1. console.error called from user code\n    // 2. (possibly) arrives _first_ at DevTool handler, send to Metro\n    // 3. Bubbles to here\n    // 4. goes into report Exception.\n    // 5. should not trigger console.error again, to avoid looping / logging twice\n    // 6. should still bubble up to original console\n    //    (which might either be console.log, or the DevTools handler in case it patched _earlier_ and (2) didn't happen)\n    //\n    // Throwing an uncaught exception:\n    // 1. exception thrown\n    // 2. picked up by handleException\n    // 3. should be sent to console.error (not console._errorOriginal, as DevTools might have patched _later_ and it needs to send it to Metro)\n    // 4. that _might_ bubble again to the `reactConsoleErrorHandle` defined here\n    //    -> should not handle exception _again_, to avoid looping / showing twice (this code branch)\n    // 5. should still bubble up to original console (which might either be console.log, or the DevTools handler in case that one patched _earlier_)\n    return;\n  }\n\n  let error;\n\n  const firstArg = args[0];\n  if (firstArg?.stack) {\n    // reportException will console.error this with high enough fidelity.\n    error = firstArg;\n  } else {\n    const stringifySafe = require('../Utilities/stringifySafe').default;\n    const message = args\n      .map(arg => (typeof arg === 'string' ? arg : stringifySafe(arg)))\n      .join(' ');\n\n    error = new SyntheticError(message);\n    error.name = 'console.error';\n  }\n\n  const isFatal = false;\n  const reportToConsole = false;\n  if (\n    !global.RN$handleException ||\n    !global.RN$handleException(error, isFatal, reportToConsole)\n  ) {\n    if (__DEV__) {\n      // If we're not reporting to the console in reportException,\n      // we need to report it as a console.error here.\n      if (!reportToConsole) {\n        require('../LogBox/LogBox').default.addConsoleLog('error', ...args);\n      }\n    }\n    if (error.message.startsWith('Warning: ')) {\n      // React warnings use console.error so that a stack trace is shown, but\n      // we don't (currently) want these to report to native.\n      // Note: We can probably remove this, but would be a breaking change\n      // if the warning module is still used somewhere.\n      // Logic duplicated in polyfills/console.js\n      return;\n    }\n    reportException(\n      /* $FlowFixMe[class-object-subtyping] added when improving typing for this\n       * parameters */\n      // $FlowFixMe[incompatible-call]\n      error,\n      isFatal,\n      reportToConsole,\n    );\n  }\n}\n\n/**\n * Shows a redbox with stacktrace for all console.error messages.  Disable by\n * setting `console.reportErrorsAsExceptions = false;` in your app.\n */\nfunction installConsoleErrorReporter() {\n  // Enable reportErrorsAsExceptions\n  if (console._errorOriginal) {\n    return; // already installed\n  }\n  // Flow doesn't like it when you set arbitrary values on a global object\n  console._errorOriginal = console.error.bind(console);\n  console.error = reactConsoleErrorHandler;\n  if (console.reportErrorsAsExceptions === undefined) {\n    // Individual apps can disable this\n    // Flow doesn't like it when you set arbitrary values on a global object\n    console.reportErrorsAsExceptions = true;\n  }\n}\n\nconst ExceptionsManager = {\n  decoratedExtraDataKey,\n  handleException,\n  installConsoleErrorReporter,\n  SyntheticError, // <- for backwards compatibility\n  unstable_setExceptionDecorator,\n};\n\nexport default ExceptionsManager;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {StackFrame} from '../NativeExceptionsManager';\nimport type {HermesParsedStack} from './parseHermesStack';\n\nconst parseHermesStack = require('./parseHermesStack').default;\n\nfunction convertHermesStack(stack: HermesParsedStack): Array<StackFrame> {\n  const frames: Array<StackFrame> = [];\n  for (const entry of stack.entries) {\n    if (entry.type !== 'FRAME') {\n      continue;\n    }\n    const {location, functionName} = entry;\n    if (location.type === 'NATIVE' || location.type === 'INTERNAL_BYTECODE') {\n      continue;\n    }\n    frames.push({\n      methodName: functionName,\n      file: location.sourceUrl,\n      lineNumber: location.line1Based,\n      column:\n        location.type === 'SOURCE'\n          ? location.column1Based - 1\n          : location.virtualOffset0Based,\n    });\n  }\n  return frames;\n}\n\nexport default function parseErrorStack(\n  errorStack?: string,\n): Array<StackFrame> {\n  if (errorStack == null) {\n    return [];\n  }\n\n  const stacktraceParser = require('stacktrace-parser');\n  const parsedStack = Array.isArray(errorStack)\n    ? errorStack\n    : global.HermesInternal\n      ? convertHermesStack(parseHermesStack(errorStack))\n      : stacktraceParser.parse(errorStack).map((frame): StackFrame => ({\n          ...frame,\n          column: frame.column != null ? frame.column - 1 : null,\n        }));\n\n  return parsedStack;\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\ntype HermesStackLocationNative = $ReadOnly<{\n  type: 'NATIVE',\n}>;\n\ntype HermesStackLocationSource = $ReadOnly<{\n  type: 'SOURCE',\n  sourceUrl: string,\n  line1Based: number,\n  column1Based: number,\n}>;\n\ntype HermesStackLocationInternalBytecode = $ReadOnly<{\n  type: 'INTERNAL_BYTECODE',\n  sourceUrl: string,\n  line1Based: number,\n  virtualOffset0Based: number,\n}>;\n\ntype HermesStackLocationBytecode = $ReadOnly<{\n  type: 'BYTECODE',\n  sourceUrl: string,\n  line1Based: number,\n  virtualOffset0Based: number,\n}>;\n\ntype HermesStackLocation =\n  | HermesStackLocationNative\n  | HermesStackLocationSource\n  | HermesStackLocationInternalBytecode\n  | HermesStackLocationBytecode;\n\ntype HermesStackEntryFrame = $ReadOnly<{\n  type: 'FRAME',\n  location: HermesStackLocation,\n  functionName: string,\n}>;\n\ntype HermesStackEntrySkipped = $ReadOnly<{\n  type: 'SKIPPED',\n  count: number,\n}>;\n\ntype HermesStackEntry = HermesStackEntryFrame | HermesStackEntrySkipped;\n\nexport type HermesParsedStack = $ReadOnly<{\n  message: string,\n  entries: $ReadOnlyArray<HermesStackEntry>,\n}>;\n\n// Capturing groups:\n// 1. function name\n// 2. is this a native stack frame?\n// 3. is this a bytecode address or a source location?\n// 4. source URL (filename)\n// 5. line number (1 based)\n// 6. column number (1 based) or virtual offset (0 based)\nconst RE_FRAME =\n  /^ {4}at (.+?)(?: \\((native)\\)?| \\((address at )?(.*?):(\\d+):(\\d+)\\))$/;\n\n// Capturing groups:\n// 1. count of skipped frames\nconst RE_SKIPPED = /^ {4}... skipping (\\d+) frames$/;\nconst RE_COMPONENT_NO_STACK = /^ {4}at .*$/;\n\nfunction isInternalBytecodeSourceUrl(sourceUrl: string): boolean {\n  // See https://github.com/facebook/hermes/blob/3332fa020cae0bab751f648db7c94e1d687eeec7/lib/VM/Runtime.cpp#L1100\n  return sourceUrl === 'InternalBytecode.js';\n}\n\nfunction parseLine(line: string): ?HermesStackEntry {\n  const asFrame = line.match(RE_FRAME);\n  if (asFrame) {\n    return {\n      type: 'FRAME',\n      functionName: asFrame[1],\n      location:\n        asFrame[2] === 'native'\n          ? {type: 'NATIVE'}\n          : asFrame[3] === 'address at '\n            ? isInternalBytecodeSourceUrl(asFrame[4])\n              ? {\n                  type: 'INTERNAL_BYTECODE',\n                  sourceUrl: asFrame[4],\n                  line1Based: Number.parseInt(asFrame[5], 10),\n                  virtualOffset0Based: Number.parseInt(asFrame[6], 10),\n                }\n              : {\n                  type: 'BYTECODE',\n                  sourceUrl: asFrame[4],\n                  line1Based: Number.parseInt(asFrame[5], 10),\n                  virtualOffset0Based: Number.parseInt(asFrame[6], 10),\n                }\n            : {\n                type: 'SOURCE',\n                sourceUrl: asFrame[4],\n                line1Based: Number.parseInt(asFrame[5], 10),\n                column1Based: Number.parseInt(asFrame[6], 10),\n              },\n    };\n  }\n  const asSkipped = line.match(RE_SKIPPED);\n  if (asSkipped) {\n    return {\n      type: 'SKIPPED',\n      count: Number.parseInt(asSkipped[1], 10),\n    };\n  }\n}\n\nexport default function parseHermesStack(stack: string): HermesParsedStack {\n  const lines = stack.split(/\\n/);\n  let entries: Array<HermesStackEntryFrame | HermesStackEntrySkipped> = [];\n  let lastMessageLine = -1;\n  for (let i = 0; i < lines.length; ++i) {\n    const line = lines[i];\n    if (!line) {\n      continue;\n    }\n    const entry = parseLine(line);\n    if (entry) {\n      entries.push(entry);\n      continue;\n    }\n    if (RE_COMPONENT_NO_STACK.test(line)) {\n      // Skip component stacks without source location.\n      // TODO: This will not be displayed, not sure how to handle it.\n      continue;\n    }\n    // No match - we're still in the message\n    lastMessageLine = i;\n    entries = [];\n  }\n  const message = lines.slice(0, lastMessageLine + 1).join('\\n');\n  return {message, entries};\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar UNKNOWN_FUNCTION = '<unknown>';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction parse(stackString) {\n  var lines = stackString.split('\\n');\n  return lines.reduce(function (stack, line) {\n    var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n    if (parseResult) {\n      stack.push(parseResult);\n    }\n\n    return stack;\n  }, []);\n}\nvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n  var parts = chromeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n  var submatch = chromeEvalRe.exec(parts[2]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line/column number\n    parts[2] = submatch[1]; // url\n\n    parts[3] = submatch[2]; // line\n\n    parts[4] = submatch[3]; // column\n  }\n\n  return {\n    file: !isNative ? parts[2] : null,\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: isNative ? [parts[2]] : [],\n    lineNumber: parts[3] ? +parts[3] : null,\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n  var parts = winjsRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n  var parts = geckoRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n  var submatch = geckoEvalRe.exec(parts[3]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line number\n    parts[3] = submatch[1];\n    parts[4] = submatch[2];\n    parts[5] = null; // no column when eval\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: parts[2] ? parts[2].split(',') : [],\n    lineNumber: parts[4] ? +parts[4] : null,\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n  var parts = javaScriptCoreRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[4],\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n  var parts = nodeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nexports.parse = parse;\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeExceptionsManager';\nimport NativeExceptionsManager from '../../src/private/specs_DEPRECATED/modules/NativeExceptionsManager';\n\nexport default NativeExceptionsManager;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nconst Platform = require('../../../../Libraries/Utilities/Platform').default;\n\nexport type StackFrame = {\n  column: ?number,\n  file: ?string,\n  lineNumber: ?number,\n  methodName: string,\n  collapse?: boolean,\n};\nexport type ExceptionData = {\n  message: string,\n  originalMessage: ?string,\n  name: ?string,\n  componentStack: ?string,\n  stack: Array<StackFrame>,\n  id: number,\n  isFatal: boolean,\n  // flowlint-next-line unclear-type:off\n  extraData?: Object,\n  ...\n};\nexport interface Spec extends TurboModule {\n  // Deprecated: Use `reportException`\n  +reportFatalException: (\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) => void;\n  // Deprecated: Use `reportException`\n  +reportSoftException: (\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) => void;\n  +reportException?: (data: ExceptionData) => void;\n  // TODO(T53311281): This is a noop on iOS now. Implement it.\n  +dismissRedbox?: () => void;\n}\n\nconst NativeModule =\n  TurboModuleRegistry.getEnforcing<Spec>('ExceptionsManager');\n\nconst ExceptionsManager = {\n  reportFatalException(\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) {\n    NativeModule.reportFatalException(message, stack, exceptionId);\n  },\n  reportSoftException(\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) {\n    NativeModule.reportSoftException(message, stack, exceptionId);\n  },\n  dismissRedbox(): void {\n    if (Platform.OS !== 'ios' && NativeModule.dismissRedbox) {\n      // TODO(T53311281): This is a noop on iOS now. Implement it.\n      NativeModule.dismissRedbox();\n    }\n  },\n  reportException(data: ExceptionData): void {\n    if (NativeModule.reportException) {\n      NativeModule.reportException(data);\n      return;\n    }\n    if (data.isFatal) {\n      ExceptionsManager.reportFatalException(data.message, data.stack, data.id);\n    } else {\n      ExceptionsManager.reportSoftException(data.message, data.stack, data.id);\n    }\n  },\n};\n\nexport default ExceptionsManager;\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 * @noformat\n * @nolint\n * @flow\n * @generated SignedSource<<cf323fc5ca893bab5669c7d321660412>>\n */\n\n'use strict';\n\nimport {BatchedBridge} from 'react-native/Libraries/ReactPrivate/ReactNativePrivateInterface';\n\nimport type {ReactFabricType} from './ReactNativeTypes';\n\nlet ReactFabric: ReactFabricType;\n\nif (__DEV__) {\n  ReactFabric = require('../implementations/ReactFabric-dev');\n} else {\n  ReactFabric = require('../implementations/ReactFabric-prod');\n}\n\nglobal.RN$stopSurface = ReactFabric.stopSurface;\n\nif (global.RN$Bridgeless !== true) {\n  BatchedBridge.registerCallableModule('ReactFabric', ReactFabric);\n}\n\nexport default ReactFabric;\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 * @flow strict-local\n * @format\n */\n\nimport typeof CustomEvent from '../../src/private/webapis/dom/events/CustomEvent';\nimport typeof BatchedBridge from '../BatchedBridge/BatchedBridge';\nimport typeof legacySendAccessibilityEvent from '../Components/AccessibilityInfo/legacySendAccessibilityEvent';\nimport typeof TextInputState from '../Components/TextInput/TextInputState';\nimport typeof ExceptionsManager from '../Core/ExceptionsManager';\nimport typeof RawEventEmitter from '../Core/RawEventEmitter';\nimport typeof ReactFiberErrorDialog from '../Core/ReactFiberErrorDialog';\nimport typeof RCTEventEmitter from '../EventEmitter/RCTEventEmitter';\nimport typeof {\n  createPublicInstance,\n  createPublicRootInstance,\n  createPublicTextInstance,\n  getInternalInstanceHandleFromPublicInstance,\n  getNativeTagFromPublicInstance,\n  getNodeFromPublicInstance,\n} from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance';\nimport typeof {\n  create as createAttributePayload,\n  diff as diffAttributePayloads,\n} from '../ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload';\nimport typeof UIManager from '../ReactNative/UIManager';\nimport typeof * as ReactNativeViewConfigRegistry from '../Renderer/shims/ReactNativeViewConfigRegistry';\nimport typeof flattenStyle from '../StyleSheet/flattenStyle';\nimport type {DangerouslyImpreciseStyleProp} from '../StyleSheet/StyleSheet';\nimport typeof deepFreezeAndThrowOnMutationInDev from '../Utilities/deepFreezeAndThrowOnMutationInDev';\nimport typeof deepDiffer from '../Utilities/differ/deepDiffer';\nimport typeof Platform from '../Utilities/Platform';\n\n// Expose these types to the React renderer\nexport type {\n  HostInstance as PublicInstance,\n\n  // These types are only necessary for Paper\n  NativeMethods as LegacyPublicInstance,\n  MeasureOnSuccessCallback,\n  MeasureInWindowOnSuccessCallback,\n  MeasureLayoutOnSuccessCallback,\n} from '../../src/private/types/HostInstance';\n\nexport type {PublicRootInstance} from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance';\nexport type PublicTextInstance = ReturnType<createPublicTextInstance>;\n\n// flowlint unsafe-getters-setters:off\n// eslint-disable-next-line @react-native/monorepo/no-commonjs-exports\nmodule.exports = {\n  get BatchedBridge(): BatchedBridge {\n    return require('../BatchedBridge/BatchedBridge').default;\n  },\n  get ExceptionsManager(): ExceptionsManager {\n    return require('../Core/ExceptionsManager').default;\n  },\n  get Platform(): Platform {\n    return require('../Utilities/Platform').default;\n  },\n  get RCTEventEmitter(): RCTEventEmitter {\n    return require('../EventEmitter/RCTEventEmitter').default;\n  },\n  get ReactNativeViewConfigRegistry(): ReactNativeViewConfigRegistry {\n    return require('../Renderer/shims/ReactNativeViewConfigRegistry');\n  },\n  get TextInputState(): TextInputState {\n    return require('../Components/TextInput/TextInputState').default;\n  },\n  get UIManager(): UIManager {\n    return require('../ReactNative/UIManager').default;\n  },\n  // TODO: Remove when React has migrated to `createAttributePayload` and `diffAttributePayloads`\n  get deepDiffer(): deepDiffer {\n    return require('../Utilities/differ/deepDiffer').default;\n  },\n  get deepFreezeAndThrowOnMutationInDev(): deepFreezeAndThrowOnMutationInDev<\n    {...} | Array<mixed>,\n  > {\n    return require('../Utilities/deepFreezeAndThrowOnMutationInDev').default;\n  },\n  // TODO: Remove when React has migrated to `createAttributePayload` and `diffAttributePayloads`\n  get flattenStyle(): flattenStyle<DangerouslyImpreciseStyleProp> {\n    // $FlowFixMe[underconstrained-implicit-instantiation]\n    // $FlowFixMe[incompatible-return]\n    return require('../StyleSheet/flattenStyle').default;\n  },\n  get ReactFiberErrorDialog(): ReactFiberErrorDialog {\n    return require('../Core/ReactFiberErrorDialog').default;\n  },\n  get legacySendAccessibilityEvent(): legacySendAccessibilityEvent {\n    return require('../Components/AccessibilityInfo/legacySendAccessibilityEvent')\n      .default;\n  },\n  get RawEventEmitter(): RawEventEmitter {\n    return require('../Core/RawEventEmitter').default;\n  },\n  get CustomEvent(): CustomEvent {\n    return require('../../src/private/webapis/dom/events/CustomEvent').default;\n  },\n  get createAttributePayload(): createAttributePayload {\n    return require('../ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload')\n      .create;\n  },\n  get diffAttributePayloads(): diffAttributePayloads {\n    return require('../ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload')\n      .diff;\n  },\n  get createPublicRootInstance(): createPublicRootInstance {\n    return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance')\n      .createPublicRootInstance;\n  },\n  get createPublicInstance(): createPublicInstance {\n    return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance')\n      .createPublicInstance;\n  },\n  get createPublicTextInstance(): createPublicTextInstance {\n    return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance')\n      .createPublicTextInstance;\n  },\n  get getNativeTagFromPublicInstance(): getNativeTagFromPublicInstance {\n    return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance')\n      .getNativeTagFromPublicInstance;\n  },\n  get getNodeFromPublicInstance(): getNodeFromPublicInstance {\n    return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance')\n      .getNodeFromPublicInstance;\n  },\n  get getInternalInstanceHandleFromPublicInstance(): getInternalInstanceHandleFromPublicInstance {\n    return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance')\n      .getInternalInstanceHandleFromPublicInstance;\n  },\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport registerCallableModule from '../Core/registerCallableModule';\n\nconst RCTEventEmitter = {\n  register(eventEmitter: any) {\n    registerCallableModule('RCTEventEmitter', eventEmitter);\n  },\n};\n\nexport default RCTEventEmitter;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\ntype Module = {...};\ntype RegisterCallableModule = (\n  name: string,\n  moduleOrFactory: Module | (void => Module),\n) => void;\n\nconst registerCallableModule: RegisterCallableModule = (function () {\n  if (global.RN$Bridgeless === true) {\n    return (name, moduleOrFactory) => {\n      if (typeof moduleOrFactory === 'function') {\n        global.RN$registerCallableModule(name, moduleOrFactory);\n        return;\n      }\n\n      global.RN$registerCallableModule(name, () => moduleOrFactory);\n    };\n  }\n\n  const BatchedBridge = require('../BatchedBridge/BatchedBridge').default;\n  return (name, moduleOrFactory) => {\n    if (typeof moduleOrFactory === 'function') {\n      BatchedBridge.registerLazyCallableModule(name, moduleOrFactory);\n      return;\n    }\n\n    BatchedBridge.registerCallableModule(name, moduleOrFactory);\n  };\n})();\n\nexport default registerCallableModule;\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 * @flow strict-local\n * @format\n */\n\n// This class is responsible for coordinating the \"focused\" state for\n// TextInputs. All calls relating to the keyboard should be funneled\n// through here.\n\nimport type {HostInstance} from '../../../src/private/types/HostInstance';\n\nimport {Commands as AndroidTextInputCommands} from '../../Components/TextInput/AndroidTextInputNativeComponent';\nimport {Commands as iOSTextInputCommands} from '../../Components/TextInput/RCTSingelineTextInputNativeComponent';\n\nconst {findNodeHandle} = require('../../ReactNative/RendererProxy');\nconst Platform = require('../../Utilities/Platform').default;\n\nlet currentlyFocusedInputRef: ?HostInstance = null;\nconst inputs = new Set<HostInstance>();\n\nfunction currentlyFocusedInput(): ?HostInstance {\n  return currentlyFocusedInputRef;\n}\n\n/**\n * Returns the ID of the currently focused text field, if one exists\n * If no text field is focused it returns null\n */\nfunction currentlyFocusedField(): ?number {\n  if (__DEV__) {\n    console.error(\n      'currentlyFocusedField is deprecated and will be removed in a future release. Use currentlyFocusedInput',\n    );\n  }\n\n  return findNodeHandle<$FlowFixMe>(currentlyFocusedInputRef);\n}\n\nfunction focusInput(textField: ?HostInstance): void {\n  if (currentlyFocusedInputRef !== textField && textField != null) {\n    currentlyFocusedInputRef = textField;\n  }\n}\n\nfunction blurInput(textField: ?HostInstance): void {\n  if (currentlyFocusedInputRef === textField && textField != null) {\n    currentlyFocusedInputRef = null;\n  }\n}\n\nfunction focusField(textFieldID: ?number): void {\n  if (__DEV__) {\n    console.error('focusField no longer works. Use focusInput');\n  }\n\n  return;\n}\n\nfunction blurField(textFieldID: ?number) {\n  if (__DEV__) {\n    console.error('blurField no longer works. Use blurInput');\n  }\n\n  return;\n}\n\n/**\n * @param {number} TextInputID id of the text field to focus\n * Focuses the specified text field\n * noop if the text field was already focused or if the field is not editable\n */\nfunction focusTextInput(textField: ?HostInstance) {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'focusTextInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return;\n  }\n\n  if (textField != null) {\n    const fieldCanBeFocused =\n      currentlyFocusedInputRef !== textField &&\n      // $FlowFixMe - `currentProps` is missing in `NativeMethods`\n      textField.currentProps?.editable !== false;\n\n    if (!fieldCanBeFocused) {\n      return;\n    }\n    focusInput(textField);\n    if (Platform.OS === 'ios') {\n      // This isn't necessarily a single line text input\n      // But commands don't actually care as long as the thing being passed in\n      // actually has a command with that name. So this should work with single\n      // and multiline text inputs. Ideally we'll merge them into one component\n      // in the future.\n      iOSTextInputCommands.focus(textField);\n    } else if (Platform.OS === 'android') {\n      AndroidTextInputCommands.focus(textField);\n    }\n  }\n}\n\n/**\n * @param {number} textFieldID id of the text field to unfocus\n * Unfocuses the specified text field\n * noop if it wasn't focused\n */\nfunction blurTextInput(textField: ?HostInstance) {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'blurTextInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return;\n  }\n\n  if (currentlyFocusedInputRef === textField && textField != null) {\n    blurInput(textField);\n    if (Platform.OS === 'ios') {\n      // This isn't necessarily a single line text input\n      // But commands don't actually care as long as the thing being passed in\n      // actually has a command with that name. So this should work with single\n      // and multiline text inputs. Ideally we'll merge them into one component\n      // in the future.\n      iOSTextInputCommands.blur(textField);\n    } else if (Platform.OS === 'android') {\n      AndroidTextInputCommands.blur(textField);\n    }\n  }\n}\n\nfunction registerInput(textField: HostInstance) {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'registerInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return;\n  }\n\n  inputs.add(textField);\n}\n\nfunction unregisterInput(textField: HostInstance) {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'unregisterInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return;\n  }\n  inputs.delete(textField);\n}\n\nfunction isTextInput(textField: HostInstance): boolean {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'isTextInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return false;\n  }\n\n  return inputs.has(textField);\n}\n\nconst TextInputState = {\n  currentlyFocusedInput,\n  focusInput,\n  blurInput,\n\n  currentlyFocusedField,\n  focusField,\n  blurField,\n  focusTextInput,\n  blurTextInput,\n  registerInput,\n  unregisterInput,\n  isTextInput,\n};\n\nexport default TextInputState;\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ColorValue, TextStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {\n  BubblingEventHandler,\n  DirectEventHandler,\n  Double,\n  Float,\n  Int32,\n  WithDefault,\n} from '../../Types/CodegenTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {TextInputNativeCommands} from './TextInputNativeCommands';\n\nimport * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\n\nexport type KeyboardType =\n  // Cross Platform\n  | 'default'\n  | 'email-address'\n  | 'numeric'\n  | 'phone-pad'\n  | 'number-pad'\n  | 'decimal-pad'\n  | 'url'\n  // iOS-only\n  | 'ascii-capable'\n  | 'numbers-and-punctuation'\n  | 'name-phone-pad'\n  | 'twitter'\n  | 'web-search'\n  // Android-only\n  | 'visible-password';\n\nexport type ReturnKeyType =\n  // Cross Platform\n  | 'done'\n  | 'go'\n  | 'next'\n  | 'search'\n  | 'send'\n  // Android-only\n  | 'none'\n  | 'previous'\n  // iOS-only\n  | 'default'\n  | 'emergency-call'\n  | 'google'\n  | 'join'\n  | 'route'\n  | 'yahoo';\n\nexport type SubmitBehavior = 'submit' | 'blurAndSubmit' | 'newline';\n\nexport type AndroidTextInputNativeProps = $ReadOnly<{\n  // This allows us to inherit everything from ViewProps except for style (see below)\n  // This must be commented for Fabric codegen to work.\n  ...Omit<ViewProps, 'style'>,\n\n  /**\n   * Android props after this\n   */\n  /**\n   * Specifies autocomplete hints for the system, so it can provide autofill. On Android, the system will always attempt to offer autofill by using heuristics to identify the type of content.\n   * To disable autocomplete, set `autoComplete` to `off`.\n   *\n   * *Android Only*\n   *\n   * Possible values for `autoComplete` are:\n   *\n   * - `birthdate-day`\n   * - `birthdate-full`\n   * - `birthdate-month`\n   * - `birthdate-year`\n   * - `cc-csc`\n   * - `cc-exp`\n   * - `cc-exp-day`\n   * - `cc-exp-month`\n   * - `cc-exp-year`\n   * - `cc-number`\n   * - `email`\n   * - `gender`\n   * - `name`\n   * - `name-family`\n   * - `name-given`\n   * - `name-middle`\n   * - `name-middle-initial`\n   * - `name-prefix`\n   * - `name-suffix`\n   * - `password`\n   * - `password-new`\n   * - `postal-address`\n   * - `postal-address-country`\n   * - `postal-address-extended`\n   * - `postal-address-extended-postal-code`\n   * - `postal-address-locality`\n   * - `postal-address-region`\n   * - `postal-code`\n   * - `street-address`\n   * - `sms-otp`\n   * - `tel`\n   * - `tel-country-code`\n   * - `tel-national`\n   * - `tel-device`\n   * - `username`\n   * - `username-new`\n   * - `off`\n   *\n   * @platform android\n   */\n  autoComplete?: WithDefault<\n    | 'birthdate-day'\n    | 'birthdate-full'\n    | 'birthdate-month'\n    | 'birthdate-year'\n    | 'cc-csc'\n    | 'cc-exp'\n    | 'cc-exp-day'\n    | 'cc-exp-month'\n    | 'cc-exp-year'\n    | 'cc-number'\n    | 'email'\n    | 'gender'\n    | 'name'\n    | 'name-family'\n    | 'name-given'\n    | 'name-middle'\n    | 'name-middle-initial'\n    | 'name-prefix'\n    | 'name-suffix'\n    | 'password'\n    | 'password-new'\n    | 'postal-address'\n    | 'postal-address-country'\n    | 'postal-address-extended'\n    | 'postal-address-extended-postal-code'\n    | 'postal-address-locality'\n    | 'postal-address-region'\n    | 'postal-code'\n    | 'street-address'\n    | 'sms-otp'\n    | 'tel'\n    | 'tel-country-code'\n    | 'tel-national'\n    | 'tel-device'\n    | 'username'\n    | 'username-new'\n    | 'off',\n    'off',\n  >,\n\n  /**\n   * Sets the return key to the label. Use it instead of `returnKeyType`.\n   * @platform android\n   */\n  returnKeyLabel?: ?string,\n\n  /**\n   * Sets the number of lines for a `TextInput`. Use it with multiline set to\n   * `true` to be able to fill the lines.\n   * @platform android\n   */\n  numberOfLines?: ?Int32,\n\n  /**\n   * When `false`, if there is a small amount of space available around a text input\n   * (e.g. landscape orientation on a phone), the OS may choose to have the user edit\n   * the text inside of a full screen text input mode. When `true`, this feature is\n   * disabled and users will always edit the text directly inside of the text input.\n   * Defaults to `false`.\n   * @platform android\n   */\n  disableFullscreenUI?: ?boolean,\n\n  /**\n   * Set text break strategy on Android API Level 23+, possible values are `simple`, `highQuality`, `balanced`\n   * The default value is `simple`.\n   * @platform android\n   */\n  textBreakStrategy?: WithDefault<\n    'simple' | 'highQuality' | 'balanced',\n    'simple',\n  >,\n\n  /**\n   * The color of the `TextInput` underline.\n   * @platform android\n   */\n  underlineColorAndroid?: ?ColorValue,\n\n  /**\n   * If defined, the provided image resource will be rendered on the left.\n   * The image resource must be inside `/android/app/src/main/res/drawable` and referenced\n   * like\n   * ```\n   * <TextInput\n   *  inlineImageLeft='search_icon'\n   * />\n   * ```\n   * @platform android\n   */\n  inlineImageLeft?: ?string,\n\n  /**\n   * Padding between the inline image, if any, and the text input itself.\n   * @platform android\n   */\n  inlineImagePadding?: ?Int32,\n\n  importantForAutofill?: string /*?(\n    | 'auto'\n    | 'no'\n    | 'noExcludeDescendants'\n    | 'yes'\n    | 'yesExcludeDescendants'\n  ),*/,\n\n  /**\n   * When `false`, it will prevent the soft keyboard from showing when the field is focused.\n   * Defaults to `true`.\n   */\n  showSoftInputOnFocus?: ?boolean,\n\n  /**\n   * TextInput props after this\n   */\n  /**\n   * Can tell `TextInput` to automatically capitalize certain characters.\n   *\n   * - `characters`: all characters.\n   * - `words`: first letter of each word.\n   * - `sentences`: first letter of each sentence (*default*).\n   * - `none`: don't auto capitalize anything.\n   */\n  autoCapitalize?: WithDefault<\n    'none' | 'sentences' | 'words' | 'characters',\n    'none',\n  >,\n\n  /**\n   * If `false`, disables auto-correct. The default value is `true`.\n   */\n  autoCorrect?: ?boolean,\n\n  /**\n   * If `true`, focuses the input on `componentDidMount`.\n   * The default value is `false`.\n   */\n  autoFocus?: ?boolean,\n\n  /**\n   * Specifies whether fonts should scale to respect Text Size accessibility settings. The\n   * default is `true`.\n   */\n  allowFontScaling?: ?boolean,\n\n  /**\n   * Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.\n   * Possible values:\n   * `null/undefined` (default): inherit from the parent node or the global default (0)\n   * `0`: no max, ignore parent/global default\n   * `>= 1`: sets the maxFontSizeMultiplier of this node to this value\n   */\n  maxFontSizeMultiplier?: ?Float,\n\n  /**\n   * If `false`, text is not editable. The default value is `true`.\n   */\n  editable?: ?boolean,\n\n  /**\n   * Determines which keyboard to open, e.g.`numeric`.\n   *\n   * The following values work across platforms:\n   *\n   * - `default`\n   * - `numeric`\n   * - `number-pad`\n   * - `decimal-pad`\n   * - `email-address`\n   * - `phone-pad`\n   * - `url`\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `visible-password`\n   */\n  keyboardType?: WithDefault<KeyboardType, 'default'>,\n\n  /**\n   * Determines how the return key should look. On Android you can also use\n   * `returnKeyLabel`.\n   *\n   * *Cross platform*\n   *\n   * The following values work across platforms:\n   *\n   * - `done`\n   * - `go`\n   * - `next`\n   * - `search`\n   * - `send`\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `none`\n   * - `previous`\n   */\n  returnKeyType?: WithDefault<ReturnKeyType, 'done'>,\n\n  /**\n   * Limits the maximum number of characters that can be entered. Use this\n   * instead of implementing the logic in JS to avoid flicker.\n   */\n  maxLength?: ?Int32,\n\n  /**\n   * If `true`, the text input can be multiple lines.\n   * The default value is `false`.\n   */\n  multiline?: ?boolean,\n\n  /**\n   * Callback that is called when the text input is blurred.\n   * `target` is the reactTag of the element\n   */\n  onBlur?: ?BubblingEventHandler<$ReadOnly<{target: Int32}>>,\n\n  /**\n   * Callback that is called when the text input is focused.\n   * `target` is the reactTag of the element\n   */\n  onFocus?: ?BubblingEventHandler<$ReadOnly<{target: Int32}>>,\n\n  /**\n   * Callback that is called when the text input's text changes.\n   * `target` is the reactTag of the element\n   * TODO: differentiate between onChange and onChangeText\n   */\n  onChange?: ?BubblingEventHandler<\n    $ReadOnly<{target: Int32, eventCount: Int32, text: string}>,\n  >,\n\n  /**\n   * Callback that is called when the text input's text changes.\n   * Changed text is passed as an argument to the callback handler.\n   * TODO: differentiate between onChange and onChangeText\n   */\n  onChangeText?: ?BubblingEventHandler<\n    $ReadOnly<{target: Int32, eventCount: Int32, text: string}>,\n  >,\n\n  /**\n   * Callback that is called when the text input's content size changes.\n   * This will be called with\n   * `{ nativeEvent: { contentSize: { width, height } } }`.\n   *\n   * Only called for multiline text inputs.\n   */\n  onContentSizeChange?: ?DirectEventHandler<\n    $ReadOnly<{\n      target: Int32,\n      contentSize: $ReadOnly<{width: Double, height: Double}>,\n    }>,\n  >,\n\n  /**\n   * Callback that is called when text input ends.\n   */\n  onEndEditing?: ?BubblingEventHandler<\n    $ReadOnly<{target: Int32, text: string}>,\n  >,\n\n  /**\n   * Callback that is called when the text input selection is changed.\n   * This will be called with\n   * `{ nativeEvent: { selection: { start, end } } }`.\n   */\n  onSelectionChange?: ?DirectEventHandler<\n    $ReadOnly<{\n      target: Int32,\n      selection: $ReadOnly<{start: Double, end: Double}>,\n    }>,\n  >,\n\n  /**\n   * Callback that is called when the text input's submit button is pressed.\n   * Invalid if `multiline={true}` is specified.\n   */\n  onSubmitEditing?: ?BubblingEventHandler<\n    $ReadOnly<{target: Int32, text: string}>,\n  >,\n\n  /**\n   * Callback that is called when a key is pressed.\n   * This will be called with `{ nativeEvent: { key: keyValue } }`\n   * where `keyValue` is `'Enter'` or `'Backspace'` for respective keys and\n   * the typed-in character otherwise including `' '` for space.\n   * Fires before `onChange` callbacks.\n   */\n  onKeyPress?: ?BubblingEventHandler<$ReadOnly<{target: Int32, key: string}>>,\n\n  /**\n   * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`.\n   * May also contain other properties from ScrollEvent but on Android contentSize\n   * is not provided for performance reasons.\n   */\n  onScroll?: ?DirectEventHandler<\n    $ReadOnly<{\n      target: Int32,\n      responderIgnoreScroll: boolean,\n      contentInset: $ReadOnly<{\n        top: Double, // always 0 on Android\n        bottom: Double, // always 0 on Android\n        left: Double, // always 0 on Android\n        right: Double, // always 0 on Android\n      }>,\n      contentOffset: $ReadOnly<{\n        x: Double,\n        y: Double,\n      }>,\n      contentSize: $ReadOnly<{\n        width: Double, // always 0 on Android\n        height: Double, // always 0 on Android\n      }>,\n      layoutMeasurement: $ReadOnly<{\n        width: Double,\n        height: Double,\n      }>,\n      velocity: $ReadOnly<{\n        x: Double, // always 0 on Android\n        y: Double, // always 0 on Android\n      }>,\n    }>,\n  >,\n\n  /**\n   * The string that will be rendered before text input has been entered.\n   */\n  placeholder?: ?Stringish,\n\n  /**\n   * The text color of the placeholder string.\n   */\n  placeholderTextColor?: ?ColorValue,\n\n  /**\n   * If `true`, the text input obscures the text entered so that sensitive text\n   * like passwords stay secure. The default value is `false`. Does not work with 'multiline={true}'.\n   */\n  secureTextEntry?: ?boolean,\n\n  /**\n   * The highlight and cursor color of the text input.\n   */\n  selectionColor?: ?ColorValue,\n\n  /**\n   * The text selection handle color.\n   */\n  selectionHandleColor?: ?ColorValue,\n\n  /**\n   * The start and end of the text input's selection. Set start and end to\n   * the same value to position the cursor.\n   */\n  selection?: ?$ReadOnly<{\n    start: Int32,\n    end?: ?Int32,\n  }>,\n\n  /**\n   * The value to show for the text input. `TextInput` is a controlled\n   * component, which means the native value will be forced to match this\n   * value prop if provided. For most uses, this works great, but in some\n   * cases this may cause flickering - one common cause is preventing edits\n   * by keeping value the same. In addition to simply setting the same value,\n   * either set `editable={false}`, or set/update `maxLength` to prevent\n   * unwanted edits without flicker.\n   */\n  value?: ?string,\n\n  /**\n   * Provides an initial value that will change when the user starts typing.\n   * Useful for simple use-cases where you do not want to deal with listening\n   * to events and updating the value prop to keep the controlled state in sync.\n   */\n  defaultValue?: ?string,\n\n  /**\n   * If `true`, all text will automatically be selected on focus.\n   */\n  selectTextOnFocus?: ?boolean,\n\n  /**\n   * If `true`, the text field will blur when submitted.\n   * The default value is true for single-line fields and false for\n   * multiline fields. Note that for multiline fields, setting `blurOnSubmit`\n   * to `true` means that pressing return will blur the field and trigger the\n   * `onSubmitEditing` event instead of inserting a newline into the field.\n   *\n   * @deprecated\n   * Note that `submitBehavior` now takes the place of `blurOnSubmit` and will\n   * override any behavior defined by `blurOnSubmit`.\n   * @see submitBehavior\n   */\n  blurOnSubmit?: ?boolean,\n\n  /**\n   * When the return key is pressed,\n   *\n   * For single line inputs:\n   *\n   * - `'newline`' defaults to `'blurAndSubmit'`\n   * - `undefined` defaults to `'blurAndSubmit'`\n   *\n   * For multiline inputs:\n   *\n   * - `'newline'` adds a newline\n   * - `undefined` defaults to `'newline'`\n   *\n   * For both single line and multiline inputs:\n   *\n   * - `'submit'` will only send a submit event and not blur the input\n   * - `'blurAndSubmit`' will both blur the input and send a submit event\n   */\n  submitBehavior?: ?SubmitBehavior,\n\n  /**\n   * Note that not all Text styles are supported, an incomplete list of what is not supported includes:\n   *\n   * - `borderLeftWidth`\n   * - `borderTopWidth`\n   * - `borderRightWidth`\n   * - `borderBottomWidth`\n   * - `borderTopLeftRadius`\n   * - `borderTopRightRadius`\n   * - `borderBottomRightRadius`\n   * - `borderBottomLeftRadius`\n   *\n   * see [Issue#7070](https://github.com/facebook/react-native/issues/7070)\n   * for more detail.\n   *\n   * [Styles](docs/style.html)\n   */\n  // TODO: figure out what to do with this style prop for codegen/Fabric purposes\n  // This must be commented for Fabric codegen to work; it's currently not possible\n  // to override the default View style prop in codegen.\n  style?: ?TextStyleProp,\n\n  /**\n   * If `true`, caret is hidden. The default value is `false`.\n   * This property is supported only for single-line TextInput component on iOS.\n   */\n  caretHidden?: ?boolean,\n\n  /*\n   * If `true`, contextMenuHidden is hidden. The default value is `false`.\n   */\n  contextMenuHidden?: ?boolean,\n\n  /**\n   * The following are props that `BaseTextShadowNode` takes. It is unclear if they\n   * are used by TextInput.\n   */\n  textShadowColor?: ?ColorValue,\n  textShadowRadius?: ?Float,\n  textDecorationLine?: ?string,\n  fontStyle?: ?string,\n  textShadowOffset?: ?$ReadOnly<{width?: ?Double, height?: ?Double}>,\n  lineHeight?: ?Float,\n  textTransform?: ?string,\n  color?: ?Int32,\n  letterSpacing?: ?Float,\n  fontSize?: ?Float,\n  textAlign?: ?string,\n  includeFontPadding?: ?boolean,\n  fontWeight?: ?string,\n  fontFamily?: ?string,\n\n  /**\n   * I cannot find where these are defined but JS complains without them.\n   */\n  textAlignVertical?: ?string,\n  cursorColor?: ?ColorValue,\n\n  /**\n   * \"Private\" fields used by TextInput.js and not users of this component directly\n   */\n  mostRecentEventCount: Int32,\n  text?: ?string,\n}>;\n\ntype NativeType = HostComponent<AndroidTextInputNativeProps>;\n\ntype NativeCommands = TextInputNativeCommands<NativeType>;\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['focus', 'blur', 'setTextAndSelection'],\n});\n\nexport const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {\n  uiViewClassName: 'AndroidTextInput',\n  bubblingEventTypes: {\n    topEndEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onEndEditing',\n        captured: 'onEndEditingCapture',\n      },\n    },\n    topKeyPress: {\n      phasedRegistrationNames: {\n        bubbled: 'onKeyPress',\n        captured: 'onKeyPressCapture',\n      },\n    },\n    topSubmitEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onSubmitEditing',\n        captured: 'onSubmitEditingCapture',\n      },\n    },\n  },\n  directEventTypes: {\n    topScroll: {\n      registrationName: 'onScroll',\n    },\n  },\n  validAttributes: {\n    acceptDragAndDropTypes: true,\n    maxFontSizeMultiplier: true,\n    adjustsFontSizeToFit: true,\n    minimumFontScale: true,\n    autoFocus: true,\n    placeholder: true,\n    inlineImagePadding: true,\n    contextMenuHidden: true,\n    textShadowColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    maxLength: true,\n    selectTextOnFocus: true,\n    textShadowRadius: true,\n    underlineColorAndroid: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    textDecorationLine: true,\n    submitBehavior: true,\n    textAlignVertical: true,\n    fontStyle: true,\n    textShadowOffset: true,\n    selectionColor: {process: require('../../StyleSheet/processColor').default},\n    selectionHandleColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    placeholderTextColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    importantForAutofill: true,\n    lineHeight: true,\n    textTransform: true,\n    returnKeyType: true,\n    keyboardType: true,\n    multiline: true,\n    color: {process: require('../../StyleSheet/processColor').default},\n    autoComplete: true,\n    numberOfLines: true,\n    letterSpacing: true,\n    returnKeyLabel: true,\n    fontSize: true,\n    onKeyPress: true,\n    cursorColor: {process: require('../../StyleSheet/processColor').default},\n    text: true,\n    showSoftInputOnFocus: true,\n    textAlign: true,\n    autoCapitalize: true,\n    autoCorrect: true,\n    caretHidden: true,\n    secureTextEntry: true,\n    textBreakStrategy: true,\n    onScroll: true,\n    onContentSizeChange: true,\n    disableFullscreenUI: true,\n    includeFontPadding: true,\n    fontWeight: true,\n    fontFamily: true,\n    allowFontScaling: true,\n    onSelectionChange: true,\n    mostRecentEventCount: true,\n    inlineImageLeft: true,\n    editable: true,\n    fontVariant: true,\n    borderBottomRightRadius: true,\n    borderBottomColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    borderRadius: true,\n    borderRightColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    borderColor: {process: require('../../StyleSheet/processColor').default},\n    borderTopRightRadius: true,\n    borderStyle: true,\n    borderBottomLeftRadius: true,\n    borderLeftColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    borderTopLeftRadius: true,\n    borderTopColor: {process: require('../../StyleSheet/processColor').default},\n  },\n};\n\nlet AndroidTextInputNativeComponent =\n  NativeComponentRegistry.get<AndroidTextInputNativeProps>(\n    'AndroidTextInput',\n    () => __INTERNAL_VIEW_CONFIG,\n  );\n\n// flowlint-next-line unclear-type:off\nexport default ((AndroidTextInputNativeComponent: any): HostComponent<AndroidTextInputNativeProps>);\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes';\nimport type {TextInputNativeCommands} from './TextInputNativeCommands';\n\nimport * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport RCTTextInputViewConfig from './RCTTextInputViewConfig';\n\ntype NativeType = HostComponent<{...}>;\n\ntype NativeCommands = TextInputNativeCommands<NativeType>;\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['focus', 'blur', 'setTextAndSelection'],\n});\n\nexport const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {\n  uiViewClassName: 'RCTSinglelineTextInputView',\n  ...RCTTextInputViewConfig,\n};\n\nconst SinglelineTextInputNativeComponent: HostComponent<{...}> =\n  NativeComponentRegistry.get<{...}>(\n    'RCTSinglelineTextInputView',\n    () => __INTERNAL_VIEW_CONFIG,\n  );\n\n// flowlint-next-line unclear-type:off\nexport default ((SinglelineTextInputNativeComponent: any): HostComponent<{\n  ...\n}>);\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 * @flow strict-local\n * @format\n */\n\nimport type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes';\n\nimport {ConditionallyIgnoredEventHandlers} from '../../NativeComponent/ViewConfigIgnore';\n\ntype PartialViewConfigWithoutName = Omit<PartialViewConfig, 'uiViewClassName'>;\n\nconst RCTTextInputViewConfig: PartialViewConfigWithoutName = {\n  bubblingEventTypes: {\n    topBlur: {\n      phasedRegistrationNames: {\n        bubbled: 'onBlur',\n        captured: 'onBlurCapture',\n      },\n    },\n    topChange: {\n      phasedRegistrationNames: {\n        bubbled: 'onChange',\n        captured: 'onChangeCapture',\n      },\n    },\n    topEndEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onEndEditing',\n        captured: 'onEndEditingCapture',\n      },\n    },\n    topFocus: {\n      phasedRegistrationNames: {\n        bubbled: 'onFocus',\n        captured: 'onFocusCapture',\n      },\n    },\n    topKeyPress: {\n      phasedRegistrationNames: {\n        bubbled: 'onKeyPress',\n        captured: 'onKeyPressCapture',\n      },\n    },\n    topSubmitEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onSubmitEditing',\n        captured: 'onSubmitEditingCapture',\n      },\n    },\n    topTouchCancel: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchCancel',\n        captured: 'onTouchCancelCapture',\n      },\n    },\n    topTouchEnd: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchEnd',\n        captured: 'onTouchEndCapture',\n      },\n    },\n\n    topTouchMove: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchMove',\n        captured: 'onTouchMoveCapture',\n      },\n    },\n  },\n  directEventTypes: {\n    topScroll: {\n      registrationName: 'onScroll',\n    },\n    topSelectionChange: {\n      registrationName: 'onSelectionChange',\n    },\n    topContentSizeChange: {\n      registrationName: 'onContentSizeChange',\n    },\n    topChangeSync: {\n      registrationName: 'onChangeSync',\n    },\n    topKeyPressSync: {\n      registrationName: 'onKeyPressSync',\n    },\n  },\n  validAttributes: {\n    acceptDragAndDropTypes: true,\n    dynamicTypeRamp: true,\n    fontSize: true,\n    fontWeight: true,\n    fontVariant: true,\n    // flowlint-next-line untyped-import:off\n    textShadowOffset: {\n      diff: require('../../Utilities/differ/sizesDiffer').default,\n    },\n    allowFontScaling: true,\n    fontStyle: true,\n    textTransform: true,\n    textAlign: true,\n    fontFamily: true,\n    lineHeight: true,\n    isHighlighted: true,\n    writingDirection: true,\n    textDecorationLine: true,\n    textShadowRadius: true,\n    letterSpacing: true,\n    textDecorationStyle: true,\n    textDecorationColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    color: {process: require('../../StyleSheet/processColor').default},\n    maxFontSizeMultiplier: true,\n    textShadowColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    editable: true,\n    inputAccessoryViewID: true,\n    inputAccessoryViewButtonLabel: true,\n    caretHidden: true,\n    enablesReturnKeyAutomatically: true,\n    placeholderTextColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    clearButtonMode: true,\n    keyboardType: true,\n    selection: true,\n    returnKeyType: true,\n    submitBehavior: true,\n    mostRecentEventCount: true,\n    scrollEnabled: true,\n    selectionColor: {process: require('../../StyleSheet/processColor').default},\n    contextMenuHidden: true,\n    secureTextEntry: true,\n    placeholder: true,\n    autoCorrect: true,\n    multiline: true,\n    numberOfLines: true,\n    textContentType: true,\n    maxLength: true,\n    autoCapitalize: true,\n    keyboardAppearance: true,\n    passwordRules: true,\n    spellCheck: true,\n    selectTextOnFocus: true,\n    text: true,\n    clearTextOnFocus: true,\n    showSoftInputOnFocus: true,\n    autoFocus: true,\n    lineBreakStrategyIOS: true,\n    lineBreakModeIOS: true,\n    smartInsertDelete: true,\n    ...ConditionallyIgnoredEventHandlers({\n      onChange: true,\n      onSelectionChange: true,\n      onContentSizeChange: true,\n      onScroll: true,\n      onChangeSync: true,\n      onKeyPressSync: true,\n    }),\n    disableKeyboardShortcuts: true,\n  },\n};\n\nexport default RCTTextInputViewConfig as PartialViewConfigWithoutName;\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 * @flow\n * @format\n */\n\n'use strict';\n\nlet logListeners;\n\ntype LogListeners = {\n  +onDifferentFunctionsIgnored: (nameOne: ?string, nameTwo: ?string) => void,\n};\n\ntype Options = {+unsafelyIgnoreFunctions?: boolean};\n\nfunction unstable_setLogListeners(listeners: ?LogListeners) {\n  logListeners = listeners;\n}\n\n/*\n * @returns {bool} true if different, false if equal\n */\nfunction deepDiffer(\n  one: any,\n  two: any,\n  maxDepthOrOptions: Options | number = -1,\n  maybeOptions?: Options,\n): boolean {\n  const options =\n    typeof maxDepthOrOptions === 'number' ? maybeOptions : maxDepthOrOptions;\n  const maxDepth =\n    typeof maxDepthOrOptions === 'number' ? maxDepthOrOptions : -1;\n  if (maxDepth === 0) {\n    return true;\n  }\n  if (one === two) {\n    // Short circuit on identical object references instead of traversing them.\n    return false;\n  }\n  if (typeof one === 'function' && typeof two === 'function') {\n    // We consider all functions equal unless explicitly configured otherwise\n    let unsafelyIgnoreFunctions = options?.unsafelyIgnoreFunctions;\n    if (unsafelyIgnoreFunctions == null) {\n      if (\n        logListeners &&\n        logListeners.onDifferentFunctionsIgnored &&\n        (!options || !('unsafelyIgnoreFunctions' in options))\n      ) {\n        logListeners.onDifferentFunctionsIgnored(one.name, two.name);\n      }\n      unsafelyIgnoreFunctions = true;\n    }\n    return !unsafelyIgnoreFunctions;\n  }\n  if (typeof one !== 'object' || one === null) {\n    // Primitives can be directly compared\n    return one !== two;\n  }\n  if (typeof two !== 'object' || two === null) {\n    // We know they are different because the previous case would have triggered\n    // otherwise.\n    return true;\n  }\n  if (one.constructor !== two.constructor) {\n    return true;\n  }\n  if (Array.isArray(one)) {\n    // We know two is also an array because the constructors are equal\n    const len = one.length;\n    if (two.length !== len) {\n      return true;\n    }\n    for (let ii = 0; ii < len; ii++) {\n      if (deepDiffer(one[ii], two[ii], maxDepth - 1, options)) {\n        return true;\n      }\n    }\n  } else {\n    for (const key in one) {\n      if (deepDiffer(one[key], two[key], maxDepth - 1, options)) {\n        return true;\n      }\n    }\n    for (const twoKey in two) {\n      // The only case we haven't checked yet is keys that are in two but aren't\n      // in one, which means they are different.\n      if (one[twoKey] === undefined && two[twoKey] !== undefined) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\ndeepDiffer.unstable_setLogListeners = unstable_setLogListeners;\nexport default deepDiffer;\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 * @flow strict-local\n * @format\n */\n\nimport type {ExtendedError} from './ExtendedError';\n\nimport ExceptionsManager, {SyntheticError} from './ExceptionsManager';\n\nexport type CapturedError = {\n  +componentStack: string,\n  +error: mixed,\n  +errorBoundary: ?{...},\n  ...\n};\n\nconst ReactFiberErrorDialog = {\n  /**\n   * Intercept lifecycle errors and ensure they are shown with the correct stack\n   * trace within the native redbox component.\n   */\n  showErrorDialog({componentStack, error: errorValue}: CapturedError): boolean {\n    let error: ?ExtendedError;\n\n    // Typically, `errorValue` should be an error. However, other values such as\n    // strings (or even null) are sometimes thrown.\n    if (errorValue instanceof Error) {\n      /* $FlowFixMe[class-object-subtyping] added when improving typing for\n       * this parameters */\n      // $FlowFixMe[incompatible-cast]\n      error = (errorValue: ExtendedError);\n    } else if (typeof errorValue === 'string') {\n      /* $FlowFixMe[class-object-subtyping] added when improving typing for\n       * this parameters */\n      // $FlowFixMe[incompatible-cast]\n      error = (new SyntheticError(errorValue): ExtendedError);\n    } else {\n      /* $FlowFixMe[class-object-subtyping] added when improving typing for\n       * this parameters */\n      // $FlowFixMe[incompatible-cast]\n      error = (new SyntheticError('Unspecified error'): ExtendedError);\n    }\n    try {\n      error.componentStack = componentStack;\n      error.isComponentError = true;\n    } catch {\n      // Ignored.\n    }\n\n    ExceptionsManager.handleException(error, false);\n\n    // Return false here to prevent ReactFiberErrorLogger default behavior of\n    // logging error details to console.error. Calls to console.error are\n    // automatically routed to the native redbox controller, which we've already\n    // done above by calling ExceptionsManager.\n    return false;\n  },\n};\n\nexport default ReactFiberErrorDialog;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeAccessibilityManager';\nexport {default} from '../../../src/private/specs_DEPRECATED/modules/NativeAccessibilityManager';\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getCurrentBoldTextState: (\n    onSuccess: (isBoldTextEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentGrayscaleState: (\n    onSuccess: (isGrayscaleEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentInvertColorsState: (\n    onSuccess: (isInvertColorsEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentReduceMotionState: (\n    onSuccess: (isReduceMotionEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentDarkerSystemColorsState?: (\n    onSuccess: (isDarkerSystemColorsEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentPrefersCrossFadeTransitionsState?: (\n    onSuccess: (prefersCrossFadeTransitions: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentReduceTransparencyState: (\n    onSuccess: (isReduceTransparencyEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentVoiceOverState: (\n    onSuccess: (isScreenReaderEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +setAccessibilityContentSizeMultipliers: (JSMultipliers: {\n    +extraSmall?: ?number,\n    +small?: ?number,\n    +medium?: ?number,\n    +large?: ?number,\n    +extraLarge?: ?number,\n    +extraExtraLarge?: ?number,\n    +extraExtraExtraLarge?: ?number,\n    +accessibilityMedium?: ?number,\n    +accessibilityLarge?: ?number,\n    +accessibilityExtraLarge?: ?number,\n    +accessibilityExtraExtraLarge?: ?number,\n    +accessibilityExtraExtraExtraLarge?: ?number,\n  }) => void;\n  +setAccessibilityFocus: (reactTag: number) => void;\n  +announceForAccessibility: (announcement: string) => void;\n  +announceForAccessibilityWithOptions?: (\n    announcement: string,\n    options: {queue?: boolean},\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('AccessibilityManager'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {IEventEmitter} from '../vendor/emitter/EventEmitter';\n\nimport EventEmitter from '../vendor/emitter/EventEmitter';\n\nexport type RawEventEmitterEvent = $ReadOnly<{\n  eventName: string,\n  // We expect, but do not/cannot require, that nativeEvent is an object\n  // with the properties: key, elementType (string), type (string), tag (numeric),\n  // and a stateNode of the native element/Fiber the event was emitted to.\n  nativeEvent: {[string]: mixed},\n}>;\n\ntype RawEventDefinitions = {\n  [eventChannel: string]: [RawEventEmitterEvent],\n};\n\nconst RawEventEmitter: IEventEmitter<RawEventDefinitions> =\n  new EventEmitter<RawEventDefinitions>();\n\n// See the React renderer / react repo for how this is used.\n// Raw events are emitted here when they are received in JS\n// and before any event Plugins process them or before components\n// have a chance to respond to them. This allows you to implement\n// app-specific perf monitoring, which is unimplemented by default,\n// making this entire RawEventEmitter do nothing by default until\n// *you* add listeners for your own app.\n// Besides perf monitoring and maybe debugging, this RawEventEmitter\n// should not be used.\nexport default RawEventEmitter;\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 * @flow strict\n * @format\n */\n\n/**\n * This module implements the `CustomEvent` interface from the DOM.\n * See https://dom.spec.whatwg.org/#interface-customevent.\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {EventInit} from './Event';\n\nimport Event from './Event';\n\nexport interface CustomEventInit extends EventInit {\n  +detail?: mixed;\n}\n\nexport default class CustomEvent extends Event {\n  _detail: mixed;\n\n  constructor(type: string, options?: ?CustomEventInit) {\n    super(type, options);\n\n    this._detail = options?.detail;\n  }\n\n  get detail(): mixed {\n    return this._detail;\n  }\n}\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 * @flow strict\n * @format\n */\n\n/**\n * This module implements the `Event` interface from the DOM.\n * See https://dom.spec.whatwg.org/#interface-event.\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type EventTarget from './EventTarget';\n\nimport {setPlatformObject} from '../../webidl/PlatformObjects';\nimport {\n  COMPOSED_PATH_KEY,\n  CURRENT_TARGET_KEY,\n  EVENT_PHASE_KEY,\n  IN_PASSIVE_LISTENER_FLAG_KEY,\n  IS_TRUSTED_KEY,\n  STOP_IMMEDIATE_PROPAGATION_FLAG_KEY,\n  STOP_PROPAGATION_FLAG_KEY,\n  TARGET_KEY,\n  getComposedPath,\n  getCurrentTarget,\n  getEventPhase,\n  getInPassiveListenerFlag,\n  getIsTrusted,\n  getTarget,\n  setStopImmediatePropagationFlag,\n  setStopPropagationFlag,\n} from './internals/EventInternals';\n\nexport interface EventInit {\n  +bubbles?: boolean;\n  +cancelable?: boolean;\n  +composed?: boolean;\n}\n\nexport default class Event {\n  static +NONE: 0;\n  static +CAPTURING_PHASE: 1;\n  static +AT_TARGET: 2;\n  static +BUBBLING_PHASE: 3;\n\n  +NONE: 0;\n  +CAPTURING_PHASE: 1;\n  +AT_TARGET: 2;\n  +BUBBLING_PHASE: 3;\n\n  _bubbles: boolean;\n  _cancelable: boolean;\n  _composed: boolean;\n  _type: string;\n\n  _defaultPrevented: boolean = false;\n  _timeStamp: number = performance.now();\n\n  // $FlowExpectedError[unsupported-syntax]\n  [COMPOSED_PATH_KEY]: boolean = [];\n\n  // $FlowExpectedError[unsupported-syntax]\n  [CURRENT_TARGET_KEY]: EventTarget | null = null;\n\n  // $FlowExpectedError[unsupported-syntax]\n  [EVENT_PHASE_KEY]: boolean = Event.NONE;\n\n  // $FlowExpectedError[unsupported-syntax]\n  [IN_PASSIVE_LISTENER_FLAG_KEY]: boolean = false;\n\n  // $FlowExpectedError[unsupported-syntax]\n  [IS_TRUSTED_KEY]: boolean = false;\n\n  // $FlowExpectedError[unsupported-syntax]\n  [STOP_IMMEDIATE_PROPAGATION_FLAG_KEY]: boolean = false;\n\n  // $FlowExpectedError[unsupported-syntax]\n  [STOP_PROPAGATION_FLAG_KEY]: boolean = false;\n\n  // $FlowExpectedError[unsupported-syntax]\n  [TARGET_KEY]: EventTarget | null = null;\n\n  constructor(type: string, options?: ?EventInit) {\n    if (arguments.length < 1) {\n      throw new TypeError(\n        \"Failed to construct 'Event': 1 argument required, but only 0 present.\",\n      );\n    }\n\n    const typeOfOptions = typeof options;\n\n    if (\n      options != null &&\n      typeOfOptions !== 'object' &&\n      typeOfOptions !== 'function'\n    ) {\n      throw new TypeError(\n        \"Failed to construct 'Event': The provided value is not of type 'EventInit'.\",\n      );\n    }\n\n    this._type = String(type);\n    this._bubbles = Boolean(options?.bubbles);\n    this._cancelable = Boolean(options?.cancelable);\n    this._composed = Boolean(options?.composed);\n  }\n\n  get bubbles(): boolean {\n    return this._bubbles;\n  }\n\n  get cancelable(): boolean {\n    return this._cancelable;\n  }\n\n  get composed(): boolean {\n    return this._composed;\n  }\n\n  get currentTarget(): EventTarget | null {\n    return getCurrentTarget(this);\n  }\n\n  get defaultPrevented(): boolean {\n    return this._defaultPrevented;\n  }\n\n  get eventPhase(): EventPhase {\n    return getEventPhase(this);\n  }\n\n  get isTrusted(): boolean {\n    return getIsTrusted(this);\n  }\n\n  get target(): EventTarget | null {\n    return getTarget(this);\n  }\n\n  get timeStamp(): number {\n    return this._timeStamp;\n  }\n\n  get type(): string {\n    return this._type;\n  }\n\n  composedPath(): $ReadOnlyArray<EventTarget> {\n    return getComposedPath(this).slice();\n  }\n\n  preventDefault(): void {\n    if (!this._cancelable) {\n      return;\n    }\n\n    if (getInPassiveListenerFlag(this)) {\n      console.error(\n        new Error(\n          'Unable to preventDefault inside passive event listener invocation.',\n        ),\n      );\n      return;\n    }\n\n    this._defaultPrevented = true;\n  }\n\n  stopImmediatePropagation(): void {\n    setStopPropagationFlag(this, true);\n    setStopImmediatePropagationFlag(this, true);\n  }\n\n  stopPropagation(): void {\n    setStopPropagationFlag(this, true);\n  }\n}\n\n// $FlowExpectedError[cannot-write]\nObject.defineProperty(Event, 'NONE', {\n  enumerable: true,\n  value: 0,\n});\n\n// $FlowExpectedError[cannot-write]\nObject.defineProperty(Event.prototype, 'NONE', {\n  enumerable: true,\n  value: 0,\n});\n\n// $FlowExpectedError[cannot-write]\nObject.defineProperty(Event, 'CAPTURING_PHASE', {\n  enumerable: true,\n  value: 1,\n});\n\n// $FlowExpectedError[cannot-write]\nObject.defineProperty(Event.prototype, 'CAPTURING_PHASE', {\n  enumerable: true,\n  value: 1,\n});\n\n// $FlowExpectedError[cannot-write]\nObject.defineProperty(Event, 'AT_TARGET', {\n  enumerable: true,\n  value: 2,\n});\n\n// $FlowExpectedError[cannot-write]\nObject.defineProperty(Event.prototype, 'AT_TARGET', {\n  enumerable: true,\n  value: 2,\n});\n\n// $FlowExpectedError[cannot-write]\nObject.defineProperty(Event, 'BUBBLING_PHASE', {\n  enumerable: true,\n  value: 3,\n});\n\n// $FlowExpectedError[cannot-write]\nObject.defineProperty(Event.prototype, 'BUBBLING_PHASE', {\n  enumerable: true,\n  value: 3,\n});\n\nexport type EventPhase =\n  | (typeof Event)['NONE']\n  | (typeof Event)['CAPTURING_PHASE']\n  | (typeof Event)['AT_TARGET']\n  | (typeof Event)['BUBBLING_PHASE'];\n\nsetPlatformObject(Event);\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 * @flow strict\n * @format\n */\n\nconst IS_PLATFORM_OBJECT_KEY = Symbol('isPlatformObject');\nconst CLONE_PLATFORM_OBJECT_KEY = Symbol('clonePlatformObject');\n\n/**\n * Marks the given object or instances of the given class as platform objects.\n *\n * Optionally, it sets the clone function for that platform object, which is a\n * simplification of the serializable attribute of the Web interface.\n */\nexport const setPlatformObject: (<T: interface {}>(\n  obj: Class<T>,\n  options?: {clone: T => T},\n) => void) &\n  (<T: interface {}>(obj: T, options?: {clone: T => T}) => void) =\n  function setPlatformObject(obj, options) {\n    if (typeof obj === 'function') {\n      // $FlowExpectedError[prop-missing]\n      obj.prototype[IS_PLATFORM_OBJECT_KEY] = true;\n      if (options) {\n        // $FlowExpectedError[prop-missing]\n        obj.prototype[CLONE_PLATFORM_OBJECT_KEY] = options.clone;\n      }\n    } else {\n      // $FlowExpectedError[prop-missing]\n      obj[IS_PLATFORM_OBJECT_KEY] = true;\n      if (options) {\n        // $FlowExpectedError[prop-missing]\n        obj[CLONE_PLATFORM_OBJECT_KEY] = options.clone;\n      }\n    }\n  };\n\n/**\n * Indicates if the given object is a platform object.\n */\nexport function isPlatformObject<T: interface {}>(obj: T): boolean {\n  // $FlowExpectedError[invalid-in-lhs]\n  return IS_PLATFORM_OBJECT_KEY in obj;\n}\n\n/**\n * Returns the clone function for the given platform object, if it was set.\n */\nexport function getPlatformObjectClone<T: interface {}>(\n  obj: T,\n): (T => T) | void {\n  // $FlowExpectedError[prop-missing]\n  return obj[CLONE_PLATFORM_OBJECT_KEY];\n}\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 * @flow strict\n * @format\n */\n\n/**\n * This method contains internal implementation details for the `Event` module\n * and it is defined in a separate module to keep the exports in `Event` clean\n * (only with public exports).\n */\n\nimport type Event, {EventPhase} from '../Event';\nimport type EventTarget from '../EventTarget';\n\nexport const COMPOSED_PATH_KEY: symbol = Symbol('composedPath');\nexport const CURRENT_TARGET_KEY: symbol = Symbol('currentTarget');\nexport const EVENT_PHASE_KEY: symbol = Symbol('eventPhase');\nexport const IN_PASSIVE_LISTENER_FLAG_KEY: symbol = Symbol(\n  'inPassiveListenerFlag',\n);\nexport const IS_TRUSTED_KEY: symbol = Symbol('isTrusted');\nexport const STOP_IMMEDIATE_PROPAGATION_FLAG_KEY: symbol = Symbol(\n  'stopPropagationFlag',\n);\nexport const STOP_PROPAGATION_FLAG_KEY: symbol = Symbol('stopPropagationFlag');\nexport const TARGET_KEY: symbol = Symbol('target');\n\nexport function getCurrentTarget(event: Event): EventTarget | null {\n  // $FlowExpectedError[prop-missing]\n  return event[CURRENT_TARGET_KEY];\n}\n\nexport function setCurrentTarget(\n  event: Event,\n  currentTarget: EventTarget | null,\n): void {\n  // $FlowExpectedError[prop-missing]\n  event[CURRENT_TARGET_KEY] = currentTarget;\n}\n\nexport function getComposedPath(event: Event): $ReadOnlyArray<EventTarget> {\n  // $FlowExpectedError[prop-missing]\n  return event[COMPOSED_PATH_KEY];\n}\n\nexport function setComposedPath(\n  event: Event,\n  composedPath: $ReadOnlyArray<EventTarget>,\n): void {\n  // $FlowExpectedError[prop-missing]\n  event[COMPOSED_PATH_KEY] = composedPath;\n}\n\nexport function getEventPhase(event: Event): EventPhase {\n  // $FlowExpectedError[prop-missing]\n  return event[EVENT_PHASE_KEY];\n}\n\nexport function setEventPhase(event: Event, eventPhase: EventPhase): void {\n  // $FlowExpectedError[prop-missing]\n  event[EVENT_PHASE_KEY] = eventPhase;\n}\n\nexport function getInPassiveListenerFlag(event: Event): boolean {\n  // $FlowExpectedError[prop-missing]\n  return event[IN_PASSIVE_LISTENER_FLAG_KEY];\n}\n\nexport function setInPassiveListenerFlag(event: Event, value: boolean): void {\n  // $FlowExpectedError[prop-missing]\n  event[IN_PASSIVE_LISTENER_FLAG_KEY] = value;\n}\n\nexport function getIsTrusted(event: Event): boolean {\n  // $FlowExpectedError[prop-missing]\n  return event[IS_TRUSTED_KEY];\n}\n\nexport function setIsTrusted(event: Event, isTrusted: boolean): void {\n  // $FlowExpectedError[prop-missing]\n  event[IS_TRUSTED_KEY] = isTrusted;\n}\n\nexport function getStopImmediatePropagationFlag(event: Event): boolean {\n  // $FlowExpectedError[prop-missing]\n  return event[STOP_IMMEDIATE_PROPAGATION_FLAG_KEY];\n}\n\nexport function setStopImmediatePropagationFlag(\n  event: Event,\n  value: boolean,\n): void {\n  // $FlowExpectedError[prop-missing]\n  event[STOP_IMMEDIATE_PROPAGATION_FLAG_KEY] = value;\n}\n\nexport function getStopPropagationFlag(event: Event): boolean {\n  // $FlowExpectedError[prop-missing]\n  return event[STOP_PROPAGATION_FLAG_KEY];\n}\n\nexport function setStopPropagationFlag(event: Event, value: boolean): void {\n  // $FlowExpectedError[prop-missing]\n  event[STOP_PROPAGATION_FLAG_KEY] = value;\n}\n\nexport function getTarget(event: Event): EventTarget | null {\n  // $FlowExpectedError[prop-missing]\n  return event[TARGET_KEY];\n}\n\nexport function setTarget(event: Event, target: EventTarget | null): void {\n  // $FlowExpectedError[prop-missing]\n  event[TARGET_KEY] = target;\n}\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 * @flow\n * @format\n */\n\nimport type {AttributeConfiguration} from '../../Renderer/shims/ReactNativeTypes';\n\nimport flattenStyle from '../../StyleSheet/flattenStyle';\nimport deepDiffer from '../../Utilities/differ/deepDiffer';\n\nconst emptyObject = {};\n\n/**\n * Create a payload that contains all the updates between two sets of props.\n *\n * These helpers are all encapsulated into a single module, because they use\n * mutation as a performance optimization which leads to subtle shared\n * dependencies between the code paths. To avoid this mutable state leaking\n * across modules, I've kept them isolated to this module.\n */\n\ntype NestedNode = Array<NestedNode> | Object;\n\n// Tracks removed keys\nlet removedKeys: {[string]: boolean} | null = null;\nlet removedKeyCount = 0;\n\nconst deepDifferOptions = {\n  unsafelyIgnoreFunctions: true,\n};\n\nfunction defaultDiffer(prevProp: mixed, nextProp: mixed): boolean {\n  if (typeof nextProp !== 'object' || nextProp === null) {\n    // Scalars have already been checked for equality\n    return true;\n  } else {\n    // For objects and arrays, the default diffing algorithm is a deep compare\n    return deepDiffer(prevProp, nextProp, deepDifferOptions);\n  }\n}\n\nfunction restoreDeletedValuesInNestedArray(\n  updatePayload: Object,\n  node: NestedNode,\n  validAttributes: AttributeConfiguration,\n) {\n  if (Array.isArray(node)) {\n    let i = node.length;\n    while (i-- && removedKeyCount > 0) {\n      restoreDeletedValuesInNestedArray(\n        updatePayload,\n        node[i],\n        validAttributes,\n      );\n    }\n  } else if (node && removedKeyCount > 0) {\n    const obj = node;\n    for (const propKey in removedKeys) {\n      // $FlowFixMe[incompatible-use] removedKeys is always non-null\n      if (!removedKeys[propKey]) {\n        continue;\n      }\n      let nextProp = obj[propKey];\n      if (nextProp === undefined) {\n        continue;\n      }\n\n      const attributeConfig = validAttributes[propKey];\n      if (!attributeConfig) {\n        continue; // not a valid native prop\n      }\n\n      if (typeof nextProp === 'function') {\n        // $FlowFixMe[incompatible-type] found when upgrading Flow\n        nextProp = true;\n      }\n      if (typeof nextProp === 'undefined') {\n        // $FlowFixMe[incompatible-type] found when upgrading Flow\n        nextProp = null;\n      }\n\n      if (typeof attributeConfig !== 'object') {\n        // case: !Object is the default case\n        updatePayload[propKey] = nextProp;\n      } else if (\n        typeof attributeConfig.diff === 'function' ||\n        typeof attributeConfig.process === 'function'\n      ) {\n        // case: CustomAttributeConfiguration\n        const nextValue =\n          typeof attributeConfig.process === 'function'\n            ? attributeConfig.process(nextProp)\n            : nextProp;\n        updatePayload[propKey] = nextValue;\n      }\n      // $FlowFixMe[incompatible-use] found when upgrading Flow\n      removedKeys[propKey] = false;\n      removedKeyCount--;\n    }\n  }\n}\n\nfunction diffNestedArrayProperty(\n  updatePayload: null | Object,\n  prevArray: Array<NestedNode>,\n  nextArray: Array<NestedNode>,\n  validAttributes: AttributeConfiguration,\n): null | Object {\n  const minLength =\n    prevArray.length < nextArray.length ? prevArray.length : nextArray.length;\n  let i;\n  for (i = 0; i < minLength; i++) {\n    // Diff any items in the array in the forward direction. Repeated keys\n    // will be overwritten by later values.\n    updatePayload = diffNestedProperty(\n      updatePayload,\n      prevArray[i],\n      nextArray[i],\n      validAttributes,\n    );\n  }\n  for (; i < prevArray.length; i++) {\n    // Clear out all remaining properties.\n    updatePayload = clearNestedProperty(\n      updatePayload,\n      prevArray[i],\n      validAttributes,\n    );\n  }\n  for (; i < nextArray.length; i++) {\n    // Add all remaining properties\n    const nextProp = nextArray[i];\n    if (!nextProp) {\n      continue;\n    }\n    updatePayload = addNestedProperty(updatePayload, nextProp, validAttributes);\n  }\n  return updatePayload;\n}\n\nfunction diffNestedProperty(\n  updatePayload: null | Object,\n  prevProp: NestedNode,\n  nextProp: NestedNode,\n  validAttributes: AttributeConfiguration,\n): null | Object {\n  if (!updatePayload && prevProp === nextProp) {\n    // If no properties have been added, then we can bail out quickly on object\n    // equality.\n    return updatePayload;\n  }\n\n  if (!prevProp || !nextProp) {\n    if (nextProp) {\n      return addNestedProperty(updatePayload, nextProp, validAttributes);\n    }\n    if (prevProp) {\n      return clearNestedProperty(updatePayload, prevProp, validAttributes);\n    }\n    return updatePayload;\n  }\n\n  if (!Array.isArray(prevProp) && !Array.isArray(nextProp)) {\n    // Both are leaves, we can diff the leaves.\n    return diffProperties(updatePayload, prevProp, nextProp, validAttributes);\n  }\n\n  if (Array.isArray(prevProp) && Array.isArray(nextProp)) {\n    // Both are arrays, we can diff the arrays.\n    return diffNestedArrayProperty(\n      updatePayload,\n      prevProp,\n      nextProp,\n      validAttributes,\n    );\n  }\n\n  if (Array.isArray(prevProp)) {\n    return diffProperties(\n      updatePayload,\n      flattenStyle(prevProp),\n      nextProp,\n      validAttributes,\n    );\n  }\n\n  return diffProperties(\n    updatePayload,\n    prevProp,\n    flattenStyle(nextProp),\n    validAttributes,\n  );\n}\n\n/**\n * clearNestedProperty takes a single set of props and valid attributes. It\n * adds a null sentinel to the updatePayload, for each prop key.\n */\nfunction clearNestedProperty(\n  updatePayload: null | Object,\n  prevProp: NestedNode,\n  validAttributes: AttributeConfiguration,\n): null | Object {\n  if (!prevProp) {\n    return updatePayload;\n  }\n\n  if (!Array.isArray(prevProp)) {\n    // Add each property of the leaf.\n    return clearProperties(updatePayload, prevProp, validAttributes);\n  }\n\n  for (let i = 0; i < prevProp.length; i++) {\n    // Add all the properties of the array.\n    updatePayload = clearNestedProperty(\n      updatePayload,\n      prevProp[i],\n      validAttributes,\n    );\n  }\n  return updatePayload;\n}\n\n/**\n * diffProperties takes two sets of props and a set of valid attributes\n * and write to updatePayload the values that changed or were deleted.\n * If no updatePayload is provided, a new one is created and returned if\n * anything changed.\n */\nfunction diffProperties(\n  updatePayload: null | Object,\n  prevProps: Object,\n  nextProps: Object,\n  validAttributes: AttributeConfiguration,\n): null | Object {\n  let attributeConfig;\n  let nextProp;\n  let prevProp;\n\n  for (const propKey in nextProps) {\n    attributeConfig = validAttributes[propKey];\n    if (!attributeConfig) {\n      continue; // not a valid native prop\n    }\n\n    prevProp = prevProps[propKey];\n    nextProp = nextProps[propKey];\n\n    if (typeof nextProp === 'function') {\n      const attributeConfigHasProcess =\n        typeof attributeConfig === 'object' &&\n        typeof attributeConfig.process === 'function';\n      if (!attributeConfigHasProcess) {\n        // functions are converted to booleans as markers that the associated\n        // events should be sent from native.\n        nextProp = (true: any);\n        // If nextProp is not a function, then don't bother changing prevProp\n        // since nextProp will win and go into the updatePayload regardless.\n        if (typeof prevProp === 'function') {\n          prevProp = (true: any);\n        }\n      }\n    }\n\n    // An explicit value of undefined is treated as a null because it overrides\n    // any other preceding value.\n    if (typeof nextProp === 'undefined') {\n      nextProp = (null: any);\n      if (typeof prevProp === 'undefined') {\n        prevProp = (null: any);\n      }\n    }\n\n    if (removedKeys) {\n      removedKeys[propKey] = false;\n    }\n\n    if (updatePayload && updatePayload[propKey] !== undefined) {\n      // Something else already triggered an update to this key because another\n      // value diffed. Since we're now later in the nested arrays our value is\n      // more important so we need to calculate it and override the existing\n      // value. It doesn't matter if nothing changed, we'll set it anyway.\n\n      // Pattern match on: attributeConfig\n      if (typeof attributeConfig !== 'object') {\n        // case: !Object is the default case\n        updatePayload[propKey] = nextProp;\n      } else if (\n        typeof attributeConfig.diff === 'function' ||\n        typeof attributeConfig.process === 'function'\n      ) {\n        // case: CustomAttributeConfiguration\n        const nextValue =\n          typeof attributeConfig.process === 'function'\n            ? attributeConfig.process(nextProp)\n            : nextProp;\n        updatePayload[propKey] = nextValue;\n      }\n      continue;\n    }\n\n    if (prevProp === nextProp) {\n      continue; // nothing changed\n    }\n\n    // Pattern match on: attributeConfig\n    if (typeof attributeConfig !== 'object') {\n      // case: !Object is the default case\n      if (defaultDiffer(prevProp, nextProp)) {\n        // a normal leaf has changed\n        (updatePayload || (updatePayload = ({}: {[string]: $FlowFixMe})))[\n          propKey\n        ] = nextProp;\n      }\n    } else if (\n      typeof attributeConfig.diff === 'function' ||\n      typeof attributeConfig.process === 'function'\n    ) {\n      // case: CustomAttributeConfiguration\n      const shouldUpdate =\n        prevProp === undefined ||\n        (typeof attributeConfig.diff === 'function'\n          ? attributeConfig.diff(prevProp, nextProp)\n          : defaultDiffer(prevProp, nextProp));\n      if (shouldUpdate) {\n        const nextValue =\n          typeof attributeConfig.process === 'function'\n            ? // $FlowFixMe[incompatible-use] found when upgrading Flow\n              attributeConfig.process(nextProp)\n            : nextProp;\n        (updatePayload || (updatePayload = ({}: {[string]: $FlowFixMe})))[\n          propKey\n        ] = nextValue;\n      }\n    } else {\n      // default: fallthrough case when nested properties are defined\n      removedKeys = null;\n      removedKeyCount = 0;\n      // We think that attributeConfig is not CustomAttributeConfiguration at\n      // this point so we assume it must be AttributeConfiguration.\n      updatePayload = diffNestedProperty(\n        updatePayload,\n        prevProp,\n        nextProp,\n        ((attributeConfig: any): AttributeConfiguration),\n      );\n      if (removedKeyCount > 0 && updatePayload) {\n        restoreDeletedValuesInNestedArray(\n          updatePayload,\n          nextProp,\n          ((attributeConfig: any): AttributeConfiguration),\n        );\n        removedKeys = null;\n      }\n    }\n  }\n\n  // Also iterate through all the previous props to catch any that have been\n  // removed and make sure native gets the signal so it can reset them to the\n  // default.\n  for (const propKey in prevProps) {\n    if (nextProps[propKey] !== undefined) {\n      continue; // we've already covered this key in the previous pass\n    }\n    attributeConfig = validAttributes[propKey];\n    if (!attributeConfig) {\n      continue; // not a valid native prop\n    }\n\n    if (updatePayload && updatePayload[propKey] !== undefined) {\n      // This was already updated to a diff result earlier.\n      continue;\n    }\n\n    prevProp = prevProps[propKey];\n    if (prevProp === undefined) {\n      continue; // was already empty anyway\n    }\n    // Pattern match on: attributeConfig\n    if (\n      typeof attributeConfig !== 'object' ||\n      typeof attributeConfig.diff === 'function' ||\n      typeof attributeConfig.process === 'function'\n    ) {\n      // case: CustomAttributeConfiguration | !Object\n      // Flag the leaf property for removal by sending a sentinel.\n      (updatePayload || (updatePayload = ({}: {[string]: $FlowFixMe})))[\n        propKey\n      ] = null;\n      if (!removedKeys) {\n        removedKeys = ({}: {[string]: boolean});\n      }\n      if (!removedKeys[propKey]) {\n        removedKeys[propKey] = true;\n        removedKeyCount++;\n      }\n    } else {\n      // default:\n      // This is a nested attribute configuration where all the properties\n      // were removed so we need to go through and clear out all of them.\n      updatePayload = clearNestedProperty(\n        updatePayload,\n        prevProp,\n        ((attributeConfig: any): AttributeConfiguration),\n      );\n    }\n  }\n  return updatePayload;\n}\n\nfunction addNestedProperty(\n  payload: null | Object,\n  props: Object,\n  validAttributes: AttributeConfiguration,\n): null | Object {\n  // Flatten nested style props.\n  if (Array.isArray(props)) {\n    for (let i = 0; i < props.length; i++) {\n      payload = addNestedProperty(payload, props[i], validAttributes);\n    }\n    return payload;\n  }\n\n  for (const propKey in props) {\n    const prop = props[propKey];\n\n    const attributeConfig = ((validAttributes[\n      propKey\n    ]: any): AttributeConfiguration);\n\n    if (attributeConfig == null) {\n      continue;\n    }\n\n    let newValue;\n\n    if (prop === undefined) {\n      // Discard the prop if it was previously defined.\n      if (payload && payload[propKey] !== undefined) {\n        newValue = null;\n      } else {\n        continue;\n      }\n    } else if (typeof attributeConfig === 'object') {\n      if (typeof attributeConfig.process === 'function') {\n        // An atomic prop with custom processing.\n        newValue = attributeConfig.process(prop);\n      } else if (typeof attributeConfig.diff === 'function') {\n        // An atomic prop with custom diffing. We don't need to do diffing when adding props.\n        newValue = prop;\n      }\n    } else {\n      if (typeof prop === 'function') {\n        // A function prop. It represents an event handler. Pass it to native as 'true'.\n        newValue = true;\n      } else {\n        // An atomic prop. Doesn't need to be flattened.\n        newValue = prop;\n      }\n    }\n\n    if (newValue !== undefined) {\n      if (!payload) {\n        payload = ({}: {[string]: $FlowFixMe});\n      }\n      payload[propKey] = newValue;\n      continue;\n    }\n\n    payload = addNestedProperty(payload, prop, attributeConfig);\n  }\n\n  return payload;\n}\n\n/**\n * clearProperties clears all the previous props by adding a null sentinel\n * to the payload for each valid key.\n */\nfunction clearProperties(\n  updatePayload: null | Object,\n  prevProps: Object,\n  validAttributes: AttributeConfiguration,\n): null | Object {\n  return diffProperties(updatePayload, prevProps, emptyObject, validAttributes);\n}\n\nexport function create(\n  props: Object,\n  validAttributes: AttributeConfiguration,\n): null | Object {\n  return addNestedProperty(null, props, validAttributes);\n}\n\nexport function diff(\n  prevProps: Object,\n  nextProps: Object,\n  validAttributes: AttributeConfiguration,\n): null | Object {\n  return diffProperties(\n    null, // updatePayload\n    prevProps,\n    nextProps,\n    validAttributes,\n  );\n}\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 * @flow strict-local\n * @format\n */\n\n/**\n * This module is meant to be used by the React renderers to create public\n * instances and get some data from them (like their instance handle / fiber).\n */\n\nimport type ReactNativeDocumentT from '../../../src/private/webapis/dom/nodes/ReactNativeDocument';\nimport typeof * as ReactNativeDocumentModuleT from '../../../src/private/webapis/dom/nodes/ReactNativeDocument';\nimport type ReactNativeElementT from '../../../src/private/webapis/dom/nodes/ReactNativeElement';\nimport type ReadOnlyTextT from '../../../src/private/webapis/dom/nodes/ReadOnlyText';\nimport typeof * as RendererProxyT from '../../ReactNative/RendererProxy';\nimport type {\n  InternalInstanceHandle,\n  Node,\n  ViewConfig,\n} from '../../Renderer/shims/ReactNativeTypes';\nimport type {RootTag} from '../RootTag';\nimport type ReactFabricHostComponentT from './ReactFabricHostComponent';\n\nimport * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';\n\nexport opaque type PublicRootInstance = mixed;\n\n// Lazy loaded to avoid evaluating the module when using the legacy renderer.\nlet ReactNativeDocumentModuleObject: ?ReactNativeDocumentModuleT;\nlet ReactFabricHostComponentClass: Class<ReactFabricHostComponentT>;\nlet ReactNativeElementClass: Class<ReactNativeElementT>;\nlet ReadOnlyTextClass: Class<ReadOnlyTextT>;\nlet RendererProxy: RendererProxyT;\n\nfunction getReactNativeDocumentModule(): ReactNativeDocumentModuleT {\n  if (ReactNativeDocumentModuleObject == null) {\n    // We initialize this lazily to avoid a require cycle.\n    ReactNativeDocumentModuleObject = require('../../../src/private/webapis/dom/nodes/ReactNativeDocument');\n  }\n\n  return ReactNativeDocumentModuleObject;\n}\n\nfunction getReactNativeElementClass(): Class<ReactNativeElementT> {\n  if (ReactNativeElementClass == null) {\n    ReactNativeElementClass =\n      require('../../../src/private/webapis/dom/nodes/ReactNativeElement').default;\n  }\n  return ReactNativeElementClass;\n}\n\nfunction getReactFabricHostComponentClass(): Class<ReactFabricHostComponentT> {\n  if (ReactFabricHostComponentClass == null) {\n    ReactFabricHostComponentClass =\n      require('./ReactFabricHostComponent').default;\n  }\n  return ReactFabricHostComponentClass;\n}\n\nfunction getReadOnlyTextClass(): Class<ReadOnlyTextT> {\n  if (ReadOnlyTextClass == null) {\n    ReadOnlyTextClass =\n      require('../../../src/private/webapis/dom/nodes/ReadOnlyText').default;\n  }\n  return ReadOnlyTextClass;\n}\n\nexport function createPublicRootInstance(rootTag: RootTag): PublicRootInstance {\n  if (ReactNativeFeatureFlags.enableAccessToHostTreeInFabric()) {\n    const ReactNativeDocumentModule = getReactNativeDocumentModule();\n\n    // $FlowExpectedError[incompatible-return]\n    return ReactNativeDocumentModule.createReactNativeDocument(rootTag);\n  }\n\n  // $FlowExpectedError[incompatible-return]\n  return null;\n}\n\nexport function createPublicInstance(\n  tag: number,\n  viewConfig: ViewConfig,\n  internalInstanceHandle: InternalInstanceHandle,\n  ownerDocument: ReactNativeDocumentT,\n): ReactFabricHostComponentT | ReactNativeElementT {\n  if (ReactNativeFeatureFlags.enableAccessToHostTreeInFabric()) {\n    const ReactNativeElement = getReactNativeElementClass();\n    return new ReactNativeElement(\n      tag,\n      viewConfig,\n      internalInstanceHandle,\n      ownerDocument,\n    );\n  } else {\n    const ReactFabricHostComponent = getReactFabricHostComponentClass();\n    return new ReactFabricHostComponent(\n      tag,\n      viewConfig,\n      internalInstanceHandle,\n    );\n  }\n}\n\nexport function createPublicTextInstance(\n  internalInstanceHandle: InternalInstanceHandle,\n  ownerDocument: ReactNativeDocumentT,\n): ReadOnlyTextT {\n  const ReadOnlyText = getReadOnlyTextClass();\n  return new ReadOnlyText(internalInstanceHandle, ownerDocument);\n}\n\nexport function getNativeTagFromPublicInstance(\n  publicInstance: ReactFabricHostComponentT | ReactNativeElementT,\n): number {\n  return publicInstance.__nativeTag;\n}\n\nexport function getNodeFromPublicInstance(\n  publicInstance: ReactFabricHostComponentT | ReactNativeElementT,\n): ?Node {\n  // Avoid loading ReactFabric if using an instance from the legacy renderer.\n  if (publicInstance.__internalInstanceHandle == null) {\n    return null;\n  }\n\n  if (RendererProxy == null) {\n    RendererProxy = require('../../ReactNative/RendererProxy');\n  }\n  return RendererProxy.getNodeFromInternalInstanceHandle(\n    // $FlowExpectedError[incompatible-call] __internalInstanceHandle is always an InternalInstanceHandle from React when we get here.\n    publicInstance.__internalInstanceHandle,\n  );\n}\n\nexport function getInternalInstanceHandleFromPublicInstance(\n  publicInstance: ReactFabricHostComponentT | ReactNativeElementT,\n): InternalInstanceHandle {\n  // TODO(T174762768): Remove this once OSS versions of renderers will be synced.\n  // $FlowExpectedError[prop-missing] Keeping this for backwards-compatibility with the renderers versions in open source.\n  if (publicInstance._internalInstanceHandle != null) {\n    // $FlowExpectedError[incompatible-return] Keeping this for backwards-compatibility with the renderers versions in open source.\n    return publicInstance._internalInstanceHandle;\n  }\n\n  // $FlowExpectedError[incompatible-return] __internalInstanceHandle is always an InternalInstanceHandle from React when we get here.\n  return publicInstance.__internalInstanceHandle;\n}\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 * @flow strict-local\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {RootTag} from '../../../../../Libraries/ReactNative/RootTag';\nimport type {ViewConfig} from '../../../../../Libraries/Renderer/shims/ReactNativeTypes';\nimport type HTMLCollection from '../oldstylecollections/HTMLCollection';\nimport type {ReactNativeDocumentInstanceHandle} from './internals/ReactNativeDocumentInstanceHandle';\nimport type ReadOnlyElement from './ReadOnlyElement';\n\nimport {createHTMLCollection} from '../oldstylecollections/HTMLCollection';\nimport {\n  createReactNativeDocumentElementInstanceHandle,\n  setNativeElementReferenceForReactNativeDocumentElementInstanceHandle,\n  setPublicInstanceForReactNativeDocumentElementInstanceHandle,\n} from './internals/ReactNativeDocumentElementInstanceHandle';\nimport {createReactNativeDocumentInstanceHandle} from './internals/ReactNativeDocumentInstanceHandle';\nimport ReactNativeElement from './ReactNativeElement';\nimport ReadOnlyNode from './ReadOnlyNode';\nimport NativeDOM from './specs/NativeDOM';\n\nexport default class ReactNativeDocument extends ReadOnlyNode {\n  _documentElement: ReactNativeElement;\n\n  constructor(\n    rootTag: RootTag,\n    instanceHandle: ReactNativeDocumentInstanceHandle,\n  ) {\n    super(instanceHandle, null);\n    this._documentElement = createDocumentElement(rootTag, this);\n  }\n\n  get childElementCount(): number {\n    // just `documentElement`.\n    return 1;\n  }\n\n  get children(): HTMLCollection<ReadOnlyElement> {\n    return createHTMLCollection([this.documentElement]);\n  }\n\n  get documentElement(): ReactNativeElement {\n    return this._documentElement;\n  }\n\n  get firstElementChild(): ReadOnlyElement | null {\n    return this.documentElement;\n  }\n\n  get lastElementChild(): ReadOnlyElement | null {\n    return this.documentElement;\n  }\n\n  get nodeName(): string {\n    return '#document';\n  }\n\n  get nodeType(): number {\n    return ReadOnlyNode.DOCUMENT_NODE;\n  }\n\n  get nodeValue(): null {\n    return null;\n  }\n\n  // $FlowExpectedError[incompatible-extend] This is defined as returning string in Node, but it's actually null in Document.\n  get textContent(): null {\n    return null;\n  }\n}\n\nfunction createDocumentElement(\n  rootTag: RootTag,\n  ownerDocument: ReactNativeDocument,\n): ReactNativeElement {\n  // In the case of the document object, React does not create an instance\n  // handle for it, so we create a custom one.\n  const instanceHandle = createReactNativeDocumentElementInstanceHandle();\n\n  // $FlowExpectedError[incompatible-type]\n  const rootTagIsNumber: number = rootTag;\n  // $FlowExpectedError[incompatible-type]\n  const viewConfig: ViewConfig = null;\n\n  const documentElement = new ReactNativeElement(\n    rootTagIsNumber,\n    viewConfig,\n    instanceHandle,\n    ownerDocument,\n  );\n\n  // The root shadow node was created ahead of time without an instance\n  // handle, so we need to link them now.\n  const rootShadowNode = NativeDOM.linkRootNode(rootTag, instanceHandle);\n  setNativeElementReferenceForReactNativeDocumentElementInstanceHandle(\n    instanceHandle,\n    rootShadowNode,\n  );\n  setPublicInstanceForReactNativeDocumentElementInstanceHandle(\n    instanceHandle,\n    documentElement,\n  );\n\n  return documentElement;\n}\n\nexport function createReactNativeDocument(\n  rootTag: RootTag,\n): ReactNativeDocument {\n  const instanceHandle = createReactNativeDocumentInstanceHandle(rootTag);\n  const document = new ReactNativeDocument(rootTag, instanceHandle);\n  return document;\n}\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {ArrayLike} from '../../utils/ArrayLikeUtils';\n\nimport {createValueIterator} from '../../utils/ArrayLikeUtils';\nimport {setPlatformObject} from '../../webidl/PlatformObjects';\n\n// IMPORTANT: The type definition for this module is defined in `HTMLCollection.js.flow`\n// because Flow only supports indexers in classes in declaration files.\n\n// $FlowIssue[prop-missing] Flow doesn't understand [Symbol.iterator]() {} and thinks this class doesn't implement the Iterable<T> interface.\nexport default class HTMLCollection<T> implements Iterable<T>, ArrayLike<T> {\n  #length: number;\n\n  /**\n   * Use `createHTMLCollection` to create instances of this class.\n   *\n   * @private This is not defined in the declaration file, so users will not see\n   *          the signature of the constructor.\n   */\n  constructor(elements: $ReadOnlyArray<T>) {\n    for (let i = 0; i < elements.length; i++) {\n      Object.defineProperty(this, i, {\n        value: elements[i],\n        enumerable: true,\n        configurable: false,\n        writable: false,\n      });\n    }\n\n    this.#length = elements.length;\n  }\n\n  get length(): number {\n    return this.#length;\n  }\n\n  item(index: number): T | null {\n    if (index < 0 || index >= this.#length) {\n      return null;\n    }\n\n    // assigning to the interface allows us to access the indexer property in a\n    // type-safe way.\n    // eslint-disable-next-line consistent-this\n    const arrayLike: ArrayLike<T> = this;\n    return arrayLike[index];\n  }\n\n  /**\n   * @deprecated Unused in React Native.\n   */\n  namedItem(name: string): T | null {\n    return null;\n  }\n\n  // $FlowIssue[unsupported-syntax] Flow does not support computed properties in classes.\n  [Symbol.iterator](): Iterator<T> {\n    return createValueIterator(this);\n  }\n}\n\nsetPlatformObject(HTMLCollection);\n\n/**\n * This is an internal method to create instances of `HTMLCollection`,\n * which avoids leaking its constructor to end users.\n * We can do that because the external definition of `HTMLCollection` lives in\n * `HTMLCollection.js.flow`, not here.\n */\nexport function createHTMLCollection<T>(\n  elements: $ReadOnlyArray<T>,\n): HTMLCollection<T> {\n  return new HTMLCollection(elements);\n}\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 * @flow strict\n * @format\n */\n\n/**\n * This definition is different from the current built-in type `$ArrayLike`\n * provided by Flow, in that this is an interface and that one is an object.\n *\n * The difference is important because, when using objects, Flow thinks\n * a `length` property would be copied over when using the spread operator,\n * which is incorrect.\n */\nexport interface ArrayLike<T> extends Iterable<T> {\n  // This property should've been read-only as well, but Flow doesn't handle\n  // read-only indexers correctly (thinks reads are writes and fails).\n  [indexer: number]: T;\n  +length: number;\n}\n\nexport function* createValueIterator<T>(arrayLike: ArrayLike<T>): Iterator<T> {\n  for (let i = 0; i < arrayLike.length; i++) {\n    yield arrayLike[i];\n  }\n}\n\nexport function* createKeyIterator<T>(\n  arrayLike: ArrayLike<T>,\n): Iterator<number> {\n  for (let i = 0; i < arrayLike.length; i++) {\n    yield i;\n  }\n}\n\nexport function* createEntriesIterator<T>(\n  arrayLike: ArrayLike<T>,\n): Iterator<[number, T]> {\n  for (let i = 0; i < arrayLike.length; i++) {\n    yield [i, arrayLike[i]];\n  }\n}\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 * @flow strict-local\n * @format\n */\n\nimport type ReadOnlyNode from '../ReadOnlyNode';\nimport type {NativeElementReference} from '../specs/NativeDOM';\n\nclass ReactNativeDocumentElementInstanceHandleImpl {\n  publicInstance: ?ReadOnlyNode;\n  nativeElementReference: ?NativeElementReference;\n}\n\nexport opaque type ReactNativeDocumentElementInstanceHandle = ReactNativeDocumentElementInstanceHandleImpl;\n\nexport function createReactNativeDocumentElementInstanceHandle(): ReactNativeDocumentElementInstanceHandle {\n  return new ReactNativeDocumentElementInstanceHandleImpl();\n}\n\nexport function getNativeElementReferenceFromReactNativeDocumentElementInstanceHandle(\n  instanceHandle: ReactNativeDocumentElementInstanceHandle,\n): ?NativeElementReference {\n  return instanceHandle.nativeElementReference;\n}\n\nexport function setNativeElementReferenceForReactNativeDocumentElementInstanceHandle(\n  instanceHandle: ReactNativeDocumentElementInstanceHandle,\n  nativeElementReference: ?NativeElementReference,\n): void {\n  instanceHandle.nativeElementReference = nativeElementReference;\n}\n\nexport function getPublicInstanceFromReactNativeDocumentElementInstanceHandle(\n  instanceHandle: ReactNativeDocumentElementInstanceHandle,\n): ?ReadOnlyNode {\n  return instanceHandle.publicInstance;\n}\n\nexport function setPublicInstanceForReactNativeDocumentElementInstanceHandle(\n  instanceHandle: ReactNativeDocumentElementInstanceHandle,\n  publicInstance: ?ReadOnlyNode,\n): void {\n  instanceHandle.publicInstance = publicInstance;\n}\n\nexport function isReactNativeDocumentElementInstanceHandle(\n  instanceHandle: mixed,\n): instanceHandle is ReactNativeDocumentElementInstanceHandle {\n  return instanceHandle instanceof ReactNativeDocumentElementInstanceHandleImpl;\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {RootTag} from '../../../../../../Libraries/ReactNative/RootTag';\nimport type ReactNativeDocument from '../ReactNativeDocument';\nimport type {NativeNodeReference} from '../specs/NativeDOM';\n\nimport * as RendererProxy from '../../../../../../Libraries/ReactNative/RendererProxy';\n\nexport opaque type ReactNativeDocumentInstanceHandle = RootTag;\n\nexport function createReactNativeDocumentInstanceHandle(\n  rootTag: RootTag,\n): ReactNativeDocumentInstanceHandle {\n  return rootTag;\n}\n\nexport function getNativeNodeReferenceFromReactNativeDocumentInstanceHandle(\n  instanceHandle: ReactNativeDocumentInstanceHandle,\n): ?NativeNodeReference {\n  return instanceHandle;\n}\n\nexport function getPublicInstanceFromReactNativeDocumentInstanceHandle(\n  instanceHandle: ReactNativeDocumentInstanceHandle,\n): ?ReactNativeDocument {\n  // $FlowExpectedError[incompatible-return] React defines public instances as \"mixed\" because it can't access the definition from React Native.\n  return RendererProxy.getPublicInstanceFromRootTag(Number(instanceHandle));\n}\n\nexport function isReactNativeDocumentInstanceHandle(\n  instanceHandle: mixed,\n  // $FlowExpectedError[incompatible-type-guard]\n): instanceHandle is ReactNativeDocumentInstanceHandle {\n  // $FlowFixMe[incompatible-type-guard]\n  return typeof instanceHandle === 'number' && instanceHandle % 10 === 1;\n}\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 * @flow strict-local\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {\n  InternalInstanceHandle,\n  ViewConfig,\n} from '../../../../../Libraries/Renderer/shims/ReactNativeTypes';\nimport type {\n  HostInstance,\n  MeasureInWindowOnSuccessCallback,\n  MeasureLayoutOnSuccessCallback,\n  MeasureOnSuccessCallback,\n  NativeMethods,\n} from '../../../types/HostInstance';\nimport type {InstanceHandle} from './internals/NodeInternals';\nimport type ReactNativeDocument from './ReactNativeDocument';\n\nimport TextInputState from '../../../../../Libraries/Components/TextInput/TextInputState';\nimport {create as createAttributePayload} from '../../../../../Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload';\nimport warnForStyleProps from '../../../../../Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps';\nimport {\n  getNativeElementReference,\n  getPublicInstanceFromInstanceHandle,\n  setInstanceHandle,\n  setOwnerDocument,\n} from './internals/NodeInternals';\nimport ReadOnlyElement, {getBoundingClientRect} from './ReadOnlyElement';\nimport NativeDOM from './specs/NativeDOM';\n\nconst noop = () => {};\n\n// Ideally, this class would be exported as-is, but this implementation is\n// significantly slower than the existing `ReactFabricHostComponent`.\n// This is a very hot code path (this class is instantiated once per rendered\n// host component in the tree) and we can't regress performance here.\n//\n// This implementation is slower because this is a subclass and we have to call\n// super(), which is a very slow operation the way that Babel transforms it at\n// the moment.\n//\n// The optimization we're doing is using an old-style function constructor,\n// where we're not required to use `super()`, and we make that constructor\n// extend this class so it inherits all the methods and it sets the class\n// hierarchy correctly.\n//\n// An alternative implementation was to implement the constructor as a function\n// returning a manually constructed instance using `Object.create()` but that\n// was slower than this method because the engine has to create an object than\n// we then discard to create a new one.\n\nclass ReactNativeElement extends ReadOnlyElement implements NativeMethods {\n  // These need to be accessible from `ReactFabricPublicInstanceUtils`.\n  __nativeTag: number;\n  __internalInstanceHandle: InstanceHandle;\n\n  __viewConfig: ViewConfig;\n\n  // This constructor isn't really used. See the `ReactNativeElement` function\n  // below.\n  constructor(\n    tag: number,\n    viewConfig: ViewConfig,\n    instanceHandle: InstanceHandle,\n    ownerDocument: ReactNativeDocument,\n  ) {\n    super(instanceHandle, ownerDocument);\n\n    this.__nativeTag = tag;\n    this.__internalInstanceHandle = instanceHandle;\n    this.__viewConfig = viewConfig;\n  }\n\n  get offsetHeight(): number {\n    return Math.round(\n      getBoundingClientRect(this, {includeTransform: false}).height,\n    );\n  }\n\n  get offsetLeft(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const offset = NativeDOM.getOffset(node);\n      return Math.round(offset[2]);\n    }\n\n    return 0;\n  }\n\n  get offsetParent(): ReadOnlyElement | null {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const offset = NativeDOM.getOffset(node);\n      // For children of the root node we currently return offset data\n      // but a `null` parent because the root node is not accessible\n      // in JavaScript yet.\n      if (offset[0] != null) {\n        const offsetParentInstanceHandle = offset[0];\n        const offsetParent = getPublicInstanceFromInstanceHandle(\n          offsetParentInstanceHandle,\n        );\n        // $FlowExpectedError[incompatible-type] The value returned by `getOffset` is always an instance handle for `ReadOnlyElement`.\n        const offsetParentElement: ReadOnlyElement | null = offsetParent;\n        return offsetParentElement;\n      }\n    }\n\n    return null;\n  }\n\n  get offsetTop(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const offset = NativeDOM.getOffset(node);\n      return Math.round(offset[1]);\n    }\n\n    return 0;\n  }\n\n  get offsetWidth(): number {\n    return Math.round(\n      getBoundingClientRect(this, {includeTransform: false}).width,\n    );\n  }\n\n  /**\n   * React Native compatibility methods\n   */\n\n  blur(): void {\n    TextInputState.blurTextInput(this);\n  }\n\n  focus() {\n    TextInputState.focusTextInput(this);\n  }\n\n  measure(callback: MeasureOnSuccessCallback) {\n    const node = getNativeElementReference(this);\n    if (node != null) {\n      NativeDOM.measure(node, callback);\n    }\n  }\n\n  measureInWindow(callback: MeasureInWindowOnSuccessCallback) {\n    const node = getNativeElementReference(this);\n    if (node != null) {\n      NativeDOM.measureInWindow(node, callback);\n    }\n  }\n\n  measureLayout(\n    relativeToNativeNode: number | HostInstance,\n    onSuccess: MeasureLayoutOnSuccessCallback,\n    onFail?: () => void /* currently unused */,\n  ) {\n    if (!(relativeToNativeNode instanceof ReactNativeElement)) {\n      if (__DEV__) {\n        console.error(\n          'Warning: ref.measureLayout must be called with a ref to a native component.',\n        );\n      }\n\n      return;\n    }\n\n    const toStateNode = getNativeElementReference(this);\n    const fromStateNode = getNativeElementReference(relativeToNativeNode);\n\n    if (toStateNode != null && fromStateNode != null) {\n      NativeDOM.measureLayout(\n        toStateNode,\n        fromStateNode,\n        onFail != null ? onFail : noop,\n        onSuccess != null ? onSuccess : noop,\n      );\n    }\n  }\n\n  setNativeProps(nativeProps: {...}): void {\n    if (__DEV__) {\n      warnForStyleProps(nativeProps, this.__viewConfig.validAttributes);\n    }\n\n    const updatePayload = createAttributePayload(\n      nativeProps,\n      this.__viewConfig.validAttributes,\n    );\n\n    const node = getNativeElementReference(this);\n\n    if (node != null && updatePayload != null) {\n      NativeDOM.setNativeProps(node, updatePayload);\n    }\n  }\n}\n\ntype ReactNativeElementT = ReactNativeElement;\n\nfunction replaceConstructorWithoutSuper(\n  ReactNativeElementClass: Class<ReactNativeElementT>,\n): Class<ReactNativeElementT> {\n  // Alternative constructor just implemented to provide a better performance than\n  // calling super() in the original class.\n  // eslint-disable-next-line no-shadow\n  function ReactNativeElement(\n    this: ReactNativeElementT,\n    tag: number,\n    viewConfig: ViewConfig,\n    internalInstanceHandle: InternalInstanceHandle,\n    ownerDocument: ReactNativeDocument,\n  ) {\n    // Inlined from `ReadOnlyNode`\n    setOwnerDocument(this, ownerDocument);\n    setInstanceHandle(this, internalInstanceHandle);\n\n    this.__nativeTag = tag;\n    this.__internalInstanceHandle = internalInstanceHandle;\n    this.__viewConfig = viewConfig;\n  }\n\n  ReactNativeElement.prototype = ReactNativeElementClass.prototype;\n\n  // $FlowExpectedError[incompatible-return]\n  return ReactNativeElement;\n}\n\nexport default replaceConstructorWithoutSuper(\n  ReactNativeElement,\n) as typeof ReactNativeElement;\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 * @flow strict-local\n * @format\n */\n\nimport type {AttributeConfiguration} from '../../Renderer/shims/ReactNativeTypes';\n\nexport default function warnForStyleProps(\n  props: {...},\n  validAttributes: AttributeConfiguration,\n): void {\n  if (__DEV__) {\n    for (const key in validAttributes.style) {\n      // $FlowFixMe[invalid-computed-prop]\n      if (!(validAttributes[key] || props[key] === undefined)) {\n        console.error(\n          'You are setting the style `{ %s' +\n            ': ... }` as a prop. You ' +\n            'should nest it in a style object. ' +\n            'E.g. `{ style: { %s' +\n            ': ... } }`',\n          key,\n          key,\n        );\n      }\n    }\n  }\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {InternalInstanceHandle} from '../../../../../../Libraries/Renderer/shims/ReactNativeTypes';\nimport type ReactNativeDocument from '../ReactNativeDocument';\nimport type ReadOnlyCharacterData from '../ReadOnlyCharacterData';\nimport type ReadOnlyElement from '../ReadOnlyElement';\nimport type ReadOnlyNode from '../ReadOnlyNode';\nimport type {\n  NativeElementReference,\n  NativeNodeReference,\n  NativeTextReference,\n} from '../specs/NativeDOM';\nimport type {ReactNativeDocumentElementInstanceHandle} from './ReactNativeDocumentElementInstanceHandle';\nimport type {ReactNativeDocumentInstanceHandle} from './ReactNativeDocumentInstanceHandle';\n\nimport {\n  getNativeElementReferenceFromReactNativeDocumentElementInstanceHandle,\n  getPublicInstanceFromReactNativeDocumentElementInstanceHandle,\n  isReactNativeDocumentElementInstanceHandle,\n} from './ReactNativeDocumentElementInstanceHandle';\nimport {\n  getNativeNodeReferenceFromReactNativeDocumentInstanceHandle,\n  getPublicInstanceFromReactNativeDocumentInstanceHandle,\n  isReactNativeDocumentInstanceHandle,\n} from './ReactNativeDocumentInstanceHandle';\n\nexport type InstanceHandle =\n  | InternalInstanceHandle // component managed by React\n  | ReactNativeDocumentElementInstanceHandle // root element managed by React Native\n  | ReactNativeDocumentInstanceHandle; // document node managed by React Native\n\nlet RendererProxy;\nfunction getRendererProxy() {\n  if (RendererProxy == null) {\n    // Lazy import Fabric here to avoid DOM Node APIs classes from having side-effects.\n    // With a static import we can't use these classes for Paper-only variants.\n    RendererProxy = require('../../../../../../Libraries/ReactNative/RendererProxy');\n  }\n  return RendererProxy;\n}\n\nconst INSTANCE_HANDLE_KEY = Symbol('internalInstanceHandle');\nconst OWNER_DOCUMENT_KEY = Symbol('ownerDocument');\n\nexport function getInstanceHandle(node: ReadOnlyNode): InstanceHandle {\n  // $FlowExpectedError[prop-missing]\n  return node[INSTANCE_HANDLE_KEY];\n}\n\nexport function setInstanceHandle(\n  node: ReadOnlyNode,\n  instanceHandle: InstanceHandle,\n): void {\n  // $FlowExpectedError[prop-missing]\n  node[INSTANCE_HANDLE_KEY] = instanceHandle;\n}\n\nexport function getOwnerDocument(\n  node: ReadOnlyNode,\n): ReactNativeDocument | null {\n  // $FlowExpectedError[prop-missing]\n  return node[OWNER_DOCUMENT_KEY] ?? null;\n}\n\nexport function setOwnerDocument(\n  node: ReadOnlyNode,\n  ownerDocument: ReactNativeDocument | null,\n): void {\n  // $FlowExpectedError[prop-missing]\n  node[OWNER_DOCUMENT_KEY] = ownerDocument;\n}\n\nexport function getPublicInstanceFromInstanceHandle(\n  instanceHandle: InstanceHandle,\n): ?ReadOnlyNode {\n  if (isReactNativeDocumentInstanceHandle(instanceHandle)) {\n    return getPublicInstanceFromReactNativeDocumentInstanceHandle(\n      instanceHandle,\n    );\n  }\n\n  if (isReactNativeDocumentElementInstanceHandle(instanceHandle)) {\n    return getPublicInstanceFromReactNativeDocumentElementInstanceHandle(\n      instanceHandle,\n    );\n  }\n\n  const mixedPublicInstance =\n    getRendererProxy().getPublicInstanceFromInternalInstanceHandle(\n      instanceHandle,\n    );\n\n  // $FlowExpectedError[incompatible-return] React defines public instances as \"mixed\" because it can't access the definition from React Native.\n  return mixedPublicInstance;\n}\n\nexport function getNativeNodeReference(\n  node: ReadOnlyNode,\n): ?NativeNodeReference {\n  const instanceHandle = getInstanceHandle(node);\n\n  if (isReactNativeDocumentInstanceHandle(instanceHandle)) {\n    return getNativeNodeReferenceFromReactNativeDocumentInstanceHandle(\n      instanceHandle,\n    );\n  }\n\n  if (isReactNativeDocumentElementInstanceHandle(instanceHandle)) {\n    return getNativeElementReferenceFromReactNativeDocumentElementInstanceHandle(\n      instanceHandle,\n    );\n  }\n\n  // $FlowExpectedError[incompatible-return]\n  return getRendererProxy().getNodeFromInternalInstanceHandle(instanceHandle);\n}\n\nexport function getNativeElementReference(\n  node: ReadOnlyElement,\n): ?NativeElementReference {\n  // $FlowExpectedError[incompatible-cast] We know ReadOnlyElement instances provide InternalInstanceHandle\n  const instanceHandle = getInstanceHandle(node) as InternalInstanceHandle;\n\n  if (isReactNativeDocumentElementInstanceHandle(instanceHandle)) {\n    return getNativeElementReferenceFromReactNativeDocumentElementInstanceHandle(\n      instanceHandle,\n    );\n  }\n\n  // $FlowExpectedError[incompatible-return]\n  return getRendererProxy().getNodeFromInternalInstanceHandle(instanceHandle);\n}\n\nexport function getNativeTextReference(\n  node: ReadOnlyCharacterData,\n): ?NativeTextReference {\n  // $FlowExpectedError[incompatible-cast] We know ReadOnlyText instances provide InternalInstanceHandle\n  const instanceHandle = getInstanceHandle(node) as InternalInstanceHandle;\n\n  // $FlowExpectedError[incompatible-return]\n  return getRendererProxy().getNodeFromInternalInstanceHandle(instanceHandle);\n}\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 * @flow strict-local\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type HTMLCollection from '../oldstylecollections/HTMLCollection';\n\nimport DOMRect from '../../geometry/DOMRect';\nimport {createHTMLCollection} from '../oldstylecollections/HTMLCollection';\nimport {\n  getInstanceHandle,\n  getNativeElementReference,\n} from './internals/NodeInternals';\nimport {getElementSibling} from './internals/Traversal';\nimport ReadOnlyNode, {getChildNodes} from './ReadOnlyNode';\nimport NativeDOM from './specs/NativeDOM';\n\nexport default class ReadOnlyElement extends ReadOnlyNode {\n  get childElementCount(): number {\n    return getChildElements(this).length;\n  }\n\n  get children(): HTMLCollection<ReadOnlyElement> {\n    return createHTMLCollection(getChildElements(this));\n  }\n\n  get clientHeight(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const innerSize = NativeDOM.getInnerSize(node);\n      return innerSize[1];\n    }\n\n    return 0;\n  }\n\n  get clientLeft(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const borderSize = NativeDOM.getBorderWidth(node);\n      return borderSize[3];\n    }\n\n    return 0;\n  }\n\n  get clientTop(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const borderSize = NativeDOM.getBorderWidth(node);\n      return borderSize[0];\n    }\n\n    return 0;\n  }\n\n  get clientWidth(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const innerSize = NativeDOM.getInnerSize(node);\n      return innerSize[0];\n    }\n\n    return 0;\n  }\n\n  get firstElementChild(): ReadOnlyElement | null {\n    const childElements = getChildElements(this);\n\n    if (childElements.length === 0) {\n      return null;\n    }\n\n    return childElements[0];\n  }\n\n  get id(): string {\n    const instanceHandle = getInstanceHandle(this);\n    // TODO: migrate off this private React API\n    // $FlowExpectedError[incompatible-use]\n    const props = instanceHandle?.stateNode?.canonical?.currentProps;\n    return props?.id ?? props?.nativeID ?? '';\n  }\n\n  get lastElementChild(): ReadOnlyElement | null {\n    const childElements = getChildElements(this);\n\n    if (childElements.length === 0) {\n      return null;\n    }\n\n    return childElements[childElements.length - 1];\n  }\n\n  get nextElementSibling(): ReadOnlyElement | null {\n    return getElementSibling(this, 'next');\n  }\n\n  get nodeName(): string {\n    return this.tagName;\n  }\n\n  get nodeType(): number {\n    return ReadOnlyNode.ELEMENT_NODE;\n  }\n\n  get nodeValue(): string | null {\n    return null;\n  }\n\n  set nodeValue(value: string): void {}\n\n  get previousElementSibling(): ReadOnlyElement | null {\n    return getElementSibling(this, 'previous');\n  }\n\n  get scrollHeight(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const scrollSize = NativeDOM.getScrollSize(node);\n      return scrollSize[1];\n    }\n\n    return 0;\n  }\n\n  get scrollLeft(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const scrollPosition = NativeDOM.getScrollPosition(node);\n      return scrollPosition[0];\n    }\n\n    return 0;\n  }\n\n  get scrollTop(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const scrollPosition = NativeDOM.getScrollPosition(node);\n      return scrollPosition[1];\n    }\n\n    return 0;\n  }\n\n  get scrollWidth(): number {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      const scrollSize = NativeDOM.getScrollSize(node);\n      return scrollSize[0];\n    }\n\n    return 0;\n  }\n\n  get tagName(): string {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      return NativeDOM.getTagName(node);\n    }\n\n    return '';\n  }\n\n  get textContent(): string {\n    const node = getNativeElementReference(this);\n\n    if (node != null) {\n      return NativeDOM.getTextContent(node);\n    }\n\n    return '';\n  }\n\n  getBoundingClientRect(): DOMRect {\n    return getBoundingClientRect(this, {includeTransform: true});\n  }\n\n  /**\n   * Pointer Capture APIs\n   */\n  hasPointerCapture(pointerId: number): boolean {\n    const node = getNativeElementReference(this);\n    if (node != null) {\n      return NativeDOM.hasPointerCapture(node, pointerId);\n    }\n    return false;\n  }\n\n  setPointerCapture(pointerId: number): void {\n    const node = getNativeElementReference(this);\n    if (node != null) {\n      NativeDOM.setPointerCapture(node, pointerId);\n    }\n  }\n\n  releasePointerCapture(pointerId: number): void {\n    const node = getNativeElementReference(this);\n    if (node != null) {\n      NativeDOM.releasePointerCapture(node, pointerId);\n    }\n  }\n}\n\nfunction getChildElements(node: ReadOnlyNode): $ReadOnlyArray<ReadOnlyElement> {\n  // $FlowIssue[incompatible-call]\n  return getChildNodes(node).filter(\n    childNode => childNode instanceof ReadOnlyElement,\n  );\n}\n\n/**\n * The public API for `getBoundingClientRect` always includes transform,\n * so we use this internal version to get the data without transform to\n * implement methods like `offsetWidth` and `offsetHeight`.\n */\nexport function getBoundingClientRect(\n  element: ReadOnlyElement,\n  {includeTransform}: {includeTransform: boolean},\n): DOMRect {\n  const node = getNativeElementReference(element);\n\n  if (node != null) {\n    const rect = NativeDOM.getBoundingClientRect(node, includeTransform);\n    return new DOMRect(rect[0], rect[1], rect[2], rect[3]);\n  }\n\n  // Empty rect if any of the above failed\n  return new DOMRect(0, 0, 0, 0);\n}\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 * @flow strict\n * @format\n */\n\n/**\n * The JSDoc comments in this file have been extracted from [DOMRect](https://developer.mozilla.org/en-US/docs/Web/API/DOMRect).\n * Content by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/DOMRect/contributors.txt),\n * licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).\n */\n\nimport {setPlatformObject} from '../webidl/PlatformObjects';\nimport DOMRectReadOnly, {type DOMRectInit} from './DOMRectReadOnly';\n\n// flowlint unsafe-getters-setters:off\n\n/**\n * A `DOMRect` describes the size and position of a rectangle.\n * The type of box represented by the `DOMRect` is specified by the method or property that returned it.\n *\n * This is a (mostly) spec-compliant version of `DOMRect` (https://developer.mozilla.org/en-US/docs/Web/API/DOMRect).\n */\nexport default class DOMRect extends DOMRectReadOnly {\n  /**\n   * The x coordinate of the `DOMRect`'s origin.\n   */\n  get x(): number {\n    return this.__getInternalX();\n  }\n\n  set x(x: ?number) {\n    this.__setInternalX(x);\n  }\n\n  /**\n   * The y coordinate of the `DOMRect`'s origin.\n   */\n  get y(): number {\n    return this.__getInternalY();\n  }\n\n  set y(y: ?number) {\n    this.__setInternalY(y);\n  }\n\n  /**\n   * The width of the `DOMRect`.\n   */\n  get width(): number {\n    return this.__getInternalWidth();\n  }\n\n  set width(width: ?number) {\n    this.__setInternalWidth(width);\n  }\n\n  /**\n   * The height of the `DOMRect`.\n   */\n  get height(): number {\n    return this.__getInternalHeight();\n  }\n\n  set height(height: ?number) {\n    this.__setInternalHeight(height);\n  }\n\n  /**\n   * Creates a new `DOMRect` object with a given location and dimensions.\n   */\n  static fromRect(rect?: ?DOMRectInit): DOMRect {\n    if (!rect) {\n      return new DOMRect();\n    }\n\n    return new DOMRect(rect.x, rect.y, rect.width, rect.height);\n  }\n}\n\nsetPlatformObject(DOMRect, {\n  clone: rect => new DOMRect(rect.x, rect.y, rect.width, rect.height),\n});\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 * @flow strict\n * @format\n */\n\n/**\n * The JSDoc comments in this file have been extracted from [DOMRectReadOnly](https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly).\n * Content by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly/contributors.txt),\n * licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).\n */\n\nimport {setPlatformObject} from '../webidl/PlatformObjects';\n\n// flowlint sketchy-null:off, unsafe-getters-setters:off\n\nexport interface DOMRectInit {\n  x?: ?number;\n  y?: ?number;\n  width?: ?number;\n  height?: ?number;\n}\n\nfunction castToNumber(value: mixed): number {\n  return value ? Number(value) : 0;\n}\n\n/**\n * The `DOMRectReadOnly` interface specifies the standard properties used by `DOMRect` to define a rectangle whose properties are immutable.\n *\n * This is a (mostly) spec-compliant version of `DOMRectReadOnly` (https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly).\n */\nexport default class DOMRectReadOnly {\n  #x: number;\n  #y: number;\n  #width: number;\n  #height: number;\n\n  constructor(x: ?number, y: ?number, width: ?number, height: ?number) {\n    this.__setInternalX(x);\n    this.__setInternalY(y);\n    this.__setInternalWidth(width);\n    this.__setInternalHeight(height);\n  }\n\n  /**\n   * The x coordinate of the `DOMRectReadOnly`'s origin.\n   */\n  get x(): number {\n    return this.#x;\n  }\n\n  /**\n   * The y coordinate of the `DOMRectReadOnly`'s origin.\n   */\n  get y(): number {\n    return this.#y;\n  }\n\n  /**\n   * The width of the `DOMRectReadOnly`.\n   */\n  get width(): number {\n    return this.#width;\n  }\n\n  /**\n   * The height of the `DOMRectReadOnly`.\n   */\n  get height(): number {\n    return this.#height;\n  }\n\n  /**\n   * Returns the top coordinate value of the `DOMRect` (has the same value as `y`, or `y + height` if `height` is negative).\n   */\n  get top(): number {\n    const height = this.#height;\n    const y = this.#y;\n\n    if (height < 0) {\n      return y + height;\n    }\n\n    return y;\n  }\n\n  /**\n   * Returns the right coordinate value of the `DOMRect` (has the same value as ``x + width`, or `x` if `width` is negative).\n   */\n  get right(): number {\n    const width = this.#width;\n    const x = this.#x;\n\n    if (width < 0) {\n      return x;\n    }\n\n    return x + width;\n  }\n\n  /**\n   * Returns the bottom coordinate value of the `DOMRect` (has the same value as `y + height`, or `y` if `height` is negative).\n   */\n  get bottom(): number {\n    const height = this.#height;\n    const y = this.#y;\n\n    if (height < 0) {\n      return y;\n    }\n\n    return y + height;\n  }\n\n  /**\n   * Returns the left coordinate value of the `DOMRect` (has the same value as `x`, or `x + width` if `width` is negative).\n   */\n  get left(): number {\n    const width = this.#width;\n    const x = this.#x;\n\n    if (width < 0) {\n      return x + width;\n    }\n\n    return x;\n  }\n\n  toJSON(): {\n    x: number,\n    y: number,\n    width: number,\n    height: number,\n    top: number,\n    left: number,\n    bottom: number,\n    right: number,\n  } {\n    const {x, y, width, height, top, left, bottom, right} = this;\n    return {x, y, width, height, top, left, bottom, right};\n  }\n\n  /**\n   * Creates a new `DOMRectReadOnly` object with a given location and dimensions.\n   */\n  static fromRect(rect?: ?DOMRectInit): DOMRectReadOnly {\n    if (!rect) {\n      return new DOMRectReadOnly();\n    }\n\n    return new DOMRectReadOnly(rect.x, rect.y, rect.width, rect.height);\n  }\n\n  __getInternalX(): number {\n    return this.#x;\n  }\n\n  __getInternalY(): number {\n    return this.#y;\n  }\n\n  __getInternalWidth(): number {\n    return this.#width;\n  }\n\n  __getInternalHeight(): number {\n    return this.#height;\n  }\n\n  __setInternalX(x: ?number) {\n    this.#x = castToNumber(x);\n  }\n\n  __setInternalY(y: ?number) {\n    this.#y = castToNumber(y);\n  }\n\n  __setInternalWidth(width: ?number) {\n    this.#width = castToNumber(width);\n  }\n\n  __setInternalHeight(height: ?number) {\n    this.#height = castToNumber(height);\n  }\n}\n\nsetPlatformObject(DOMRectReadOnly, {\n  clone: rect => new DOMRectReadOnly(rect.x, rect.y, rect.width, rect.height),\n});\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 * @flow strict-local\n * @format\n */\n\nimport type ReadOnlyElement from '../ReadOnlyElement';\nimport type ReadOnlyNode from '../ReadOnlyNode';\n\nimport {getChildNodes} from '../ReadOnlyNode';\n\n// We initialize this lazily to avoid a require cycle\n// (`ReadOnlyElement` also depends on `Traversal`).\nlet ReadOnlyElementClass: Class<ReadOnlyElement>;\n\nexport function getElementSibling(\n  node: ReadOnlyNode,\n  direction: 'next' | 'previous',\n): ReadOnlyElement | null {\n  const parent = node.parentNode;\n  if (parent == null) {\n    // This node is the root or it's disconnected.\n    return null;\n  }\n\n  const childNodes = getChildNodes(parent);\n\n  const startPosition = childNodes.indexOf(node);\n  if (startPosition === -1) {\n    return null;\n  }\n\n  const increment = direction === 'next' ? 1 : -1;\n\n  let position = startPosition + increment;\n\n  if (ReadOnlyElementClass == null) {\n    // We initialize this lazily to avoid a require cycle.\n    ReadOnlyElementClass = require('../ReadOnlyElement').default;\n  }\n\n  while (\n    childNodes[position] != null &&\n    !(childNodes[position] instanceof ReadOnlyElementClass)\n  ) {\n    position = position + increment;\n  }\n\n  return childNodes[position] ?? null;\n}\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 * @flow strict-local\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type NodeList from '../oldstylecollections/NodeList';\nimport type {InstanceHandle} from './internals/NodeInternals';\nimport type ReactNativeDocument from './ReactNativeDocument';\nimport type ReadOnlyElement from './ReadOnlyElement';\n\nimport {setPlatformObject} from '../../webidl/PlatformObjects';\nimport {createNodeList} from '../oldstylecollections/NodeList';\nimport {\n  getNativeNodeReference,\n  getOwnerDocument,\n  getPublicInstanceFromInstanceHandle,\n  setInstanceHandle,\n  setOwnerDocument,\n} from './internals/NodeInternals';\nimport NativeDOM from './specs/NativeDOM';\n\nexport default class ReadOnlyNode {\n  constructor(\n    instanceHandle: InstanceHandle,\n    // This will be null for the document node itself.\n    ownerDocument: ReactNativeDocument | null,\n  ) {\n    // This constructor is inlined in `ReactNativeElement` so if you modify\n    // this make sure that their implementation stays in sync.\n    setOwnerDocument(this, ownerDocument);\n    setInstanceHandle(this, instanceHandle);\n  }\n\n  get childNodes(): NodeList<ReadOnlyNode> {\n    const childNodes = getChildNodes(this);\n    return createNodeList(childNodes);\n  }\n\n  get firstChild(): ReadOnlyNode | null {\n    const childNodes = getChildNodes(this);\n\n    if (childNodes.length === 0) {\n      return null;\n    }\n\n    return childNodes[0];\n  }\n\n  get isConnected(): boolean {\n    const shadowNode = getNativeNodeReference(this);\n\n    if (shadowNode == null) {\n      return false;\n    }\n\n    return NativeDOM.isConnected(shadowNode);\n  }\n\n  get lastChild(): ReadOnlyNode | null {\n    const childNodes = getChildNodes(this);\n\n    if (childNodes.length === 0) {\n      return null;\n    }\n\n    return childNodes[childNodes.length - 1];\n  }\n\n  get nextSibling(): ReadOnlyNode | null {\n    const [siblings, position] = getNodeSiblingsAndPosition(this);\n\n    if (position === siblings.length - 1) {\n      // this node is the last child of its parent, so there is no next sibling.\n      return null;\n    }\n\n    return siblings[position + 1];\n  }\n\n  /**\n   * @abstract\n   */\n  get nodeName(): string {\n    throw new TypeError(\n      '`nodeName` is abstract and must be implemented in a subclass of `ReadOnlyNode`',\n    );\n  }\n\n  /**\n   * @abstract\n   */\n  get nodeType(): number {\n    throw new TypeError(\n      '`nodeType` is abstract and must be implemented in a subclass of `ReadOnlyNode`',\n    );\n  }\n\n  /**\n   * @abstract\n   */\n  get nodeValue(): string | null {\n    throw new TypeError(\n      '`nodeValue` is abstract and must be implemented in a subclass of `ReadOnlyNode`',\n    );\n  }\n\n  get ownerDocument(): ReactNativeDocument | null {\n    return getOwnerDocument(this);\n  }\n\n  get parentElement(): ReadOnlyElement | null {\n    const parentNode = this.parentNode;\n\n    if (parentNode instanceof getReadOnlyElementClass()) {\n      return parentNode;\n    }\n\n    return null;\n  }\n\n  get parentNode(): ReadOnlyNode | null {\n    const shadowNode = getNativeNodeReference(this);\n\n    if (shadowNode == null) {\n      return null;\n    }\n\n    const parentInstanceHandle = NativeDOM.getParentNode(shadowNode);\n\n    if (parentInstanceHandle == null) {\n      return null;\n    }\n\n    return getPublicInstanceFromInstanceHandle(parentInstanceHandle) ?? null;\n  }\n\n  get previousSibling(): ReadOnlyNode | null {\n    const [siblings, position] = getNodeSiblingsAndPosition(this);\n\n    if (position === 0) {\n      // this node is the first child of its parent, so there is no previous sibling.\n      return null;\n    }\n\n    return siblings[position - 1];\n  }\n\n  /**\n   * @abstract\n   */\n  get textContent(): string {\n    throw new TypeError(\n      '`textContent` is abstract and must be implemented in a subclass of `ReadOnlyNode`',\n    );\n  }\n\n  compareDocumentPosition(otherNode: ReadOnlyNode): number {\n    // Quick check to avoid having to call into Fabric if the nodes are the same.\n    if (otherNode === this) {\n      return 0;\n    }\n\n    const shadowNode = getNativeNodeReference(this);\n    const otherShadowNode = getNativeNodeReference(otherNode);\n\n    if (shadowNode == null || otherShadowNode == null) {\n      return ReadOnlyNode.DOCUMENT_POSITION_DISCONNECTED;\n    }\n\n    return NativeDOM.compareDocumentPosition(shadowNode, otherShadowNode);\n  }\n\n  contains(otherNode: ReadOnlyNode): boolean {\n    if (otherNode === this) {\n      return true;\n    }\n\n    const position = this.compareDocumentPosition(otherNode);\n    // eslint-disable-next-line no-bitwise\n    return (position & ReadOnlyNode.DOCUMENT_POSITION_CONTAINED_BY) !== 0;\n  }\n\n  getRootNode(): ReadOnlyNode {\n    if (this.isConnected) {\n      // If this is the document node, then the root node is itself.\n      return this.ownerDocument ?? this;\n    }\n\n    return this;\n  }\n\n  hasChildNodes(): boolean {\n    return getChildNodes(this).length > 0;\n  }\n\n  /*\n   * Node types, as returned by the `nodeType` property.\n   */\n\n  /**\n   * Type of Element, HTMLElement and ReactNativeElement instances.\n   */\n  static ELEMENT_NODE: number = 1;\n  /**\n   * Currently Unused in React Native.\n   */\n  static ATTRIBUTE_NODE: number = 2;\n  /**\n   * Text nodes.\n   */\n  static TEXT_NODE: number = 3;\n  /**\n   * @deprecated Unused in React Native.\n   */\n  static CDATA_SECTION_NODE: number = 4;\n  /**\n   * @deprecated\n   */\n  static ENTITY_REFERENCE_NODE: number = 5;\n  /**\n   * @deprecated\n   */\n  static ENTITY_NODE: number = 6;\n  /**\n   * @deprecated Unused in React Native.\n   */\n  static PROCESSING_INSTRUCTION_NODE: number = 7;\n  /**\n   * @deprecated Unused in React Native.\n   */\n  static COMMENT_NODE: number = 8;\n  /**\n   * Document nodes.\n   */\n  static DOCUMENT_NODE: number = 9;\n  /**\n   * @deprecated Unused in React Native.\n   */\n  static DOCUMENT_TYPE_NODE: number = 10;\n  /**\n   * @deprecated Unused in React Native.\n   */\n  static DOCUMENT_FRAGMENT_NODE: number = 11;\n  /**\n   * @deprecated\n   */\n  static NOTATION_NODE: number = 12;\n\n  /*\n   * Document position flags. Used to check the return value of\n   * `compareDocumentPosition()`.\n   */\n\n  /**\n   * Both nodes are in different documents.\n   */\n  static DOCUMENT_POSITION_DISCONNECTED: number = 1;\n  /**\n   * `otherNode` precedes the node in either a pre-order depth-first traversal of a tree containing both\n   * (e.g., as an ancestor or previous sibling or a descendant of a previous sibling or previous sibling of an ancestor)\n   * or (if they are disconnected) in an arbitrary but consistent ordering.\n   */\n  static DOCUMENT_POSITION_PRECEDING: number = 2;\n  /**\n   * `otherNode` follows the node in either a pre-order depth-first traversal of a tree containing both\n   * (e.g., as a descendant or following sibling or a descendant of a following sibling or following sibling of an ancestor)\n   * or (if they are disconnected) in an arbitrary but consistent ordering.\n   */\n  static DOCUMENT_POSITION_FOLLOWING: number = 4;\n  /**\n   * `otherNode` is an ancestor of the node.\n   */\n  static DOCUMENT_POSITION_CONTAINS: number = 8;\n  /**\n   * `otherNode` is a descendant of the node.\n   */\n  static DOCUMENT_POSITION_CONTAINED_BY: number = 16;\n  /**\n   * @deprecated Unused in React Native.\n   */\n  static DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number = 32;\n}\n\nsetPlatformObject(ReadOnlyNode);\n\nexport function getChildNodes(\n  node: ReadOnlyNode,\n): $ReadOnlyArray<ReadOnlyNode> {\n  const shadowNode = getNativeNodeReference(node);\n\n  if (shadowNode == null) {\n    return [];\n  }\n\n  const childNodeInstanceHandles = NativeDOM.getChildNodes(shadowNode);\n  return childNodeInstanceHandles\n    .map(instanceHandle => getPublicInstanceFromInstanceHandle(instanceHandle))\n    .filter(Boolean);\n}\n\nfunction getNodeSiblingsAndPosition(\n  node: ReadOnlyNode,\n): [$ReadOnlyArray<ReadOnlyNode>, number] {\n  const parent = node.parentNode;\n  if (parent == null) {\n    // This node is the root or it's disconnected.\n    return [[node], 0];\n  }\n\n  const siblings = getChildNodes(parent);\n  const position = siblings.indexOf(node);\n\n  if (position === -1) {\n    throw new TypeError(\"Missing node in parent's child node list\");\n  }\n\n  return [siblings, position];\n}\n\nlet ReadOnlyElementClass;\nfunction getReadOnlyElementClass(): Class<ReadOnlyElement> {\n  if (ReadOnlyElementClass == null) {\n    // We initialize this lazily to avoid a require cycle.\n    ReadOnlyElementClass = require('./ReadOnlyElement').default;\n  }\n  return ReadOnlyElementClass;\n}\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {ArrayLike} from '../../utils/ArrayLikeUtils';\n\nimport {\n  createEntriesIterator,\n  createKeyIterator,\n  createValueIterator,\n} from '../../utils/ArrayLikeUtils';\nimport {setPlatformObject} from '../../webidl/PlatformObjects';\n\n// IMPORTANT: The Flow type definition for this module is defined in `NodeList.js.flow`\n// because Flow only supports indexers in classes in declaration files.\n\n// $FlowIssue[prop-missing] Flow doesn't understand [Symbol.iterator]() {} and thinks this class doesn't implement the Iterable<T> interface.\nexport default class NodeList<T> implements Iterable<T>, ArrayLike<T> {\n  #length: number;\n\n  /**\n   * Use `createNodeList` to create instances of this class.\n   *\n   * @private This is not defined in the declaration file, so users will not see\n   *          the signature of the constructor.\n   */\n  constructor(elements: $ReadOnlyArray<T>) {\n    for (let i = 0; i < elements.length; i++) {\n      Object.defineProperty(this, i, {\n        value: elements[i],\n        writable: false,\n      });\n    }\n    this.#length = elements.length;\n  }\n\n  get length(): number {\n    return this.#length;\n  }\n\n  item(index: number): T | null {\n    if (index < 0 || index >= this.#length) {\n      return null;\n    }\n\n    // assigning to the interface allows us to access the indexer property in a\n    // type-safe way.\n    // eslint-disable-next-line consistent-this\n    const arrayLike: ArrayLike<T> = this;\n    return arrayLike[index];\n  }\n\n  entries(): Iterator<[number, T]> {\n    return createEntriesIterator(this);\n  }\n\n  forEach<ThisType>(\n    callbackFn: (value: T, index: number, array: NodeList<T>) => mixed,\n    thisArg?: ThisType,\n  ): void {\n    // assigning to the interface allows us to access the indexer property in a\n    // type-safe way.\n    // eslint-disable-next-line consistent-this\n    const arrayLike: ArrayLike<T> = this;\n\n    for (let index = 0; index < this.#length; index++) {\n      if (thisArg == null) {\n        callbackFn(arrayLike[index], index, this);\n      } else {\n        callbackFn.call(thisArg, arrayLike[index], index, this);\n      }\n    }\n  }\n\n  keys(): Iterator<number> {\n    return createKeyIterator(this);\n  }\n\n  values(): Iterator<T> {\n    return createValueIterator(this);\n  }\n\n  // $FlowIssue[unsupported-syntax] Flow does not support computed properties in classes.\n  [Symbol.iterator](): Iterator<T> {\n    return createValueIterator(this);\n  }\n}\n\nsetPlatformObject(NodeList);\n\n/**\n * This is an internal method to create instances of `NodeList`,\n * which avoids leaking its constructor to end users.\n * We can do that because the external definition of `NodeList` lives in\n * `NodeList.js.flow`, not here.\n */\nexport function createNodeList<T>(elements: $ReadOnlyArray<T>): NodeList<T> {\n  return new NodeList(elements);\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {RootTag} from '../../../../../../Libraries/ReactNative/RootTag';\nimport type {Node as ShadowNode} from '../../../../../../Libraries/Renderer/shims/ReactNativeTypes';\nimport type {TurboModule} from '../../../../../../Libraries/TurboModule/RCTExport';\nimport type {InstanceHandle} from '../internals/NodeInternals';\n\nimport {getFabricUIManager} from '../../../../../../Libraries/ReactNative/FabricUIManager';\nimport * as TurboModuleRegistry from '../../../../../../Libraries/TurboModule/TurboModuleRegistry';\nimport nullthrows from 'nullthrows';\n\nexport opaque type NativeElementReference = ShadowNode;\nexport opaque type NativeTextReference = ShadowNode;\n\nexport type NativeNodeReference =\n  | NativeElementReference\n  | NativeTextReference\n  | RootTag;\n\nexport type MeasureInWindowOnSuccessCallback = (\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n) => void;\n\nexport type MeasureOnSuccessCallback = (\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n  pageX: number,\n  pageY: number,\n) => void;\n\nexport type MeasureLayoutOnSuccessCallback = (\n  left: number,\n  top: number,\n  width: number,\n  height: number,\n) => void;\n\nexport interface Spec extends TurboModule {\n  /*\n   * Methods from the `Node` interface (for `ReadOnlyNode`).\n   */\n\n  +compareDocumentPosition: (\n    nativeNodeReference: mixed /* NativeNodeReference */,\n    otherNativeNodeReference: mixed /* NativeNodeReference */,\n  ) => number;\n\n  +getChildNodes: (\n    nativeNodeReference: mixed /* NativeNodeReference */,\n  ) => $ReadOnlyArray<mixed> /* $ReadOnlyArray<InstanceHandle> */;\n\n  +getParentNode: (\n    nativeNodeReference: mixed /* NativeNodeReference */,\n  ) => mixed /* ?InstanceHandle */;\n\n  +isConnected: (\n    nativeNodeReference: mixed /* NativeNodeReference */,\n  ) => boolean;\n\n  /*\n   * Methods from the `Element` interface (for `ReactNativeElement`).\n   */\n\n  +getBorderWidth: (\n    nativeElementReference: mixed /* NativeElementReference */,\n  ) => $ReadOnlyArray<number> /* [topWidth: number, rightWidth: number, bottomWidth: number, leftWidth: number] */;\n\n  +getBoundingClientRect: (\n    nativeElementReference: mixed /* NativeElementReference */,\n    includeTransform: boolean,\n  ) => $ReadOnlyArray<number> /* [x: number, y: number, width: number, height: number] */;\n\n  +getInnerSize: (\n    nativeElementReference: mixed /* NativeElementReference */,\n  ) => $ReadOnlyArray<number> /* [width: number, height: number] */;\n\n  +getScrollPosition: (\n    nativeElementReference: mixed /* NativeElementReference */,\n  ) => $ReadOnlyArray<number> /* [scrollLeft: number, scrollTop: number] */;\n\n  +getScrollSize: (\n    nativeElementReference: mixed /* NativeElementReference */,\n  ) => $ReadOnlyArray<number> /* [scrollWidth: number, scrollHeight: number] */;\n\n  +getTagName: (\n    nativeElementReference: mixed /* NativeElementReference */,\n  ) => string;\n\n  +getTextContent: (\n    nativeElementReference: mixed /* NativeElementReference */,\n  ) => string;\n\n  +hasPointerCapture: (\n    nativeElementReference: mixed /* NativeElementReference */,\n    pointerId: number,\n  ) => boolean;\n\n  +releasePointerCapture: (\n    nativeElementReference: mixed /* NativeElementReference */,\n    pointerId: number,\n  ) => void;\n\n  +setPointerCapture: (\n    nativeElementReference: mixed /* NativeElementReference */,\n    pointerId: number,\n  ) => void;\n\n  /*\n   * Methods from the `HTMLElement` interface (for `ReactNativeElement`).\n   */\n\n  +getOffset: (\n    nativeElementReference: mixed /* NativeElementReference */,\n  ) => $ReadOnlyArray<mixed> /* [offsetParent: ?InstanceHandle, top: number, left: number] */;\n\n  /*\n   * Special methods to handle the root node.\n   */\n\n  +linkRootNode?: (\n    rootTag: number /* RootTag */,\n    instanceHandle: mixed /* InstanceHandle */,\n  ) => mixed /* ?NativeElementReference */;\n\n  /**\n   * Legacy layout APIs (for `ReactNativeElement`).\n   */\n\n  +measure: (\n    nativeElementReference: mixed,\n    callback: MeasureOnSuccessCallback,\n  ) => void;\n\n  +measureInWindow: (\n    nativeElementReference: mixed,\n    callback: MeasureInWindowOnSuccessCallback,\n  ) => void;\n\n  +measureLayout: (\n    nativeElementReference: mixed,\n    relativeNode: mixed,\n    onFail: () => void,\n    onSuccess: MeasureLayoutOnSuccessCallback,\n  ) => void;\n\n  /**\n   * Legacy direct manipulation APIs (for `ReactNativeElement`).\n   */\n\n  +setNativeProps?: (\n    nativeElementReference: mixed,\n    updatePayload: mixed,\n  ) => void;\n}\n\nconst RawNativeDOM = (TurboModuleRegistry.get<Spec>('NativeDOMCxx'): ?Spec);\n\nexport function getRawNativeDOMForTests(): ?Spec {\n  return RawNativeDOM;\n}\n\n// This is the actual interface of this module, but the native module codegen\n// isn't expressive enough yet.\nexport interface RefinedSpec {\n  /*\n   * Methods from the `Node` interface (for `ReadOnlyNode`).\n   */\n\n  /**\n   * This is a React Native implementation of `Node.prototype.compareDocumentPosition`\n   * (see https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition).\n   *\n   * It uses the version of the shadow nodes that are present in the current\n   * revision of the shadow tree (if any). If any of the nodes is not present,\n   * it just indicates they are disconnected.\n   */\n  +compareDocumentPosition: (\n    nativeNodeReference: NativeNodeReference,\n    otherNativeNodeReference: NativeNodeReference,\n  ) => number;\n\n  /**\n   * This is a React Native implementation of `Node.prototype.childNodes`\n   * (see https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes).\n   *\n   * If a version of the given shadow node is present in the current revision\n   * of an active shadow tree, it returns an array of instance handles of its\n   * children. Otherwise, it returns an empty array.\n   */\n  +getChildNodes: (\n    nativeNodeReference: NativeNodeReference,\n  ) => $ReadOnlyArray<InstanceHandle>;\n\n  /**\n   * This is a React Native implementation of `Node.prototype.parentNode`\n   * (see https://developer.mozilla.org/en-US/docs/Web/API/Node/parentNode).\n   *\n   * If a version of the given shadow node is present in the current revision of\n   * an active shadow tree, it returns the instance handle of its parent.\n   * Otherwise, it returns `null`.\n   */\n  +getParentNode: (nativeNodeReference: NativeNodeReference) => ?InstanceHandle;\n\n  /**\n   * This is a React Native implementation of `Node.prototype.isConnected`\n   * (see https://developer.mozilla.org/en-US/docs/Web/API/Node/isConnected).\n   *\n   * Indicates whether a version of the given shadow node is present in the\n   * current revision of an active shadow tree.\n   */\n  +isConnected: (nativeNodeReference: NativeNodeReference) => boolean;\n\n  /*\n   * Methods from the `Element` interface (for `ReactNativeElement`).\n   */\n\n  /**\n   * This is a method to access the border size of a shadow node, to implement\n   * these methods:\n   *   - `Element.prototype.clientLeft`: see https://developer.mozilla.org/en-US/docs/Web/API/Element/clientLeft.\n   *   - `Element.prototype.clientTop`: see https://developer.mozilla.org/en-US/docs/Web/API/Element/clientTop.\n   *\n   * It uses the version of the shadow node that is present in the current\n   * revision of the shadow tree. If the node is not present, it is not\n   * displayed (because any of its ancestors or itself have 'display: none'), or\n   * it has an inline display, it returns `undefined`. Otherwise, it returns its\n   * border size.\n   */\n  +getBorderWidth: (\n    nativeElementReference: NativeElementReference,\n  ) => $ReadOnly<\n    [\n      /* topWidth: */ number,\n      /* rightWidth: */ number,\n      /* bottomWidth: */ number,\n      /* leftWidth: */ number,\n    ],\n  >;\n\n  /**\n   * This is a React Native implementation of `Element.prototype.getBoundingClientRect`\n   * (see https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\n   *\n   * This is similar to `measureInWindow`, except it's explicitly synchronous\n   * (returns the result instead of passing it to a callback).\n   *\n   * It allows indicating whether to include transforms so it can also be used\n   * to implement methods like [`offsetWidth`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetWidth)\n   * and [`offsetHeight`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight).\n   */\n  +getBoundingClientRect: (\n    nativeElementReference: NativeElementReference,\n    includeTransform: boolean,\n  ) => $ReadOnly<\n    [\n      /* x: */ number,\n      /* y: */ number,\n      /* width: */ number,\n      /* height: */ number,\n    ],\n  >;\n\n  /**\n   * This is a method to access the inner size of a shadow node, to implement\n   * these methods:\n   *   - `Element.prototype.clientWidth`: see https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth.\n   *   - `Element.prototype.clientHeight`: see https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight.\n   *\n   * It uses the version of the shadow node that is present in the current\n   * revision of the shadow tree. If the node is not present, it is not\n   * displayed (because any of its ancestors or itself have 'display: none'), or\n   * it has an inline display, it returns `undefined`. Otherwise, it returns its\n   * inner size.\n   */\n  +getInnerSize: (\n    nativeElementReference: NativeElementReference,\n  ) => $ReadOnly<[/* width: */ number, /* height: */ number]>;\n\n  /**\n   * This is a method to access scroll information for a shadow node, to\n   * implement these methods:\n   *   - `Element.prototype.scrollLeft`: see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft.\n   *   - `Element.prototype.scrollTop`: see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTop.\n   *\n   * It uses the version of the shadow node that is present in the current\n   * revision of the shadow tree. If the node is not present or is not displayed\n   * (because any of its ancestors or itself have 'display: none'), it returns\n   * `undefined`. Otherwise, it returns the scroll position.\n   */\n  +getScrollPosition: (\n    nativeElementReference: NativeElementReference,\n  ) => $ReadOnly<[/* scrollLeft: */ number, /* scrollTop: */ number]>;\n\n  /**\n   *\n   * This is a method to access the scroll information of a shadow node, to\n   * implement these methods:\n   *   - `Element.prototype.scrollWidth`: see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollWidth.\n   *   - `Element.prototype.scrollHeight`: see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight.\n   *\n   * It uses the version of the shadow node that is present in the current\n   * revision of the shadow tree. If the node is not present or is not displayed\n   * (because any of its ancestors or itself have 'display: none'), it returns\n   * `undefined`. Otherwise, it returns the scroll size.\n   */\n  +getScrollSize: (\n    nativeElementReference: NativeElementReference,\n  ) => $ReadOnly<[/* scrollWidth: */ number, /* scrollHeight: */ number]>;\n\n  /**\n   * This is a method to access the normalized tag name of a shadow node, to\n   * implement `Element.prototype.tagName` (see https://developer.mozilla.org/en-US/docs/Web/API/Element/tagName).\n   */\n  +getTagName: (nativeElementReference: NativeElementReference) => string;\n\n  /**\n   * This is a React Native implementation of `Element.prototype.textContent`\n   * (see https://developer.mozilla.org/en-US/docs/Web/API/Element/textContent).\n   *\n   * It uses the version of the shadow node that is present in the current\n   * revision of the shadow tree.\n   * If the version is present, is traverses all its children in DFS and\n   * concatenates all the text contents. Otherwise, it returns an empty string.\n   *\n   * This is also used to access the text content of text nodes, which does not\n   * need any traversal.\n   */\n  +getTextContent: (nativeNodeReference: NativeNodeReference) => string;\n\n  +hasPointerCapture: (\n    nativeElementReference: NativeElementReference,\n    pointerId: number,\n  ) => boolean;\n\n  +releasePointerCapture: (\n    nativeElementReference: NativeElementReference,\n    pointerId: number,\n  ) => void;\n\n  +setPointerCapture: (\n    nativeElementReference: NativeElementReference,\n    pointerId: number,\n  ) => void;\n\n  /**\n   * This is a method to access the offset information for a shadow node, to\n   * implement these methods:\n   *   - `HTMLElement.prototype.offsetParent`: see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent.\n   *   - `HTMLElement.prototype.offsetTop`: see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop.\n   *   - `HTMLElement.prototype.offsetLeft`: see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetLeft.\n   *\n   * It uses the version of the shadow node that is present in the current\n   * revision of the shadow tree. If the node is not present or is not\n   * displayed (because any of its ancestors or itself have 'display: none'),\n   * it returns `undefined`. Otherwise, it returns its parent (as all nodes in\n   * React Native are currently \"positioned\") and its offset relative to its\n   * parent.\n   */\n  +getOffset: (\n    nativeElementReference: NativeElementReference,\n  ) => $ReadOnly<\n    [\n      /* offsetParent: */ ?InstanceHandle,\n      /* top: */ number,\n      /* left: */ number,\n    ],\n  >;\n\n  /*\n   * Special methods to handle the root node.\n   */\n\n  /**\n   * In React Native, surfaces that represent trees (similar to a `Document` on\n   * Web) are created in native first, and then populated from JavaScript.\n   *\n   * Because React does not create this special node, we need a way to link\n   * the JavaScript instance with that node, which is what this method allows.\n   *\n   * It also allows the implementation of `Node.prototype.ownerDocument` and\n   * `Node.prototype.getRootNode`\n   * (see https://developer.mozilla.org/en-US/docs/Web/API/Node/ownerDocument and\n   * https://developer.mozilla.org/en-US/docs/Web/API/Node/getRootNode).\n   *\n   * Returns a shadow node representing the root node if it is still mounted.\n   */\n  +linkRootNode: (\n    rootTag: RootTag,\n    instanceHandle: InstanceHandle,\n  ) => ?NativeElementReference;\n\n  /**\n   * Legacy layout APIs\n   */\n\n  +measure: (\n    nativeElementReference: NativeElementReference,\n    callback: MeasureOnSuccessCallback,\n  ) => void;\n\n  +measureInWindow: (\n    nativeElementReference: NativeElementReference,\n    callback: MeasureInWindowOnSuccessCallback,\n  ) => void;\n\n  +measureLayout: (\n    nativeElementReference: NativeElementReference,\n    relativeNode: NativeElementReference,\n    onFail: () => void,\n    onSuccess: MeasureLayoutOnSuccessCallback,\n  ) => void;\n\n  /**\n   * Legacy direct manipulation APIs\n   */\n  +setNativeProps: (\n    nativeElementReference: NativeElementReference,\n    updatePayload: {...},\n  ) => void;\n}\n\nconst NativeDOM: RefinedSpec = {\n  /*\n   * Methods from the `Node` interface (for `ReadOnlyNode`).\n   */\n\n  compareDocumentPosition(nativeNodeReference, otherNativeNodeReference) {\n    return nullthrows(RawNativeDOM).compareDocumentPosition(\n      nativeNodeReference,\n      otherNativeNodeReference,\n    );\n  },\n\n  getChildNodes(nativeNodeReference) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM).getChildNodes(\n      nativeNodeReference,\n    ): $ReadOnlyArray<InstanceHandle>);\n  },\n\n  getParentNode(nativeNodeReference) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM).getParentNode(\n      nativeNodeReference,\n    ): ?InstanceHandle);\n  },\n\n  isConnected(nativeNodeReference) {\n    return nullthrows(RawNativeDOM).isConnected(nativeNodeReference);\n  },\n\n  /*\n   * Methods from the `Element` interface (for `ReactNativeElement`).\n   */\n\n  getBorderWidth(nativeNodeReference) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM).getBorderWidth(\n      nativeNodeReference,\n    ): $ReadOnly<\n      [\n        /* topWidth: */ number,\n        /* rightWidth: */ number,\n        /* bottomWidth: */ number,\n        /* leftWidth: */ number,\n      ],\n    >);\n  },\n\n  getBoundingClientRect(nativeNodeReference, includeTransform: boolean) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM).getBoundingClientRect(\n      nativeNodeReference,\n      includeTransform,\n    ): $ReadOnly<\n      [\n        /* x: */ number,\n        /* y: */ number,\n        /* width: */ number,\n        /* height: */ number,\n      ],\n    >);\n  },\n\n  getInnerSize(nativeNodeReference) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM).getInnerSize(\n      nativeNodeReference,\n    ): $ReadOnly<[/* width: */ number, /* height: */ number]>);\n  },\n\n  getScrollPosition(nativeNodeReference) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM).getScrollPosition(\n      nativeNodeReference,\n    ): $ReadOnly<[/* scrollLeft: */ number, /* scrollTop: */ number]>);\n  },\n\n  getScrollSize(nativeNodeReference) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM).getScrollSize(\n      nativeNodeReference,\n    ): $ReadOnly<[/* scrollWidth: */ number, /* scrollHeight: */ number]>);\n  },\n\n  getTagName(nativeNodeReference) {\n    return nullthrows(RawNativeDOM).getTagName(nativeNodeReference);\n  },\n\n  getTextContent(nativeNodeReference) {\n    return nullthrows(RawNativeDOM).getTextContent(nativeNodeReference);\n  },\n\n  hasPointerCapture(nativeNodeReference, pointerId) {\n    return nullthrows(RawNativeDOM).hasPointerCapture(\n      nativeNodeReference,\n      pointerId,\n    );\n  },\n\n  releasePointerCapture(nativeNodeReference, pointerId) {\n    return nullthrows(RawNativeDOM).releasePointerCapture(\n      nativeNodeReference,\n      pointerId,\n    );\n  },\n\n  setPointerCapture(nativeNodeReference, pointerId) {\n    return nullthrows(RawNativeDOM).setPointerCapture(\n      nativeNodeReference,\n      pointerId,\n    );\n  },\n\n  /*\n   * Methods from the `HTMLElement` interface (for `ReactNativeElement`).\n   */\n\n  getOffset(nativeNodeReference) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM).getOffset(nativeNodeReference): $ReadOnly<\n      [\n        /* offsetParent: */ ?InstanceHandle,\n        /* top: */ number,\n        /* left: */ number,\n      ],\n    >);\n  },\n\n  /*\n   * Special methods to handle the root node.\n   */\n\n  linkRootNode(rootTag, instanceHandle) {\n    // $FlowExpectedError[incompatible-cast]\n    return (nullthrows(RawNativeDOM?.linkRootNode)(\n      // $FlowExpectedError[incompatible-call]\n      rootTag,\n      instanceHandle,\n    ): ?NativeElementReference);\n  },\n\n  /**\n   * Legacy layout APIs\n   */\n\n  measure(nativeNodeReference, callback) {\n    return nullthrows(RawNativeDOM).measure(nativeNodeReference, callback);\n  },\n\n  measureInWindow(nativeNodeReference, callback) {\n    return nullthrows(RawNativeDOM).measureInWindow(\n      nativeNodeReference,\n      callback,\n    );\n  },\n\n  measureLayout(nativeNodeReference, relativeNode, onFail, onSuccess) {\n    return nullthrows(RawNativeDOM).measureLayout(\n      nativeNodeReference,\n      relativeNode,\n      onFail,\n      onSuccess,\n    );\n  },\n\n  /**\n   * Legacy direct manipulation APIs\n   */\n  setNativeProps(nativeNodeReference, updatePayload) {\n    // TODO: remove when RawNativeDOM.setNativeProps is NOT nullable.\n    if (RawNativeDOM?.setNativeProps == null) {\n      nullthrows(getFabricUIManager()).setNativeProps(\n        nativeNodeReference,\n        updatePayload,\n      );\n      return;\n    }\n\n    return RawNativeDOM.setNativeProps(nativeNodeReference, updatePayload);\n  },\n};\n\nexport default NativeDOM;\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 * @flow strict-local\n * @format\n */\n\nimport type {\n  HostInstance,\n  MeasureInWindowOnSuccessCallback,\n  MeasureLayoutOnSuccessCallback,\n  MeasureOnSuccessCallback,\n  NativeMethods,\n} from '../../../src/private/types/HostInstance';\nimport type {\n  InternalInstanceHandle,\n  ViewConfig,\n} from '../../Renderer/shims/ReactNativeTypes';\n\nimport TextInputState from '../../Components/TextInput/TextInputState';\nimport {getNodeFromInternalInstanceHandle} from '../../ReactNative/RendererProxy';\nimport {getFabricUIManager} from '../FabricUIManager';\nimport {create} from './ReactNativeAttributePayload';\nimport warnForStyleProps from './warnForStyleProps';\nimport nullthrows from 'nullthrows';\n\nconst {\n  measure: fabricMeasure,\n  measureInWindow: fabricMeasureInWindow,\n  measureLayout: fabricMeasureLayout,\n  getBoundingClientRect: fabricGetBoundingClientRect,\n  setNativeProps,\n} = nullthrows(getFabricUIManager());\n\nconst noop = () => {};\n\n/**\n * This is used for refs on host components.\n */\nexport default class ReactFabricHostComponent implements NativeMethods {\n  // These need to be accessible from `ReactFabricPublicInstanceUtils`.\n  __nativeTag: number;\n  __internalInstanceHandle: InternalInstanceHandle;\n\n  _viewConfig: ViewConfig;\n\n  constructor(\n    tag: number,\n    viewConfig: ViewConfig,\n    internalInstanceHandle: InternalInstanceHandle,\n  ) {\n    this.__nativeTag = tag;\n    this._viewConfig = viewConfig;\n    this.__internalInstanceHandle = internalInstanceHandle;\n  }\n\n  blur() {\n    TextInputState.blurTextInput(this);\n  }\n\n  focus() {\n    TextInputState.focusTextInput(this);\n  }\n\n  measure(callback: MeasureOnSuccessCallback) {\n    const node = getNodeFromInternalInstanceHandle(\n      this.__internalInstanceHandle,\n    );\n    if (node != null) {\n      fabricMeasure(node, callback);\n    }\n  }\n\n  measureInWindow(callback: MeasureInWindowOnSuccessCallback) {\n    const node = getNodeFromInternalInstanceHandle(\n      this.__internalInstanceHandle,\n    );\n    if (node != null) {\n      fabricMeasureInWindow(node, callback);\n    }\n  }\n\n  measureLayout(\n    relativeToNativeNode: number | HostInstance,\n    onSuccess: MeasureLayoutOnSuccessCallback,\n    onFail?: () => void /* currently unused */,\n  ) {\n    if (\n      typeof relativeToNativeNode === 'number' ||\n      !(relativeToNativeNode instanceof ReactFabricHostComponent)\n    ) {\n      if (__DEV__) {\n        console.error(\n          'Warning: ref.measureLayout must be called with a ref to a native component.',\n        );\n      }\n\n      return;\n    }\n\n    const toStateNode = getNodeFromInternalInstanceHandle(\n      this.__internalInstanceHandle,\n    );\n    const fromStateNode = getNodeFromInternalInstanceHandle(\n      relativeToNativeNode.__internalInstanceHandle,\n    );\n\n    if (toStateNode != null && fromStateNode != null) {\n      fabricMeasureLayout(\n        toStateNode,\n        fromStateNode,\n        onFail != null ? onFail : noop,\n        onSuccess != null ? onSuccess : noop,\n      );\n    }\n  }\n\n  unstable_getBoundingClientRect(): DOMRect {\n    const node = getNodeFromInternalInstanceHandle(\n      this.__internalInstanceHandle,\n    );\n    if (node != null) {\n      const rect = fabricGetBoundingClientRect(node, true);\n\n      if (rect) {\n        return new DOMRect(rect[0], rect[1], rect[2], rect[3]);\n      }\n    }\n\n    // Empty rect if any of the above failed\n    return new DOMRect(0, 0, 0, 0);\n  }\n\n  setNativeProps(nativeProps: {...}): void {\n    if (__DEV__) {\n      warnForStyleProps(nativeProps, this._viewConfig.validAttributes);\n    }\n    const updatePayload = create(nativeProps, this._viewConfig.validAttributes);\n\n    const node = getNodeFromInternalInstanceHandle(\n      this.__internalInstanceHandle,\n    );\n    if (node != null && updatePayload != null) {\n      setNativeProps(node, updatePayload);\n    }\n  }\n}\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 * @flow strict-local\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport ReadOnlyCharacterData from './ReadOnlyCharacterData';\nimport ReadOnlyNode from './ReadOnlyNode';\n\nexport default class ReadOnlyText extends ReadOnlyCharacterData {\n  /**\n   * @override\n   */\n  get nodeName(): string {\n    return '#text';\n  }\n\n  /**\n   * @override\n   */\n  get nodeType(): number {\n    return ReadOnlyNode.TEXT_NODE;\n  }\n}\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 * @flow strict-local\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type ReadOnlyElement from './ReadOnlyElement';\n\nimport {getNativeTextReference} from './internals/NodeInternals';\nimport {getElementSibling} from './internals/Traversal';\nimport ReadOnlyNode from './ReadOnlyNode';\nimport NativeDOM from './specs/NativeDOM';\n\nexport default class ReadOnlyCharacterData extends ReadOnlyNode {\n  get nextElementSibling(): ReadOnlyElement | null {\n    return getElementSibling(this, 'next');\n  }\n\n  get previousElementSibling(): ReadOnlyElement | null {\n    return getElementSibling(this, 'previous');\n  }\n\n  get data(): string {\n    const node = getNativeTextReference(this);\n\n    if (node != null) {\n      return NativeDOM.getTextContent(node);\n    }\n\n    return '';\n  }\n\n  get length(): number {\n    return this.data.length;\n  }\n\n  /**\n   * @override\n   */\n  get textContent(): string {\n    return this.data;\n  }\n\n  /**\n   * @override\n   */\n  get nodeValue(): string {\n    return this.data;\n  }\n\n  substringData(offset: number, count: number): string {\n    const data = this.data;\n    if (offset < 0) {\n      throw new TypeError(\n        `Failed to execute 'substringData' on 'CharacterData': The offset ${offset} is negative.`,\n      );\n    }\n    if (offset > data.length) {\n      throw new TypeError(\n        `Failed to execute 'substringData' on 'CharacterData': The offset ${offset} is greater than the node's length (${data.length}).`,\n      );\n    }\n    let adjustedCount = count < 0 || count > data.length ? data.length : count;\n    return data.slice(offset, offset + adjustedCount);\n  }\n}\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 * @noflow\n * @nolint\n * @preventMunge\n * @generated SignedSource<<7430b56dac3186eca669ae53bbf1f23d>>\n *\n * This file was sync'd from the facebook/react repository.\n */\n\n\"use strict\";\nrequire(\"react-native/Libraries/ReactPrivate/ReactNativePrivateInitializeCore\");\nvar ReactNativePrivateInterface = require(\"react-native/Libraries/ReactPrivate/ReactNativePrivateInterface\"),\n  React = require(\"react\"),\n  Scheduler = require(\"scheduler\"),\n  isArrayImpl = Array.isArray,\n  ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  assign = Object.assign,\n  prefix,\n  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) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return describeNativeComponentFrame(fiber.type, !1);\n    case 11:\n      return describeNativeComponentFrame(fiber.type.render, !1);\n    case 1:\n      return describeNativeComponentFrame(fiber.type, !0);\n    case 31:\n      return describeBuiltInComponentFrame(\"Activity\");\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\";\n    do\n      (info += describeFiber(workInProgress)),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nvar REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n    case REACT_ACTIVITY_TYPE:\n      return \"Activity\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_PORTAL_TYPE:\n        return \"Portal\";\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Provider\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar hasError = !1,\n  caughtError = null,\n  getFiberCurrentPropsFromNode$1 = null,\n  getInstanceFromNode$1 = null,\n  getNodeFromInstance$1 = null;\nfunction executeDispatch(event, listener, inst) {\n  event.currentTarget = getNodeFromInstance$1(inst);\n  try {\n    listener(event);\n  } catch (error) {\n    hasError || ((hasError = !0), (caughtError = error));\n  }\n  event.currentTarget = null;\n}\nfunction executeDirectDispatch(event) {\n  var dispatchListener = event._dispatchListeners,\n    dispatchInstance = event._dispatchInstances;\n  if (isArrayImpl(dispatchListener)) throw Error(\"Invalid `event`.\");\n  event.currentTarget = dispatchListener\n    ? getNodeFromInstance$1(dispatchInstance)\n    : null;\n  dispatchListener = dispatchListener ? dispatchListener(event) : null;\n  event.currentTarget = null;\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n  return dispatchListener;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction SyntheticEvent(\n  dispatchConfig,\n  targetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  this.dispatchConfig = dispatchConfig;\n  this._targetInst = targetInst;\n  this.nativeEvent = nativeEvent;\n  this._dispatchInstances = this._dispatchListeners = null;\n  dispatchConfig = this.constructor.Interface;\n  for (var propName in dispatchConfig)\n    dispatchConfig.hasOwnProperty(propName) &&\n      ((targetInst = dispatchConfig[propName])\n        ? (this[propName] = targetInst(nativeEvent))\n        : \"target\" === propName\n          ? (this.target = nativeEventTarget)\n          : (this[propName] = 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}\nassign(SyntheticEvent.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 && (event.cancelBubble = !0),\n      (this.isPropagationStopped = functionThatReturnsTrue));\n  },\n  persist: function () {\n    this.isPersistent = functionThatReturnsTrue;\n  },\n  isPersistent: functionThatReturnsFalse,\n  destructor: function () {\n    var Interface = this.constructor.Interface,\n      propName;\n    for (propName in Interface) this[propName] = null;\n    this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n    this.isPropagationStopped = this.isDefaultPrevented =\n      functionThatReturnsFalse;\n    this._dispatchInstances = this._dispatchListeners = null;\n  }\n});\nSyntheticEvent.Interface = {\n  type: null,\n  target: null,\n  currentTarget: function () {\n    return null;\n  },\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function (event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\nSyntheticEvent.extend = function (Interface) {\n  function E() {}\n  function Class() {\n    return Super.apply(this, arguments);\n  }\n  var Super = this;\n  E.prototype = Super.prototype;\n  var prototype = new E();\n  assign(prototype, Class.prototype);\n  Class.prototype = prototype;\n  Class.prototype.constructor = Class;\n  Class.Interface = assign({}, Super.Interface, Interface);\n  Class.extend = Super.extend;\n  addEventPoolingTo(Class);\n  return Class;\n};\naddEventPoolingTo(SyntheticEvent);\nfunction createOrGetPooledEvent(\n  dispatchConfig,\n  targetInst,\n  nativeEvent,\n  nativeInst\n) {\n  if (this.eventPool.length) {\n    var instance = this.eventPool.pop();\n    this.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);\n    return instance;\n  }\n  return new this(dispatchConfig, targetInst, nativeEvent, nativeInst);\n}\nfunction releasePooledEvent(event) {\n  if (!(event instanceof this))\n    throw Error(\n      \"Trying to release an event instance into a pool of a different type.\"\n    );\n  event.destructor();\n  10 > this.eventPool.length && this.eventPool.push(event);\n}\nfunction addEventPoolingTo(EventConstructor) {\n  EventConstructor.getPooled = createOrGetPooledEvent;\n  EventConstructor.eventPool = [];\n  EventConstructor.release = releasePooledEvent;\n}\nvar ResponderSyntheticEvent = SyntheticEvent.extend({\n  touchHistory: function () {\n    return null;\n  }\n});\nfunction isStartish(topLevelType) {\n  return \"topTouchStart\" === topLevelType;\n}\nfunction isMoveish(topLevelType) {\n  return \"topTouchMove\" === topLevelType;\n}\nvar startDependencies = [\"topTouchStart\"],\n  moveDependencies = [\"topTouchMove\"],\n  endDependencies = [\"topTouchCancel\", \"topTouchEnd\"],\n  touchBank = [],\n  touchHistory = {\n    touchBank: touchBank,\n    numberActiveTouches: 0,\n    indexOfSingleActiveTouch: -1,\n    mostRecentTimeStamp: 0\n  };\nfunction timestampForTouch(touch) {\n  return touch.timeStamp || touch.timestamp;\n}\nfunction getTouchIdentifier(_ref) {\n  _ref = _ref.identifier;\n  if (null == _ref) throw Error(\"Touch object is missing identifier.\");\n  return _ref;\n}\nfunction recordTouchStart(touch) {\n  var identifier = getTouchIdentifier(touch),\n    touchRecord = touchBank[identifier];\n  touchRecord\n    ? ((touchRecord.touchActive = !0),\n      (touchRecord.startPageX = touch.pageX),\n      (touchRecord.startPageY = touch.pageY),\n      (touchRecord.startTimeStamp = timestampForTouch(touch)),\n      (touchRecord.currentPageX = touch.pageX),\n      (touchRecord.currentPageY = touch.pageY),\n      (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n      (touchRecord.previousPageX = touch.pageX),\n      (touchRecord.previousPageY = touch.pageY),\n      (touchRecord.previousTimeStamp = timestampForTouch(touch)))\n    : ((touchRecord = {\n        touchActive: !0,\n        startPageX: touch.pageX,\n        startPageY: touch.pageY,\n        startTimeStamp: timestampForTouch(touch),\n        currentPageX: touch.pageX,\n        currentPageY: touch.pageY,\n        currentTimeStamp: timestampForTouch(touch),\n        previousPageX: touch.pageX,\n        previousPageY: touch.pageY,\n        previousTimeStamp: timestampForTouch(touch)\n      }),\n      (touchBank[identifier] = touchRecord));\n  touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n}\nfunction recordTouchMove(touch) {\n  var touchRecord = touchBank[getTouchIdentifier(touch)];\n  touchRecord &&\n    ((touchRecord.touchActive = !0),\n    (touchRecord.previousPageX = touchRecord.currentPageX),\n    (touchRecord.previousPageY = touchRecord.currentPageY),\n    (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n    (touchRecord.currentPageX = touch.pageX),\n    (touchRecord.currentPageY = touch.pageY),\n    (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n    (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)));\n}\nfunction recordTouchEnd(touch) {\n  var touchRecord = touchBank[getTouchIdentifier(touch)];\n  touchRecord &&\n    ((touchRecord.touchActive = !1),\n    (touchRecord.previousPageX = touchRecord.currentPageX),\n    (touchRecord.previousPageY = touchRecord.currentPageY),\n    (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n    (touchRecord.currentPageX = touch.pageX),\n    (touchRecord.currentPageY = touch.pageY),\n    (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n    (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)));\n}\nvar instrumentationCallback,\n  ResponderTouchHistoryStore = {\n    instrument: function (callback) {\n      instrumentationCallback = callback;\n    },\n    recordTouchTrack: function (topLevelType, nativeEvent) {\n      null != instrumentationCallback &&\n        instrumentationCallback(topLevelType, nativeEvent);\n      if (isMoveish(topLevelType))\n        nativeEvent.changedTouches.forEach(recordTouchMove);\n      else if (isStartish(topLevelType))\n        nativeEvent.changedTouches.forEach(recordTouchStart),\n          (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n          1 === touchHistory.numberActiveTouches &&\n            (touchHistory.indexOfSingleActiveTouch =\n              nativeEvent.touches[0].identifier);\n      else if (\n        \"topTouchEnd\" === topLevelType ||\n        \"topTouchCancel\" === topLevelType\n      )\n        if (\n          (nativeEvent.changedTouches.forEach(recordTouchEnd),\n          (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n          1 === touchHistory.numberActiveTouches)\n        )\n          for (\n            topLevelType = 0;\n            topLevelType < touchBank.length;\n            topLevelType++\n          )\n            if (\n              ((nativeEvent = touchBank[topLevelType]),\n              null != nativeEvent && nativeEvent.touchActive)\n            ) {\n              touchHistory.indexOfSingleActiveTouch = topLevelType;\n              break;\n            }\n    },\n    touchHistory: touchHistory\n  };\nfunction accumulate(current, next) {\n  if (null == next)\n    throw Error(\"Accumulated items must not be null or undefined.\");\n  return null == current\n    ? next\n    : isArrayImpl(current)\n      ? current.concat(next)\n      : isArrayImpl(next)\n        ? [current].concat(next)\n        : [current, next];\n}\nfunction accumulateInto(current, next) {\n  if (null == next)\n    throw Error(\"Accumulated items must not be null or undefined.\");\n  if (null == current) return next;\n  if (isArrayImpl(current)) {\n    if (isArrayImpl(next)) return current.push.apply(current, next), current;\n    current.push(next);\n    return current;\n  }\n  return isArrayImpl(next) ? [current].concat(next) : [current, next];\n}\nfunction forEachAccumulated(arr, cb, scope) {\n  Array.isArray(arr) ? arr.forEach(cb, scope) : arr && cb.call(scope, arr);\n}\nvar responderInst = null,\n  trackedTouchCount = 0;\nfunction changeResponder(nextResponderInst, blockHostResponder) {\n  var oldResponderInst = responderInst;\n  responderInst = nextResponderInst;\n  if (null !== ResponderEventPlugin.GlobalResponderHandler)\n    ResponderEventPlugin.GlobalResponderHandler.onChange(\n      oldResponderInst,\n      nextResponderInst,\n      blockHostResponder\n    );\n}\nvar eventTypes = {\n  startShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onStartShouldSetResponder\",\n      captured: \"onStartShouldSetResponderCapture\"\n    },\n    dependencies: startDependencies\n  },\n  scrollShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onScrollShouldSetResponder\",\n      captured: \"onScrollShouldSetResponderCapture\"\n    },\n    dependencies: [\"topScroll\"]\n  },\n  selectionChangeShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onSelectionChangeShouldSetResponder\",\n      captured: \"onSelectionChangeShouldSetResponderCapture\"\n    },\n    dependencies: [\"topSelectionChange\"]\n  },\n  moveShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onMoveShouldSetResponder\",\n      captured: \"onMoveShouldSetResponderCapture\"\n    },\n    dependencies: moveDependencies\n  },\n  responderStart: {\n    registrationName: \"onResponderStart\",\n    dependencies: startDependencies\n  },\n  responderMove: {\n    registrationName: \"onResponderMove\",\n    dependencies: moveDependencies\n  },\n  responderEnd: {\n    registrationName: \"onResponderEnd\",\n    dependencies: endDependencies\n  },\n  responderRelease: {\n    registrationName: \"onResponderRelease\",\n    dependencies: endDependencies\n  },\n  responderTerminationRequest: {\n    registrationName: \"onResponderTerminationRequest\",\n    dependencies: []\n  },\n  responderGrant: { registrationName: \"onResponderGrant\", dependencies: [] },\n  responderReject: { registrationName: \"onResponderReject\", dependencies: [] },\n  responderTerminate: {\n    registrationName: \"onResponderTerminate\",\n    dependencies: []\n  }\n};\nfunction getParent$1(inst) {\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction traverseTwoPhase$1(inst, fn, arg) {\n  for (var path = []; inst; ) path.push(inst), (inst = getParent$1(inst));\n  for (inst = path.length; 0 < inst--; ) fn(path[inst], \"captured\", arg);\n  for (inst = 0; inst < path.length; inst++) fn(path[inst], \"bubbled\", arg);\n}\nfunction getListener$1(inst, registrationName) {\n  inst = inst.stateNode;\n  if (null === inst) return null;\n  inst = getFiberCurrentPropsFromNode$1(inst);\n  if (null === inst) return null;\n  if ((inst = inst[registrationName]) && \"function\" !== typeof inst)\n    throw Error(\n      \"Expected `\" +\n        registrationName +\n        \"` listener to be a function, instead got a value of `\" +\n        typeof inst +\n        \"` type.\"\n    );\n  return inst;\n}\nfunction accumulateDirectionalDispatches$1(inst, phase, event) {\n  if (\n    (phase = getListener$1(\n      inst,\n      event.dispatchConfig.phasedRegistrationNames[phase]\n    ))\n  )\n    (event._dispatchListeners = accumulateInto(\n      event._dispatchListeners,\n      phase\n    )),\n      (event._dispatchInstances = accumulateInto(\n        event._dispatchInstances,\n        inst\n      ));\n}\nfunction accumulateDirectDispatchesSingle$1(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    var inst = event._targetInst;\n    if (inst && event && event.dispatchConfig.registrationName) {\n      var listener = getListener$1(inst, event.dispatchConfig.registrationName);\n      listener &&\n        ((event._dispatchListeners = accumulateInto(\n          event._dispatchListeners,\n          listener\n        )),\n        (event._dispatchInstances = accumulateInto(\n          event._dispatchInstances,\n          inst\n        )));\n    }\n  }\n}\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    var targetInst = event._targetInst;\n    targetInst = targetInst ? getParent$1(targetInst) : null;\n    traverseTwoPhase$1(targetInst, accumulateDirectionalDispatches$1, event);\n  }\n}\nfunction accumulateTwoPhaseDispatchesSingle$1(event) {\n  event &&\n    event.dispatchConfig.phasedRegistrationNames &&\n    traverseTwoPhase$1(\n      event._targetInst,\n      accumulateDirectionalDispatches$1,\n      event\n    );\n}\nvar ResponderEventPlugin = {\n    _getResponder: function () {\n      return responderInst;\n    },\n    eventTypes: eventTypes,\n    extractEvents: function (\n      topLevelType,\n      targetInst,\n      nativeEvent,\n      nativeEventTarget\n    ) {\n      if (isStartish(topLevelType)) trackedTouchCount += 1;\n      else if (\n        \"topTouchEnd\" === topLevelType ||\n        \"topTouchCancel\" === topLevelType\n      )\n        if (0 <= trackedTouchCount) --trackedTouchCount;\n        else return null;\n      ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);\n      if (\n        targetInst &&\n        ((\"topScroll\" === topLevelType && !nativeEvent.responderIgnoreScroll) ||\n          (0 < trackedTouchCount && \"topSelectionChange\" === topLevelType) ||\n          isStartish(topLevelType) ||\n          isMoveish(topLevelType))\n      ) {\n        var shouldSetEventType = isStartish(topLevelType)\n          ? eventTypes.startShouldSetResponder\n          : isMoveish(topLevelType)\n            ? eventTypes.moveShouldSetResponder\n            : \"topSelectionChange\" === topLevelType\n              ? eventTypes.selectionChangeShouldSetResponder\n              : eventTypes.scrollShouldSetResponder;\n        if (responderInst)\n          b: {\n            var JSCompiler_temp = responderInst;\n            for (\n              var depthA = 0, tempA = JSCompiler_temp;\n              tempA;\n              tempA = getParent$1(tempA)\n            )\n              depthA++;\n            tempA = 0;\n            for (var tempB = targetInst; tempB; tempB = getParent$1(tempB))\n              tempA++;\n            for (; 0 < depthA - tempA; )\n              (JSCompiler_temp = getParent$1(JSCompiler_temp)), depthA--;\n            for (; 0 < tempA - depthA; )\n              (targetInst = getParent$1(targetInst)), tempA--;\n            for (; depthA--; ) {\n              if (\n                JSCompiler_temp === targetInst ||\n                JSCompiler_temp === targetInst.alternate\n              )\n                break b;\n              JSCompiler_temp = getParent$1(JSCompiler_temp);\n              targetInst = getParent$1(targetInst);\n            }\n            JSCompiler_temp = null;\n          }\n        else JSCompiler_temp = targetInst;\n        targetInst = JSCompiler_temp;\n        JSCompiler_temp = targetInst === responderInst;\n        shouldSetEventType = ResponderSyntheticEvent.getPooled(\n          shouldSetEventType,\n          targetInst,\n          nativeEvent,\n          nativeEventTarget\n        );\n        shouldSetEventType.touchHistory =\n          ResponderTouchHistoryStore.touchHistory;\n        JSCompiler_temp\n          ? forEachAccumulated(\n              shouldSetEventType,\n              accumulateTwoPhaseDispatchesSingleSkipTarget\n            )\n          : forEachAccumulated(\n              shouldSetEventType,\n              accumulateTwoPhaseDispatchesSingle$1\n            );\n        b: {\n          JSCompiler_temp = shouldSetEventType._dispatchListeners;\n          targetInst = shouldSetEventType._dispatchInstances;\n          if (isArrayImpl(JSCompiler_temp))\n            for (\n              depthA = 0;\n              depthA < JSCompiler_temp.length &&\n              !shouldSetEventType.isPropagationStopped();\n              depthA++\n            ) {\n              if (\n                JSCompiler_temp[depthA](shouldSetEventType, targetInst[depthA])\n              ) {\n                JSCompiler_temp = targetInst[depthA];\n                break b;\n              }\n            }\n          else if (\n            JSCompiler_temp &&\n            JSCompiler_temp(shouldSetEventType, targetInst)\n          ) {\n            JSCompiler_temp = targetInst;\n            break b;\n          }\n          JSCompiler_temp = null;\n        }\n        shouldSetEventType._dispatchInstances = null;\n        shouldSetEventType._dispatchListeners = null;\n        shouldSetEventType.isPersistent() ||\n          shouldSetEventType.constructor.release(shouldSetEventType);\n        if (JSCompiler_temp && JSCompiler_temp !== responderInst)\n          if (\n            ((shouldSetEventType = ResponderSyntheticEvent.getPooled(\n              eventTypes.responderGrant,\n              JSCompiler_temp,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            (shouldSetEventType.touchHistory =\n              ResponderTouchHistoryStore.touchHistory),\n            forEachAccumulated(\n              shouldSetEventType,\n              accumulateDirectDispatchesSingle$1\n            ),\n            (targetInst = !0 === executeDirectDispatch(shouldSetEventType)),\n            responderInst)\n          )\n            if (\n              ((depthA = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderTerminationRequest,\n                responderInst,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (depthA.touchHistory = ResponderTouchHistoryStore.touchHistory),\n              forEachAccumulated(depthA, accumulateDirectDispatchesSingle$1),\n              (tempA =\n                !depthA._dispatchListeners || executeDirectDispatch(depthA)),\n              depthA.isPersistent() || depthA.constructor.release(depthA),\n              tempA)\n            ) {\n              depthA = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderTerminate,\n                responderInst,\n                nativeEvent,\n                nativeEventTarget\n              );\n              depthA.touchHistory = ResponderTouchHistoryStore.touchHistory;\n              forEachAccumulated(depthA, accumulateDirectDispatchesSingle$1);\n              var JSCompiler_temp$jscomp$0 = accumulate(\n                JSCompiler_temp$jscomp$0,\n                [shouldSetEventType, depthA]\n              );\n              changeResponder(JSCompiler_temp, targetInst);\n            } else\n              (shouldSetEventType = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderReject,\n                JSCompiler_temp,\n                nativeEvent,\n                nativeEventTarget\n              )),\n                (shouldSetEventType.touchHistory =\n                  ResponderTouchHistoryStore.touchHistory),\n                forEachAccumulated(\n                  shouldSetEventType,\n                  accumulateDirectDispatchesSingle$1\n                ),\n                (JSCompiler_temp$jscomp$0 = accumulate(\n                  JSCompiler_temp$jscomp$0,\n                  shouldSetEventType\n                ));\n          else\n            (JSCompiler_temp$jscomp$0 = accumulate(\n              JSCompiler_temp$jscomp$0,\n              shouldSetEventType\n            )),\n              changeResponder(JSCompiler_temp, targetInst);\n        else JSCompiler_temp$jscomp$0 = null;\n      } else JSCompiler_temp$jscomp$0 = null;\n      shouldSetEventType = responderInst && isStartish(topLevelType);\n      JSCompiler_temp = responderInst && isMoveish(topLevelType);\n      targetInst =\n        responderInst &&\n        (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType);\n      if (\n        (shouldSetEventType = shouldSetEventType\n          ? eventTypes.responderStart\n          : JSCompiler_temp\n            ? eventTypes.responderMove\n            : targetInst\n              ? eventTypes.responderEnd\n              : null)\n      )\n        (shouldSetEventType = ResponderSyntheticEvent.getPooled(\n          shouldSetEventType,\n          responderInst,\n          nativeEvent,\n          nativeEventTarget\n        )),\n          (shouldSetEventType.touchHistory =\n            ResponderTouchHistoryStore.touchHistory),\n          forEachAccumulated(\n            shouldSetEventType,\n            accumulateDirectDispatchesSingle$1\n          ),\n          (JSCompiler_temp$jscomp$0 = accumulate(\n            JSCompiler_temp$jscomp$0,\n            shouldSetEventType\n          ));\n      shouldSetEventType = responderInst && \"topTouchCancel\" === topLevelType;\n      if (\n        (topLevelType =\n          responderInst &&\n          !shouldSetEventType &&\n          (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType))\n      )\n        a: {\n          if ((topLevelType = nativeEvent.touches) && 0 !== topLevelType.length)\n            for (\n              JSCompiler_temp = 0;\n              JSCompiler_temp < topLevelType.length;\n              JSCompiler_temp++\n            )\n              if (\n                ((targetInst = topLevelType[JSCompiler_temp].target),\n                null !== targetInst &&\n                  void 0 !== targetInst &&\n                  0 !== targetInst)\n              ) {\n                depthA = getInstanceFromNode$1(targetInst);\n                b: {\n                  for (targetInst = responderInst; depthA; ) {\n                    if (\n                      targetInst === depthA ||\n                      targetInst === depthA.alternate\n                    ) {\n                      targetInst = !0;\n                      break b;\n                    }\n                    depthA = getParent$1(depthA);\n                  }\n                  targetInst = !1;\n                }\n                if (targetInst) {\n                  topLevelType = !1;\n                  break a;\n                }\n              }\n          topLevelType = !0;\n        }\n      if (\n        (topLevelType = shouldSetEventType\n          ? eventTypes.responderTerminate\n          : topLevelType\n            ? eventTypes.responderRelease\n            : null)\n      )\n        (nativeEvent = ResponderSyntheticEvent.getPooled(\n          topLevelType,\n          responderInst,\n          nativeEvent,\n          nativeEventTarget\n        )),\n          (nativeEvent.touchHistory = ResponderTouchHistoryStore.touchHistory),\n          forEachAccumulated(nativeEvent, accumulateDirectDispatchesSingle$1),\n          (JSCompiler_temp$jscomp$0 = accumulate(\n            JSCompiler_temp$jscomp$0,\n            nativeEvent\n          )),\n          changeResponder(null);\n      return JSCompiler_temp$jscomp$0;\n    },\n    GlobalResponderHandler: null,\n    injection: {\n      injectGlobalResponderHandler: function (GlobalResponderHandler) {\n        ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;\n      }\n    }\n  },\n  eventPluginOrder = null,\n  namesToPlugins = {};\nfunction recomputePluginOrdering() {\n  if (eventPluginOrder)\n    for (var pluginName in namesToPlugins) {\n      var pluginModule = namesToPlugins[pluginName],\n        pluginIndex = eventPluginOrder.indexOf(pluginName);\n      if (-1 >= pluginIndex)\n        throw Error(\n          \"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `\" +\n            (pluginName + \"`.\")\n        );\n      if (!plugins[pluginIndex]) {\n        if (!pluginModule.extractEvents)\n          throw Error(\n            \"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `\" +\n              (pluginName + \"` does not.\")\n          );\n        plugins[pluginIndex] = pluginModule;\n        pluginIndex = pluginModule.eventTypes;\n        for (var eventName in pluginIndex) {\n          var JSCompiler_inline_result = void 0;\n          var dispatchConfig = pluginIndex[eventName];\n          if (eventNameDispatchConfigs.hasOwnProperty(eventName))\n            throw Error(\n              \"EventPluginRegistry: More than one plugin attempted to publish the same event name, `\" +\n                (eventName + \"`.\")\n            );\n          eventNameDispatchConfigs[eventName] = dispatchConfig;\n          var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n          if (phasedRegistrationNames) {\n            for (JSCompiler_inline_result in phasedRegistrationNames)\n              phasedRegistrationNames.hasOwnProperty(\n                JSCompiler_inline_result\n              ) &&\n                publishRegistrationName(\n                  phasedRegistrationNames[JSCompiler_inline_result],\n                  pluginModule\n                );\n            JSCompiler_inline_result = !0;\n          } else\n            dispatchConfig.registrationName\n              ? (publishRegistrationName(\n                  dispatchConfig.registrationName,\n                  pluginModule\n                ),\n                (JSCompiler_inline_result = !0))\n              : (JSCompiler_inline_result = !1);\n          if (!JSCompiler_inline_result)\n            throw Error(\n              \"EventPluginRegistry: Failed to publish event `\" +\n                eventName +\n                \"` for plugin `\" +\n                pluginName +\n                \"`.\"\n            );\n        }\n      }\n    }\n}\nfunction publishRegistrationName(registrationName, pluginModule) {\n  if (registrationNameModules[registrationName])\n    throw Error(\n      \"EventPluginRegistry: More than one plugin attempted to publish the same registration name, `\" +\n        (registrationName + \"`.\")\n    );\n  registrationNameModules[registrationName] = pluginModule;\n}\nvar plugins = [],\n  eventNameDispatchConfigs = {},\n  registrationNameModules = {};\nfunction getListener(inst, registrationName) {\n  inst = inst.stateNode;\n  if (null === inst) return null;\n  inst = getFiberCurrentPropsFromNode$1(inst);\n  if (null === inst) return null;\n  if ((inst = inst[registrationName]) && \"function\" !== typeof inst)\n    throw Error(\n      \"Expected `\" +\n        registrationName +\n        \"` listener to be a function, instead got a value of `\" +\n        typeof inst +\n        \"` type.\"\n    );\n  return inst;\n}\nvar customBubblingEventTypes =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry\n      .customBubblingEventTypes,\n  customDirectEventTypes =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry\n      .customDirectEventTypes;\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n  if (\n    (phase = getListener(\n      inst,\n      event.dispatchConfig.phasedRegistrationNames[phase]\n    ))\n  )\n    (event._dispatchListeners = accumulateInto(\n      event._dispatchListeners,\n      phase\n    )),\n      (event._dispatchInstances = accumulateInto(\n        event._dispatchInstances,\n        inst\n      ));\n}\nfunction traverseTwoPhase(inst, fn, arg, skipBubbling) {\n  for (var path = []; inst; ) {\n    path.push(inst);\n    do inst = inst.return;\n    while (inst && 5 !== inst.tag);\n    inst = inst ? inst : null;\n  }\n  for (inst = path.length; 0 < inst--; ) fn(path[inst], \"captured\", arg);\n  if (skipBubbling) fn(path[0], \"bubbled\", arg);\n  else\n    for (inst = 0; inst < path.length; inst++) fn(path[inst], \"bubbled\", arg);\n}\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n  event &&\n    event.dispatchConfig.phasedRegistrationNames &&\n    traverseTwoPhase(\n      event._targetInst,\n      accumulateDirectionalDispatches,\n      event,\n      !1\n    );\n}\nfunction accumulateDirectDispatchesSingle(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    var inst = event._targetInst;\n    if (inst && event && event.dispatchConfig.registrationName) {\n      var listener = getListener(inst, event.dispatchConfig.registrationName);\n      listener &&\n        ((event._dispatchListeners = accumulateInto(\n          event._dispatchListeners,\n          listener\n        )),\n        (event._dispatchInstances = accumulateInto(\n          event._dispatchInstances,\n          inst\n        )));\n    }\n  }\n}\nif (eventPluginOrder)\n  throw Error(\n    \"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.\"\n  );\neventPluginOrder = Array.prototype.slice.call([\n  \"ResponderEventPlugin\",\n  \"ReactNativeBridgeEventPlugin\"\n]);\nrecomputePluginOrdering();\nvar injectedNamesToPlugins$jscomp$inline_278 = {\n    ResponderEventPlugin: ResponderEventPlugin,\n    ReactNativeBridgeEventPlugin: {\n      eventTypes: {},\n      extractEvents: function (\n        topLevelType,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      ) {\n        if (null == targetInst) return null;\n        var bubbleDispatchConfig = customBubblingEventTypes[topLevelType],\n          directDispatchConfig = customDirectEventTypes[topLevelType];\n        if (!bubbleDispatchConfig && !directDispatchConfig)\n          throw Error(\n            'Unsupported top level event type \"' + topLevelType + '\" dispatched'\n          );\n        topLevelType = SyntheticEvent.getPooled(\n          bubbleDispatchConfig || directDispatchConfig,\n          targetInst,\n          nativeEvent,\n          nativeEventTarget\n        );\n        if (bubbleDispatchConfig)\n          null != topLevelType &&\n          null != topLevelType.dispatchConfig.phasedRegistrationNames &&\n          topLevelType.dispatchConfig.phasedRegistrationNames.skipBubbling\n            ? topLevelType &&\n              topLevelType.dispatchConfig.phasedRegistrationNames &&\n              traverseTwoPhase(\n                topLevelType._targetInst,\n                accumulateDirectionalDispatches,\n                topLevelType,\n                !0\n              )\n            : forEachAccumulated(\n                topLevelType,\n                accumulateTwoPhaseDispatchesSingle\n              );\n        else if (directDispatchConfig)\n          forEachAccumulated(topLevelType, accumulateDirectDispatchesSingle);\n        else return null;\n        return topLevelType;\n      }\n    }\n  },\n  isOrderingDirty$jscomp$inline_279 = !1,\n  pluginName$jscomp$inline_280;\nfor (pluginName$jscomp$inline_280 in injectedNamesToPlugins$jscomp$inline_278)\n  if (\n    injectedNamesToPlugins$jscomp$inline_278.hasOwnProperty(\n      pluginName$jscomp$inline_280\n    )\n  ) {\n    var pluginModule$jscomp$inline_281 =\n      injectedNamesToPlugins$jscomp$inline_278[pluginName$jscomp$inline_280];\n    if (\n      !namesToPlugins.hasOwnProperty(pluginName$jscomp$inline_280) ||\n      namesToPlugins[pluginName$jscomp$inline_280] !==\n        pluginModule$jscomp$inline_281\n    ) {\n      if (namesToPlugins[pluginName$jscomp$inline_280])\n        throw Error(\n          \"EventPluginRegistry: Cannot inject two different event plugins using the same name, `\" +\n            (pluginName$jscomp$inline_280 + \"`.\")\n        );\n      namesToPlugins[pluginName$jscomp$inline_280] =\n        pluginModule$jscomp$inline_281;\n      isOrderingDirty$jscomp$inline_279 = !0;\n    }\n  }\nisOrderingDirty$jscomp$inline_279 && recomputePluginOrdering();\nvar emptyObject = {},\n  removedKeys = null,\n  removedKeyCount = 0,\n  deepDifferOptions = { unsafelyIgnoreFunctions: !0 };\nfunction defaultDiffer(prevProp, nextProp) {\n  return \"object\" !== typeof nextProp || null === nextProp\n    ? !0\n    : ReactNativePrivateInterface.deepDiffer(\n        prevProp,\n        nextProp,\n        deepDifferOptions\n      );\n}\nfunction restoreDeletedValuesInNestedArray(\n  updatePayload,\n  node,\n  validAttributes\n) {\n  if (isArrayImpl(node))\n    for (var i = node.length; i-- && 0 < removedKeyCount; )\n      restoreDeletedValuesInNestedArray(\n        updatePayload,\n        node[i],\n        validAttributes\n      );\n  else if (node && 0 < removedKeyCount)\n    for (i in removedKeys)\n      if (removedKeys[i]) {\n        var nextProp = node[i];\n        if (void 0 !== nextProp) {\n          var attributeConfig = validAttributes[i];\n          if (attributeConfig) {\n            \"function\" === typeof nextProp && (nextProp = !0);\n            \"undefined\" === typeof nextProp && (nextProp = null);\n            if (\"object\" !== typeof attributeConfig)\n              updatePayload[i] = nextProp;\n            else if (\n              \"function\" === typeof attributeConfig.diff ||\n              \"function\" === typeof attributeConfig.process\n            )\n              (nextProp =\n                \"function\" === typeof attributeConfig.process\n                  ? attributeConfig.process(nextProp)\n                  : nextProp),\n                (updatePayload[i] = nextProp);\n            removedKeys[i] = !1;\n            removedKeyCount--;\n          }\n        }\n      }\n}\nfunction diffNestedProperty(\n  updatePayload,\n  prevProp,\n  nextProp,\n  validAttributes\n) {\n  if (!updatePayload && prevProp === nextProp) return updatePayload;\n  if (!prevProp || !nextProp)\n    return nextProp\n      ? addNestedProperty(updatePayload, nextProp, validAttributes)\n      : prevProp\n        ? clearNestedProperty(updatePayload, prevProp, validAttributes)\n        : updatePayload;\n  if (!isArrayImpl(prevProp) && !isArrayImpl(nextProp))\n    return diffProperties(updatePayload, prevProp, nextProp, validAttributes);\n  if (isArrayImpl(prevProp) && isArrayImpl(nextProp)) {\n    var minLength =\n        prevProp.length < nextProp.length ? prevProp.length : nextProp.length,\n      i;\n    for (i = 0; i < minLength; i++)\n      updatePayload = diffNestedProperty(\n        updatePayload,\n        prevProp[i],\n        nextProp[i],\n        validAttributes\n      );\n    for (; i < prevProp.length; i++)\n      updatePayload = clearNestedProperty(\n        updatePayload,\n        prevProp[i],\n        validAttributes\n      );\n    for (; i < nextProp.length; i++)\n      updatePayload = addNestedProperty(\n        updatePayload,\n        nextProp[i],\n        validAttributes\n      );\n    return updatePayload;\n  }\n  return isArrayImpl(prevProp)\n    ? diffProperties(\n        updatePayload,\n        ReactNativePrivateInterface.flattenStyle(prevProp),\n        nextProp,\n        validAttributes\n      )\n    : diffProperties(\n        updatePayload,\n        prevProp,\n        ReactNativePrivateInterface.flattenStyle(nextProp),\n        validAttributes\n      );\n}\nfunction addNestedProperty(updatePayload, nextProp, validAttributes) {\n  if (!nextProp) return updatePayload;\n  if (!isArrayImpl(nextProp))\n    return diffProperties(\n      updatePayload,\n      emptyObject,\n      nextProp,\n      validAttributes\n    );\n  for (var i = 0; i < nextProp.length; i++)\n    updatePayload = addNestedProperty(\n      updatePayload,\n      nextProp[i],\n      validAttributes\n    );\n  return updatePayload;\n}\nfunction clearNestedProperty(updatePayload, prevProp, validAttributes) {\n  if (!prevProp) return updatePayload;\n  if (!isArrayImpl(prevProp))\n    return diffProperties(\n      updatePayload,\n      prevProp,\n      emptyObject,\n      validAttributes\n    );\n  for (var i = 0; i < prevProp.length; i++)\n    updatePayload = clearNestedProperty(\n      updatePayload,\n      prevProp[i],\n      validAttributes\n    );\n  return updatePayload;\n}\nfunction diffProperties(updatePayload, prevProps, nextProps, validAttributes) {\n  var attributeConfig, propKey;\n  for (propKey in nextProps)\n    if ((attributeConfig = validAttributes[propKey])) {\n      var prevProp = prevProps[propKey];\n      var nextProp = nextProps[propKey];\n      \"function\" === typeof nextProp &&\n        ((nextProp = !0), \"function\" === typeof prevProp && (prevProp = !0));\n      \"undefined\" === typeof nextProp &&\n        ((nextProp = null),\n        \"undefined\" === typeof prevProp && (prevProp = null));\n      removedKeys && (removedKeys[propKey] = !1);\n      if (updatePayload && void 0 !== updatePayload[propKey])\n        if (\"object\" !== typeof attributeConfig)\n          updatePayload[propKey] = nextProp;\n        else {\n          if (\n            \"function\" === typeof attributeConfig.diff ||\n            \"function\" === typeof attributeConfig.process\n          )\n            (attributeConfig =\n              \"function\" === typeof attributeConfig.process\n                ? attributeConfig.process(nextProp)\n                : nextProp),\n              (updatePayload[propKey] = attributeConfig);\n        }\n      else if (prevProp !== nextProp)\n        if (\"object\" !== typeof attributeConfig)\n          defaultDiffer(prevProp, nextProp) &&\n            ((updatePayload || (updatePayload = {}))[propKey] = nextProp);\n        else if (\n          \"function\" === typeof attributeConfig.diff ||\n          \"function\" === typeof attributeConfig.process\n        ) {\n          if (\n            void 0 === prevProp ||\n            (\"function\" === typeof attributeConfig.diff\n              ? attributeConfig.diff(prevProp, nextProp)\n              : defaultDiffer(prevProp, nextProp))\n          )\n            (attributeConfig =\n              \"function\" === typeof attributeConfig.process\n                ? attributeConfig.process(nextProp)\n                : nextProp),\n              ((updatePayload || (updatePayload = {}))[propKey] =\n                attributeConfig);\n        } else\n          (removedKeys = null),\n            (removedKeyCount = 0),\n            (updatePayload = diffNestedProperty(\n              updatePayload,\n              prevProp,\n              nextProp,\n              attributeConfig\n            )),\n            0 < removedKeyCount &&\n              updatePayload &&\n              (restoreDeletedValuesInNestedArray(\n                updatePayload,\n                nextProp,\n                attributeConfig\n              ),\n              (removedKeys = null));\n    }\n  for (var propKey$6 in prevProps)\n    void 0 === nextProps[propKey$6] &&\n      (!(attributeConfig = validAttributes[propKey$6]) ||\n        (updatePayload && void 0 !== updatePayload[propKey$6]) ||\n        ((prevProp = prevProps[propKey$6]),\n        void 0 !== prevProp &&\n          (\"object\" !== typeof attributeConfig ||\n          \"function\" === typeof attributeConfig.diff ||\n          \"function\" === typeof attributeConfig.process\n            ? (((updatePayload || (updatePayload = {}))[propKey$6] = null),\n              removedKeys || (removedKeys = {}),\n              removedKeys[propKey$6] ||\n                ((removedKeys[propKey$6] = !0), removedKeyCount++))\n            : (updatePayload = clearNestedProperty(\n                updatePayload,\n                prevProp,\n                attributeConfig\n              )))));\n  return updatePayload;\n}\nfunction fastAddProperties(payload, props, validAttributes) {\n  if (isArrayImpl(props)) {\n    for (var i = 0; i < props.length; i++)\n      payload = fastAddProperties(payload, props[i], validAttributes);\n    return payload;\n  }\n  for (i in props) {\n    var prop = props[i],\n      attributeConfig = validAttributes[i];\n    if (null != attributeConfig) {\n      var newValue = void 0;\n      if (void 0 === prop)\n        if (payload && void 0 !== payload[i]) newValue = null;\n        else continue;\n      else\n        \"function\" === typeof prop\n          ? (newValue = !0)\n          : \"object\" !== typeof attributeConfig\n            ? (newValue = prop)\n            : \"function\" === typeof attributeConfig.process\n              ? (newValue = attributeConfig.process(prop))\n              : \"function\" === typeof attributeConfig.diff && (newValue = prop);\n      void 0 !== newValue\n        ? (payload || (payload = {}), (payload[i] = newValue))\n        : (payload = fastAddProperties(payload, prop, attributeConfig));\n    }\n  }\n  return payload;\n}\nfunction batchedUpdatesImpl(fn, bookkeeping) {\n  return fn(bookkeeping);\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, bookkeeping) {\n  if (isInsideEventHandler) return fn(bookkeeping);\n  isInsideEventHandler = !0;\n  try {\n    return batchedUpdatesImpl(fn, bookkeeping);\n  } finally {\n    isInsideEventHandler = !1;\n  }\n}\nvar eventQueue = null;\nfunction executeDispatchesAndReleaseTopLevel(e) {\n  if (e) {\n    var dispatchListeners = e._dispatchListeners,\n      dispatchInstances = e._dispatchInstances;\n    if (isArrayImpl(dispatchListeners))\n      for (\n        var i = 0;\n        i < dispatchListeners.length && !e.isPropagationStopped();\n        i++\n      )\n        executeDispatch(e, dispatchListeners[i], dispatchInstances[i]);\n    else\n      dispatchListeners &&\n        executeDispatch(e, dispatchListeners, dispatchInstances);\n    e._dispatchListeners = null;\n    e._dispatchInstances = null;\n    e.isPersistent() || e.constructor.release(e);\n  }\n}\nfunction dispatchEvent(target, topLevelType, nativeEvent) {\n  var eventTarget = null;\n  if (null != target) {\n    var stateNode = target.stateNode;\n    null != stateNode && (eventTarget = getPublicInstance(stateNode));\n  }\n  batchedUpdates$1(function () {\n    var event = { eventName: topLevelType, nativeEvent: nativeEvent };\n    ReactNativePrivateInterface.RawEventEmitter.emit(topLevelType, event);\n    ReactNativePrivateInterface.RawEventEmitter.emit(\"*\", event);\n    event = eventTarget;\n    for (\n      var events = null, legacyPlugins = plugins, i = 0;\n      i < legacyPlugins.length;\n      i++\n    ) {\n      var possiblePlugin = legacyPlugins[i];\n      possiblePlugin &&\n        (possiblePlugin = possiblePlugin.extractEvents(\n          topLevelType,\n          target,\n          nativeEvent,\n          event\n        )) &&\n        (events = accumulateInto(events, possiblePlugin));\n    }\n    event = events;\n    null !== event && (eventQueue = accumulateInto(eventQueue, event));\n    event = eventQueue;\n    eventQueue = null;\n    if (event) {\n      forEachAccumulated(event, executeDispatchesAndReleaseTopLevel);\n      if (eventQueue)\n        throw Error(\n          \"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.\"\n        );\n      if (hasError)\n        throw (\n          ((event = caughtError), (hasError = !1), (caughtError = null), event)\n        );\n    }\n  });\n}\nvar 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  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 256,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n      return 128;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 4194048;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  root = root.warmLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : rootHasPendingCommit ||\n              ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n              0 !== rootHasPendingCommit &&\n                (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : rootHasPendingCommit ||\n            ((rootHasPendingCommit = pendingLanes & ~root),\n            0 !== rootHasPendingCommit &&\n              (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (rootHasPendingCommit = wipLanes & -wipLanes),\n        suspendedLanes >= rootHasPendingCommit ||\n          (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n    case 64:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextTransitionLane() {\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n  0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$11 = 31 - clz32(remainingLanes),\n      lane = 1 << index$11;\n    entanglements[index$11] = 0;\n    expirationTimes[index$11] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$11];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$11] = null, index$11 = 0;\n        index$11 < hiddenUpdatesForLane.length;\n        index$11++\n      ) {\n        var update = hiddenUpdatesForLane[index$11];\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    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 4194090);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$12 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$12;\n    (lane & entangledLanes) | (root[index$12] & entangledLanes) &&\n      (root[index$12] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\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 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 assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(\"Unable to find node on an unmounted component.\");\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate)\n      throw Error(\"Unable to find node on an unmounted component.\");\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(\"Unable to find node on an unmounted component.\");\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$13 = parentA.child; child$13; ) {\n        if (child$13 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$13 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$13 = child$13.sibling;\n      }\n      if (!didFindChild) {\n        for (child$13 = parentB.child; child$13; ) {\n          if (child$13 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$13 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$13 = child$13.sibling;\n        }\n        if (!didFindChild)\n          throw Error(\n            \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\"\n          );\n      }\n    }\n    if (a.alternate !== b)\n      throw Error(\n        \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n  }\n  if (3 !== a.tag)\n    throw Error(\"Unable to find node on an unmounted component.\");\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 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 emptyContextObject = {},\n  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 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  fiber = PROD_HOST_CONTEXT;\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  context !== context &&\n    (push(contextFiberStackCursor, fiber), push(contextStackCursor, context));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor), pop(contextFiberStackCursor));\n  hostTransitionProviderCursor.current === fiber &&\n    (pop(hostTransitionProviderCursor),\n    (HostTransitionContext._currentValue2 = null));\n}\nvar hydrationErrors = null;\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 is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  valueCursor = createCursor(null),\n  currentlyRenderingFiber$1 = null,\n  lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n  push(valueCursor, context._currentValue2);\n  context._currentValue2 = nextValue;\n}\nfunction popProvider(context) {\n  context._currentValue2 = 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)\n        throw Error(\n          \"We just came from a parent so we must have had a parent. This is a bug in React.\"\n        );\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)\n        throw Error(\"Should have a current fiber. This is a bug in React.\");\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)\n        throw Error(\"Should have a current fiber. This is a bug in React.\");\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._currentValue2,\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._currentValue2;\n  context = { context: context, memoizedValue: value, next: null };\n  if (null === lastContextDependency) {\n    if (null === consumer)\n      throw Error(\n        \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\"\n      );\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 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 = firstScheduledRoot; null !== root; ) {\n        if (!onlyLegacy || 0 === root.tag)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root.suspendedLanes,\n                pingedLanes = root.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, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root,\n                root === workInProgressRoot ? JSCompiler_inline_result : 0,\n                null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root, JSCompiler_inline_result));\n        root = root.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInImmediateTask() {\n  processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    0 === nextLanes\n      ? ((root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev))\n      : ((prev = root),\n        0 !== (nextLanes & 3) && (mightHavePendingSyncWork = !0));\n    root = next;\n  }\n  flushSyncWorkAcrossRoots_impl(0, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$9 = 31 - clz32(lanes),\n      lane = 1 << index$9,\n      expirationTime = expirationTimes[index$9];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$9] = computeExpirationTime(lane, currentTime);\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  currentTime = workInProgressRoot;\n  suspendedLanes = workInProgressRootRenderLanes;\n  suspendedLanes = getNextLanes(\n    root,\n    root === currentTime ? suspendedLanes : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  pingedLanes = root.callbackNode;\n  if (\n    0 === suspendedLanes ||\n    (root === currentTime &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0)\n    );\n  if (\n    0 === (suspendedLanes & 3) ||\n    checkIfRootIsPrerendering(root, suspendedLanes)\n  ) {\n    currentTime = suspendedLanes & -suspendedLanes;\n    if (currentTime === root.callbackPriority) return currentTime;\n    null !== pingedLanes && cancelCallback$1(pingedLanes);\n    switch (lanesToEventPriority(suspendedLanes)) {\n      case 2:\n      case 8:\n        suspendedLanes = UserBlockingPriority;\n        break;\n      case 32:\n        suspendedLanes = NormalPriority$1;\n        break;\n      case 268435456:\n        suspendedLanes = IdlePriority;\n        break;\n      default:\n        suspendedLanes = NormalPriority$1;\n    }\n    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n    root.callbackPriority = currentTime;\n    root.callbackNode = suspendedLanes;\n    return currentTime;\n  }\n  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n  root.callbackPriority = 2;\n  root.callbackNode = null;\n  return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n    return (root.callbackNode = null), (root.callbackPriority = 0), null;\n  var originalCallbackNode = root.callbackNode;\n  if (flushPendingEffects(!0) && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPendingEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n  supportsMicrotasks\n    ? scheduleMicrotask(function () {\n        0 !== (executionContext & 6)\n          ? scheduleCallback$3(\n              ImmediatePriority,\n              processRootScheduleInImmediateTask\n            )\n          : processRootScheduleInMicrotask();\n      })\n    : scheduleCallback$3(ImmediatePriority, processRootScheduleInImmediateTask);\n}\nfunction requestTransitionLane() {\n  0 === currentEventTransitionLane &&\n    (currentEventTransitionLane = claimNextTransitionLane());\n  return currentEventTransitionLane;\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    null !== currentEntangledListeners\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue2, pool: cacheFromPool };\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\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}\nvar SuspenseException = Error(\n    \"Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\\n\\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`.\"\n  ),\n  SuspenseyCommitException = Error(\n    \"Suspense Exception: This is not a real error, and should not leak into userspace. If you're seeing this, it's likely a bug in React.\"\n  ),\n  SuspenseActionException = Error(\n    \"Suspense Exception: This is not a real error! It's an implementation detail of `useActionState` to interrupt the current render. You must either rethrow it immediately, or move the `useActionState` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\\n\\nTo handle async errors, wrap your component in an error boundary.\"\n  ),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop, noop), (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, noop);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(\n            \"An unknown Component is an async Client Component. Only Server Components can be async at the moment. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.\"\n          );\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw (\n            ((thenableState = thenable.reason),\n            checkIfUseWrappedInAsyncCatch(thenableState),\n            thenableState)\n          );\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable)\n    throw Error(\n      \"Expected a suspended thenable. This is a bug in React. Please file an issue.\"\n    );\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(\n      \"Hooks are not supported inside an async component. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.\"\n    );\n}\nvar concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  return 3 === sourceFiber.tag\n    ? ((parent = sourceFiber.stateNode),\n      isHidden &&\n        null !== update &&\n        ((isHidden = 31 - clz32(lane)),\n        (sourceFiber = parent.hiddenUpdates),\n        (alternate = sourceFiber[isHidden]),\n        null === alternate\n          ? (sourceFiber[isHidden] = [update])\n          : alternate.push(update),\n        (update.lane = lane | 536870912)),\n      parent)\n    : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(\n        \"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\"\n      ))\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 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(\n      \"Invalid argument passed as callback. Expected a function. Instead received: \" +\n        callback\n    );\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  thenableIndexCounter$1 = 0,\n  thenableState$1 = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(\n    \"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.\"\n  );\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter$1 = 0;\n  thenableState$1 = null;\n  if (didRenderTooFewHooks)\n    throw Error(\n      \"Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\"\n    );\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);\n    thenableIndexCounter$1 = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders)\n      throw Error(\n        \"Too many re-renders. React limits the number of renders to prevent an infinite loop.\"\n      );\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 bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter$1 = 0;\n  thenableState$1 = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber.alternate)\n        throw Error(\n          \"Update hook called on initial render. This is likely a bug in React. Please file an issue.\"\n        );\n      throw Error(\"Rendered more hooks than during the previous render.\");\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  thenable = trackUsedThenable(thenableState$1, thenable, index);\n  index = currentlyRenderingFiber;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(\"An unsupported type was passed to use(): \" + 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)\n    throw Error(\n      \"Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)\"\n    );\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$24 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$24 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$24 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$24 &&\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)\n    throw Error(\n      \"Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)\"\n    );\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) {\n  var fiber = currentlyRenderingFiber,\n    hook = updateWorkInProgressHook();\n  var nextSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    nextSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = nextSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  var create = subscribeToStore.bind(null, fiber, hook, subscribe);\n  updateEffectImpl(2048, 8, create, [subscribe]);\n  if (\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n  ) {\n    fiber.flags |= 2048;\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      updateStoreInstance.bind(null, fiber, hook, nextSnapshot, getSnapshot),\n      null\n    );\n    if (null === workInProgressRoot)\n      throw Error(\n        \"Expected a work-in-progress root. This is a bug in React. Please file an issue.\"\n      );\n    0 !== (renderLanes & 124) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n  }\n  return nextSnapshot;\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))\n    throw Error(\"Cannot update form state while rendering.\");\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      ReactSharedInternals.T = prevTransition;\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$28) {\n      onActionError(actionQueue, node, error$28);\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  var stateHook = mountWorkInProgressHook();\n  stateHook.memoizedState = stateHook.baseState = initialStateProp;\n  var stateQueue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  stateHook.queue = stateQueue;\n  stateHook = dispatchSetState.bind(null, currentlyRenderingFiber, stateQueue);\n  stateQueue.dispatch = stateHook;\n  stateQueue = mountStateImpl(!1);\n  var setPendingState = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    !1,\n    stateQueue.queue\n  );\n  stateQueue = mountWorkInProgressHook();\n  var actionQueue = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  stateQueue.queue = actionQueue;\n  stateHook = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber,\n    actionQueue,\n    setPendingState,\n    stateHook\n  );\n  actionQueue.dispatch = stateHook;\n  stateQueue.memoizedState = action;\n  return [initialStateProp, stateHook, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  if (\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n  )\n    try {\n      var state = useThenable(currentStateHook);\n    } catch (x) {\n      if (x === SuspenseException) throw SuspenseActionException;\n      throw x;\n    }\n  else state = currentStateHook;\n  currentStateHook = updateWorkInProgressHook();\n  var actionQueue = currentStateHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== currentStateHook.memoizedState &&\n    ((currentlyRenderingFiber.flags |= 2048),\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      actionStateActionEffect.bind(null, actionQueue, action),\n      null\n    ));\n  return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, createDeps) {\n  tag = { tag: tag, create: create, deps: createDeps, inst: inst, next: null };\n  inst = currentlyRenderingFiber.updateQueue;\n  null === inst &&\n    ((inst = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = inst));\n  create = inst.lastEffect;\n  null === create\n    ? (inst.lastEffect = tag.next = tag)\n    : ((createDeps = create.next),\n      (create.next = tag),\n      (tag.next = createDeps),\n      (inst.lastEffect = tag));\n  return tag;\n}\nfunction createEffectInstance() {\n  return { destroy: void 0, resource: void 0 };\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, createDeps) {\n  var hook = mountWorkInProgressHook();\n  createDeps = void 0 === createDeps ? null : createDeps;\n  currentlyRenderingFiber.flags |= fiberFlags;\n  hook.memoizedState = pushSimpleEffect(\n    1 | hookFlags,\n    createEffectInstance(),\n    create,\n    createDeps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n    : ((currentlyRenderingFiber.flags |= fiberFlags),\n      (hook.memoizedState = pushSimpleEffect(\n        1 | hookFlags,\n        inst,\n        create,\n        deps\n      )));\n}\nfunction mountEffect(create, createDeps) {\n  mountEffectImpl(8390656, 8, create, createDeps);\n}\nfunction updateEffect(create, createDeps) {\n  updateEffectImpl(2048, 8, create, createDeps);\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (0 === (renderLanes & 42))\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = currentUpdatePriority;\n  currentUpdatePriority =\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(fiber)\n    );\n  } finally {\n    (currentUpdatePriority = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\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(provider);\n        fiber = createUpdate(lane);\n        var root = enqueueUpdate(provider, fiber, lane);\n        null !== root &&\n          (scheduleUpdateOnFiber(root, provider, lane),\n          entangleTransitions(root, 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(fiber);\n  action = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane(fiber);\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender)\n      throw Error(\"Cannot update optimistic state while rendering.\");\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber ||\n    (null !== alternate && alternate === currentlyRenderingFiber)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194048)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n    readContext: readContext,\n    use: use,\n    useCallback: throwInvalidHookError,\n    useContext: throwInvalidHookError,\n    useEffect: throwInvalidHookError,\n    useImperativeHandle: throwInvalidHookError,\n    useLayoutEffect: throwInvalidHookError,\n    useInsertionEffect: throwInvalidHookError,\n    useMemo: throwInvalidHookError,\n    useReducer: throwInvalidHookError,\n    useRef: throwInvalidHookError,\n    useState: throwInvalidHookError,\n    useDebugValue: throwInvalidHookError,\n    useDeferredValue: throwInvalidHookError,\n    useTransition: throwInvalidHookError,\n    useSyncExternalStore: throwInvalidHookError,\n    useId: throwInvalidHookError,\n    useHostTransitionStatus: throwInvalidHookError,\n    useFormState: throwInvalidHookError,\n    useActionState: throwInvalidHookError,\n    useOptimistic: throwInvalidHookError,\n    useMemoCache: throwInvalidHookError,\n    useCacheRefresh: throwInvalidHookError\n  },\n  HooksDispatcherOnMount = {\n    readContext: readContext,\n    use: use,\n    useCallback: function (callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function (ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      mountEffectImpl(\n        4194308,\n        4,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function (create, deps) {\n      return mountEffectImpl(4194308, 4, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function (nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      var nextValue = nextCreate();\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          nextCreate();\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n      hook.memoizedState = [nextValue, deps];\n      return nextValue;\n    },\n    useReducer: function (reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      if (void 0 !== init) {\n        var initialState = init(initialArg);\n        if (shouldDoubleInvokeUserFnsInHooksDEV) {\n          setIsStrictModeForDevtools(!0);\n          try {\n            init(initialArg);\n          } finally {\n            setIsStrictModeForDevtools(!1);\n          }\n        }\n      } else initialState = initialArg;\n      hook.memoizedState = hook.baseState = initialState;\n      reducer = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialState\n      };\n      hook.queue = reducer;\n      reducer = reducer.dispatch = dispatchReducerAction.bind(\n        null,\n        currentlyRenderingFiber,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function (initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: function (initialState) {\n      initialState = mountStateImpl(initialState);\n      var queue = initialState.queue,\n        dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n      queue.dispatch = dispatch;\n      return [initialState.memoizedState, dispatch];\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = mountWorkInProgressHook();\n      return mountDeferredValueImpl(hook, value, initialValue);\n    },\n    useTransition: function () {\n      var stateHook = mountStateImpl(!1);\n      stateHook = startTransition.bind(\n        null,\n        currentlyRenderingFiber,\n        stateHook.queue,\n        !0,\n        !1\n      );\n      mountWorkInProgressHook().memoizedState = stateHook;\n      return [!1, stateHook];\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot) {\n      var fiber = currentlyRenderingFiber,\n        hook = mountWorkInProgressHook();\n      var nextSnapshot = getSnapshot();\n      if (null === workInProgressRoot)\n        throw Error(\n          \"Expected a work-in-progress root. This is a bug in React. Please file an issue.\"\n        );\n      0 !== (workInProgressRootRenderLanes & 124) ||\n        pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n      hook.memoizedState = nextSnapshot;\n      var inst = { value: nextSnapshot, getSnapshot: getSnapshot };\n      hook.queue = inst;\n      mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n        subscribe\n      ]);\n      fiber.flags |= 2048;\n      pushSimpleEffect(\n        9,\n        createEffectInstance(),\n        updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot),\n        null\n      );\n      return nextSnapshot;\n    },\n    useId: function () {\n      var hook = mountWorkInProgressHook(),\n        identifierPrefix = workInProgressRoot.identifierPrefix,\n        globalClientId = globalClientIdCounter++;\n      identifierPrefix =\n        \"\\u00ab\" +\n        identifierPrefix +\n        \"r\" +\n        globalClientId.toString(32) +\n        \"\\u00bb\";\n      return (hook.memoizedState = identifierPrefix);\n    },\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: mountActionState,\n    useActionState: mountActionState,\n    useOptimistic: function (passthrough) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = hook.baseState = passthrough;\n      var queue = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: null,\n        lastRenderedState: null\n      };\n      hook.queue = queue;\n      hook = dispatchOptimisticSetState.bind(\n        null,\n        currentlyRenderingFiber,\n        !0,\n        queue\n      );\n      queue.dispatch = hook;\n      return [passthrough, hook];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: function () {\n      return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n        null,\n        currentlyRenderingFiber\n      ));\n    }\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function () {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return updateDeferredValueImpl(\n        hook,\n        currentHook.memoizedState,\n        value,\n        initialValue\n      );\n    },\n    useTransition: function () {\n      var booleanOrThenable = updateReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: updateActionState,\n    useActionState: updateActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  HooksDispatcherOnRerender = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: rerenderReducer,\n    useRef: updateRef,\n    useState: function () {\n      return rerenderReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return null === currentHook\n        ? mountDeferredValueImpl(hook, value, initialValue)\n        : updateDeferredValueImpl(\n            hook,\n            currentHook.memoizedState,\n            value,\n            initialValue\n          );\n    },\n    useTransition: function () {\n      var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: rerenderActionState,\n    useActionState: rerenderActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      if (null !== currentHook)\n        return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n      hook.baseState = passthrough;\n      return [passthrough, hook.queue.dispatch];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  thenableState = null,\n  thenableIndexCounter = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  return trackUsedThenable(thenableState, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(\n      'A React Element from an older version of React was rendered. This is not supported. It can happen if:\\n- Multiple copies of the \"react\" package is used.\\n- A library pre-bundled an old copy of \"react\" or \"react/jsx-runtime\".\\n- A compiler tries to \"inline\" JSX instead of using the runtime.'\n    );\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    \"Objects are not valid as a React child (found: \" +\n      (\"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber) +\n      \"). If you meant to render a collection of children, use an array instead.\"\n  );\n}\nfunction resolveLazy(lazyType) {\n  var init = lazyType._init;\n  return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n        : existingChildren.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 67108866;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 67108866);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return updateFragment(\n        returnFiber,\n        current,\n        element.props.children,\n        lanes,\n        element.key\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return createChild(returnFiber, newChild, lanes);\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return updateFromMap(\n            existingChildren,\n            returnFiber,\n            newIdx,\n            newChild,\n            lanes\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber), 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      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    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren)\n      throw Error(\"An iterable object provided no iterator.\");\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), 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      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    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key)\n          throw Error(\n            \"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (\n        x === SuspenseException ||\n        x === SuspenseActionException ||\n        (0 === (returnFiber.mode & 1) &&\n          \"object\" === typeof x &&\n          null !== x &&\n          \"function\" === typeof x.then)\n      )\n        throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  if (22 === fiber.tag) {\n    if (\n      (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary)\n    ) {\n      var current = fiber.alternate;\n      null !== current &&\n        null !== current.memoizedState &&\n        (shellBoundary = fiber);\n    }\n  } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (null !== state && (null === state.dehydrated || shim$1() || shim$1()))\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(inst),\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(inst),\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(inst),\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 constructClassInstance(workInProgress, ctor, props) {\n  var context = emptyContextObject,\n    contextType = ctor.contextType;\n  \"object\" === typeof contextType &&\n    null !== contextType &&\n    (context = readContext(contextType));\n  ctor = new ctor(props, context);\n  workInProgress.memoizedState =\n    null !== ctor.state && void 0 !== ctor.state ? ctor.state : null;\n  ctor.updater = classComponentUpdater;\n  workInProgress.stateNode = ctor;\n  ctor._reactInternals = workInProgress;\n  return ctor;\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 mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  instance.props = newProps;\n  instance.state = workInProgress.memoizedState;\n  instance.refs = {};\n  initializeUpdateQueue(workInProgress);\n  var contextType = ctor.contextType;\n  instance.context =\n    \"object\" === typeof contextType && null !== contextType\n      ? readContext(contextType)\n      : emptyContextObject;\n  instance.state = workInProgress.memoizedState;\n  contextType = ctor.getDerivedStateFromProps;\n  \"function\" === typeof contextType &&\n    (applyDerivedStateFromProps(workInProgress, ctor, contextType, newProps),\n    (instance.state = workInProgress.memoizedState));\n  \"function\" === typeof ctor.getDerivedStateFromProps ||\n    \"function\" === typeof instance.getSnapshotBeforeUpdate ||\n    (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n      \"function\" !== typeof instance.componentWillMount) ||\n    ((ctor = instance.state),\n    \"function\" === typeof instance.componentWillMount &&\n      instance.componentWillMount(),\n    \"function\" === typeof instance.UNSAFE_componentWillMount &&\n      instance.UNSAFE_componentWillMount(),\n    ctor !== instance.state &&\n      classComponentUpdater.enqueueReplaceState(instance, instance.state, null),\n    processUpdateQueue(workInProgress, newProps, instance, renderLanes),\n    suspendIfUpdateReadFromEntangledAsyncAction(),\n    (instance.state = workInProgress.memoizedState));\n  \"function\" === typeof instance.componentDidMount &&\n    (workInProgress.flags |= 4194308);\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$54 in Component)\n      void 0 === newProps[propName$54] &&\n        (newProps[propName$54] = Component[propName$54]);\n  }\n  return newProps;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction 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) {\n    setTimeout(function () {\n      throw e;\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) {\n    setTimeout(function () {\n      throw e;\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    var currentSourceFiber = sourceFiber.alternate;\n    null !== currentSourceFiber &&\n      propagateParentContextChanges(\n        currentSourceFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    currentSourceFiber = sourceFiber.tag;\n    0 !== (sourceFiber.mode & 1) ||\n      (0 !== currentSourceFiber &&\n        11 !== currentSourceFiber &&\n        15 !== currentSourceFiber) ||\n      ((currentSourceFiber = sourceFiber.alternate)\n        ? ((sourceFiber.updateQueue = currentSourceFiber.updateQueue),\n          (sourceFiber.memoizedState = currentSourceFiber.memoizedState),\n          (sourceFiber.lanes = currentSourceFiber.lanes))\n        : ((sourceFiber.updateQueue = null),\n          (sourceFiber.memoizedState = null)));\n    currentSourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== currentSourceFiber) {\n      switch (currentSourceFiber.tag) {\n        case 13:\n          return (\n            sourceFiber.mode & 1 &&\n              (null === shellBoundary\n                ? renderDidSuspendDelayIfPossible()\n                : null === currentSourceFiber.alternate &&\n                  0 === workInProgressRootExitStatus &&\n                  (workInProgressRootExitStatus = 3)),\n            (currentSourceFiber.flags &= -257),\n            0 === (currentSourceFiber.mode & 1)\n              ? currentSourceFiber === returnFiber\n                ? (currentSourceFiber.flags |= 65536)\n                : ((currentSourceFiber.flags |= 128),\n                  (sourceFiber.flags |= 131072),\n                  (sourceFiber.flags &= -52805),\n                  1 === sourceFiber.tag\n                    ? null === sourceFiber.alternate\n                      ? (sourceFiber.tag = 17)\n                      : ((returnFiber = createUpdate(2)),\n                        (returnFiber.tag = 2),\n                        enqueueUpdate(sourceFiber, returnFiber, 2))\n                    : 0 === sourceFiber.tag &&\n                      null === sourceFiber.alternate &&\n                      (sourceFiber.tag = 28),\n                  (sourceFiber.lanes |= 2))\n              : ((currentSourceFiber.flags |= 65536),\n                (currentSourceFiber.lanes = rootRenderLanes)),\n            value === noopSuspenseyCommitThenable\n              ? (currentSourceFiber.flags |= 16384)\n              : ((returnFiber = currentSourceFiber.updateQueue),\n                null === returnFiber\n                  ? (currentSourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                currentSourceFiber.mode & 1 &&\n                  attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          if (currentSourceFiber.mode & 1)\n            return (\n              (currentSourceFiber.flags |= 65536),\n              value === noopSuspenseyCommitThenable\n                ? (currentSourceFiber.flags |= 16384)\n                : ((returnFiber = currentSourceFiber.updateQueue),\n                  null === returnFiber\n                    ? ((returnFiber = {\n                        transitions: null,\n                        markerInstances: null,\n                        retryQueue: new Set([value])\n                      }),\n                      (currentSourceFiber.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(\n        \"Unexpected Suspense handler tag (\" +\n          currentSourceFiber.tag +\n          \"). This is a bug in React.\"\n      );\n    }\n    if (1 === root.tag)\n      return (\n        attachPingListener(root, value, rootRenderLanes),\n        renderDidSuspendDelayIfPossible(),\n        !1\n      );\n    value = Error(\n      \"A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.\"\n    );\n  }\n  currentSourceFiber = createCapturedValueAtFiber(\n    Error(\n      \"There was an error during concurrent rendering but React was able to recover by instead synchronously rendering the entire root.\",\n      { cause: value }\n    ),\n    sourceFiber\n  );\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [currentSourceFiber])\n    : workInProgressRootConcurrentErrors.push(currentSourceFiber);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  do {\n    switch (returnFiber.tag) {\n      case 3:\n        return (\n          (returnFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (returnFiber.lanes |= root),\n          (root = createRootErrorUpdate(returnFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(returnFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((sourceFiber = returnFiber.type),\n          (currentSourceFiber = returnFiber.stateNode),\n          0 === (returnFiber.flags & 128) &&\n            (\"function\" === typeof sourceFiber.getDerivedStateFromError ||\n              (null !== currentSourceFiber &&\n                \"function\" === typeof currentSourceFiber.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(\n                    currentSourceFiber\n                  )))))\n        )\n          return (\n            (returnFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (returnFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              returnFiber,\n              value\n            ),\n            enqueueCapturedUpdate(returnFiber, rootRenderLanes),\n            !1\n          );\n    }\n    returnFiber = returnFiber.return;\n  } while (null !== returnFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(\n    \"This is not a real error. It's an implementation detail of React's selective hydration feature. If this leaks into userspace, it's a bug in React. Please file an issue.\"\n  ),\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  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  if (\"hidden\" === nextProps.mode) {\n    if (0 !== (workInProgress.flags & 128)) {\n      nextProps =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextChildren = workInProgress.child = current.child;\n        for (prevState = 0; null !== nextChildren; )\n          (prevState =\n            prevState | nextChildren.lanes | nextChildren.childLanes),\n            (nextChildren = nextChildren.sibling);\n        workInProgress.childLanes = prevState & ~nextProps;\n      } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        nextProps,\n        renderLanes\n      );\n    }\n    if (0 === (workInProgress.mode & 1))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (workInProgress.lanes = workInProgress.childLanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack(workInProgress));\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue2, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  return null;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 4194816);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(\n        \"Expected ref to be a function, an object returned by React.createRef(), or undefined/null.\"\n      );\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  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\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  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\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    resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress),\n      constructClassInstance(workInProgress, Component, nextProps),\n      mountClassInstance(workInProgress, Component, nextProps, renderLanes),\n      (nextProps = !0);\n  else if (null === current) {\n    var instance = workInProgress.stateNode,\n      unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    instance.props = oldProps;\n    var oldContext = instance.context,\n      contextType = Component.contextType,\n      nextContext = emptyContextObject;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (nextContext = readContext(contextType));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof instance.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType ||\n      (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof instance.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== nextContext) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          instance,\n          nextProps,\n          nextContext\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    instance.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, instance, 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            nextContext\n          ))\n          ? (contextType ||\n              (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n                \"function\" !== typeof instance.componentWillMount) ||\n              (\"function\" === typeof instance.componentWillMount &&\n                instance.componentWillMount(),\n              \"function\" === typeof instance.UNSAFE_componentWillMount &&\n                instance.UNSAFE_componentWillMount()),\n            \"function\" === typeof instance.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof instance.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (instance.props = nextProps),\n        (instance.state = oldContext),\n        (instance.context = nextContext),\n        (nextProps = oldProps))\n      : (\"function\" === typeof instance.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    instance = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    nextContext = workInProgress.memoizedProps;\n    contextType = resolveClassComponentProps(Component, nextContext);\n    instance.props = contextType;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = instance.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 instance.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof instance.componentWillReceiveProps) ||\n      ((nextContext !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          instance,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    instance.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, instance, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    nextContext !== 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 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType,\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 instance.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof instance.componentWillUpdate) ||\n              (\"function\" === typeof instance.componentWillUpdate &&\n                instance.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof instance.UNSAFE_componentWillUpdate &&\n                instance.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof instance.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof instance.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof instance.componentDidUpdate ||\n              (nextContext === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n              (nextContext === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (instance.props = nextProps),\n        (instance.state = newState),\n        (instance.context = oldProps),\n        (nextProps = contextType))\n      : (\"function\" !== typeof instance.componentDidUpdate ||\n          (nextContext === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n          (nextContext === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  return finishClassComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    !1,\n    renderLanes\n  );\n}\nfunction finishClassComponent(\n  current,\n  workInProgress,\n  Component,\n  shouldUpdate,\n  hasContext,\n  renderLanes\n) {\n  markRef(current, workInProgress);\n  hasContext = 0 !== (workInProgress.flags & 128);\n  if (!shouldUpdate && !hasContext)\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  shouldUpdate = workInProgress.stateNode;\n  Component =\n    hasContext && \"function\" !== typeof Component.getDerivedStateFromError\n      ? null\n      : shouldUpdate.render();\n  workInProgress.flags |= 1;\n  null !== current && hasContext\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 = shouldUpdate.state;\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    var nextPrimaryChildren = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (didSuspend = workInProgress.child),\n        (nextPrimaryChildren = {\n          mode: \"hidden\",\n          children: nextPrimaryChildren\n        }),\n        0 === (showFallback & 1) && null !== didSuspend\n          ? ((didSuspend.childLanes = 0),\n            (didSuspend.pendingProps = nextPrimaryChildren))\n          : (didSuspend = mountWorkInProgressOffscreenFiber(\n              nextPrimaryChildren,\n              showFallback\n            )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (didSuspend.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (didSuspend.sibling = nextProps),\n        (workInProgress.child = didSuspend),\n        (nextPrimaryChildren = workInProgress.child),\n        (nextPrimaryChildren.memoizedState =\n          mountSuspenseOffscreenState(renderLanes)),\n        (nextPrimaryChildren.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n  }\n  nextPrimaryChildren = current.memoizedState;\n  if (null !== nextPrimaryChildren && null !== nextPrimaryChildren.dehydrated) {\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            0 !== (workInProgress.mode & 1) &&\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 = nextPrimaryChildren));\n    else if ((pushPrimaryTreeSuspenseHandler(workInProgress), shim$1()))\n      (JSCompiler_temp = shim$1().digest),\n        (nextProps = Error(\n          \"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.\"\n        )),\n        (nextProps.stack = \"\"),\n        (nextProps.digest = JSCompiler_temp),\n        (JSCompiler_temp = { value: nextProps, source: null, stack: null }),\n        null === hydrationErrors\n          ? (hydrationErrors = [JSCompiler_temp])\n          : hydrationErrors.push(JSCompiler_temp),\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 (null !== JSCompiler_temp) {\n        nextProps = renderLanes & -renderLanes;\n        if (0 !== (nextProps & 42)) nextProps = 1;\n        else\n          switch (nextProps) {\n            case 2:\n              nextProps = 1;\n              break;\n            case 8:\n              nextProps = 4;\n              break;\n            case 32:\n              nextProps = 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              nextProps = 128;\n              break;\n            case 268435456:\n              nextProps = 134217728;\n              break;\n            default:\n              nextProps = 0;\n          }\n        nextProps =\n          0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n            ? 0\n            : nextProps;\n        if (0 !== nextProps && nextProps !== nextPrimaryChildren.retryLane)\n          throw (\n            ((nextPrimaryChildren.retryLane = nextProps),\n            enqueueConcurrentRenderForLane(current, nextProps),\n            scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n            SelectiveHydrationException)\n          );\n      }\n      shim$1() || renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      shim$1()\n        ? ((workInProgress.flags |= 192),\n          (workInProgress.child = current.child),\n          (workInProgress = null))\n        : ((workInProgress = mountSuspensePrimaryChildren(\n            workInProgress,\n            nextProps.children\n          )),\n          (workInProgress.flags |= 4096));\n    return workInProgress;\n  }\n  if (showFallback) {\n    reuseSuspenseHandlerOnStack(workInProgress);\n    nextPrimaryChildren = nextProps.fallback;\n    showFallback = workInProgress.mode;\n    didSuspend = current.child;\n    var currentFallbackChildFragment = didSuspend.sibling,\n      primaryChildProps = { mode: \"hidden\", children: nextProps.children };\n    0 === (showFallback & 1) && workInProgress.child !== didSuspend\n      ? ((nextProps = workInProgress.child),\n        (nextProps.childLanes = 0),\n        (nextProps.pendingProps = primaryChildProps),\n        (workInProgress.deletions = null))\n      : ((nextProps = createWorkInProgress(didSuspend, primaryChildProps)),\n        (nextProps.subtreeFlags = didSuspend.subtreeFlags & 65011712));\n    null !== currentFallbackChildFragment\n      ? (nextPrimaryChildren = createWorkInProgress(\n          currentFallbackChildFragment,\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    nextProps = nextPrimaryChildren;\n    nextPrimaryChildren = workInProgress.child;\n    showFallback = current.child.memoizedState;\n    null === showFallback\n      ? (showFallback = mountSuspenseOffscreenState(renderLanes))\n      : ((didSuspend = showFallback.cachePool),\n        null !== didSuspend\n          ? ((currentFallbackChildFragment = CacheContext._currentValue2),\n            (didSuspend =\n              didSuspend.parent !== currentFallbackChildFragment\n                ? {\n                    parent: currentFallbackChildFragment,\n                    pool: currentFallbackChildFragment\n                  }\n                : didSuspend))\n          : (didSuspend = getSuspendedCache()),\n        (showFallback = {\n          baseLanes: showFallback.baseLanes | renderLanes,\n          cachePool: didSuspend\n        }));\n    nextPrimaryChildren.memoizedState = showFallback;\n    nextPrimaryChildren.childLanes = getRemainingWorkInPrimaryTree(\n      current,\n      JSCompiler_temp,\n      renderLanes\n    );\n    workInProgress.memoizedState = SUSPENDED_MARKER;\n    return nextProps;\n  }\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  JSCompiler_temp = current.child;\n  current = JSCompiler_temp.sibling;\n  JSCompiler_temp = createWorkInProgress(JSCompiler_temp, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  0 === (workInProgress.mode & 1) && (JSCompiler_temp.lanes = renderLanes);\n  JSCompiler_temp.return = workInProgress;\n  JSCompiler_temp.sibling = null;\n  null !== current &&\n    ((renderLanes = workInProgress.deletions),\n    null === renderLanes\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : renderLanes.push(current));\n  workInProgress.child = JSCompiler_temp;\n  workInProgress.memoizedState = null;\n  return JSCompiler_temp;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n  offscreenProps.lanes = 0;\n  offscreenProps.stateNode = {\n    _visibility: 1,\n    _pendingMarkers: null,\n    _retryCache: null,\n    _transitions: null\n  };\n  return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n  else {\n    if (null !== current && 0 !== (current.flags & 128))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (19 === current.tag)\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  if (0 === (workInProgress.mode & 1)) workInProgress.memoizedState = null;\n  else\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),\n            (workInProgress.child = null))\n          : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n        initSuspenseListRenderState(\n          workInProgress,\n          !1,\n          revealOrder,\n          renderLanes,\n          tailMode\n        );\n        break;\n      case \"backwards\":\n        renderLanes = null;\n        revealOrder = workInProgress.child;\n        for (workInProgress.child = null; null !== revealOrder; ) {\n          current = revealOrder.alternate;\n          if (null !== current && null === findFirstSuspended(current)) {\n            workInProgress.child = revealOrder;\n            break;\n          }\n          current = revealOrder.sibling;\n          revealOrder.sibling = renderLanes;\n          renderLanes = revealOrder;\n          revealOrder = current;\n        }\n        initSuspenseListRenderState(\n          workInProgress,\n          !0,\n          renderLanes,\n          null,\n          tailMode\n        );\n        break;\n      case \"together\":\n        initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n        break;\n      default:\n        workInProgress.memoizedState = null;\n    }\n  return workInProgress.child;\n}\nfunction resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress) {\n  0 === (workInProgress.mode & 1) &&\n    null !== current &&\n    ((current.alternate = null),\n    (workInProgress.alternate = null),\n    (workInProgress.flags |= 2));\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(\"Resuming work not yet implemented.\");\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      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 13:\n      var state = workInProgress.memoizedState;\n      if (null !== state) {\n        if (null !== state.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        if (0 !== (renderLanes & workInProgress.child.childLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      var didSuspendBefore = 0 !== (current.flags & 128);\n      state = 0 !== (renderLanes & workInProgress.childLanes);\n      state ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      didSuspendBefore = workInProgress.memoizedState;\n      null !== didSuspendBefore &&\n        ((didSuspendBefore.rendering = null),\n        (didSuspendBefore.tail = null),\n        (didSuspendBefore.lastEffect = null));\n      push(suspenseStackCursor, suspenseStackCursor.current);\n      if (state) break;\n      else return null;\n    case 22:\n    case 23:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(current, workInProgress, renderLanes)\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else didReceiveUpdate = !1;\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      var elementType = workInProgress.elementType;\n      a: {\n        resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress);\n        current = workInProgress.pendingProps;\n        var init = elementType._init;\n        elementType = init(elementType._payload);\n        workInProgress.type = elementType;\n        if (\"function\" === typeof elementType)\n          shouldConstruct(elementType)\n            ? ((current = resolveClassComponentProps(elementType, current)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                elementType,\n                current,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                elementType,\n                current,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== elementType && null !== elementType)\n            if (\n              ((init = elementType.$$typeof), init === REACT_FORWARD_REF_TYPE)\n            ) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                elementType,\n                current,\n                renderLanes\n              );\n              break a;\n            } else if (init === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                elementType,\n                current,\n                renderLanes\n              );\n              break a;\n            }\n          workInProgress = getComponentNameFromType(elementType) || elementType;\n          throw Error(\n            \"Element type is invalid. Received a promise that resolves to: \" +\n              workInProgress +\n              \". Lazy element type must resolve to a class or function.\"\n          );\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        (elementType = workInProgress.type),\n        (init = resolveClassComponentProps(\n          elementType,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          elementType,\n          init,\n          renderLanes\n        )\n      );\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      if (null === current)\n        throw Error(\"Should have a current fiber. This is a bug in React.\");\n      var nextProps = workInProgress.pendingProps;\n      init = workInProgress.memoizedState;\n      elementType = init.element;\n      cloneUpdateQueue(current, workInProgress);\n      processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n      nextProps = workInProgress.memoizedState;\n      var nextCache = nextProps.cache;\n      pushProvider(workInProgress, CacheContext, nextCache);\n      nextCache !== init.cache &&\n        propagateContextChanges(\n          workInProgress,\n          [CacheContext],\n          renderLanes,\n          !0\n        );\n      suspendIfUpdateReadFromEntangledAsyncAction();\n      init = nextProps.element;\n      init === elementType\n        ? (workInProgress = bailoutOnAlreadyFinishedWork(\n            current,\n            workInProgress,\n            renderLanes\n          ))\n        : (reconcileChildren(current, workInProgress, init, renderLanes),\n          (workInProgress = workInProgress.child));\n      return workInProgress;\n    case 26:\n    case 27:\n    case 5:\n      return (\n        pushHostContext(workInProgress),\n        (elementType = workInProgress.pendingProps.children),\n        null !== workInProgress.memoizedState &&\n          ((init = renderWithHooks(\n            current,\n            workInProgress,\n            TransitionAwareHostComponent,\n            null,\n            null,\n            renderLanes\n          )),\n          (HostTransitionContext._currentValue2 = init)),\n        markRef(current, workInProgress),\n        reconcileChildren(current, workInProgress, elementType, renderLanes),\n        workInProgress.child\n      );\n    case 6:\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        (elementType = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              elementType,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              elementType,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return (\n        (elementType = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, elementType.value),\n        reconcileChildren(\n          current,\n          workInProgress,\n          elementType.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        (init = workInProgress.type._context),\n        (elementType = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        (init = readContext(init)),\n        (elementType = elementType(init)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, elementType, 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 17:\n      return (\n        (elementType = workInProgress.type),\n        (init = resolveClassComponentProps(\n          elementType,\n          workInProgress.pendingProps\n        )),\n        resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress),\n        (workInProgress.tag = 1),\n        prepareToReadContext(workInProgress),\n        constructClassInstance(workInProgress, elementType, init),\n        mountClassInstance(workInProgress, elementType, init, renderLanes),\n        finishClassComponent(\n          null,\n          workInProgress,\n          elementType,\n          !0,\n          !1,\n          renderLanes\n        )\n      );\n    case 28:\n      return (\n        (elementType = workInProgress.type),\n        (init = resolveClassComponentProps(\n          elementType,\n          workInProgress.pendingProps\n        )),\n        resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress),\n        (workInProgress.tag = 0),\n        updateFunctionComponent(\n          null,\n          workInProgress,\n          elementType,\n          init,\n          renderLanes\n        )\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 31:\n      return (\n        (elementType = workInProgress.pendingProps),\n        (renderLanes = workInProgress.mode),\n        (elementType = {\n          mode: elementType.mode,\n          children: elementType.children\n        }),\n        null === current\n          ? ((renderLanes = mountWorkInProgressOffscreenFiber(\n              elementType,\n              renderLanes\n            )),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes))\n          : ((renderLanes = createWorkInProgress(current.child, elementType)),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes)),\n        workInProgress\n      );\n    case 22:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (elementType = readContext(CacheContext)),\n        null === current\n          ? ((init = peekCacheFromPool()),\n            null === init &&\n              ((init = workInProgressRoot),\n              (nextProps = createCache()),\n              (init.pooledCache = nextProps),\n              nextProps.refCount++,\n              null !== nextProps && (init.pooledCacheLanes |= renderLanes),\n              (init = nextProps)),\n            (workInProgress.memoizedState = {\n              parent: elementType,\n              cache: init\n            }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, init))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            (init = current.memoizedState),\n            (nextProps = workInProgress.memoizedState),\n            init.parent !== elementType\n              ? ((init = { parent: elementType, cache: elementType }),\n                (workInProgress.memoizedState = init),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      init),\n                pushProvider(workInProgress, CacheContext, elementType))\n              : ((elementType = nextProps.cache),\n                pushProvider(workInProgress, CacheContext, elementType),\n                elementType !== init.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(\n    \"Unknown unit of work tag (\" +\n      workInProgress.tag +\n      \"). This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction doesRequireClone(current, completedWork) {\n  if (null !== current && current.child === completedWork.child) return !1;\n  if (0 !== (completedWork.flags & 16)) return !0;\n  for (current = completedWork.child; null !== current; ) {\n    if (0 !== (current.flags & 13878) || 0 !== (current.subtreeFlags & 13878))\n      return !0;\n    current = current.sibling;\n  }\n  return !1;\n}\nfunction appendAllChildren(\n  parent,\n  workInProgress,\n  needsVisibilityToggle,\n  isHidden\n) {\n  for (var node = workInProgress.child; null !== node; ) {\n    if (5 === node.tag) {\n      var instance = node.stateNode;\n      needsVisibilityToggle &&\n        isHidden &&\n        (instance = cloneHiddenInstance(instance));\n      appendChildNode(parent.node, instance.node);\n    } else if (6 === node.tag) {\n      instance = node.stateNode;\n      if (needsVisibilityToggle && isHidden)\n        throw Error(\"Not yet implemented.\");\n      appendChildNode(parent.node, instance.node);\n    } else if (4 !== node.tag)\n      if (22 === node.tag && null !== node.memoizedState)\n        (instance = node.child),\n          null !== instance && (instance.return = node),\n          appendAllChildren(parent, node, !0, !0);\n      else if (null !== node.child) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n    if (node === workInProgress) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === workInProgress) return;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n}\nfunction appendAllChildrenToContainer(\n  containerChildSet,\n  workInProgress,\n  needsVisibilityToggle,\n  isHidden\n) {\n  for (\n    var hasOffscreenComponentChild = !1, node = workInProgress.child;\n    null !== node;\n\n  ) {\n    if (5 === node.tag) {\n      var instance = node.stateNode;\n      needsVisibilityToggle &&\n        isHidden &&\n        (instance = cloneHiddenInstance(instance));\n      appendChildNodeToSet(containerChildSet, instance.node);\n    } else if (6 === node.tag) {\n      instance = node.stateNode;\n      if (needsVisibilityToggle && isHidden)\n        throw Error(\"Not yet implemented.\");\n      appendChildNodeToSet(containerChildSet, instance.node);\n    } else if (4 !== node.tag)\n      if (22 === node.tag && null !== node.memoizedState)\n        (hasOffscreenComponentChild = node.child),\n          null !== hasOffscreenComponentChild &&\n            (hasOffscreenComponentChild.return = node),\n          appendAllChildrenToContainer(containerChildSet, node, !0, !0),\n          (hasOffscreenComponentChild = !0);\n      else if (null !== node.child) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n    if (node === workInProgress) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === workInProgress)\n        return hasOffscreenComponentChild;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return hasOffscreenComponentChild;\n}\nfunction updateHostContainer(current, workInProgress) {\n  if (doesRequireClone(current, workInProgress)) {\n    current = workInProgress.stateNode;\n    var container = current.containerInfo,\n      newChildSet = createChildNodeSet();\n    appendAllChildrenToContainer(newChildSet, workInProgress, !1, !1);\n    current.pendingChildren = newChildSet;\n    workInProgress.flags |= 4;\n    completeRoot(container.containerTag, newChildSet);\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  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$94 = null; null !== lastTailNode; )\n        null !== lastTailNode.alternate && (lastTailNode$94 = lastTailNode),\n          (lastTailNode = lastTailNode.sibling);\n      null === lastTailNode$94\n        ? hasRenderedATailFallback || null === renderState.tail\n          ? (renderState.tail = null)\n          : (renderState.tail.sibling = null)\n        : (lastTailNode$94.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$95 = completedWork.child; null !== child$95; )\n      (newChildLanes |= child$95.lanes | child$95.childLanes),\n        (subtreeFlags |= child$95.subtreeFlags & 65011712),\n        (subtreeFlags |= child$95.flags & 65011712),\n        (child$95.return = completedWork),\n        (child$95 = child$95.sibling);\n  else\n    for (child$95 = completedWork.child; null !== child$95; )\n      (newChildLanes |= child$95.lanes | child$95.childLanes),\n        (subtreeFlags |= child$95.subtreeFlags),\n        (subtreeFlags |= child$95.flags),\n        (child$95.return = completedWork),\n        (child$95 = child$95.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  switch (workInProgress.tag) {\n    case 28:\n    case 31:\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      return (\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        (null !== current && null !== current.child) ||\n          null === current ||\n          (current.memoizedState.isDehydrated &&\n            0 === (workInProgress.flags & 256)) ||\n          ((workInProgress.flags |= 1024),\n          upgradeHydrationErrorsToRecoverable()),\n        updateHostContainer(current, workInProgress),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(workInProgress);\n      var type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        if (\n          ((renderLanes = current.stateNode),\n          (type = current.memoizedProps),\n          (current = doesRequireClone(current, workInProgress)) ||\n            type !== newProps)\n        ) {\n          b: {\n            type = diffProperties(\n              null,\n              type,\n              newProps,\n              renderLanes.canonical.viewConfig.validAttributes\n            );\n            renderLanes.canonical.currentProps = newProps;\n            newProps = renderLanes.node;\n            if (current)\n              newProps =\n                null !== type\n                  ? cloneNodeWithNewChildrenAndProps(newProps, type)\n                  : cloneNodeWithNewChildren(newProps);\n            else if (null !== type)\n              newProps = cloneNodeWithNewProps(newProps, type);\n            else {\n              newProps = renderLanes;\n              break b;\n            }\n            newProps = { node: newProps, canonical: renderLanes.canonical };\n          }\n          newProps === renderLanes\n            ? (workInProgress.stateNode = renderLanes)\n            : ((workInProgress.stateNode = newProps),\n              current\n                ? appendAllChildren(newProps, workInProgress, !1, !1)\n                : (workInProgress.flags |= 4));\n        } else workInProgress.stateNode = renderLanes;\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(\n              \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n            );\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        renderLanes = rootInstanceStackCursor.current;\n        current = nextReactTag;\n        nextReactTag += 2;\n        type = getViewConfigForType(type);\n        var updatePayload = fastAddProperties(\n          null,\n          newProps,\n          type.validAttributes\n        );\n        updatePayload = createNode(\n          current,\n          type.uiViewClassName,\n          renderLanes.containerTag,\n          updatePayload,\n          workInProgress\n        );\n        renderLanes = ReactNativePrivateInterface.createPublicInstance(\n          current,\n          type,\n          workInProgress,\n          renderLanes.publicInstance\n        );\n        current = {\n          node: updatePayload,\n          canonical: {\n            nativeTag: current,\n            viewConfig: type,\n            currentProps: newProps,\n            internalInstanceHandle: workInProgress,\n            publicInstance: renderLanes\n          }\n        };\n        appendAllChildren(current, workInProgress, !1, !1);\n        workInProgress.stateNode = current;\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.flags &= -16777217;\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps\n          ? ((workInProgress.stateNode = createTextInstance(\n              newProps,\n              rootInstanceStackCursor.current,\n              contextStackCursor.current,\n              workInProgress\n            )),\n            (workInProgress.flags |= 4))\n          : (workInProgress.stateNode = current.stateNode);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(\n            \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n        workInProgress.stateNode = createTextInstance(\n          newProps,\n          rootInstanceStackCursor.current,\n          contextStackCursor.current,\n          workInProgress\n        );\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        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            throw Error(\n              \"A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.\"\n            );\n            throw Error(\n              \"Expected prepareToHydrateHostSuspenseInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.\"\n            );\n          }\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        (updatePayload = null),\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (updatePayload = newProps.memoizedState.cachePool.pool),\n        updatePayload !== 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        updateHostContainer(current, workInProgress),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 17:\n      return bubbleProperties(workInProgress), null;\n    case 19:\n      pop(suspenseStackCursor);\n      type = workInProgress.memoizedState;\n      if (null === type) return bubbleProperties(workInProgress), null;\n      newProps = 0 !== (workInProgress.flags & 128);\n      updatePayload = type.rendering;\n      if (null === updatePayload)\n        if (newProps) cutOffTailIfNeeded(type, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              updatePayload = findFirstSuspended(current);\n              if (null !== updatePayload) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(type, !1);\n                current = updatePayload.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== type.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (newProps = !0),\n            cutOffTailIfNeeded(type, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!newProps)\n          if (\n            ((current = findFirstSuspended(updatePayload)), null !== current)\n          ) {\n            if (\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(type, !0),\n              null === type.tail &&\n                \"hidden\" === type.tailMode &&\n                !updatePayload.alternate)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - type.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              cutOffTailIfNeeded(type, !1),\n              (workInProgress.lanes = 4194304));\n        type.isBackwards\n          ? ((updatePayload.sibling = workInProgress.child),\n            (workInProgress.child = updatePayload))\n          : ((current = type.last),\n            null !== current\n              ? (current.sibling = updatePayload)\n              : (workInProgress.child = updatePayload),\n            (type.last = updatePayload));\n      }\n      if (null !== type.tail)\n        return (\n          (workInProgress = type.tail),\n          (type.rendering = workInProgress),\n          (type.tail = workInProgress.sibling),\n          (type.renderingStartTime = now()),\n          (workInProgress.sibling = null),\n          (current = suspenseStackCursor.current),\n          push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n          workInProgress\n        );\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps && 0 !== (workInProgress.mode & 1)\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    case 29:\n      return null;\n  }\n  throw Error(\n    \"Unknown unit of work tag (\" +\n      workInProgress.tag +\n      \"). This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction unwindWork(current, workInProgress) {\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (\n        null !== current &&\n        null !== current.dehydrated &&\n        null === workInProgress.alternate\n      )\n        throw Error(\n          \"Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.\"\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  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      pop(suspenseStackCursor);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create$117 = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create$117();\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 = getPublicInstance(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$119) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$119);\n      }\n    else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n  try {\n    throw Error(\n      \"The current renderer does not support mutation. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((root = nextEffect),\n      (firstChild = root.child),\n      0 !== (root.subtreeFlags & 1024) && null !== firstChild)\n    )\n      (firstChild.return = root), (nextEffect = firstChild);\n    else\n      for (; null !== nextEffect; ) {\n        root = nextEffect;\n        var current = root.alternate;\n        firstChild = root.flags;\n        switch (root.tag) {\n          case 0:\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (firstChild & 1024) && null !== current) {\n              firstChild = void 0;\n              var finishedWork = root,\n                prevProps = current.memoizedProps;\n              current = current.memoizedState;\n              var instance = finishedWork.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  finishedWork.type,\n                  prevProps,\n                  finishedWork.elementType === finishedWork.type\n                );\n                firstChild = instance.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  current\n                );\n                instance.__reactInternalSnapshotBeforeUpdate = firstChild;\n              } catch (error) {\n                captureCommitPhaseError(\n                  finishedWork,\n                  finishedWork.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\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 !== (firstChild & 1024))\n              throw Error(\n                \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n              );\n        }\n        firstChild = root.sibling;\n        if (null !== firstChild) {\n          firstChild.return = root.return;\n          nextEffect = firstChild;\n          break;\n        }\n        nextEffect = root.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$118) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$118\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 = getPublicInstance(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    case 26:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      null === current && flags & 4 && commitHostMount(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 64 &&\n        ((finishedRoot = finishedWork.memoizedState),\n        null !== finishedRoot &&\n          null !== finishedRoot.dehydrated &&\n          (retryDehydratedSuspenseBoundary.bind(null, finishedWork), shim$1()));\n      break;\n    case 22:\n      if (0 !== (finishedWork.mode & 1)) {\n        if (\n          ((flags =\n            null !== finishedWork.memoizedState || offscreenSubtreeIsHidden),\n          !flags)\n        ) {\n          current =\n            (null !== current && null !== current.memoizedState) ||\n            offscreenSubtreeWasHidden;\n          prevProps = offscreenSubtreeIsHidden;\n          var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n          offscreenSubtreeIsHidden = flags;\n          (offscreenSubtreeWasHidden = current) &&\n          !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      } else recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\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  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}\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    case 27:\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 18:\n      break;\n    case 4:\n      createChildNodeSet();\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      if (!offscreenSubtreeWasHidden) {\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n        var instance = deletedFiber.stateNode;\n        \"function\" === typeof instance.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            instance\n          );\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      deletedFiber.mode & 1\n        ? ((offscreenSubtreeWasHidden =\n            (instance = offscreenSubtreeWasHidden) ||\n            null !== deletedFiber.memoizedState),\n          recursivelyTraverseDeletionEffects(\n            finishedRoot,\n            nearestMountedAncestor,\n            deletedFiber\n          ),\n          (offscreenSubtreeWasHidden = instance))\n        : recursivelyTraverseDeletionEffects(\n            finishedRoot,\n            nearestMountedAncestor,\n            deletedFiber\n          );\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(\n        \"Unexpected Suspense handler tag (\" +\n          finishedWork.tag +\n          \"). This is a bug in React.\"\n      );\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n    retryCache.has(wakeable) ||\n      (retryCache.add(wakeable), wakeable.then(retry, retry));\n  });\n}\nfunction recursivelyTraverseMutationEffects(root, 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      commitDeletionEffectsOnFiber(root, parentFiber, childToDelete);\n      var alternate = childToDelete.alternate;\n      null !== alternate && (alternate.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13878)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root),\n        (parentFiber = parentFiber.sibling);\n}\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    case 27:\n    case 5:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      null !== finishedWork.alternate &&\n        (finishedWork.alternate.stateNode = finishedWork.stateNode);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 3:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 4:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        ((current = null !== current && null !== current.memoizedState),\n        null === finishedWork.memoizedState ||\n          current ||\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      var isHidden = null !== finishedWork.memoizedState,\n        wasHidden = null !== current && null !== current.memoizedState;\n      if (finishedWork.mode & 1) {\n        var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n          prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || isHidden;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n      } else recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 8192 &&\n        ((root = finishedWork.stateNode),\n        (root._visibility = isHidden\n          ? root._visibility & -2\n          : root._visibility | 1),\n        isHidden &&\n          (null === current ||\n            wasHidden ||\n            offscreenSubtreeIsHidden ||\n            offscreenSubtreeWasHidden ||\n            (0 !== (finishedWork.mode & 1) &&\n              recursivelyTraverseDisappearLayoutEffects(finishedWork))));\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  flags & 2 && (finishedWork.flags &= -3);\n  flags & 4096 && (finishedWork.flags &= -4097);\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      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      case 26:\n      case 5:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            includeWorkInProgressEffects\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 30:\n        break;\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 1:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              finishedRoot.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 13:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      id = finishedWork.alternate;\n      null !== finishedWork.memoizedState\n        ? _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : finishedWork.mode & 1\n            ? recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n            : ((_finishedWork$memoize2._visibility |= 2),\n              recursivelyTraversePassiveMountEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions\n              ))\n        : _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256)\n            ));\n      flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 2\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : finishedWork.mode & 1\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          : ((instance._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        shim();\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 3:\n    case 4:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 22:\n      if (null === fiber.memoizedState) {\n        var current = fiber.alternate;\n        null !== current && null !== current.memoizedState\n          ? ((current = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(fiber),\n            (suspenseyCommitFlag = current))\n          : recursivelyAccumulateSuspenseyCommit(fiber);\n      }\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 2 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 2 &&\n          ((i._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  pendingEffectsStatus = 0,\n  pendingEffectsRoot = null,\n  pendingFinishedWork = null,\n  pendingEffectsLanes = 0,\n  pendingEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  pendingRecoverableErrors = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane(fiber) {\n  return 0 === (fiber.mode & 1)\n    ? 2\n    : 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n      ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n      : null !== ReactSharedInternals.T\n        ? ((fiber = currentEntangledLane),\n          0 !== fiber ? fiber : requestTransitionLane())\n        : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  0 === workInProgressDeferredLane &&\n    (workInProgressDeferredLane =\n      0 !== (workInProgressRootRenderLanes & 536870912)\n        ? 536870912\n        : claimNextTransitionLane());\n  var suspenseHandler = suspenseHandlerStackCursor.current;\n  null !== suspenseHandler && (suspenseHandler.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root),\n      2 === lane &&\n        0 === executionContext &&\n        0 === (fiber.mode & 1) &&\n        ((workInProgressRootRenderTargetTime = now() + 500),\n        flushSyncWorkAcrossRoots_impl(0, !0));\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6))\n    throw Error(\"Should not already be working.\");\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 124) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (0 !== root$jscomp$0.tag && 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            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (2 !== JSCompiler_inline_result) {\n              if (workInProgressRootDidAttachPingListener) {\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(\"Root did not complete. This is a bug in React.\");\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(\"Unknown root exit status.\");\n        }\n        if (\n          (lanes & 62914560) === lanes &&\n          3 === renderWasConcurrent &&\n          ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n          10 < exitStatus)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              renderWasConcurrent,\n              2,\n              -0,\n              0\n            ),\n            exitStatus\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes\n        );\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) {\n  root.timeoutHandle = -1;\n  var subtreeFlags = finishedWork.subtreeFlags;\n  (subtreeFlags & 8192 || 16785408 === (subtreeFlags & 16785408)) &&\n    accumulateSuspenseyCommitOnFiber(finishedWork);\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$10 = 31 - clz32(lanes),\n      lane = 1 << index$10;\n    didAttemptEntireTree[index$10] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber$1 = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState = null),\n        (thenableIndexCounter = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  0 !== (lanes & 8) && (lanes |= lanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= lanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$8 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$8;\n      lanes |= root[index$8];\n      allEntangledLanes &= ~lane;\n    }\n  entangledRenderLanes = lanes;\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException || thrownValue === SuspenseActionException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194048) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 9:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$131) {\n      handleThrow(root, thrownValue$131);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n          case 9:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              (2 !== workInProgressSuspendedReason &&\n                9 !== workInProgressSuspendedReason) ||\n                workInProgressRoot !== root ||\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (resource ? shim(resource) : 1) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(\"Unexpected SuspendedReason. This is a bug in React.\");\n        }\n      }\n      workLoopConcurrentByScheduler();\n      break;\n    } catch (thrownValue$133) {\n      handleThrow(root, thrownValue$133);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState = null;\n  thenableIndexCounter = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (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))\n    throw Error(\"Should not already be working.\");\n  if (null !== finishedWork) {\n    if (finishedWork === root.current)\n      throw Error(\n        \"Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.\"\n      );\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(NormalPriority$1, function () {\n          flushPassiveEffects(!0);\n          return null;\n        }))\n      : ((root.callbackNode = null), (root.callbackPriority = 0));\n    recoverableErrors = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n      recoverableErrors = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      transitions = currentUpdatePriority;\n      currentUpdatePriority = 2;\n      spawnedLane = executionContext;\n      executionContext |= 4;\n      try {\n        commitBeforeMutationEffects(root, finishedWork, lanes);\n      } finally {\n        (executionContext = spawnedLane),\n          (currentUpdatePriority = 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 = currentUpdatePriority;\n      currentUpdatePriority = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitMutationEffectsOnFiber(finishedWork, root);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (currentUpdatePriority = 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 = currentUpdatePriority;\n      currentUpdatePriority = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (currentUpdatePriority = 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 = currentUpdatePriority;\n      currentUpdatePriority = 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          (currentUpdatePriority = remainingLanes);\n      }\n    }\n    0 !== (pendingEffectsLanes & 3) && 0 !== root.tag && flushPendingEffects();\n    ensureRootIsScheduled(root);\n    remainingLanes = root.pendingLanes;\n    0 !== (lanes & 4194090) && 0 !== (remainingLanes & 42)\n      ? root === rootWithNestedUpdates\n        ? nestedUpdateCount++\n        : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n      : (nestedUpdateCount = 0);\n    flushSyncWorkAcrossRoots_impl(0, !1);\n  }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects(wasDelayedCommit) {\n  flushMutationEffects();\n  flushLayoutEffects();\n  flushSpawnedWork();\n  return flushPassiveEffects(wasDelayedCommit);\n}\nfunction flushPassiveEffects() {\n  if (5 !== pendingEffectsStatus) return !1;\n  var root = pendingEffectsRoot,\n    remainingLanes = pendingEffectsRemainingLanes;\n  pendingEffectsRemainingLanes = 0;\n  var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n    prevTransition = ReactSharedInternals.T,\n    previousPriority = currentUpdatePriority;\n  try {\n    currentUpdatePriority = 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))\n      throw Error(\"Cannot flush passive effects while already rendering.\");\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    (currentUpdatePriority = 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 &&\n    (retryLane = 0 === (boundaryFiber.mode & 1) ? 2 : claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(\n        \"Pinged unknown suspense boundary type. This is probably a bug in React.\"\n      );\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\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) fiberTag = 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 |= 8;\n        0 !== (mode & 1) && (mode |= 16);\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: \" +\n            ((null === type ? \"null\" : typeof type) + \".\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  formState\n) {\n  this.tag = tag;\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 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}\nfunction findHostInstance(component) {\n  var fiber = component._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof component.render)\n      throw Error(\"Unable to find node on an unmounted component.\");\n    component = Object.keys(component).join(\",\");\n    throw Error(\n      \"Argument appears to not be a ReactComponent. Keys: \" + component\n    );\n  }\n  component = findCurrentFiberUsingSlowPath(fiber);\n  component = null !== component ? findCurrentHostFiberImpl(component) : null;\n  return null === component ? null : getPublicInstance(component.stateNode);\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n  parentComponent = container.current;\n  var lane = requestUpdateLane(parentComponent);\n  null === container.context\n    ? (container.context = emptyContextObject)\n    : (container.pendingContext = emptyContextObject);\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(parentComponent, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, parentComponent, lane),\n    entangleTransitions(element, parentComponent, lane));\n  return lane;\n}\nfunction shim$1() {\n  throw Error(\n    \"The current renderer does not support hydration. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction shim() {\n  throw Error(\n    \"The current renderer does not support Resources. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nvar _nativeFabricUIManage = nativeFabricUIManager,\n  createNode = _nativeFabricUIManage.createNode,\n  cloneNodeWithNewChildren = _nativeFabricUIManage.cloneNodeWithNewChildren,\n  cloneNodeWithNewChildrenAndProps =\n    _nativeFabricUIManage.cloneNodeWithNewChildrenAndProps,\n  cloneNodeWithNewProps = _nativeFabricUIManage.cloneNodeWithNewProps,\n  createChildNodeSet = _nativeFabricUIManage.createChildSet,\n  appendChildNode = _nativeFabricUIManage.appendChild,\n  appendChildNodeToSet = _nativeFabricUIManage.appendChildToSet,\n  completeRoot = _nativeFabricUIManage.completeRoot,\n  registerEventHandler = _nativeFabricUIManage.registerEventHandler,\n  FabricDiscretePriority = _nativeFabricUIManage.unstable_DiscreteEventPriority,\n  fabricGetCurrentEventPriority =\n    _nativeFabricUIManage.unstable_getCurrentEventPriority,\n  extraDevToolsConfig = {\n    getInspectorDataForInstance: void 0,\n    getInspectorDataForViewTag: function () {\n      throw Error(\n        \"getInspectorDataForViewTag() is not available in production\"\n      );\n    },\n    getInspectorDataForViewAtPoint: function () {\n      throw Error(\n        \"getInspectorDataForViewAtPoint() is not available in production.\"\n      );\n    }\n  },\n  getViewConfigForType =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry.get,\n  nextReactTag = 2;\nregisterEventHandler && registerEventHandler(dispatchEvent);\nvar PROD_HOST_CONTEXT = { isInAParentText: !0 };\nfunction createTextInstance(\n  text,\n  rootContainerInstance,\n  hostContext,\n  internalInstanceHandle\n) {\n  hostContext = nextReactTag;\n  nextReactTag += 2;\n  return {\n    node: createNode(\n      hostContext,\n      \"RCTRawText\",\n      rootContainerInstance.containerTag,\n      { text: text },\n      internalInstanceHandle\n    )\n  };\n}\nfunction getPublicInstance(instance) {\n  if (null != instance.canonical) {\n    if (null == instance.canonical.publicInstance) {\n      var $jscomp$nullish$tmp0;\n      instance.canonical.publicInstance =\n        ReactNativePrivateInterface.createPublicInstance(\n          instance.canonical.nativeTag,\n          instance.canonical.viewConfig,\n          instance.canonical.internalInstanceHandle,\n          null != ($jscomp$nullish$tmp0 = instance.canonical.publicRootInstance)\n            ? $jscomp$nullish$tmp0\n            : null\n        );\n      instance.canonical.publicRootInstance = null;\n    }\n    return instance.canonical.publicInstance;\n  }\n  return null != instance._nativeTag ? instance : null;\n}\nvar currentUpdatePriority = 0;\nfunction resolveUpdatePriority() {\n  if (0 !== currentUpdatePriority) return currentUpdatePriority;\n  var currentEventPriority = fabricGetCurrentEventPriority\n    ? fabricGetCurrentEventPriority()\n    : null;\n  if (null != currentEventPriority)\n    switch (currentEventPriority) {\n      case FabricDiscretePriority:\n        return 2;\n    }\n  return 32;\n}\nvar scheduleTimeout = setTimeout,\n  cancelTimeout = clearTimeout;\nfunction cloneHiddenInstance(instance) {\n  var node = instance.node;\n  var JSCompiler_inline_result = fastAddProperties(\n    null,\n    { style: { display: \"none\" } },\n    instance.canonical.viewConfig.validAttributes\n  );\n  return {\n    node: cloneNodeWithNewProps(node, JSCompiler_inline_result),\n    canonical: instance.canonical\n  };\n}\nvar HostTransitionContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Provider: null,\n    Consumer: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\n  },\n  supportsMicrotasks =\n    \"undefined\" !== typeof RN$enableMicrotasksInReact &&\n    !!RN$enableMicrotasksInReact,\n  scheduleMicrotask =\n    \"function\" === typeof queueMicrotask ? queueMicrotask : scheduleTimeout;\ngetFiberCurrentPropsFromNode$1 = function (instance) {\n  return instance.canonical.currentProps;\n};\ngetInstanceFromNode$1 = function (node) {\n  return null != node.canonical && null != node.canonical.internalInstanceHandle\n    ? node.canonical.internalInstanceHandle\n    : node;\n};\ngetNodeFromInstance$1 = function (fiber) {\n  fiber = getPublicInstance(fiber.stateNode);\n  if (null == fiber) throw Error(\"Could not find host instance from fiber\");\n  return fiber;\n};\nResponderEventPlugin.injection.injectGlobalResponderHandler({\n  onChange: function (from, to, blockNativeResponder) {\n    from &&\n      from.stateNode &&\n      nativeFabricUIManager.setIsJSResponder(\n        from.stateNode.node,\n        !1,\n        blockNativeResponder || !1\n      );\n    to &&\n      to.stateNode &&\n      nativeFabricUIManager.setIsJSResponder(\n        to.stateNode.node,\n        !0,\n        blockNativeResponder || !1\n      );\n  }\n});\nif (\n  \"function\" !==\n  typeof ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog\n)\n  throw Error(\n    \"Expected ReactFiberErrorDialog.showErrorDialog to be a function.\"\n  );\nfunction nativeOnUncaughtError(error, errorInfo) {\n  !1 !==\n    ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog({\n      errorBoundary: null,\n      error: error,\n      componentStack:\n        null != errorInfo.componentStack ? errorInfo.componentStack : \"\"\n    }) && reportGlobalError(error);\n}\nfunction nativeOnCaughtError(error, errorInfo) {\n  !1 !==\n    ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog({\n      errorBoundary: errorInfo.errorBoundary,\n      error: error,\n      componentStack:\n        null != errorInfo.componentStack ? errorInfo.componentStack : \"\"\n    }) && console.error(error);\n}\nbatchedUpdatesImpl = function (fn, a) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 1;\n  try {\n    return fn(a);\n  } finally {\n    (executionContext = prevExecutionContext),\n      0 === executionContext &&\n        ((workInProgressRootRenderTargetTime = now() + 500),\n        flushSyncWorkAcrossRoots_impl(0, !0));\n  }\n};\nvar roots = new Map(),\n  internals$jscomp$inline_1206 = {\n    bundleType: 0,\n    version: \"19.1.0\",\n    rendererPackageName: \"react-native-renderer\",\n    currentDispatcherRef: ReactSharedInternals,\n    reconcilerVersion: \"19.1.0\"\n  };\nnull !== extraDevToolsConfig &&\n  (internals$jscomp$inline_1206.rendererConfig = extraDevToolsConfig);\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_1519 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_1519.isDisabled &&\n    hook$jscomp$inline_1519.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_1519.inject(\n        internals$jscomp$inline_1206\n      )),\n        (injectedHook = hook$jscomp$inline_1519);\n    } catch (err) {}\n}\nexports.createPortal = function (children, containerTag) {\n  return createPortal$1(\n    children,\n    containerTag,\n    null,\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null\n  );\n};\nexports.dispatchCommand = function (handle, command, args) {\n  var nativeTag =\n    null != handle._nativeTag\n      ? handle._nativeTag\n      : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle);\n  null != nativeTag &&\n    ((handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle)),\n    null != handle\n      ? nativeFabricUIManager.dispatchCommand(handle, command, args)\n      : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand(\n          nativeTag,\n          command,\n          args\n        ));\n};\nexports.findHostInstance_DEPRECATED = function (componentOrHandle) {\n  return null == componentOrHandle\n    ? null\n    : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance\n      ? componentOrHandle.canonical.publicInstance\n      : componentOrHandle._nativeTag\n        ? componentOrHandle\n        : findHostInstance(componentOrHandle);\n};\nexports.findNodeHandle = function (componentOrHandle) {\n  if (null == componentOrHandle) return null;\n  if (\"number\" === typeof componentOrHandle) return componentOrHandle;\n  if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag;\n  if (\n    null != componentOrHandle.canonical &&\n    null != componentOrHandle.canonical.nativeTag\n  )\n    return componentOrHandle.canonical.nativeTag;\n  var nativeTag =\n    ReactNativePrivateInterface.getNativeTagFromPublicInstance(\n      componentOrHandle\n    );\n  if (nativeTag) return nativeTag;\n  componentOrHandle = findHostInstance(componentOrHandle);\n  return null == componentOrHandle\n    ? componentOrHandle\n    : null != componentOrHandle._nativeTag\n      ? componentOrHandle._nativeTag\n      : ReactNativePrivateInterface.getNativeTagFromPublicInstance(\n          componentOrHandle\n        );\n};\nexports.getNodeFromInternalInstanceHandle = function (internalInstanceHandle) {\n  return (\n    internalInstanceHandle &&\n    internalInstanceHandle.stateNode &&\n    internalInstanceHandle.stateNode.node\n  );\n};\nexports.getPublicInstanceFromInternalInstanceHandle = function (\n  internalInstanceHandle\n) {\n  var instance = internalInstanceHandle.stateNode;\n  return null == instance\n    ? null\n    : 6 === internalInstanceHandle.tag\n      ? (null == instance.publicInstance &&\n          (instance.publicInstance =\n            ReactNativePrivateInterface.createPublicTextInstance(\n              internalInstanceHandle\n            )),\n        instance.publicInstance)\n      : getPublicInstance(internalInstanceHandle.stateNode);\n};\nexports.getPublicInstanceFromRootTag = function (rootTag) {\n  return (rootTag = roots.get(rootTag))\n    ? rootTag.containerInfo.publicInstance\n    : null;\n};\nexports.isChildPublicInstance = function () {\n  throw Error(\"isChildPublicInstance() is not available in production.\");\n};\nexports.render = function (\n  element,\n  containerTag,\n  callback,\n  concurrentRoot,\n  options\n) {\n  var root = roots.get(containerTag);\n  if (!root) {\n    root = nativeOnUncaughtError;\n    var onCaughtError = nativeOnCaughtError,\n      onRecoverableError = defaultOnRecoverableError;\n    options &&\n      void 0 !== options.onUncaughtError &&\n      (root = options.onUncaughtError);\n    options &&\n      void 0 !== options.onCaughtError &&\n      (onCaughtError = options.onCaughtError);\n    options &&\n      void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError);\n    options = {\n      publicInstance:\n        ReactNativePrivateInterface.createPublicRootInstance(containerTag),\n      containerTag: containerTag\n    };\n    concurrentRoot = concurrentRoot ? 1 : 0;\n    root = new FiberRootNode(\n      options,\n      concurrentRoot,\n      !1,\n      \"\",\n      root,\n      onCaughtError,\n      onRecoverableError,\n      null\n    );\n    concurrentRoot = createFiberImplClass(\n      3,\n      null,\n      null,\n      1 === concurrentRoot ? 1 : 0\n    );\n    root.current = concurrentRoot;\n    concurrentRoot.stateNode = root;\n    onCaughtError = createCache();\n    onCaughtError.refCount++;\n    root.pooledCache = onCaughtError;\n    onCaughtError.refCount++;\n    concurrentRoot.memoizedState = {\n      element: null,\n      isDehydrated: !1,\n      cache: onCaughtError\n    };\n    initializeUpdateQueue(concurrentRoot);\n    roots.set(containerTag, root);\n  }\n  updateContainer(element, root, null, callback);\n  a: if (((element = root.current), element.child))\n    switch (element.child.tag) {\n      case 27:\n      case 5:\n        element = getPublicInstance(element.child.stateNode);\n        break a;\n      default:\n        element = element.child.stateNode;\n    }\n  else element = null;\n  return element;\n};\nexports.sendAccessibilityEvent = function (handle, eventType) {\n  var nativeTag =\n    null != handle._nativeTag\n      ? handle._nativeTag\n      : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle);\n  null != nativeTag &&\n    ((handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle)),\n    null != handle\n      ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType)\n      : ReactNativePrivateInterface.legacySendAccessibilityEvent(\n          nativeTag,\n          eventType\n        ));\n};\nexports.stopSurface = function (containerTag) {\n  var root = roots.get(containerTag);\n  root &&\n    updateContainer(null, root, null, function () {\n      root.containerInfo.publicInstance = null;\n      roots.delete(containerTag);\n    });\n};\nexports.unmountComponentAtNode = function (containerTag) {\n  this.stopSurface(containerTag);\n};\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 * @flow strict-local\n * @format\n */\n\nimport '../Core/InitializeCore';\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 * @flow strict-local\n * @format\n */\n\n'use client';\n\n/**\n * Sets up global variables typical in most JavaScript environments.\n *\n *   1. Global timers (via `setTimeout` etc).\n *   2. Global console object.\n *   3. Hooks for printing stack traces with source maps.\n *\n * Leaves enough room in the environment for implementing your own:\n *\n *   1. Require system.\n *   2. Bridged modules.\n *\n */\n\n'use strict';\n\nconst start = Date.now();\n\nrequire('../../src/private/setup/setUpDefaultReactNativeEnvironment').default();\n\nconst GlobalPerformanceLogger =\n  require('../Utilities/GlobalPerformanceLogger').default;\n// We could just call GlobalPerformanceLogger.markPoint at the top of the file,\n// but then we'd be excluding the time it took to require the logger.\n// Instead, we just use Date.now and backdate the timestamp.\nGlobalPerformanceLogger.markPoint(\n  'initializeCore_start',\n  GlobalPerformanceLogger.currentTimestamp() - (Date.now() - start),\n);\nGlobalPerformanceLogger.markPoint('initializeCore_end');\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 * @flow strict-local\n * @format\n */\n\nlet initialized = false;\n\nexport default function setUpDefaltReactNativeEnvironment(\n  enableDeveloperTools: boolean = true,\n) {\n  if (initialized) {\n    return;\n  }\n\n  initialized = true;\n\n  require('../../../Libraries/Core/setUpGlobals');\n  require('./setUpDOM').default();\n  require('../../../Libraries/Core/setUpPerformance');\n  require('../../../Libraries/Core/polyfillPromise');\n  require('../../../Libraries/Core/setUpTimers');\n  if (__DEV__ && enableDeveloperTools) {\n    require('../../../Libraries/Core/setUpReactDevTools');\n  }\n  require('../../../Libraries/Core/setUpErrorHandling');\n  require('../../../Libraries/Core/setUpRegeneratorRuntime');\n  require('../../../Libraries/Core/setUpXHR');\n  require('../../../Libraries/Core/setUpAlert');\n  require('../../../Libraries/Core/setUpNavigator');\n  require('../../../Libraries/Core/setUpBatchedBridge');\n  require('../../../Libraries/Core/setUpSegmentFetcher');\n  if (__DEV__ && enableDeveloperTools) {\n    require('../../../Libraries/Core/checkNativeVersion');\n    require('../../../Libraries/Core/setUpDeveloperTools');\n    require('../../../Libraries/LogBox/LogBox').default.install();\n  }\n\n  require('../../../Libraries/ReactNative/AppRegistry');\n}\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 * @flow strict\n * @format\n */\n\n'use client';\n'use strict';\n\n/**\n * Sets up global variables for React Native.\n * You can use this module directly, or just require InitializeCore.\n */\nif (global.window === undefined) {\n  // $FlowExpectedError[cannot-write] The global isn't writable anywhere but here, where we define it.\n  global.window = global;\n}\n\nif (global.self === undefined) {\n  // $FlowExpectedError[cannot-write] The global isn't writable anywhere but here, where we define it.\n  global.self = global;\n}\n\n// Set up process\n// $FlowExpectedError[cannot-write] The global isn't writable anywhere but here, where we define it.\nglobal.process = global.process || {};\n// $FlowExpectedError[cannot-write] The global isn't writable anywhere but here, where we define it.\nglobal.process.env = global.process.env || {};\nif (!global.process.env.NODE_ENV) {\n  // $FlowExpectedError[cannot-write] The global isn't writable anywhere but here, where we define it.\n  global.process.env.NODE_ENV = __DEV__ ? 'development' : 'production';\n}\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 * @flow strict-local\n * @format\n */\n\nimport {polyfillGlobal} from '../../../Libraries/Utilities/PolyfillFunctions';\n\nlet initialized = false;\n\nexport default function setUpDOM() {\n  if (initialized) {\n    return;\n  }\n\n  initialized = true;\n\n  polyfillGlobal(\n    'DOMRect',\n    () => require('../webapis/geometry/DOMRect').default,\n  );\n\n  polyfillGlobal(\n    'DOMRectReadOnly',\n    () => require('../webapis/geometry/DOMRectReadOnly').default,\n  );\n\n  polyfillGlobal(\n    'DOMRectList',\n    () => require('../webapis/geometry/DOMRectList').default,\n  );\n\n  polyfillGlobal(\n    'HTMLCollection',\n    () => require('../webapis/dom/oldstylecollections/HTMLCollection').default,\n  );\n\n  polyfillGlobal(\n    'NodeList',\n    () => require('../webapis/dom/oldstylecollections/NodeList').default,\n  );\n\n  polyfillGlobal(\n    'Node',\n    () => require('../webapis/dom/nodes/ReadOnlyNode').default,\n  );\n\n  polyfillGlobal(\n    'Document',\n    () => require('../webapis/dom/nodes/ReactNativeDocument').default,\n  );\n\n  polyfillGlobal(\n    'CharacterData',\n    () => require('../webapis/dom/nodes/ReadOnlyCharacterData').default,\n  );\n\n  polyfillGlobal(\n    'Text',\n    () => require('../webapis/dom/nodes/ReadOnlyText').default,\n  );\n\n  polyfillGlobal(\n    'Element',\n    () => require('../webapis/dom/nodes/ReadOnlyElement').default,\n  );\n\n  polyfillGlobal(\n    'HTMLElement',\n    () => require('../webapis/dom/nodes/ReactNativeElement').default,\n  );\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst defineLazyObjectProperty = require('./defineLazyObjectProperty').default;\n\n/**\n * Sets an object's property. If a property with the same name exists, this will\n * replace it but maintain its descriptor configuration. The property will be\n * replaced with a lazy getter.\n *\n * In DEV mode the original property value will be preserved as `original[PropertyName]`\n * so that, if necessary, it can be restored. For example, if you want to route\n * network requests through DevTools (to trace them):\n *\n *   global.XMLHttpRequest = global.originalXMLHttpRequest;\n *\n * @see https://github.com/facebook/react-native/issues/934\n */\nexport function polyfillObjectProperty<T>(\n  object: {...},\n  name: string,\n  getValue: () => T,\n): void {\n  const descriptor = Object.getOwnPropertyDescriptor<$FlowFixMe>(object, name);\n  if (__DEV__ && descriptor) {\n    const backupName = `original${name[0].toUpperCase()}${name.slice(1)}`;\n    Object.defineProperty(object, backupName, descriptor);\n  }\n\n  const {enumerable, writable, configurable = false} = descriptor || {};\n  if (descriptor && !configurable) {\n    console.error('Failed to set polyfill. ' + name + ' is not configurable.');\n    return;\n  }\n\n  defineLazyObjectProperty(object, name, {\n    get: getValue,\n    enumerable: enumerable !== false,\n    writable: writable !== false,\n  });\n}\n\nexport function polyfillGlobal<T>(name: string, getValue: () => T): void {\n  polyfillObjectProperty(global, name, getValue);\n}\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {ArrayLike} from '../utils/ArrayLikeUtils';\nimport type DOMRectReadOnly from './DOMRectReadOnly';\n\nimport {createValueIterator} from '../utils/ArrayLikeUtils';\nimport {setPlatformObject} from '../webidl/PlatformObjects';\n\n// IMPORTANT: The Flow type definition for this module is defined in `DOMRectList.js.flow`\n// because Flow only supports indexers in classes in declaration files.\n\n// $FlowIssue[prop-missing] Flow doesn't understand [Symbol.iterator]() {} and thinks this class doesn't implement the Iterable interface.\nexport default class DOMRectList implements Iterable<DOMRectReadOnly> {\n  #length: number;\n\n  /**\n   * Use `createDOMRectList` to create instances of this class.\n   *\n   * @private This is not defined in the declaration file, so users will not see\n   *          the signature of the constructor.\n   */\n  constructor(elements: $ReadOnlyArray<DOMRectReadOnly>) {\n    for (let i = 0; i < elements.length; i++) {\n      Object.defineProperty(this, i, {\n        value: elements[i],\n        enumerable: true,\n        configurable: false,\n        writable: false,\n      });\n    }\n\n    this.#length = elements.length;\n  }\n\n  get length(): number {\n    return this.#length;\n  }\n\n  item(index: number): DOMRectReadOnly | null {\n    if (index < 0 || index >= this.#length) {\n      return null;\n    }\n\n    // assigning to the interface allows us to access the indexer property in a\n    // type-safe way.\n    // eslint-disable-next-line consistent-this\n    const arrayLike: ArrayLike<DOMRectReadOnly> = this;\n    return arrayLike[index];\n  }\n\n  // $FlowIssue[unsupported-syntax] Flow does not support computed properties in classes.\n  [Symbol.iterator](): Iterator<DOMRectReadOnly> {\n    return createValueIterator(this);\n  }\n}\n\nsetPlatformObject(DOMRectList);\n\n/**\n * This is an internal method to create instances of `DOMRectList`,\n * which avoids leaking its constructor to end users.\n * We can do that because the external definition of `DOMRectList` lives in\n * `DOMRectList.js.flow`, not here.\n */\nexport function createDOMRectList(\n  elements: $ReadOnlyArray<DOMRectReadOnly>,\n): DOMRectList {\n  return new DOMRectList(elements);\n}\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 * @flow strict\n * @format\n */\n\nimport Performance from '../../src/private/webapis/performance/Performance';\nimport NativePerformance from '../../src/private/webapis/performance/specs/NativePerformance';\n\n// In case if the native implementation of the Performance API is available, use it,\n// otherwise fall back to the legacy/default one, which only defines 'Performance.now()'\nif (NativePerformance) {\n  // $FlowExpectedError[cannot-write]\n  global.performance = new Performance();\n} else {\n  if (!global.performance) {\n    // $FlowExpectedError[cannot-write]\n    global.performance = {\n      mark: () => {},\n      measure: () => {},\n      now: () => {\n        const performanceNow = global.nativePerformanceNow || Date.now;\n        return performanceNow();\n      },\n    };\n  }\n}\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {\n  DOMHighResTimeStamp,\n  PerformanceEntryList,\n  PerformanceEntryType,\n} from './PerformanceEntry';\nimport type {DetailType, PerformanceMarkOptions} from './UserTiming';\n\nimport DOMException from '../errors/DOMException';\nimport {setPlatformObject} from '../webidl/PlatformObjects';\nimport {EventCounts} from './EventTiming';\nimport {\n  performanceEntryTypeToRaw,\n  rawToPerformanceEntry,\n} from './internals/RawPerformanceEntry';\nimport {warnNoNativePerformance} from './internals/Utilities';\nimport MemoryInfo from './MemoryInfo';\nimport ReactNativeStartupTiming from './ReactNativeStartupTiming';\nimport NativePerformance from './specs/NativePerformance';\nimport {PerformanceMark, PerformanceMeasure} from './UserTiming';\n\ndeclare var global: {\n  // This value is defined directly via JSI, if available.\n  +nativePerformanceNow?: ?() => number,\n};\n\nconst getCurrentTimeStamp: () => DOMHighResTimeStamp =\n  NativePerformance?.now ?? global.nativePerformanceNow ?? (() => Date.now());\n\nexport type PerformanceMeasureOptions = {\n  detail?: DetailType,\n  start?: DOMHighResTimeStamp,\n  duration?: DOMHighResTimeStamp,\n  end?: DOMHighResTimeStamp,\n};\n\nconst ENTRY_TYPES_AVAILABLE_FROM_TIMELINE: $ReadOnlyArray<PerformanceEntryType> =\n  ['mark', 'measure'];\n\n/**\n * Partial implementation of the Performance interface for RN,\n * corresponding to the standard in\n * https://www.w3.org/TR/user-timing/#extensions-performance-interface\n */\nexport default class Performance {\n  eventCounts: EventCounts = new EventCounts();\n\n  // Get the current JS memory information.\n  get memory(): MemoryInfo {\n    if (NativePerformance?.getSimpleMemoryInfo) {\n      // JSI API implementations may have different variants of names for the JS\n      // heap information we need here. We will parse the result based on our\n      // guess of the implementation for now.\n      const memoryInfo = NativePerformance.getSimpleMemoryInfo();\n      if (memoryInfo.hasOwnProperty('hermes_heapSize')) {\n        // We got memory information from Hermes\n        const {\n          hermes_heapSize: totalJSHeapSize,\n          hermes_allocatedBytes: usedJSHeapSize,\n        } = memoryInfo;\n\n        return new MemoryInfo({\n          jsHeapSizeLimit: null, // We don't know the heap size limit from Hermes.\n          totalJSHeapSize,\n          usedJSHeapSize,\n        });\n      } else {\n        // JSC and V8 has no native implementations for memory information in JSI::Instrumentation\n        return new MemoryInfo();\n      }\n    }\n\n    return new MemoryInfo();\n  }\n\n  // Startup metrics is not used in web, but only in React Native.\n  get rnStartupTiming(): ReactNativeStartupTiming {\n    if (NativePerformance?.getReactNativeStartupTiming) {\n      const {\n        startTime,\n        endTime,\n        initializeRuntimeStart,\n        initializeRuntimeEnd,\n        executeJavaScriptBundleEntryPointStart,\n        executeJavaScriptBundleEntryPointEnd,\n      } = NativePerformance.getReactNativeStartupTiming();\n      return new ReactNativeStartupTiming({\n        startTime,\n        endTime,\n        initializeRuntimeStart,\n        initializeRuntimeEnd,\n        executeJavaScriptBundleEntryPointStart,\n        executeJavaScriptBundleEntryPointEnd,\n      });\n    }\n    return new ReactNativeStartupTiming();\n  }\n\n  mark(\n    markName: string,\n    markOptions?: PerformanceMarkOptions,\n  ): PerformanceMark {\n    let computedStartTime;\n    if (NativePerformance?.markWithResult) {\n      computedStartTime = NativePerformance.markWithResult(\n        markName,\n        markOptions?.startTime,\n      );\n    } else {\n      warnNoNativePerformance();\n      computedStartTime = performance.now();\n    }\n\n    return new PerformanceMark(markName, {\n      startTime: computedStartTime,\n      detail: markOptions?.detail,\n    });\n  }\n\n  clearMarks(markName?: string): void {\n    if (!NativePerformance?.clearMarks) {\n      warnNoNativePerformance();\n      return;\n    }\n\n    NativePerformance.clearMarks(markName);\n  }\n\n  measure(\n    measureName: string,\n    startMarkOrOptions?: string | PerformanceMeasureOptions,\n    endMark?: string,\n  ): PerformanceMeasure {\n    let options;\n    let startMarkName,\n      endMarkName = endMark,\n      duration,\n      startTime = 0,\n      endTime = 0;\n\n    if (typeof startMarkOrOptions === 'string') {\n      startMarkName = startMarkOrOptions;\n      options = {};\n    } else if (startMarkOrOptions !== undefined) {\n      options = startMarkOrOptions;\n      if (endMark !== undefined) {\n        throw new TypeError(\n          \"Performance.measure: Can't have both options and endMark\",\n        );\n      }\n      if (options.start === undefined && options.end === undefined) {\n        throw new TypeError(\n          'Performance.measure: Must have at least one of start/end specified in options',\n        );\n      }\n      if (\n        options.start !== undefined &&\n        options.end !== undefined &&\n        options.duration !== undefined\n      ) {\n        throw new TypeError(\n          \"Performance.measure: Can't have both start/end and duration explicitly in options\",\n        );\n      }\n\n      if (typeof options.start === 'number') {\n        startTime = options.start;\n      } else {\n        startMarkName = options.start;\n      }\n\n      if (typeof options.end === 'number') {\n        endTime = options.end;\n      } else {\n        endMarkName = options.end;\n      }\n\n      duration = options.duration ?? duration;\n    }\n\n    let computedStartTime = startTime;\n    let computedDuration = duration;\n\n    if (NativePerformance?.measureWithResult) {\n      try {\n        [computedStartTime, computedDuration] =\n          NativePerformance.measureWithResult(\n            measureName,\n            startTime,\n            endTime,\n            duration,\n            startMarkName,\n            endMarkName,\n          );\n      } catch (error) {\n        throw new DOMException(\n          \"Failed to execute 'measure' on 'Performance': \" + error.message,\n          'SyntaxError',\n        );\n      }\n    } else {\n      warnNoNativePerformance();\n    }\n\n    const measure = new PerformanceMeasure(measureName, {\n      startTime: computedStartTime,\n      duration: computedDuration ?? 0,\n      detail: options?.detail,\n    });\n\n    return measure;\n  }\n\n  clearMeasures(measureName?: string): void {\n    if (!NativePerformance?.clearMeasures) {\n      warnNoNativePerformance();\n      return;\n    }\n\n    NativePerformance?.clearMeasures(measureName);\n  }\n\n  /**\n   * Returns a double, measured in milliseconds.\n   * https://developer.mozilla.org/en-US/docs/Web/API/Performance/now\n   */\n  now: () => DOMHighResTimeStamp = getCurrentTimeStamp;\n\n  /**\n   * An extension that allows to get back to JS all currently logged marks/measures\n   * (in our case, be it from JS or native), see\n   * https://www.w3.org/TR/performance-timeline/#extensions-to-the-performance-interface\n   */\n  getEntries(): PerformanceEntryList {\n    if (!NativePerformance?.getEntries) {\n      warnNoNativePerformance();\n      return [];\n    }\n    return NativePerformance.getEntries().map(rawToPerformanceEntry);\n  }\n\n  getEntriesByType(entryType: PerformanceEntryType): PerformanceEntryList {\n    if (\n      entryType != null &&\n      !ENTRY_TYPES_AVAILABLE_FROM_TIMELINE.includes(entryType)\n    ) {\n      console.warn('Deprecated API for given entry type.');\n      return [];\n    }\n\n    if (!NativePerformance?.getEntriesByType) {\n      warnNoNativePerformance();\n      return [];\n    }\n\n    return NativePerformance.getEntriesByType(\n      performanceEntryTypeToRaw(entryType),\n    ).map(rawToPerformanceEntry);\n  }\n\n  getEntriesByName(\n    entryName: string,\n    entryType?: PerformanceEntryType,\n  ): PerformanceEntryList {\n    if (\n      entryType != null &&\n      !ENTRY_TYPES_AVAILABLE_FROM_TIMELINE.includes(entryType)\n    ) {\n      console.warn('Deprecated API for given entry type.');\n      return [];\n    }\n\n    if (!NativePerformance?.getEntriesByName) {\n      warnNoNativePerformance();\n      return [];\n    }\n\n    return NativePerformance.getEntriesByName(\n      entryName,\n      entryType != null ? performanceEntryTypeToRaw(entryType) : undefined,\n    ).map(rawToPerformanceEntry);\n  }\n}\n\nsetPlatformObject(Performance);\n","function _readOnlyError(r) {\n  throw new TypeError('\"' + r + '\" is read-only');\n}\nmodule.exports = _readOnlyError, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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 * @flow strict\n * @format\n */\n\n/**\n * This module implements the `DOMException` interface from WebIDL.\n * See https://webidl.spec.whatwg.org/#idl-DOMException.\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport {setPlatformObject} from '../webidl/PlatformObjects';\n\nconst ERROR_NAME_TO_ERROR_CODE_MAP: {[string]: number} = {\n  IndexSizeError: 1,\n  HierarchyRequestError: 3,\n  WrongDocumentError: 4,\n  InvalidCharacterError: 5,\n  NoModificationAllowedError: 7,\n  NotFoundError: 8,\n  NotSupportedError: 9,\n  InUseAttributeError: 10,\n  InvalidStateError: 11,\n  SyntaxError: 12,\n  InvalidModificationError: 13,\n  NamespaceError: 14,\n  InvalidAccessError: 15,\n  TypeMismatchError: 17,\n  SecurityError: 18,\n  NetworkError: 19,\n  AbortError: 20,\n  URLMismatchError: 21,\n  QuotaExceededError: 22,\n  TimeoutError: 23,\n  InvalidNodeTypeError: 24,\n  DataCloneError: 25,\n};\n\nconst ERROR_CODES: {[string]: number} = {\n  INDEX_SIZE_ERR: 1,\n  DOMSTRING_SIZE_ERR: 2,\n  HIERARCHY_REQUEST_ERR: 3,\n  WRONG_DOCUMENT_ERR: 4,\n  INVALID_CHARACTER_ERR: 5,\n  NO_DATA_ALLOWED_ERR: 6,\n  NO_MODIFICATION_ALLOWED_ERR: 7,\n  NOT_FOUND_ERR: 8,\n  NOT_SUPPORTED_ERR: 9,\n  INUSE_ATTRIBUTE_ERR: 10,\n  INVALID_STATE_ERR: 11,\n  SYNTAX_ERR: 12,\n  INVALID_MODIFICATION_ERR: 13,\n  NAMESPACE_ERR: 14,\n  INVALID_ACCESS_ERR: 15,\n  VALIDATION_ERR: 16,\n  TYPE_MISMATCH_ERR: 17,\n  SECURITY_ERR: 18,\n  NETWORK_ERR: 19,\n  ABORT_ERR: 20,\n  URL_MISMATCH_ERR: 21,\n  QUOTA_EXCEEDED_ERR: 22,\n  TIMEOUT_ERR: 23,\n  INVALID_NODE_TYPE_ERR: 24,\n  DATA_CLONE_ERR: 25,\n};\n\n/* eslint-disable @react-native/monorepo/require-extends-error */\n// $FlowExpectedError[incompatible-variance] name is writable in Error but not in DOMException, but this is how it works on Web.\nexport default class DOMException extends Error {\n  static +INDEX_SIZE_ERR: 1;\n  static +DOMSTRING_SIZE_ERR: 2;\n  static +HIERARCHY_REQUEST_ERR: 3;\n  static +WRONG_DOCUMENT_ERR: 4;\n  static +INVALID_CHARACTER_ERR: 5;\n  static +NO_DATA_ALLOWED_ERR: 6;\n  static +NO_MODIFICATION_ALLOWED_ERR: 7;\n  static +NOT_FOUND_ERR: 8;\n  static +NOT_SUPPORTED_ERR: 9;\n  static +INUSE_ATTRIBUTE_ERR: 10;\n  static +INVALID_STATE_ERR: 11;\n  static +SYNTAX_ERR: 12;\n  static +INVALID_MODIFICATION_ERR: 13;\n  static +NAMESPACE_ERR: 14;\n  static +INVALID_ACCESS_ERR: 15;\n  static +VALIDATION_ERR: 16;\n  static +TYPE_MISMATCH_ERR: 17;\n  static +SECURITY_ERR: 18;\n  static +NETWORK_ERR: 19;\n  static +ABORT_ERR: 20;\n  static +URL_MISMATCH_ERR: 21;\n  static +QUOTA_EXCEEDED_ERR: 22;\n  static +TIMEOUT_ERR: 23;\n  static +INVALID_NODE_TYPE_ERR: 24;\n  static +DATA_CLONE_ERR: 25;\n\n  +INDEX_SIZE_ERR: 1;\n  +DOMSTRING_SIZE_ERR: 2;\n  +HIERARCHY_REQUEST_ERR: 3;\n  +WRONG_DOCUMENT_ERR: 4;\n  +INVALID_CHARACTER_ERR: 5;\n  +NO_DATA_ALLOWED_ERR: 6;\n  +NO_MODIFICATION_ALLOWED_ERR: 7;\n  +NOT_FOUND_ERR: 8;\n  +NOT_SUPPORTED_ERR: 9;\n  +INUSE_ATTRIBUTE_ERR: 10;\n  +INVALID_STATE_ERR: 11;\n  +SYNTAX_ERR: 12;\n  +INVALID_MODIFICATION_ERR: 13;\n  +NAMESPACE_ERR: 14;\n  +INVALID_ACCESS_ERR: 15;\n  +VALIDATION_ERR: 16;\n  +TYPE_MISMATCH_ERR: 17;\n  +SECURITY_ERR: 18;\n  +NETWORK_ERR: 19;\n  +ABORT_ERR: 20;\n  +URL_MISMATCH_ERR: 21;\n  +QUOTA_EXCEEDED_ERR: 22;\n  +TIMEOUT_ERR: 23;\n  +INVALID_NODE_TYPE_ERR: 24;\n  +DATA_CLONE_ERR: 25;\n\n  #name: string;\n  #code: number;\n\n  constructor(message?: string, name?: string) {\n    super(message);\n\n    if (typeof name === 'undefined') {\n      this.#name = 'Error';\n      this.#code = 0;\n    } else {\n      this.#name = String(name);\n      this.#code = ERROR_NAME_TO_ERROR_CODE_MAP[this.name] ?? 0;\n    }\n  }\n\n  get name(): string {\n    return this.#name;\n  }\n\n  get code(): number {\n    return this.#code;\n  }\n}\n\nfor (const code in ERROR_CODES) {\n  Object.defineProperty(DOMException, code, {\n    enumerable: true,\n    value: ERROR_CODES[code],\n  });\n\n  Object.defineProperty(DOMException.prototype, code, {\n    enumerable: true,\n    value: ERROR_CODES[code],\n  });\n}\n\nsetPlatformObject(DOMException, {\n  clone: exception => new DOMException(exception.message, exception.name),\n});\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {\n  DOMHighResTimeStamp,\n  PerformanceEntryJSON,\n} from './PerformanceEntry';\n\nimport {warnNoNativePerformance} from './internals/Utilities';\nimport {PerformanceEntry} from './PerformanceEntry';\nimport NativePerformance from './specs/NativePerformance';\n\nexport type PerformanceEventTimingJSON = {\n  ...PerformanceEntryJSON,\n  processingStart: DOMHighResTimeStamp,\n  processingEnd: DOMHighResTimeStamp,\n  interactionId: number,\n  ...\n};\n\nexport class PerformanceEventTiming extends PerformanceEntry {\n  #processingStart: DOMHighResTimeStamp;\n  #processingEnd: DOMHighResTimeStamp;\n  #interactionId: number;\n\n  constructor(init: {\n    name: string,\n    startTime?: DOMHighResTimeStamp,\n    duration?: DOMHighResTimeStamp,\n    processingStart?: DOMHighResTimeStamp,\n    processingEnd?: DOMHighResTimeStamp,\n    interactionId?: number,\n  }) {\n    super({\n      name: init.name,\n      entryType: 'event',\n      startTime: init.startTime ?? 0,\n      duration: init.duration ?? 0,\n    });\n    this.#processingStart = init.processingStart ?? 0;\n    this.#processingEnd = init.processingEnd ?? 0;\n    this.#interactionId = init.interactionId ?? 0;\n  }\n\n  get processingStart(): DOMHighResTimeStamp {\n    return this.#processingStart;\n  }\n\n  get processingEnd(): DOMHighResTimeStamp {\n    return this.#processingEnd;\n  }\n\n  get interactionId(): number {\n    return this.#interactionId;\n  }\n\n  toJSON(): PerformanceEventTimingJSON {\n    return {\n      ...super.toJSON(),\n      processingStart: this.#processingStart,\n      processingEnd: this.#processingEnd,\n      interactionId: this.#interactionId,\n    };\n  }\n}\n\ntype EventCountsForEachCallbackType =\n  | (() => void)\n  | ((value: number) => void)\n  | ((value: number, key: string) => void)\n  | ((value: number, key: string, map: Map<string, number>) => void);\n\nlet cachedEventCounts: ?Map<string, number>;\n\nfunction getCachedEventCounts(): Map<string, number> {\n  if (cachedEventCounts) {\n    return cachedEventCounts;\n  }\n\n  if (!NativePerformance || !NativePerformance?.getEventCounts) {\n    warnNoNativePerformance();\n    cachedEventCounts = new Map();\n    return cachedEventCounts;\n  }\n\n  const eventCounts = new Map<string, number>(\n    NativePerformance.getEventCounts?.() ?? [],\n  );\n  cachedEventCounts = eventCounts;\n\n  // $FlowFixMe[incompatible-call]\n  global.queueMicrotask(() => {\n    // To be consistent with the calls to the API from the same task,\n    // but also not to refetch the data from native too often,\n    // schedule to invalidate the cache later,\n    // after the current task is guaranteed to have finished.\n    cachedEventCounts = null;\n  });\n\n  return eventCounts;\n}\n\n/**\n * Implementation of the EventCounts Web Performance API\n * corresponding to the standard in\n * https://www.w3.org/TR/event-timing/#eventcounts\n */\nexport class EventCounts {\n  get size(): number {\n    return getCachedEventCounts().size;\n  }\n\n  entries(): Iterator<[string, number]> {\n    return getCachedEventCounts().entries();\n  }\n\n  forEach(callback: EventCountsForEachCallbackType): void {\n    return getCachedEventCounts().forEach(callback);\n  }\n\n  get(key: string): ?number {\n    return getCachedEventCounts().get(key);\n  }\n\n  has(key: string): boolean {\n    return getCachedEventCounts().has(key);\n  }\n\n  keys(): Iterator<string> {\n    return getCachedEventCounts().keys();\n  }\n\n  values(): Iterator<number> {\n    return getCachedEventCounts().values();\n  }\n}\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 * @flow strict\n * @format\n */\n\nimport warnOnce from '../../../../../Libraries/Utilities/warnOnce';\n\nexport function warnNoNativePerformance() {\n  warnOnce(\n    'missing-native-performance',\n    'Missing native implementation of Performance',\n  );\n}\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport {setPlatformObject} from '../webidl/PlatformObjects';\n\nexport type DOMHighResTimeStamp = number;\nexport type PerformanceEntryType =\n  | 'mark'\n  | 'measure'\n  | 'event'\n  | 'longtask'\n  | 'resource';\n\nexport type PerformanceEntryJSON = {\n  name: string,\n  entryType: PerformanceEntryType,\n  startTime: DOMHighResTimeStamp,\n  duration: DOMHighResTimeStamp,\n  ...\n};\n\nexport class PerformanceEntry {\n  #name: string;\n  #entryType: PerformanceEntryType;\n  #startTime: DOMHighResTimeStamp;\n  #duration: DOMHighResTimeStamp;\n\n  constructor(init: {\n    name: string,\n    entryType: PerformanceEntryType,\n    startTime: DOMHighResTimeStamp,\n    duration: DOMHighResTimeStamp,\n  }) {\n    this.#name = init.name;\n    this.#entryType = init.entryType;\n    this.#startTime = init.startTime;\n    this.#duration = init.duration;\n  }\n\n  get name(): string {\n    return this.#name;\n  }\n\n  get entryType(): PerformanceEntryType {\n    return this.#entryType;\n  }\n\n  get startTime(): DOMHighResTimeStamp {\n    return this.#startTime;\n  }\n\n  get duration(): DOMHighResTimeStamp {\n    return this.#duration;\n  }\n\n  toJSON(): PerformanceEntryJSON {\n    return {\n      name: this.#name,\n      entryType: this.#entryType,\n      startTime: this.#startTime,\n      duration: this.#duration,\n    };\n  }\n}\n\nsetPlatformObject(PerformanceEntry);\n\nexport type PerformanceEntryList = $ReadOnlyArray<PerformanceEntry>;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type NativeMemoryInfo = {[key: string]: ?number};\n\nexport type ReactNativeStartupTiming = {[key: string]: ?number};\n\nexport type RawPerformanceEntryType = number;\n\nexport type RawPerformanceEntry = {\n  name: string,\n  entryType: RawPerformanceEntryType,\n  startTime: number,\n  duration: number,\n\n  // For PerformanceEventTiming only\n  processingStart?: number,\n  processingEnd?: number,\n  interactionId?: number,\n\n  // For PerformanceResourceTiming only\n  fetchStart?: number,\n  requestStart?: number,\n  connectStart?: number,\n  connectEnd?: number,\n  responseStart?: number,\n  responseEnd?: number,\n  responseStatus?: number,\n};\n\nexport opaque type OpaqueNativeObserverHandle = mixed;\n\nexport type NativeBatchedObserverCallback = () => void;\nexport type NativePerformanceMarkResult = number;\nexport type NativePerformanceMeasureResult = $ReadOnlyArray<number>; // [startTime, duration]\n\nexport type PerformanceObserverInit = {\n  entryTypes?: $ReadOnlyArray<number>,\n  type?: number,\n  buffered?: boolean,\n  durationThreshold?: number,\n};\n\nexport interface Spec extends TurboModule {\n  +now?: () => number;\n  +markWithResult?: (\n    name: string,\n    startTime?: number,\n  ) => NativePerformanceMarkResult;\n  +measureWithResult?: (\n    name: string,\n    startTime: number,\n    endTime: number,\n    duration?: number,\n    startMark?: string,\n    endMark?: string,\n  ) => NativePerformanceMeasureResult;\n  +clearMarks?: (entryName?: string) => void;\n  +clearMeasures?: (entryName?: string) => void;\n  +getEntries?: () => $ReadOnlyArray<RawPerformanceEntry>;\n  +getEntriesByName?: (\n    entryName: string,\n    entryType?: ?RawPerformanceEntryType,\n  ) => $ReadOnlyArray<RawPerformanceEntry>;\n  +getEntriesByType?: (\n    entryType: RawPerformanceEntryType,\n  ) => $ReadOnlyArray<RawPerformanceEntry>;\n  +getEventCounts?: () => $ReadOnlyArray<[string, number]>;\n  +getSimpleMemoryInfo: () => NativeMemoryInfo;\n  +getReactNativeStartupTiming: () => ReactNativeStartupTiming;\n\n  +createObserver?: (\n    callback: NativeBatchedObserverCallback,\n  ) => OpaqueNativeObserverHandle;\n  +getDroppedEntriesCount?: (observer: OpaqueNativeObserverHandle) => number;\n\n  +observe?: (\n    observer: OpaqueNativeObserverHandle,\n    options: PerformanceObserverInit,\n  ) => void;\n  +disconnect?: (observer: OpaqueNativeObserverHandle) => void;\n  +takeRecords?: (\n    observer: OpaqueNativeObserverHandle,\n    sort: boolean,\n  ) => $ReadOnlyArray<RawPerformanceEntry>;\n\n  +getSupportedPerformanceEntryTypes?: () => $ReadOnlyArray<RawPerformanceEntryType>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('NativePerformanceCxx'): ?Spec);\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 * @flow strict\n * @format\n */\n\nimport type {PerformanceEntryType} from '../PerformanceEntry';\nimport type {\n  RawPerformanceEntry,\n  RawPerformanceEntryType,\n} from '../specs/NativePerformance';\n\nimport {PerformanceEventTiming} from '../EventTiming';\nimport {PerformanceLongTaskTiming} from '../LongTasks';\nimport {PerformanceEntry} from '../PerformanceEntry';\nimport {PerformanceResourceTiming} from '../ResourceTiming';\nimport {PerformanceMark, PerformanceMeasure} from '../UserTiming';\n\nexport const RawPerformanceEntryTypeValues = {\n  MARK: 1,\n  MEASURE: 2,\n  EVENT: 3,\n  LONGTASK: 4,\n  RESOURCE: 5,\n};\n\nexport function rawToPerformanceEntry(\n  entry: RawPerformanceEntry,\n): PerformanceEntry {\n  switch (entry.entryType) {\n    case RawPerformanceEntryTypeValues.EVENT:\n      return new PerformanceEventTiming({\n        name: entry.name,\n        startTime: entry.startTime,\n        duration: entry.duration,\n        processingStart: entry.processingStart,\n        processingEnd: entry.processingEnd,\n        interactionId: entry.interactionId,\n      });\n    case RawPerformanceEntryTypeValues.LONGTASK:\n      return new PerformanceLongTaskTiming({\n        name: entry.name,\n        entryType: rawToPerformanceEntryType(entry.entryType),\n        startTime: entry.startTime,\n        duration: entry.duration,\n      });\n    case RawPerformanceEntryTypeValues.MARK:\n      return new PerformanceMark(entry.name, {\n        startTime: entry.startTime,\n      });\n    case RawPerformanceEntryTypeValues.MEASURE:\n      return new PerformanceMeasure(entry.name, {\n        startTime: entry.startTime,\n        duration: entry.duration,\n      });\n    case RawPerformanceEntryTypeValues.RESOURCE:\n      return new PerformanceResourceTiming({\n        name: entry.name,\n        startTime: entry.startTime,\n        duration: entry.duration,\n        fetchStart: entry.fetchStart ?? 0,\n        requestStart: entry.requestStart ?? 0,\n        connectStart: entry.connectStart ?? 0,\n        connectEnd: entry.connectEnd ?? 0,\n        responseStart: entry.responseStart ?? 0,\n        responseEnd: entry.responseEnd ?? 0,\n        responseStatus: entry.responseStatus,\n      });\n    default:\n      return new PerformanceEntry({\n        name: entry.name,\n        entryType: rawToPerformanceEntryType(entry.entryType),\n        startTime: entry.startTime,\n        duration: entry.duration,\n      });\n  }\n}\n\nexport function rawToPerformanceEntryType(\n  type: RawPerformanceEntryType,\n): PerformanceEntryType {\n  switch (type) {\n    case RawPerformanceEntryTypeValues.MARK:\n      return 'mark';\n    case RawPerformanceEntryTypeValues.MEASURE:\n      return 'measure';\n    case RawPerformanceEntryTypeValues.EVENT:\n      return 'event';\n    case RawPerformanceEntryTypeValues.LONGTASK:\n      return 'longtask';\n    case RawPerformanceEntryTypeValues.RESOURCE:\n      return 'resource';\n    default:\n      throw new TypeError(\n        `rawToPerformanceEntryType: unexpected performance entry type received: ${type}`,\n      );\n  }\n}\n\nexport function performanceEntryTypeToRaw(\n  type: PerformanceEntryType,\n): RawPerformanceEntryType {\n  switch (type) {\n    case 'mark':\n      return RawPerformanceEntryTypeValues.MARK;\n    case 'measure':\n      return RawPerformanceEntryTypeValues.MEASURE;\n    case 'event':\n      return RawPerformanceEntryTypeValues.EVENT;\n    case 'longtask':\n      return RawPerformanceEntryTypeValues.LONGTASK;\n    case 'resource':\n      return RawPerformanceEntryTypeValues.RESOURCE;\n    default:\n      // Verify exhaustive check with Flow\n      (type: empty);\n      throw new TypeError(\n        `performanceEntryTypeToRaw: unexpected performance entry type received: ${type}`,\n      );\n  }\n}\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {PerformanceEntryJSON} from './PerformanceEntry';\n\nimport {PerformanceEntry} from './PerformanceEntry';\n\nexport type PerformanceLongTaskTimingJSON = {\n  ...PerformanceEntryJSON,\n  attribution: $ReadOnlyArray<TaskAttributionTiming>,\n  ...\n};\n\nexport class TaskAttributionTiming extends PerformanceEntry {}\n\nconst EMPTY_ATTRIBUTION: $ReadOnlyArray<TaskAttributionTiming> =\n  Object.preventExtensions([]);\n\nexport class PerformanceLongTaskTiming extends PerformanceEntry {\n  get attribution(): $ReadOnlyArray<TaskAttributionTiming> {\n    return EMPTY_ATTRIBUTION;\n  }\n\n  toJSON(): PerformanceLongTaskTimingJSON {\n    return {\n      ...super.toJSON(),\n      attribution: this.attribution,\n    };\n  }\n}\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 * @format\n * @flow strict\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {\n  DOMHighResTimeStamp,\n  PerformanceEntryJSON,\n} from './PerformanceEntry';\n\nimport {PerformanceEntry} from './PerformanceEntry';\n\nexport type PerformanceResourceTimingJSON = {\n  ...PerformanceEntryJSON,\n  fetchStart: DOMHighResTimeStamp,\n  requestStart: DOMHighResTimeStamp,\n  connectStart: DOMHighResTimeStamp,\n  connectEnd: DOMHighResTimeStamp,\n  responseStart: DOMHighResTimeStamp,\n  responseEnd: DOMHighResTimeStamp,\n  responseStatus: ?number,\n  ...\n};\n\nexport class PerformanceResourceTiming extends PerformanceEntry {\n  #fetchStart: DOMHighResTimeStamp;\n  #requestStart: DOMHighResTimeStamp;\n  #connectStart: DOMHighResTimeStamp;\n  #connectEnd: DOMHighResTimeStamp;\n  #responseStart: DOMHighResTimeStamp;\n  #responseEnd: DOMHighResTimeStamp;\n  #responseStatus: ?number;\n\n  constructor(init: {\n    name: string,\n    startTime: DOMHighResTimeStamp,\n    duration: DOMHighResTimeStamp,\n    fetchStart: DOMHighResTimeStamp,\n    requestStart: DOMHighResTimeStamp,\n    connectStart: DOMHighResTimeStamp,\n    connectEnd: DOMHighResTimeStamp,\n    responseStart: DOMHighResTimeStamp,\n    responseEnd: DOMHighResTimeStamp,\n    responseStatus?: number,\n  }) {\n    super({\n      name: init.name,\n      entryType: 'resource',\n      startTime: init.startTime,\n      duration: init.duration,\n    });\n    this.#fetchStart = init.fetchStart;\n    this.#requestStart = init.requestStart;\n    this.#connectStart = init.connectStart;\n    this.#connectEnd = init.connectEnd;\n    this.#responseStart = init.responseStart;\n    this.#responseEnd = init.responseEnd;\n    this.#responseStatus = init.responseStatus;\n  }\n\n  get fetchStart(): DOMHighResTimeStamp {\n    return this.#fetchStart;\n  }\n\n  get requestStart(): DOMHighResTimeStamp {\n    return this.#requestStart;\n  }\n\n  get connectStart(): DOMHighResTimeStamp {\n    return this.#connectStart;\n  }\n\n  get connectEnd(): DOMHighResTimeStamp {\n    return this.#connectEnd;\n  }\n\n  get responseStart(): DOMHighResTimeStamp {\n    return this.#responseStart;\n  }\n\n  get responseEnd(): DOMHighResTimeStamp {\n    return this.#responseEnd;\n  }\n\n  get responseStatus(): ?number {\n    return this.#responseStatus;\n  }\n\n  toJSON(): PerformanceResourceTimingJSON {\n    return {\n      ...super.toJSON(),\n      fetchStart: this.#fetchStart,\n      requestStart: this.#requestStart,\n      connectStart: this.#connectStart,\n      connectEnd: this.#connectEnd,\n      responseStart: this.#responseStart,\n      responseEnd: this.#responseEnd,\n      responseStatus: this.#responseStatus,\n    };\n  }\n}\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {DOMHighResTimeStamp} from './PerformanceEntry';\n\nimport {PerformanceEntry} from './PerformanceEntry';\n\nexport type DetailType = mixed;\n\nexport type PerformanceMarkOptions = {\n  detail?: DetailType,\n  startTime?: DOMHighResTimeStamp,\n};\n\nexport type TimeStampOrName = DOMHighResTimeStamp | string;\n\nexport type PerformanceMeasureInit = {\n  detail?: DetailType,\n  startTime: DOMHighResTimeStamp,\n  duration: DOMHighResTimeStamp,\n};\n\nexport class PerformanceMark extends PerformanceEntry {\n  #detail: DetailType;\n\n  constructor(markName: string, markOptions?: PerformanceMarkOptions) {\n    super({\n      name: markName,\n      entryType: 'mark',\n      startTime: markOptions?.startTime ?? performance.now(),\n      duration: 0,\n    });\n\n    if (markOptions) {\n      this.#detail = markOptions.detail;\n    }\n  }\n\n  get detail(): DetailType {\n    return this.#detail;\n  }\n}\n\nexport class PerformanceMeasure extends PerformanceEntry {\n  #detail: DetailType;\n\n  constructor(measureName: string, measureOptions: PerformanceMeasureInit) {\n    super({\n      name: measureName,\n      entryType: 'measure',\n      startTime: measureOptions.startTime,\n      duration: measureOptions.duration,\n    });\n\n    if (measureOptions) {\n      this.#detail = measureOptions.detail;\n    }\n  }\n\n  get detail(): DetailType {\n    return this.#detail;\n  }\n}\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport {setPlatformObject} from '../webidl/PlatformObjects';\n\ntype MemoryInfoLike = {\n  jsHeapSizeLimit: ?number,\n  totalJSHeapSize: ?number,\n  usedJSHeapSize: ?number,\n};\n\n// Read-only object with JS memory information. This is returned by the performance.memory API.\nexport default class MemoryInfo {\n  #jsHeapSizeLimit: ?number;\n  #totalJSHeapSize: ?number;\n  #usedJSHeapSize: ?number;\n\n  constructor(memoryInfo: ?MemoryInfoLike) {\n    if (memoryInfo != null) {\n      this.#jsHeapSizeLimit = memoryInfo.jsHeapSizeLimit;\n      this.#totalJSHeapSize = memoryInfo.totalJSHeapSize;\n      this.#usedJSHeapSize = memoryInfo.usedJSHeapSize;\n    }\n  }\n\n  /**\n   * The maximum size of the heap, in bytes, that is available to the context\n   */\n  get jsHeapSizeLimit(): ?number {\n    return this.#jsHeapSizeLimit;\n  }\n\n  /**\n   * The total allocated heap size, in bytes\n   */\n  get totalJSHeapSize(): ?number {\n    return this.#totalJSHeapSize;\n  }\n\n  /**\n   * The currently active segment of JS heap, in bytes.\n   */\n  get usedJSHeapSize(): ?number {\n    return this.#usedJSHeapSize;\n  }\n}\n\nsetPlatformObject(MemoryInfo);\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 * @flow strict\n * @format\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport {setPlatformObject} from '../webidl/PlatformObjects';\n\ntype ReactNativeStartupTimingLike = {\n  startTime: ?number,\n  endTime: ?number,\n  initializeRuntimeStart: ?number,\n  initializeRuntimeEnd: ?number,\n  executeJavaScriptBundleEntryPointStart: ?number,\n  executeJavaScriptBundleEntryPointEnd: ?number,\n};\n\n// Read-only object with RN startup timing information.\n// This is returned by the performance.reactNativeStartup API.\nexport default class ReactNativeStartupTiming {\n  // All time information here are in ms. The values may be null if not provided.\n  // We do NOT match web spect here for two reasons:\n  // 1. The `ReactNativeStartupTiming` is non-standard API\n  // 2. The timing information is relative to the time origin, which means `0` has valid meaning\n  #startTime: ?number;\n  #endTime: ?number;\n  #initializeRuntimeStart: ?number;\n  #initializeRuntimeEnd: ?number;\n  #executeJavaScriptBundleEntryPointStart: ?number;\n  #executeJavaScriptBundleEntryPointEnd: ?number;\n\n  constructor(startUpTiming: ?ReactNativeStartupTimingLike) {\n    if (startUpTiming != null) {\n      this.#startTime = startUpTiming.startTime;\n      this.#endTime = startUpTiming.endTime;\n      this.#initializeRuntimeStart = startUpTiming.initializeRuntimeStart;\n      this.#initializeRuntimeEnd = startUpTiming.initializeRuntimeEnd;\n      this.#executeJavaScriptBundleEntryPointStart =\n        startUpTiming.executeJavaScriptBundleEntryPointStart;\n      this.#executeJavaScriptBundleEntryPointEnd =\n        startUpTiming.executeJavaScriptBundleEntryPointEnd;\n    }\n  }\n\n  /**\n   * Start time of the RN app startup process. This is provided by the platform by implementing the `ReactMarker.setAppStartTime` API in the native platform code.\n   */\n  get startTime(): ?number {\n    return this.#startTime;\n  }\n\n  /**\n   * End time of the RN app startup process. This is equal to `executeJavaScriptBundleEntryPointEnd`.\n   */\n  get endTime(): ?number {\n    return this.#endTime;\n  }\n\n  /**\n   * Start time when RN runtime get initialized. This is when RN infra first kicks in app startup process.\n   */\n  get initializeRuntimeStart(): ?number {\n    return this.#initializeRuntimeStart;\n  }\n\n  /**\n   * End time when RN runtime get initialized. This is the last marker before ends of the app startup process.\n   */\n  get initializeRuntimeEnd(): ?number {\n    return this.#initializeRuntimeEnd;\n  }\n\n  /**\n   * Start time of JS bundle being executed. This indicates the RN JS bundle is loaded and start to be evaluated.\n   */\n  get executeJavaScriptBundleEntryPointStart(): ?number {\n    return this.#executeJavaScriptBundleEntryPointStart;\n  }\n\n  /**\n   * End time of JS bundle being executed. This indicates all the synchronous entry point jobs are finished.\n   */\n  get executeJavaScriptBundleEntryPointEnd(): ?number {\n    return this.#executeJavaScriptBundleEntryPointEnd;\n  }\n}\n\nsetPlatformObject(ReactNativeStartupTiming);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst {polyfillGlobal} = require('../Utilities/PolyfillFunctions');\n\n/**\n * Set up Promise. The native Promise implementation throws the following error:\n * ERROR: Event loop not supported.\n *\n * If you don't need these polyfills, don't use InitializeCore; just directly\n * require the modules you need from InitializeCore for setup.\n */\n\n// If global.Promise is provided by Hermes, we are confident that it can provide\n// all the methods needed by React Native, so we can directly use it.\nif (global?.HermesInternal?.hasPromise?.()) {\n  const HermesPromise = global.Promise;\n\n  if (__DEV__) {\n    if (typeof HermesPromise !== 'function') {\n      console.error('HermesPromise does not exist');\n    }\n    global.HermesInternal?.enablePromiseRejectionTracker?.(\n      require('../promiseRejectionTrackingOptions').default,\n    );\n  }\n} else {\n  polyfillGlobal('Promise', () => require('../Promise').default);\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport Promise from 'promise/setimmediate/es6-extensions';\n\nrequire('promise/setimmediate/finally');\n\nif (__DEV__) {\n  require('promise/setimmediate/rejection-tracking').enable(\n    require('./promiseRejectionTrackingOptions').default,\n  );\n}\n\nexport default Promise;\n","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n  var p = new Promise(Promise._D);\n  p._y = 1;\n  p._z = value;\n  return p;\n}\nPromise.resolve = function (value) {\n  if (value instanceof Promise) return value;\n\n  if (value === null) return NULL;\n  if (value === undefined) return UNDEFINED;\n  if (value === true) return TRUE;\n  if (value === false) return FALSE;\n  if (value === 0) return ZERO;\n  if (value === '') return EMPTYSTRING;\n\n  if (typeof value === 'object' || typeof value === 'function') {\n    try {\n      var then = value.then;\n      if (typeof then === 'function') {\n        return new Promise(then.bind(value));\n      }\n    } catch (ex) {\n      return new Promise(function (resolve, reject) {\n        reject(ex);\n      });\n    }\n  }\n  return valuePromise(value);\n};\n\nvar iterableToArray = function (iterable) {\n  if (typeof Array.from === 'function') {\n    // ES2015+, iterables exist\n    iterableToArray = Array.from;\n    return Array.from(iterable);\n  }\n\n  // ES5, only arrays and array-likes exist\n  iterableToArray = function (x) { return Array.prototype.slice.call(x); };\n  return Array.prototype.slice.call(iterable);\n}\n\nPromise.all = function (arr) {\n  var args = iterableToArray(arr);\n\n  return new Promise(function (resolve, reject) {\n    if (args.length === 0) return resolve([]);\n    var remaining = args.length;\n    function res(i, val) {\n      if (val && (typeof val === 'object' || typeof val === 'function')) {\n        if (val instanceof Promise && val.then === Promise.prototype.then) {\n          while (val._y === 3) {\n            val = val._z;\n          }\n          if (val._y === 1) return res(i, val._z);\n          if (val._y === 2) reject(val._z);\n          val.then(function (val) {\n            res(i, val);\n          }, reject);\n          return;\n        } else {\n          var then = val.then;\n          if (typeof then === 'function') {\n            var p = new Promise(then.bind(val));\n            p.then(function (val) {\n              res(i, val);\n            }, reject);\n            return;\n          }\n        }\n      }\n      args[i] = val;\n      if (--remaining === 0) {\n        resolve(args);\n      }\n    }\n    for (var i = 0; i < args.length; i++) {\n      res(i, args[i]);\n    }\n  });\n};\n\nfunction onSettledFulfill(value) {\n  return { status: 'fulfilled', value: value };\n}\nfunction onSettledReject(reason) {\n  return { status: 'rejected', reason: reason };\n}\nfunction mapAllSettled(item) {\n  if(item && (typeof item === 'object' || typeof item === 'function')){\n    if(item instanceof Promise && item.then === Promise.prototype.then){\n      return item.then(onSettledFulfill, onSettledReject);\n    }\n    var then = item.then;\n    if (typeof then === 'function') {\n      return new Promise(then.bind(item)).then(onSettledFulfill, onSettledReject)\n    }\n  }\n\n  return onSettledFulfill(item);\n}\nPromise.allSettled = function (iterable) {\n  return Promise.all(iterableToArray(iterable).map(mapAllSettled));\n};\n\nPromise.reject = function (value) {\n  return new Promise(function (resolve, reject) {\n    reject(value);\n  });\n};\n\nPromise.race = function (values) {\n  return new Promise(function (resolve, reject) {\n    iterableToArray(values).forEach(function(value){\n      Promise.resolve(value).then(resolve, reject);\n    });\n  });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n  return this.then(null, onRejected);\n};\n\nfunction getAggregateError(errors){\n  if(typeof AggregateError === 'function'){\n    return new AggregateError(errors,'All promises were rejected');\n  }\n\n  var error = new Error('All promises were rejected');\n\n  error.name = 'AggregateError';\n  error.errors = errors;\n\n  return error;\n}\n\nPromise.any = function promiseAny(values) {\n  return new Promise(function(resolve, reject) {\n    var promises = iterableToArray(values);\n    var hasResolved = false;\n    var rejectionReasons = [];\n\n    function resolveOnce(value) {\n      if (!hasResolved) {\n        hasResolved = true;\n        resolve(value);\n      }\n    }\n\n    function rejectionCheck(reason) {\n      rejectionReasons.push(reason);\n\n      if (rejectionReasons.length === promises.length) {\n        reject(getAggregateError(rejectionReasons));\n      }\n    }\n\n    if(promises.length === 0){\n      reject(getAggregateError(rejectionReasons));\n    } else {\n      promises.forEach(function(value){\n        Promise.resolve(value).then(resolveOnce, rejectionCheck);\n      });\n    }\n  });\n};\n","'use strict';\n\n\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n  try {\n    return obj.then;\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\n\nfunction tryCallOne(fn, a) {\n  try {\n    return fn(a);\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\nfunction tryCallTwo(fn, a, b) {\n  try {\n    fn(a, b);\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n  if (typeof this !== 'object') {\n    throw new TypeError('Promises must be constructed via new');\n  }\n  if (typeof fn !== 'function') {\n    throw new TypeError('Promise constructor\\'s argument is not a function');\n  }\n  this._x = 0;\n  this._y = 0;\n  this._z = null;\n  this._A = null;\n  if (fn === noop) return;\n  doResolve(fn, this);\n}\nPromise._B = null;\nPromise._C = null;\nPromise._D = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n  if (this.constructor !== Promise) {\n    return safeThen(this, onFulfilled, onRejected);\n  }\n  var res = new Promise(noop);\n  handle(this, new Handler(onFulfilled, onRejected, res));\n  return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n  return new self.constructor(function (resolve, reject) {\n    var res = new Promise(noop);\n    res.then(resolve, reject);\n    handle(self, new Handler(onFulfilled, onRejected, res));\n  });\n}\nfunction handle(self, deferred) {\n  while (self._y === 3) {\n    self = self._z;\n  }\n  if (Promise._B) {\n    Promise._B(self);\n  }\n  if (self._y === 0) {\n    if (self._x === 0) {\n      self._x = 1;\n      self._A = deferred;\n      return;\n    }\n    if (self._x === 1) {\n      self._x = 2;\n      self._A = [self._A, deferred];\n      return;\n    }\n    self._A.push(deferred);\n    return;\n  }\n  handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n  setImmediate(function() {\n    var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected;\n    if (cb === null) {\n      if (self._y === 1) {\n        resolve(deferred.promise, self._z);\n      } else {\n        reject(deferred.promise, self._z);\n      }\n      return;\n    }\n    var ret = tryCallOne(cb, self._z);\n    if (ret === IS_ERROR) {\n      reject(deferred.promise, LAST_ERROR);\n    } else {\n      resolve(deferred.promise, ret);\n    }\n  });\n}\nfunction resolve(self, newValue) {\n  // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n  if (newValue === self) {\n    return reject(\n      self,\n      new TypeError('A promise cannot be resolved with itself.')\n    );\n  }\n  if (\n    newValue &&\n    (typeof newValue === 'object' || typeof newValue === 'function')\n  ) {\n    var then = getThen(newValue);\n    if (then === IS_ERROR) {\n      return reject(self, LAST_ERROR);\n    }\n    if (\n      then === self.then &&\n      newValue instanceof Promise\n    ) {\n      self._y = 3;\n      self._z = newValue;\n      finale(self);\n      return;\n    } else if (typeof then === 'function') {\n      doResolve(then.bind(newValue), self);\n      return;\n    }\n  }\n  self._y = 1;\n  self._z = newValue;\n  finale(self);\n}\n\nfunction reject(self, newValue) {\n  self._y = 2;\n  self._z = newValue;\n  if (Promise._C) {\n    Promise._C(self, newValue);\n  }\n  finale(self);\n}\nfunction finale(self) {\n  if (self._x === 1) {\n    handle(self, self._A);\n    self._A = null;\n  }\n  if (self._x === 2) {\n    for (var i = 0; i < self._A.length; i++) {\n      handle(self, self._A[i]);\n    }\n    self._A = null;\n  }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n  this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n  this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n  var done = false;\n  var res = tryCallTwo(fn, function (value) {\n    if (done) return;\n    done = true;\n    resolve(promise, value);\n  }, function (reason) {\n    if (done) return;\n    done = true;\n    reject(promise, reason);\n  });\n  if (!done && res === IS_ERROR) {\n    done = true;\n    reject(promise, LAST_ERROR);\n  }\n}\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.finally = function (f) {\n  return this.then(function (value) {\n    return Promise.resolve(f()).then(function () {\n      return value;\n    });\n  }, function (err) {\n    return Promise.resolve(f()).then(function () {\n      throw err;\n    });\n  });\n};\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst {polyfillGlobal} = require('../Utilities/PolyfillFunctions');\n\nif (__DEV__) {\n  if (typeof global.Promise !== 'function') {\n    console.error('Promise should exist before setting up timers.');\n  }\n}\n\n// In bridgeless mode, timers are host functions installed from cpp.\nif (global.RN$Bridgeless === true) {\n  // This is the flag that tells React to use `queueMicrotask` to batch state\n  // updates, instead of using the scheduler to schedule a regular task.\n  // We use a global variable because we don't currently have any other\n  // mechanism to pass feature flags from RN to React in OSS.\n  global.RN$enableMicrotasksInReact = true;\n\n  polyfillGlobal(\n    'queueMicrotask',\n    () =>\n      require('../../src/private/webapis/microtasks/specs/NativeMicrotasks')\n        .default.queueMicrotask,\n  );\n\n  // We shim the immediate APIs via `queueMicrotask` to maintain the backward\n  // compatibility.\n  polyfillGlobal(\n    'setImmediate',\n    () => require('./Timers/immediateShim').setImmediate,\n  );\n  polyfillGlobal(\n    'clearImmediate',\n    () => require('./Timers/immediateShim').clearImmediate,\n  );\n\n  polyfillGlobal(\n    'requestIdleCallback',\n    () =>\n      require('../../src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks')\n        .default.requestIdleCallback,\n  );\n\n  polyfillGlobal(\n    'cancelIdleCallback',\n    () =>\n      require('../../src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks')\n        .default.cancelIdleCallback,\n  );\n} else {\n  /**\n   * Set up timers.\n   * You can use this module directly, or just require InitializeCore.\n   */\n  const defineLazyTimer = (\n    name:\n      | 'cancelAnimationFrame'\n      | 'cancelIdleCallback'\n      | 'clearInterval'\n      | 'clearTimeout'\n      | 'requestAnimationFrame'\n      | 'requestIdleCallback'\n      | 'setInterval'\n      | 'setTimeout',\n  ) => {\n    polyfillGlobal(name, () => require('./Timers/JSTimers').default[name]);\n  };\n  defineLazyTimer('setTimeout');\n  defineLazyTimer('clearTimeout');\n  defineLazyTimer('setInterval');\n  defineLazyTimer('clearInterval');\n  defineLazyTimer('requestAnimationFrame');\n  defineLazyTimer('cancelAnimationFrame');\n  defineLazyTimer('requestIdleCallback');\n  defineLazyTimer('cancelIdleCallback');\n\n  // Polyfill it with promise (regardless it's polyfilled or native) otherwise.\n  polyfillGlobal(\n    'queueMicrotask',\n    () => require('./Timers/queueMicrotask.js').default,\n  );\n\n  // When promise was polyfilled hence is queued to the RN microtask queue,\n  // we polyfill the immediate APIs as aliases to the ReactNativeMicrotask APIs.\n  // Note that in bridgeless mode, immediate APIs are installed from cpp.\n  polyfillGlobal(\n    'setImmediate',\n    () => require('./Timers/JSTimers').default.queueReactNativeMicrotask,\n  );\n  polyfillGlobal(\n    'clearImmediate',\n    () => require('./Timers/JSTimers').default.clearReactNativeMicrotask,\n  );\n}\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +queueMicrotask: (callback: () => mixed) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'NativeMicrotasksCxx',\n): Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\n// Globally Unique Immediate ID.\nlet GUIID = 1;\n\n// A global set of the currently cleared immediates.\nconst clearedImmediates: Set<number> = new Set();\n\n/**\n * Shim the setImmediate API on top of queueMicrotask.\n * @param {function} func Callback to be invoked before the end of the\n * current JavaScript execution loop.\n */\nexport function setImmediate(callback: Function, ...args: any): number {\n  if (arguments.length < 1) {\n    throw new TypeError(\n      'setImmediate must be called with at least one argument (a function to call)',\n    );\n  }\n  if (typeof callback !== 'function') {\n    throw new TypeError(\n      'The first argument to setImmediate must be a function.',\n    );\n  }\n\n  const id = GUIID++;\n  // This is an edgey case in which the sequentially assigned ID has been\n  // \"guessed\" and \"cleared\" ahead of time, so we need to clear it up first.\n  if (clearedImmediates.has(id)) {\n    clearedImmediates.delete(id);\n  }\n\n  // $FlowFixMe[incompatible-call]\n  global.queueMicrotask(() => {\n    if (!clearedImmediates.has(id)) {\n      callback.apply(undefined, args);\n    } else {\n      // Free up the Set entry.\n      clearedImmediates.delete(id);\n    }\n  });\n\n  return id;\n}\n\n/**\n * @param {number} immediateID The ID of the immediate to be clearred.\n */\nexport function clearImmediate(immediateID: number) {\n  clearedImmediates.add(immediateID);\n}\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport opaque type IdleCallbackID = mixed;\n\nexport type RequestIdleCallbackOptions = {\n  timeout?: number,\n};\n\nexport type IdleDeadline = {\n  didTimeout: boolean,\n  timeRemaining: () => mixed,\n};\n\nexport interface Spec extends TurboModule {\n  +requestIdleCallback: (\n    callback: (idleDeadline: IdleDeadline) => mixed,\n    options?: RequestIdleCallbackOptions,\n  ) => IdleCallbackID;\n  +cancelIdleCallback: (handle: IdleCallbackID) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'NativeIdleCallbacksCxx',\n): Spec);\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 * @flow\n * @format\n */\n\nimport NativeTiming from './NativeTiming';\n\nconst BatchedBridge = require('../../BatchedBridge/BatchedBridge').default;\nconst Systrace = require('../../Performance/Systrace');\nconst invariant = require('invariant');\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\n\nexport type JSTimerType =\n  | 'setTimeout'\n  | 'setInterval'\n  | 'requestAnimationFrame'\n  | 'queueReactNativeMicrotask'\n  | 'requestIdleCallback';\n\n// These timing constants should be kept in sync with the ones in native ios and\n// android `RCTTiming` module.\nconst FRAME_DURATION = 1000 / 60;\nconst IDLE_CALLBACK_FRAME_DEADLINE = 1;\n\n// Parallel arrays\nconst callbacks: Array<?Function> = [];\nconst types: Array<?JSTimerType> = [];\nconst timerIDs: Array<?number> = [];\nconst freeIdxs: Array<number> = [];\nlet reactNativeMicrotasks: Array<number> = [];\nlet requestIdleCallbacks: Array<number> = [];\nconst requestIdleCallbackTimeouts: {[number]: number, ...} = {};\n\nlet GUID = 1;\nconst errors: Array<Error> = [];\n\nlet hasEmittedTimeDriftWarning = false;\n\n// Returns a free index if one is available, and the next consecutive index otherwise.\nfunction _getFreeIndex(): number {\n  const freeIdx = freeIdxs.pop();\n  if (freeIdx === undefined) {\n    return timerIDs.length;\n  }\n  return freeIdx;\n}\n\nfunction _allocateCallback(func: Function, type: JSTimerType): number {\n  const id = GUID++;\n  const freeIndex = _getFreeIndex();\n  timerIDs[freeIndex] = id;\n  callbacks[freeIndex] = func;\n  types[freeIndex] = type;\n  return id;\n}\n\n/**\n * Calls the callback associated with the ID. Also unregister that callback\n * if it was a one time timer (setTimeout), and not unregister it if it was\n * recurring (setInterval).\n */\nfunction _callTimer(timerID: number, frameTime: number, didTimeout: ?boolean) {\n  if (timerID > GUID) {\n    console.warn(\n      'Tried to call timer with ID %s but no such timer exists.',\n      timerID,\n    );\n  }\n\n  // timerIndex of -1 means that no timer with that ID exists. There are\n  // two situations when this happens, when a garbage timer ID was given\n  // and when a previously existing timer was deleted before this callback\n  // fired. In both cases we want to ignore the timer id, but in the former\n  // case we warn as well.\n  const timerIndex = timerIDs.indexOf(timerID);\n  if (timerIndex === -1) {\n    return;\n  }\n\n  const type = types[timerIndex];\n  const callback = callbacks[timerIndex];\n  if (!callback || !type) {\n    console.error('No callback found for timerID ' + timerID);\n    return;\n  }\n\n  if (__DEV__) {\n    Systrace.beginEvent(type + ' [invoke]');\n  }\n\n  // Clear the metadata\n  if (type !== 'setInterval') {\n    _clearIndex(timerIndex);\n  }\n\n  try {\n    if (\n      type === 'setTimeout' ||\n      type === 'setInterval' ||\n      type === 'queueReactNativeMicrotask'\n    ) {\n      callback();\n    } else if (type === 'requestAnimationFrame') {\n      callback(global.performance.now());\n    } else if (type === 'requestIdleCallback') {\n      callback({\n        timeRemaining: function () {\n          // TODO: Optimisation: allow running for longer than one frame if\n          // there are no pending JS calls on the bridge from native. This\n          // would require a way to check the bridge queue synchronously.\n          return Math.max(\n            0,\n            FRAME_DURATION - (global.performance.now() - frameTime),\n          );\n        },\n        didTimeout: !!didTimeout,\n      });\n    } else {\n      console.error('Tried to call a callback with invalid type: ' + type);\n    }\n  } catch (e) {\n    // Don't rethrow so that we can run all timers.\n    errors.push(e);\n  }\n\n  if (__DEV__) {\n    Systrace.endEvent();\n  }\n}\n\n/**\n * Performs a single pass over the enqueued reactNativeMicrotasks. Returns whether\n * more reactNativeMicrotasks are queued up (can be used as a condition a while loop).\n */\nfunction _callReactNativeMicrotasksPass() {\n  if (reactNativeMicrotasks.length === 0) {\n    return false;\n  }\n\n  if (__DEV__) {\n    Systrace.beginEvent('callReactNativeMicrotasksPass()');\n  }\n\n  // The main reason to extract a single pass is so that we can track\n  // in the system trace\n  const passReactNativeMicrotasks = reactNativeMicrotasks;\n  reactNativeMicrotasks = [];\n\n  // Use for loop rather than forEach as per @vjeux's advice\n  // https://github.com/facebook/react-native/commit/c8fd9f7588ad02d2293cac7224715f4af7b0f352#commitcomment-14570051\n  for (let i = 0; i < passReactNativeMicrotasks.length; ++i) {\n    _callTimer(passReactNativeMicrotasks[i], 0);\n  }\n\n  if (__DEV__) {\n    Systrace.endEvent();\n  }\n  return reactNativeMicrotasks.length > 0;\n}\n\nfunction _clearIndex(i: number) {\n  timerIDs[i] = null;\n  callbacks[i] = null;\n  types[i] = null;\n  freeIdxs.push(i);\n}\n\nfunction _freeCallback(timerID: number) {\n  // timerIDs contains nulls after timers have been removed;\n  // ignore nulls upfront so indexOf doesn't find them\n  if (timerID == null) {\n    return;\n  }\n\n  const index = timerIDs.indexOf(timerID);\n  // See corresponding comment in `callTimers` for reasoning behind this\n  if (index !== -1) {\n    const type = types[index];\n    _clearIndex(index);\n    if (\n      type !== 'queueReactNativeMicrotask' &&\n      type !== 'requestIdleCallback'\n    ) {\n      deleteTimer(timerID);\n    }\n  }\n}\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nconst JSTimers = {\n  /**\n   * @param {function} func Callback to be invoked after `duration` ms.\n   * @param {number} duration Number of milliseconds.\n   */\n  setTimeout: function (\n    func: Function,\n    duration: number,\n    ...args: any\n  ): number {\n    const id = _allocateCallback(\n      () => func.apply(undefined, args),\n      'setTimeout',\n    );\n    createTimer(id, duration || 0, Date.now(), /* recurring */ false);\n    return id;\n  },\n\n  /**\n   * @param {function} func Callback to be invoked every `duration` ms.\n   * @param {number} duration Number of milliseconds.\n   */\n  setInterval: function (\n    func: Function,\n    duration: number,\n    ...args: any\n  ): number {\n    const id = _allocateCallback(\n      () => func.apply(undefined, args),\n      'setInterval',\n    );\n    createTimer(id, duration || 0, Date.now(), /* recurring */ true);\n    return id;\n  },\n\n  /**\n   * The React Native microtask mechanism is used to back public APIs e.g.\n   * `queueMicrotask`, `clearImmediate`, and `setImmediate` (which is used by\n   * the Promise polyfill) when the JSVM microtask mechanism is not used.\n   *\n   * @param {function} func Callback to be invoked before the end of the\n   * current JavaScript execution loop.\n   */\n  queueReactNativeMicrotask: function (func: Function, ...args: any): number {\n    const id = _allocateCallback(\n      () => func.apply(undefined, args),\n      'queueReactNativeMicrotask',\n    );\n    reactNativeMicrotasks.push(id);\n    return id;\n  },\n\n  /**\n   * @param {function} func Callback to be invoked every frame.\n   */\n  requestAnimationFrame: function (func: Function): any | number {\n    const id = _allocateCallback(func, 'requestAnimationFrame');\n    createTimer(id, 1, Date.now(), /* recurring */ false);\n    return id;\n  },\n\n  /**\n   * @param {function} func Callback to be invoked every frame and provided\n   * with time remaining in frame.\n   * @param {?object} options\n   */\n  requestIdleCallback: function (\n    func: Function,\n    options: ?Object,\n  ): any | number {\n    if (requestIdleCallbacks.length === 0) {\n      setSendIdleEvents(true);\n    }\n\n    const timeout = options && options.timeout;\n    const id: number = _allocateCallback(\n      timeout != null\n        ? (deadline: any) => {\n            const timeoutId: number = requestIdleCallbackTimeouts[id];\n            if (timeoutId) {\n              JSTimers.clearTimeout(timeoutId);\n              delete requestIdleCallbackTimeouts[id];\n            }\n            return func(deadline);\n          }\n        : func,\n      'requestIdleCallback',\n    );\n    requestIdleCallbacks.push(id);\n\n    if (timeout != null) {\n      const timeoutId: number = JSTimers.setTimeout(() => {\n        const index: number = requestIdleCallbacks.indexOf(id);\n        if (index > -1) {\n          requestIdleCallbacks.splice(index, 1);\n          _callTimer(id, global.performance.now(), true);\n        }\n        delete requestIdleCallbackTimeouts[id];\n        if (requestIdleCallbacks.length === 0) {\n          setSendIdleEvents(false);\n        }\n      }, timeout);\n      requestIdleCallbackTimeouts[id] = timeoutId;\n    }\n    return id;\n  },\n\n  cancelIdleCallback: function (timerID: number) {\n    _freeCallback(timerID);\n    const index = requestIdleCallbacks.indexOf(timerID);\n    if (index !== -1) {\n      requestIdleCallbacks.splice(index, 1);\n    }\n\n    const timeoutId = requestIdleCallbackTimeouts[timerID];\n    if (timeoutId) {\n      JSTimers.clearTimeout(timeoutId);\n      delete requestIdleCallbackTimeouts[timerID];\n    }\n\n    if (requestIdleCallbacks.length === 0) {\n      setSendIdleEvents(false);\n    }\n  },\n\n  clearTimeout: function (timerID: number) {\n    _freeCallback(timerID);\n  },\n\n  clearInterval: function (timerID: number) {\n    _freeCallback(timerID);\n  },\n\n  clearReactNativeMicrotask: function (timerID: number) {\n    _freeCallback(timerID);\n    const index = reactNativeMicrotasks.indexOf(timerID);\n    if (index !== -1) {\n      reactNativeMicrotasks.splice(index, 1);\n    }\n  },\n\n  cancelAnimationFrame: function (timerID: number) {\n    _freeCallback(timerID);\n  },\n\n  /**\n   * This is called from the native side. We are passed an array of timerIDs,\n   * and\n   */\n  callTimers: function (timersToCall: Array<number>): any | void {\n    invariant(\n      timersToCall.length !== 0,\n      'Cannot call `callTimers` with an empty list of IDs.',\n    );\n\n    errors.length = 0;\n    for (let i = 0; i < timersToCall.length; i++) {\n      _callTimer(timersToCall[i], 0);\n    }\n\n    const errorCount = errors.length;\n    if (errorCount > 0) {\n      if (errorCount > 1) {\n        // Throw all the other errors in a setTimeout, which will throw each\n        // error one at a time\n        for (let ii = 1; ii < errorCount; ii++) {\n          JSTimers.setTimeout(\n            ((error: Error) => {\n              throw error;\n            }).bind(null, errors[ii]),\n            0,\n          );\n        }\n      }\n      throw errors[0];\n    }\n  },\n\n  callIdleCallbacks: function (frameTime: number) {\n    if (\n      FRAME_DURATION - (Date.now() - frameTime) <\n      IDLE_CALLBACK_FRAME_DEADLINE\n    ) {\n      return;\n    }\n\n    errors.length = 0;\n    if (requestIdleCallbacks.length > 0) {\n      const passIdleCallbacks = requestIdleCallbacks;\n      requestIdleCallbacks = [];\n\n      for (let i = 0; i < passIdleCallbacks.length; ++i) {\n        _callTimer(passIdleCallbacks[i], frameTime);\n      }\n    }\n\n    if (requestIdleCallbacks.length === 0) {\n      setSendIdleEvents(false);\n    }\n\n    errors.forEach(error =>\n      JSTimers.setTimeout(() => {\n        throw error;\n      }, 0),\n    );\n  },\n\n  /**\n   * This is called after we execute any command we receive from native but\n   * before we hand control back to native.\n   */\n  callReactNativeMicrotasks() {\n    errors.length = 0;\n    while (_callReactNativeMicrotasksPass()) {}\n    errors.forEach(error =>\n      JSTimers.setTimeout(() => {\n        throw error;\n      }, 0),\n    );\n  },\n\n  /**\n   * Called from native (in development) when environment times are out-of-sync.\n   */\n  emitTimeDriftWarning(warningMessage: string) {\n    if (hasEmittedTimeDriftWarning) {\n      return;\n    }\n    hasEmittedTimeDriftWarning = true;\n    console.warn(warningMessage);\n  },\n};\n\nfunction createTimer(\n  callbackID: number,\n  duration: number,\n  jsSchedulingTime: number,\n  repeats: boolean,\n): void {\n  invariant(NativeTiming, 'NativeTiming is available');\n  NativeTiming.createTimer(callbackID, duration, jsSchedulingTime, repeats);\n}\n\nfunction deleteTimer(timerID: number): void {\n  invariant(NativeTiming, 'NativeTiming is available');\n  NativeTiming.deleteTimer(timerID);\n}\n\nfunction setSendIdleEvents(sendIdleEvents: boolean): void {\n  invariant(NativeTiming, 'NativeTiming is available');\n  NativeTiming.setSendIdleEvents(sendIdleEvents);\n}\n\nlet ExportedJSTimers: {\n  callIdleCallbacks: (frameTime: number) => any | void,\n  callReactNativeMicrotasks: () => void,\n  callTimers: (timersToCall: Array<number>) => any | void,\n  cancelAnimationFrame: (timerID: number) => void,\n  cancelIdleCallback: (timerID: number) => void,\n  clearReactNativeMicrotask: (timerID: number) => void,\n  clearInterval: (timerID: number) => void,\n  clearTimeout: (timerID: number) => void,\n  emitTimeDriftWarning: (warningMessage: string) => any | void,\n  requestAnimationFrame: (func: any) => any | number,\n  requestIdleCallback: (func: any, options: ?any) => any | number,\n  queueReactNativeMicrotask: (func: any, ...args: any) => number,\n  setInterval: (func: any, duration: number, ...args: any) => number,\n  setTimeout: (func: any, duration: number, ...args: any) => number,\n};\n\nif (!NativeTiming) {\n  console.warn(\"Timing native module is not available, can't set timers.\");\n  // $FlowFixMe[prop-missing] : we can assume timers are generally available\n  ExportedJSTimers = ({\n    callReactNativeMicrotasks: JSTimers.callReactNativeMicrotasks,\n    queueReactNativeMicrotask: JSTimers.queueReactNativeMicrotask,\n  }: typeof JSTimers);\n} else {\n  ExportedJSTimers = JSTimers;\n}\n\nBatchedBridge.setReactNativeMicrotasksCallback(\n  JSTimers.callReactNativeMicrotasks,\n);\n\nexport default ExportedJSTimers;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeTiming';\nimport NativeTiming from '../../../src/private/specs_DEPRECATED/modules/NativeTiming';\n\nexport default NativeTiming;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +createTimer: (\n    callbackID: number,\n    duration: number,\n    jsSchedulingTime: number,\n    repeats: boolean,\n  ) => void;\n  +deleteTimer: (timerID: number) => void;\n  +setSendIdleEvents: (sendIdleEvents: boolean) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('Timing'): ?Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nlet resolvedPromise;\n\n/**\n * Polyfill for the microtask queueing API defined by WHATWG HTML spec.\n * https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask\n *\n * The method must queue a microtask to invoke @param {function} callback, and\n * if the callback throws an exception, report the exception.\n */\nexport default function queueMicrotask(callback: Function) {\n  if (arguments.length < 1) {\n    throw new TypeError(\n      'queueMicrotask must be called with at least one argument (a function to call)',\n    );\n  }\n  if (typeof callback !== 'function') {\n    throw new TypeError('The argument to queueMicrotask must be a function.');\n  }\n\n  // Try to reuse a lazily allocated resolved promise from closure.\n  (resolvedPromise || (resolvedPromise = Promise.resolve()))\n    .then(callback)\n    .catch(error =>\n      // Report the exception until the next tick.\n      setTimeout(() => {\n        throw error;\n      }, 0),\n    );\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nif (global.RN$useAlwaysAvailableJSErrorHandling !== true) {\n  /**\n   * Sets up the console and exception handling (redbox) for React Native.\n   * You can use this module directly, or just require InitializeCore.\n   */\n  const ExceptionsManager = require('./ExceptionsManager').default;\n  ExceptionsManager.installConsoleErrorReporter();\n\n  // Set up error handler\n  if (!global.__fbDisableExceptionsManager) {\n    const handleError = (e: mixed, isFatal: boolean) => {\n      try {\n        ExceptionsManager.handleException(e, isFatal);\n      } catch (ee) {\n        console.log('Failed to print error: ', ee.message);\n        throw e;\n      }\n    };\n\n    const ErrorUtils = require('../vendor/core/ErrorUtils').default;\n    ErrorUtils.setGlobalHandler(handleError);\n  }\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst {hasNativeConstructor} = require('../Utilities/FeatureDetection');\nconst {polyfillGlobal} = require('../Utilities/PolyfillFunctions');\n\n/**\n * Set up regenerator.\n * You can use this module directly, or just require InitializeCore.\n */\n\nlet hasNativeGenerator;\ntry {\n  // If this function was lowered by regenerator-transform, it will try to\n  // access `global.regeneratorRuntime` which doesn't exist yet and will throw.\n  hasNativeGenerator = hasNativeConstructor(\n    function* () {},\n    'GeneratorFunction',\n  );\n} catch {\n  // In this case, we know generators are not provided natively.\n  hasNativeGenerator = false;\n}\n\n// If generators are provided natively, which suggests that there was no\n// regenerator-transform, then there is no need to set up the runtime.\nif (!hasNativeGenerator) {\n  polyfillGlobal('regeneratorRuntime', () => {\n    // The require just sets up the global, so make sure when we first\n    // invoke it the global does not exist\n    delete global.regeneratorRuntime;\n\n    // regenerator-runtime/runtime exports the regeneratorRuntime object, so we\n    // can return it safely.\n    return require('regenerator-runtime/runtime'); // flowlint-line untyped-import:off\n  });\n}\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 * @flow\n * @format\n */\n\n/**\n * @return whether or not a @param {function} f is provided natively by calling\n * `toString` and check if the result includes `[native code]` in it.\n *\n * Note that a polyfill can technically fake this behavior but few does it.\n * Therefore, this is usually good enough for our purpose.\n */\nexport function isNativeFunction(f: Function): boolean {\n  return typeof f === 'function' && f.toString().indexOf('[native code]') > -1;\n}\n\n/**\n * @return whether or not the constructor of @param {object} o is an native\n * function named with @param {string} expectedName.\n */\nexport function hasNativeConstructor(o: Object, expectedName: string): boolean {\n  const con = Object.getPrototypeOf(o).constructor;\n  return con.name === expectedName && isNativeFunction(con);\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n  defineProperty(\n    GeneratorFunctionPrototype,\n    \"constructor\",\n    { value: GeneratorFunction, configurable: true }\n  );\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    defineProperty(this, \"_invoke\", { value: enqueue });\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method;\n    var method = delegate.iterator[methodName];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method, or a missing .next mehtod, always terminate the\n      // yield* loop.\n      context.delegate = null;\n\n      // Note: [\"return\"] must be used for ES3 parsing compatibility.\n      if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n        // If the delegate iterator has a return method, give it a\n        // chance to clean up.\n        context.method = \"return\";\n        context.arg = undefined;\n        maybeInvokeDelegate(delegate, context);\n\n        if (context.method === \"throw\") {\n          // If maybeInvokeDelegate(context) changed context.method from\n          // \"return\" to \"throw\", let that override the TypeError below.\n          return ContinueSentinel;\n        }\n      }\n      if (methodName !== \"return\") {\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a '\" + methodName + \"' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(val) {\n    var object = Object(val);\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst {polyfillGlobal} = require('../Utilities/PolyfillFunctions');\n\n/**\n * Set up XMLHttpRequest. The native XMLHttpRequest in Chrome dev tools is CORS\n * aware and won't let you fetch anything from the internet.\n *\n * You can use this module directly, or just require InitializeCore.\n */\npolyfillGlobal(\n  'XMLHttpRequest',\n  () => require('../Network/XMLHttpRequest').default,\n);\npolyfillGlobal('FormData', () => require('../Network/FormData').default);\n\npolyfillGlobal('fetch', () => require('../Network/fetch').fetch);\npolyfillGlobal('Headers', () => require('../Network/fetch').Headers);\npolyfillGlobal('Request', () => require('../Network/fetch').Request);\npolyfillGlobal('Response', () => require('../Network/fetch').Response);\npolyfillGlobal('WebSocket', () => require('../WebSocket/WebSocket').default);\npolyfillGlobal('Blob', () => require('../Blob/Blob').default);\npolyfillGlobal('File', () => require('../Blob/File').default);\npolyfillGlobal('FileReader', () => require('../Blob/FileReader').default);\npolyfillGlobal('URL', () => require('../Blob/URL').URL);\npolyfillGlobal('URLSearchParams', () => require('../Blob/URL').URLSearchParams);\npolyfillGlobal(\n  'AbortController',\n  () => require('abort-controller/dist/abort-controller').AbortController, // flowlint-line untyped-import:off\n);\npolyfillGlobal(\n  'AbortSignal',\n  () => require('abort-controller/dist/abort-controller').AbortSignal, // flowlint-line untyped-import:off\n);\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {\n  EventCallback,\n  EventListener,\n} from '../../src/private/webapis/dom/events/EventTarget';\nimport type Performance from '../../src/private/webapis/performance/Performance';\nimport type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';\n\nimport Event from '../../src/private/webapis/dom/events/Event';\nimport {\n  getEventHandlerAttribute,\n  setEventHandlerAttribute,\n} from '../../src/private/webapis/dom/events/EventHandlerAttributes';\nimport EventTarget from '../../src/private/webapis/dom/events/EventTarget';\nimport {dispatchTrustedEvent} from '../../src/private/webapis/dom/events/internals/EventTargetInternals';\nimport ProgressEvent from '../../src/private/webapis/xhr/events/ProgressEvent';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\n\nconst BlobManager = require('../Blob/BlobManager').default;\nconst GlobalPerformanceLogger =\n  require('../Utilities/GlobalPerformanceLogger').default;\nconst RCTNetworking = require('./RCTNetworking').default;\nconst base64 = require('base64-js');\nconst invariant = require('invariant');\n\ndeclare var performance: Performance;\n\nconst DEBUG_NETWORK_SEND_DELAY: false = false; // Set to a number of milliseconds when debugging\nconst LABEL_FOR_MISSING_URL_FOR_PROFILING = 'Unknown URL';\n\nexport type NativeResponseType = 'base64' | 'blob' | 'text';\nexport type ResponseType =\n  | ''\n  | 'arraybuffer'\n  | 'blob'\n  | 'document'\n  | 'json'\n  | 'text';\nexport type Response = ?Object | string;\n\ntype XHRInterceptor = interface {\n  requestSent(id: number, url: string, method: string, headers: Object): void,\n  responseReceived(\n    id: number,\n    url: string,\n    status: number,\n    headers: Object,\n  ): void,\n  dataReceived(id: number, data: string): void,\n  loadingFinished(id: number, encodedDataLength: number): void,\n  loadingFailed(id: number, error: string): void,\n};\n\n// The native blob module is optional so inject it here if available.\nif (BlobManager.isAvailable) {\n  BlobManager.addNetworkingHandler();\n}\n\nconst UNSENT = 0;\nconst OPENED = 1;\nconst HEADERS_RECEIVED = 2;\nconst LOADING = 3;\nconst DONE = 4;\n\nconst SUPPORTED_RESPONSE_TYPES = {\n  arraybuffer: typeof global.ArrayBuffer === 'function',\n  blob: typeof global.Blob === 'function',\n  document: false,\n  json: true,\n  text: true,\n  '': true,\n};\n\nclass XMLHttpRequestEventTarget extends EventTarget {\n  get onload(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'load');\n  }\n  set onload(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'load', listener);\n  }\n  get onloadstart(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'loadstart');\n  }\n  set onloadstart(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'loadstart', listener);\n  }\n  get onprogress(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'progress');\n  }\n  set onprogress(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'progress', listener);\n  }\n  get ontimeout(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'timeout');\n  }\n  set ontimeout(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'timeout', listener);\n  }\n  get onerror(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'error');\n  }\n  set onerror(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'error', listener);\n  }\n  get onabort(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'abort');\n  }\n  set onabort(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'abort', listener);\n  }\n  get onloadend(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'loadend');\n  }\n  set onloadend(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'loadend', listener);\n  }\n}\n\n/**\n * Shared base for platform-specific XMLHttpRequest implementations.\n */\nclass XMLHttpRequest extends EventTarget {\n  static UNSENT: number = UNSENT;\n  static OPENED: number = OPENED;\n  static HEADERS_RECEIVED: number = HEADERS_RECEIVED;\n  static LOADING: number = LOADING;\n  static DONE: number = DONE;\n\n  static _interceptor: ?XHRInterceptor = null;\n  static _profiling: boolean = false;\n\n  UNSENT: number = UNSENT;\n  OPENED: number = OPENED;\n  HEADERS_RECEIVED: number = HEADERS_RECEIVED;\n  LOADING: number = LOADING;\n  DONE: number = DONE;\n\n  readyState: number = UNSENT;\n  responseHeaders: ?Object;\n  status: number = 0;\n  timeout: number = 0;\n  responseURL: ?string;\n  withCredentials: boolean = true;\n\n  upload: XMLHttpRequestEventTarget = new XMLHttpRequestEventTarget();\n\n  _requestId: ?number;\n  _subscriptions: Array<EventSubscription>;\n\n  _aborted: boolean = false;\n  _cachedResponse: Response;\n  _hasError: boolean = false;\n  _headers: Object;\n  _lowerCaseResponseHeaders: Object;\n  _method: ?string = null;\n  _perfKey: ?string = null;\n  _responseType: ResponseType;\n  _response: string = '';\n  _sent: boolean;\n  _url: ?string = null;\n  _timedOut: boolean = false;\n  _trackingName: ?string;\n  _incrementalEvents: boolean = false;\n  _startTime: ?number = null;\n  _performanceLogger: IPerformanceLogger = GlobalPerformanceLogger;\n\n  static __setInterceptor_DO_NOT_USE(interceptor: ?XHRInterceptor) {\n    XMLHttpRequest._interceptor = interceptor;\n  }\n\n  static enableProfiling(enableProfiling: boolean): void {\n    XMLHttpRequest._profiling = enableProfiling;\n  }\n\n  constructor() {\n    super();\n    this._reset();\n  }\n\n  _reset(): void {\n    this.readyState = this.UNSENT;\n    this.responseHeaders = undefined;\n    this.status = 0;\n    delete this.responseURL;\n\n    this._requestId = null;\n\n    this._cachedResponse = undefined;\n    this._hasError = false;\n    this._headers = {};\n    this._response = '';\n    this._responseType = '';\n    this._sent = false;\n    this._lowerCaseResponseHeaders = {};\n\n    this._clearSubscriptions();\n    this._timedOut = false;\n  }\n\n  get responseType(): ResponseType {\n    return this._responseType;\n  }\n\n  set responseType(responseType: ResponseType): void {\n    if (this._sent) {\n      throw new Error(\n        \"Failed to set the 'responseType' property on 'XMLHttpRequest': The \" +\n          'response type cannot be set after the request has been sent.',\n      );\n    }\n    if (!SUPPORTED_RESPONSE_TYPES.hasOwnProperty(responseType)) {\n      console.warn(\n        `The provided value '${responseType}' is not a valid 'responseType'.`,\n      );\n      return;\n    }\n\n    // redboxes early, e.g. for 'arraybuffer' on ios 7\n    invariant(\n      SUPPORTED_RESPONSE_TYPES[responseType] || responseType === 'document',\n      `The provided value '${responseType}' is unsupported in this environment.`,\n    );\n\n    if (responseType === 'blob') {\n      invariant(\n        BlobManager.isAvailable,\n        'Native module BlobModule is required for blob support',\n      );\n    }\n    this._responseType = responseType;\n  }\n\n  get responseText(): string {\n    if (this._responseType !== '' && this._responseType !== 'text') {\n      throw new Error(\n        \"The 'responseText' property is only available if 'responseType' \" +\n          `is set to '' or 'text', but it is '${this._responseType}'.`,\n      );\n    }\n    if (this.readyState < LOADING) {\n      return '';\n    }\n    return this._response;\n  }\n\n  get response(): Response {\n    const {responseType} = this;\n    if (responseType === '' || responseType === 'text') {\n      return this.readyState < LOADING || this._hasError ? '' : this._response;\n    }\n\n    if (this.readyState !== DONE) {\n      return null;\n    }\n\n    if (this._cachedResponse !== undefined) {\n      return this._cachedResponse;\n    }\n\n    switch (responseType) {\n      case 'document':\n        this._cachedResponse = null;\n        break;\n\n      case 'arraybuffer':\n        this._cachedResponse = base64.toByteArray(this._response).buffer;\n        break;\n\n      case 'blob':\n        if (typeof this._response === 'object' && this._response) {\n          this._cachedResponse = BlobManager.createFromOptions(this._response);\n        } else if (this._response === '') {\n          this._cachedResponse = BlobManager.createFromParts([]);\n        } else {\n          throw new Error(\n            'Invalid response for blob - expecting object, was ' +\n              `${typeof this._response}: ${this._response.trim()}`,\n          );\n        }\n        break;\n\n      case 'json':\n        try {\n          this._cachedResponse = JSON.parse(this._response);\n        } catch (_) {\n          this._cachedResponse = null;\n        }\n        break;\n\n      default:\n        this._cachedResponse = null;\n    }\n\n    return this._cachedResponse;\n  }\n\n  // exposed for testing\n  __didCreateRequest(requestId: number): void {\n    this._requestId = requestId;\n\n    XMLHttpRequest._interceptor &&\n      XMLHttpRequest._interceptor.requestSent(\n        requestId,\n        this._url || '',\n        this._method || 'GET',\n        this._headers,\n      );\n  }\n\n  // exposed for testing\n  __didUploadProgress(\n    requestId: number,\n    progress: number,\n    total: number,\n  ): void {\n    if (requestId === this._requestId) {\n      dispatchTrustedEvent(\n        this.upload,\n        new ProgressEvent('progress', {\n          lengthComputable: true,\n          loaded: progress,\n          total,\n        }),\n      );\n    }\n  }\n\n  __didReceiveResponse(\n    requestId: number,\n    status: number,\n    responseHeaders: ?Object,\n    responseURL: ?string,\n  ): void {\n    if (requestId === this._requestId) {\n      this._perfKey != null &&\n        this._performanceLogger.stopTimespan(this._perfKey);\n      this.status = status;\n      this.setResponseHeaders(responseHeaders);\n      this.setReadyState(this.HEADERS_RECEIVED);\n      if (responseURL || responseURL === '') {\n        this.responseURL = responseURL;\n      } else {\n        delete this.responseURL;\n      }\n\n      XMLHttpRequest._interceptor &&\n        XMLHttpRequest._interceptor.responseReceived(\n          requestId,\n          responseURL || this._url || '',\n          status,\n          responseHeaders || {},\n        );\n    }\n  }\n\n  __didReceiveData(requestId: number, response: string): void {\n    if (requestId !== this._requestId) {\n      return;\n    }\n    this._response = response;\n    this._cachedResponse = undefined; // force lazy recomputation\n    this.setReadyState(this.LOADING);\n\n    XMLHttpRequest._interceptor &&\n      XMLHttpRequest._interceptor.dataReceived(requestId, response);\n  }\n\n  __didReceiveIncrementalData(\n    requestId: number,\n    responseText: string,\n    progress: number,\n    total: number,\n  ) {\n    if (requestId !== this._requestId) {\n      return;\n    }\n    if (!this._response) {\n      this._response = responseText;\n    } else {\n      this._response += responseText;\n    }\n\n    if (XMLHttpRequest._profiling) {\n      performance.mark(\n        'Track:XMLHttpRequest:Incremental Data: ' + this._getMeasureURL(),\n      );\n    }\n    XMLHttpRequest._interceptor &&\n      XMLHttpRequest._interceptor.dataReceived(requestId, responseText);\n\n    this.setReadyState(this.LOADING);\n    this.__didReceiveDataProgress(requestId, progress, total);\n  }\n\n  __didReceiveDataProgress(\n    requestId: number,\n    loaded: number,\n    total: number,\n  ): void {\n    if (requestId !== this._requestId) {\n      return;\n    }\n    dispatchTrustedEvent(\n      this,\n      new ProgressEvent('progress', {\n        lengthComputable: total >= 0,\n        loaded,\n        total,\n      }),\n    );\n  }\n\n  // exposed for testing\n  __didCompleteResponse(\n    requestId: number,\n    error: string,\n    timeOutError: boolean,\n  ): void {\n    if (requestId === this._requestId) {\n      if (error) {\n        if (this._responseType === '' || this._responseType === 'text') {\n          this._response = error;\n        }\n        this._hasError = true;\n        if (timeOutError) {\n          this._timedOut = true;\n        }\n      }\n      this._clearSubscriptions();\n      this._requestId = null;\n      this.setReadyState(this.DONE);\n      if (XMLHttpRequest._profiling && this._startTime != null) {\n        const start = this._startTime;\n        performance.measure('Track:XMLHttpRequest:' + this._getMeasureURL(), {\n          start,\n          end: performance.now(),\n        });\n      }\n      if (error) {\n        XMLHttpRequest._interceptor &&\n          XMLHttpRequest._interceptor.loadingFailed(requestId, error);\n      } else {\n        XMLHttpRequest._interceptor &&\n          XMLHttpRequest._interceptor.loadingFinished(\n            requestId,\n            this._response.length,\n          );\n      }\n    }\n  }\n\n  _clearSubscriptions(): void {\n    (this._subscriptions || []).forEach(sub => {\n      if (sub) {\n        sub.remove();\n      }\n    });\n    this._subscriptions = [];\n  }\n\n  getAllResponseHeaders(): ?string {\n    if (!this.responseHeaders) {\n      // according to the spec, return null if no response has been received\n      return null;\n    }\n\n    // Assign to non-nullable local variable.\n    const responseHeaders = this.responseHeaders;\n\n    const unsortedHeaders: Map<\n      string,\n      {lowerHeaderName: string, upperHeaderName: string, headerValue: string},\n    > = new Map();\n    for (const rawHeaderName of Object.keys(responseHeaders)) {\n      const headerValue = responseHeaders[rawHeaderName];\n      const lowerHeaderName = rawHeaderName.toLowerCase();\n      const header = unsortedHeaders.get(lowerHeaderName);\n      if (header) {\n        header.headerValue += ', ' + headerValue;\n        unsortedHeaders.set(lowerHeaderName, header);\n      } else {\n        unsortedHeaders.set(lowerHeaderName, {\n          lowerHeaderName,\n          upperHeaderName: rawHeaderName.toUpperCase(),\n          headerValue,\n        });\n      }\n    }\n\n    // Sort in ascending order, with a being less than b if a's name is legacy-uppercased-byte less than b's name.\n    const sortedHeaders = [...unsortedHeaders.values()].sort((a, b) => {\n      if (a.upperHeaderName < b.upperHeaderName) {\n        return -1;\n      }\n      if (a.upperHeaderName > b.upperHeaderName) {\n        return 1;\n      }\n      return 0;\n    });\n\n    // Combine into single text response.\n    return (\n      sortedHeaders\n        .map(header => {\n          return header.lowerHeaderName + ': ' + header.headerValue;\n        })\n        .join('\\r\\n') + '\\r\\n'\n    );\n  }\n\n  getResponseHeader(header: string): ?string {\n    const value = this._lowerCaseResponseHeaders[header.toLowerCase()];\n    return value !== undefined ? value : null;\n  }\n\n  setRequestHeader(header: string, value: any): void {\n    if (this.readyState !== this.OPENED) {\n      throw new Error('Request has not been opened');\n    }\n    this._headers[header.toLowerCase()] = String(value);\n  }\n\n  /**\n   * Custom extension for tracking origins of request.\n   */\n  setTrackingName(trackingName: ?string): XMLHttpRequest {\n    this._trackingName = trackingName;\n    return this;\n  }\n\n  /**\n   * Custom extension for setting a custom performance logger\n   */\n  setPerformanceLogger(performanceLogger: IPerformanceLogger): XMLHttpRequest {\n    this._performanceLogger = performanceLogger;\n    return this;\n  }\n\n  open(method: string, url: string, async: ?boolean): void {\n    /* Other optional arguments are not supported yet */\n    if (this.readyState !== this.UNSENT) {\n      throw new Error('Cannot open, already sending');\n    }\n    if (async !== undefined && !async) {\n      // async is default\n      throw new Error('Synchronous http requests are not supported');\n    }\n    if (!url) {\n      throw new Error('Cannot load an empty url');\n    }\n    this._method = method.toUpperCase();\n    this._url = url;\n    this._aborted = false;\n    this.setReadyState(this.OPENED);\n  }\n\n  send(data: any): void {\n    if (this.readyState !== this.OPENED) {\n      throw new Error('Request has not been opened');\n    }\n    if (this._sent) {\n      throw new Error('Request has already been sent');\n    }\n    this._sent = true;\n    const incrementalEvents =\n      this._incrementalEvents || !!this.onreadystatechange || !!this.onprogress;\n\n    this._subscriptions.push(\n      RCTNetworking.addListener('didSendNetworkData', args =>\n        this.__didUploadProgress(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didReceiveNetworkResponse', args =>\n        this.__didReceiveResponse(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didReceiveNetworkData', args =>\n        this.__didReceiveData(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didReceiveNetworkIncrementalData', args =>\n        this.__didReceiveIncrementalData(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didReceiveNetworkDataProgress', args =>\n        this.__didReceiveDataProgress(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didCompleteNetworkResponse', args =>\n        this.__didCompleteResponse(...args),\n      ),\n    );\n\n    let nativeResponseType: NativeResponseType = 'text';\n    if (this._responseType === 'arraybuffer') {\n      nativeResponseType = 'base64';\n    }\n    if (this._responseType === 'blob') {\n      nativeResponseType = 'blob';\n    }\n\n    const doSend = () => {\n      const friendlyName = this._trackingName ?? this._url;\n      this._perfKey = 'network_XMLHttpRequest_' + String(friendlyName);\n      this._performanceLogger.startTimespan(this._perfKey);\n      this._startTime = performance.now();\n      invariant(\n        this._method,\n        'XMLHttpRequest method needs to be defined (%s).',\n        friendlyName,\n      );\n      invariant(\n        this._url,\n        'XMLHttpRequest URL needs to be defined (%s).',\n        friendlyName,\n      );\n      RCTNetworking.sendRequest(\n        this._method,\n        this._trackingName ?? undefined,\n        this._url,\n        this._headers,\n        data,\n        /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n         * when making Flow check .android.js files. */\n        nativeResponseType,\n        incrementalEvents,\n        this.timeout,\n        // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n        this.__didCreateRequest.bind(this),\n        this.withCredentials,\n      );\n    };\n    if (DEBUG_NETWORK_SEND_DELAY) {\n      setTimeout(doSend, DEBUG_NETWORK_SEND_DELAY);\n    } else {\n      doSend();\n    }\n  }\n\n  abort(): void {\n    this._aborted = true;\n    if (this._requestId) {\n      RCTNetworking.abortRequest(this._requestId);\n    }\n    // only call onreadystatechange if there is something to abort,\n    // below logic is per spec\n    if (\n      !(\n        this.readyState === this.UNSENT ||\n        (this.readyState === this.OPENED && !this._sent) ||\n        this.readyState === this.DONE\n      )\n    ) {\n      this._reset();\n      this.setReadyState(this.DONE);\n    }\n    // Reset again after, in case modified in handler\n    this._reset();\n  }\n\n  setResponseHeaders(responseHeaders: ?Object): void {\n    this.responseHeaders = responseHeaders || null;\n    const headers = responseHeaders || {};\n    this._lowerCaseResponseHeaders = Object.keys(headers).reduce<{\n      [string]: any,\n    }>((lcaseHeaders, headerName) => {\n      // $FlowFixMe[invalid-computed-prop]\n      lcaseHeaders[headerName.toLowerCase()] = headers[headerName];\n      return lcaseHeaders;\n    }, {});\n  }\n\n  setReadyState(newState: number): void {\n    this.readyState = newState;\n    dispatchTrustedEvent(this, new Event('readystatechange'));\n    if (newState === this.DONE) {\n      if (this._aborted) {\n        dispatchTrustedEvent(this, new Event('abort'));\n      } else if (this._hasError) {\n        if (this._timedOut) {\n          dispatchTrustedEvent(this, new Event('timeout'));\n        } else {\n          dispatchTrustedEvent(this, new Event('error'));\n        }\n      } else {\n        dispatchTrustedEvent(this, new Event('load'));\n      }\n      dispatchTrustedEvent(this, new Event('loadend'));\n    }\n  }\n\n  addEventListener(type: string, listener: EventListener | null): void {\n    // If we dont' have a 'readystatechange' event handler, we don't\n    // have to send repeated LOADING events with incremental updates\n    // to responseText, which will avoid a bunch of native -> JS\n    // bridge traffic.\n    if (type === 'readystatechange' || type === 'progress') {\n      this._incrementalEvents = true;\n    }\n    super.addEventListener(type, listener);\n  }\n\n  _getMeasureURL(): string {\n    return (\n      this._trackingName ?? this._url ?? LABEL_FOR_MISSING_URL_FOR_PROFILING\n    );\n  }\n\n  /*\n   * `on<event>` event handling (without JS prototype magic).\n   */\n\n  get onabort(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'abort');\n  }\n\n  set onabort(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'abort', listener);\n  }\n\n  get onerror(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'error');\n  }\n\n  set onerror(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'error', listener);\n  }\n\n  get onload(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'load');\n  }\n\n  set onload(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'load', listener);\n  }\n\n  get onloadstart(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'loadstart');\n  }\n\n  set onloadstart(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'loadstart', listener);\n  }\n\n  get onprogress(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'progress');\n  }\n\n  set onprogress(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'progress', listener);\n  }\n\n  get ontimeout(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'timeout');\n  }\n\n  set ontimeout(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'timeout', listener);\n  }\n\n  get onloadend(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'loadend');\n  }\n\n  set onloadend(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'loadend', listener);\n  }\n\n  get onreadystatechange(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'readystatechange');\n  }\n\n  set onreadystatechange(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'readystatechange', listener);\n  }\n}\n\nexport default XMLHttpRequest;\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 * @flow strict\n * @format\n */\n\n/**\n * This module provides helpers for classes to implement event handler IDL\n * attributes, as defined in https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-idl-attributes.\n *\n * Expected usage:\n * ```\n * import {getEventHandlerAttribute, setEventHandlerAttribute} from '../path/to/EventHandlerAttributes';\n *\n * class EventTargetSubclass extends EventTarget {\n *   get oncustomevent(): EventListener | null {\n *     return getEventHandlerAttribute(this, 'customEvent');\n *   }\n *\n *   set oncustomevent(listener: EventListener | null) {\n *     setEventHandlerAttribute(this, 'customEvent', listener);\n *   }\n * }\n *\n * const eventTargetInstance = new EventTargetSubclass();\n *\n * eventTargetInstance.oncustomevent = (event: Event) => {\n *   console.log('custom event received');\n * };\n * eventTargetInstance.dispatchEvent(new Event('customEvent'));\n * // Logs 'custom event received' to the console.\n *\n * eventTargetInstance.oncustomevent = null;\n * eventTargetInstance.dispatchEvent(new Event('customEvent'));\n * // Does not log anything to the console.\n * ```\n */\n\nimport type EventTarget from './EventTarget';\nimport type {EventCallback} from './EventTarget';\n\ntype EventHandler = $ReadOnly<{\n  handleEvent: EventCallback,\n}>;\ntype EventHandlerAttributeMap = Map<string, EventHandler | null>;\n\nconst EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY = Symbol(\n  'eventHandlerAttributeMap',\n);\n\nfunction getEventHandlerAttributeMap(\n  target: EventTarget,\n): ?EventHandlerAttributeMap {\n  // $FlowExpectedError[prop-missing]\n  return target[EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY];\n}\n\nfunction setEventHandlerAttributeMap(\n  target: EventTarget,\n  map: ?EventHandlerAttributeMap,\n) {\n  // $FlowExpectedError[prop-missing]\n  target[EVENT_HANDLER_CONTENT_ATTRIBUTE_MAP_KEY] = map;\n}\n\n/**\n * Returns the event listener registered as an event handler IDL attribute for\n * the given target and type.\n *\n * Should be used to get the current value for `target.on{type}`.\n */\nexport function getEventHandlerAttribute(\n  target: EventTarget,\n  type: string,\n): EventCallback | null {\n  const listener = getEventHandlerAttributeMap(target)?.get(type);\n  return listener != null ? listener.handleEvent : null;\n}\n\n/**\n * Sets the event listener registered as an event handler IDL attribute for\n * the given target and type.\n *\n * Should be used to set a value for `target.on{type}`.\n */\nexport function setEventHandlerAttribute(\n  target: EventTarget,\n  type: string,\n  callback: ?EventCallback,\n): void {\n  let map = getEventHandlerAttributeMap(target);\n  if (map != null) {\n    const currentListener = map.get(type);\n    if (currentListener) {\n      target.removeEventListener(type, currentListener);\n      map.delete(type);\n    }\n  }\n\n  if (\n    callback != null &&\n    (typeof callback === 'function' || typeof callback === 'object')\n  ) {\n    // Register the listener as a different object in the target so it\n    // occupies its own slot and cannot be removed via `removeEventListener`.\n    const listener = {\n      handleEvent: callback,\n    };\n\n    try {\n      target.addEventListener(type, listener);\n      // If adding the listener fails, we don't store the value\n      if (map == null) {\n        map = new Map();\n        setEventHandlerAttributeMap(target, map);\n      }\n      map.set(type, listener);\n    } catch (e) {\n      // Assigning incorrect listener does not throw in setters.\n    }\n  }\n\n  if (map != null && map.size === 0) {\n    setEventHandlerAttributeMap(target, null);\n  }\n}\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 * @flow strict\n * @format\n */\n\n/**\n * This module implements the `EventTarget` and related interfaces from the DOM.\n * See https://dom.spec.whatwg.org/#interface-eventtarget.\n */\n\nimport type {EventPhase} from './Event';\n\nimport {setPlatformObject} from '../../webidl/PlatformObjects';\nimport Event from './Event';\nimport {\n  getStopImmediatePropagationFlag,\n  getStopPropagationFlag,\n  setComposedPath,\n  setCurrentTarget,\n  setEventPhase,\n  setInPassiveListenerFlag,\n  setIsTrusted,\n  setStopImmediatePropagationFlag,\n  setStopPropagationFlag,\n  setTarget,\n} from './internals/EventInternals';\nimport {\n  EVENT_TARGET_GET_THE_PARENT_KEY,\n  INTERNAL_DISPATCH_METHOD_KEY,\n} from './internals/EventTargetInternals';\n\nexport type EventCallback = (event: Event) => void;\nexport type EventHandler = interface {\n  handleEvent(event: Event): void,\n};\nexport type EventListener = EventCallback | EventHandler;\n\nexport type EventListenerOptions = $ReadOnly<{\n  capture?: boolean,\n}>;\n\nexport type AddEventListenerOptions = $ReadOnly<{\n  ...EventListenerOptions,\n  passive?: boolean,\n  once?: boolean,\n  signal?: AbortSignal,\n}>;\n\ntype EventListenerRegistration = {\n  +callback: EventListener,\n  +passive: boolean,\n  +once: boolean,\n  removed: boolean,\n};\n\ntype ListenersMap = Map<string, Map<EventListener, EventListenerRegistration>>;\n\nexport default class EventTarget {\n  addEventListener(\n    type: string,\n    callback: EventListener | null,\n    optionsOrUseCapture?: AddEventListenerOptions | boolean = {},\n  ): void {\n    if (arguments.length < 2) {\n      throw new TypeError(\n        `Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`,\n      );\n    }\n\n    if (callback == null) {\n      return;\n    }\n\n    validateCallback(callback, 'addEventListener');\n\n    const processedType = String(type);\n\n    let capture;\n    let passive;\n    let once;\n    let signal;\n\n    if (\n      optionsOrUseCapture != null &&\n      (typeof optionsOrUseCapture === 'object' ||\n        typeof optionsOrUseCapture === 'function')\n    ) {\n      capture = Boolean(optionsOrUseCapture.capture);\n      passive =\n        optionsOrUseCapture.passive == null\n          ? getDefaultPassiveValue(processedType, this)\n          : Boolean(optionsOrUseCapture.passive);\n      once = Boolean(optionsOrUseCapture.once);\n      signal = optionsOrUseCapture.signal;\n      if (signal !== undefined && !(signal instanceof AbortSignal)) {\n        throw new TypeError(\n          \"Failed to execute 'addEventListener' on 'EventTarget': Failed to read the 'signal' property from 'AddEventListenerOptions': Failed to convert value to 'AbortSignal'.\",\n        );\n      }\n    } else {\n      capture = Boolean(optionsOrUseCapture);\n      passive = false;\n      once = false;\n      signal = null;\n    }\n\n    if (signal?.aborted) {\n      return;\n    }\n\n    let listenersByType = getListenersForPhase(this, capture);\n    let listeners = listenersByType?.get(processedType);\n    if (listeners == null) {\n      if (listenersByType == null) {\n        listenersByType = new Map();\n        setListenersMap(this, capture, listenersByType);\n      }\n      listeners = new Map();\n      listenersByType.set(processedType, listeners);\n    } else if (listeners.has(callback)) {\n      return;\n    }\n\n    const listener: EventListenerRegistration = {\n      callback,\n      passive,\n      once,\n      removed: false,\n    };\n    listeners.set(callback, listener);\n\n    const nonNullListeners = listeners;\n\n    if (signal != null) {\n      signal.addEventListener(\n        'abort',\n        () => {\n          listener.removed = true;\n          if (nonNullListeners.get(callback) === listener) {\n            nonNullListeners.delete(callback);\n          }\n        },\n        {\n          once: true,\n        },\n      );\n    }\n  }\n\n  removeEventListener(\n    type: string,\n    callback: EventListener,\n    optionsOrUseCapture?: EventListenerOptions | boolean = {},\n  ): void {\n    if (arguments.length < 2) {\n      throw new TypeError(\n        `Failed to execute 'removeEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`,\n      );\n    }\n\n    if (callback == null) {\n      return;\n    }\n\n    validateCallback(callback, 'removeEventListener');\n\n    const processedType = String(type);\n\n    const capture =\n      typeof optionsOrUseCapture === 'boolean'\n        ? optionsOrUseCapture\n        : Boolean(optionsOrUseCapture.capture);\n\n    const listenersByType = getListenersForPhase(this, capture);\n    const listeners = listenersByType?.get(processedType);\n    if (listeners == null) {\n      return;\n    }\n\n    const listener = listeners.get(callback);\n    if (listener != null) {\n      listener.removed = true;\n      listeners.delete(callback);\n    }\n  }\n\n  dispatchEvent(event: Event): boolean {\n    if (!(event instanceof Event)) {\n      throw new TypeError(\n        \"Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'.\",\n      );\n    }\n\n    if (getEventDispatchFlag(event)) {\n      throw new Error(\n        \"Failed to execute 'dispatchEvent' on 'EventTarget': The event is already being dispatched.\",\n      );\n    }\n\n    setIsTrusted(event, false);\n\n    dispatch(this, event);\n\n    return !event.defaultPrevented;\n  }\n\n  /**\n   * This a \"protected\" method to be overridden by a subclass to allow event\n   * propagation.\n   *\n   * Should implement the \"get the parent\" algorithm\n   * (see https://dom.spec.whatwg.org/#get-the-parent).\n   */\n  // $FlowExpectedError[unsupported-syntax]\n  [EVENT_TARGET_GET_THE_PARENT_KEY](): EventTarget | null {\n    return null;\n  }\n\n  /**\n   * This is \"protected\" method to dispatch trusted events.\n   */\n  // $FlowExpectedError[unsupported-syntax]\n  [INTERNAL_DISPATCH_METHOD_KEY](event: Event): void {\n    dispatch(this, event);\n  }\n}\n\nsetPlatformObject(EventTarget);\n\nfunction validateCallback(callback: EventListener, methodName: string): void {\n  if (typeof callback !== 'function' && typeof callback !== 'object') {\n    throw new TypeError(\n      `Failed to execute '${methodName}' on 'EventTarget': parameter 2 is not of type 'Object'.`,\n    );\n  }\n}\n\nfunction getDefaultPassiveValue(\n  type: string,\n  eventTarget: EventTarget,\n): boolean {\n  return false;\n}\n\n/**\n * This internal version of `dispatchEvent` does not validate the input and\n * does not reset the `isTrusted` flag, so it can be used for both trusted\n * and not trusted events.\n *\n * Implements the \"event dispatch\" concept\n * (see https://dom.spec.whatwg.org/#concept-event-dispatch).\n */\nfunction dispatch(eventTarget: EventTarget, event: Event): void {\n  setEventDispatchFlag(event, true);\n\n  const eventPath = getEventPath(eventTarget, event);\n  setComposedPath(event, eventPath);\n  setTarget(event, eventTarget);\n\n  for (let i = eventPath.length - 1; i >= 0; i--) {\n    if (getStopPropagationFlag(event)) {\n      break;\n    }\n\n    const target = eventPath[i];\n    setEventPhase(\n      event,\n      target === eventTarget ? Event.AT_TARGET : Event.CAPTURING_PHASE,\n    );\n    invoke(target, event, Event.CAPTURING_PHASE);\n  }\n\n  for (const target of eventPath) {\n    if (getStopPropagationFlag(event)) {\n      break;\n    }\n\n    // If the event does NOT bubble, we only dispatch the event to the\n    // target in the bubbling phase.\n    if (!event.bubbles && target !== eventTarget) {\n      break;\n    }\n\n    setEventPhase(\n      event,\n      target === eventTarget ? Event.AT_TARGET : Event.BUBBLING_PHASE,\n    );\n    invoke(target, event, Event.BUBBLING_PHASE);\n  }\n\n  setEventPhase(event, Event.NONE);\n  setCurrentTarget(event, null);\n  setComposedPath(event, []);\n\n  setEventDispatchFlag(event, false);\n  setStopImmediatePropagationFlag(event, false);\n  setStopPropagationFlag(event, false);\n}\n\n/**\n * Builds the event path for an event about to be dispatched in this target\n * (see https://dom.spec.whatwg.org/#event-path).\n *\n * The return value is also set as `composedPath` for the event.\n */\nfunction getEventPath(\n  eventTarget: EventTarget,\n  event: Event,\n): $ReadOnlyArray<EventTarget> {\n  const path = [];\n  let target: EventTarget | null = eventTarget;\n\n  while (target != null) {\n    path.push(target);\n    // $FlowExpectedError[prop-missing]\n    target = target[EVENT_TARGET_GET_THE_PARENT_KEY]();\n  }\n\n  return path;\n}\n\n/**\n * Implements the event listener invoke concept\n * (see https://dom.spec.whatwg.org/#concept-event-listener-invoke).\n */\nfunction invoke(\n  eventTarget: EventTarget,\n  event: Event,\n  eventPhase: EventPhase,\n) {\n  const listenersByType = getListenersForPhase(\n    eventTarget,\n    eventPhase === Event.CAPTURING_PHASE,\n  );\n\n  setCurrentTarget(event, eventTarget);\n\n  const maybeListeners = listenersByType?.get(event.type);\n  if (maybeListeners == null) {\n    return;\n  }\n\n  // This is a copy so listeners added during dispatch are NOT executed.\n  // Note that `maybeListeners.values()` is a live view of the map instead of an\n  // immutable copy.\n  const listeners = Array.from(maybeListeners.values());\n\n  setCurrentTarget(event, eventTarget);\n\n  for (const listener of listeners) {\n    if (listener.removed) {\n      continue;\n    }\n\n    if (listener.once) {\n      eventTarget.removeEventListener(\n        event.type,\n        listener.callback,\n        eventPhase === Event.CAPTURING_PHASE,\n      );\n    }\n\n    if (listener.passive) {\n      setInPassiveListenerFlag(event, true);\n    }\n\n    const currentEvent = global.event;\n    global.event = event;\n\n    const callback = listener.callback;\n\n    try {\n      if (typeof callback === 'function') {\n        callback.call(eventTarget, event);\n        // $FlowExpectedError[method-unbinding]\n      } else if (typeof callback.handleEvent === 'function') {\n        callback.handleEvent(event);\n      }\n    } catch (error) {\n      // TODO: replace with `reportError` when it's available.\n      console.error(error);\n    }\n\n    if (listener.passive) {\n      setInPassiveListenerFlag(event, false);\n    }\n\n    global.event = currentEvent;\n\n    if (getStopImmediatePropagationFlag(event)) {\n      break;\n    }\n  }\n}\n\nconst CAPTURING_LISTENERS_KEY = Symbol('capturingListeners');\nconst BUBBLING_LISTENERS_KEY = Symbol('bubblingListeners');\n\nfunction getListenersForPhase(\n  eventTarget: EventTarget,\n  isCapture: boolean,\n): ?ListenersMap {\n  return isCapture\n    ? // $FlowExpectedError[prop-missing]\n      eventTarget[CAPTURING_LISTENERS_KEY]\n    : // $FlowExpectedError[prop-missing]\n      eventTarget[BUBBLING_LISTENERS_KEY];\n}\n\nfunction setListenersMap(\n  eventTarget: EventTarget,\n  isCapture: boolean,\n  listenersMap: ListenersMap,\n): void {\n  if (isCapture) {\n    // $FlowExpectedError[prop-missing]\n    eventTarget[CAPTURING_LISTENERS_KEY] = listenersMap;\n  } else {\n    // $FlowExpectedError[prop-missing]\n    eventTarget[BUBBLING_LISTENERS_KEY] = listenersMap;\n  }\n}\n\nconst EVENT_DISPATCH_FLAG = Symbol('Event.dispatch');\n\nfunction getEventDispatchFlag(event: Event): boolean {\n  // $FlowExpectedError[prop-missing]\n  return event[EVENT_DISPATCH_FLAG];\n}\n\nfunction setEventDispatchFlag(event: Event, value: boolean): void {\n  // $FlowExpectedError[prop-missing]\n  event[EVENT_DISPATCH_FLAG] = value;\n}\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 * @flow strict\n * @format\n */\n\n/**\n * This method contains internal implementation details for the `EventTarget`\n * module and it is defined in a separate module to keep the exports in\n * the original module clean (only with public exports).\n */\n\nimport type Event from '../Event';\nimport type EventTarget from '../EventTarget';\n\nimport {setIsTrusted} from './EventInternals';\n\n/**\n * Use this symbol as key for a method to implement the \"get the parent\"\n * algorithm in an `EventTarget` subclass.\n */\nexport const EVENT_TARGET_GET_THE_PARENT_KEY: symbol = Symbol(\n  'EventTarget[get the parent]',\n);\n\n/**\n * This is only exposed to implement the method in `EventTarget`.\n * Do NOT use this directly (use the `dispatchTrustedEvent` method instead).\n */\nexport const INTERNAL_DISPATCH_METHOD_KEY: symbol = Symbol(\n  'EventTarget[dispatch]',\n);\n\n/**\n * Dispatches a trusted event to the given event target.\n *\n * This should only be used by the runtime to dispatch native events to\n * JavaScript.\n */\nexport function dispatchTrustedEvent(\n  eventTarget: EventTarget,\n  event: Event,\n): void {\n  setIsTrusted(event, true);\n\n  // $FlowExpectedError[prop-missing]\n  return eventTarget[INTERNAL_DISPATCH_METHOD_KEY](event);\n}\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 * @flow strict\n * @format\n */\n\n/**\n * This module implements the `ProgressEvent` interface from `XMLHttpRequest`.\n * See https://xhr.spec.whatwg.org/#interface-progressevent.\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {EventInit} from '../../dom/events/Event';\n\nimport Event from '../../dom/events/Event';\n\nexport interface ProgressEventInit extends EventInit {\n  +lengthComputable: boolean;\n  +loaded: number;\n  +total: number;\n}\n\nexport default class ProgressEvent extends Event {\n  _lengthComputable: boolean;\n  _loaded: number;\n  _total: number;\n\n  constructor(type: string, options?: ?ProgressEventInit) {\n    super(type, options);\n\n    this._lengthComputable = Boolean(options?.lengthComputable);\n    this._loaded = Number(options?.loaded) || 0;\n    this._total = Number(options?.total) || 0;\n  }\n\n  get lengthComputable(): boolean {\n    return this._lengthComputable;\n  }\n\n  get loaded(): number {\n    return this._loaded;\n  }\n\n  get total(): number {\n    return this._total;\n  }\n}\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 * @flow strict-local\n * @format\n */\n\nimport typeof BlobT from './Blob';\nimport type {BlobCollector, BlobData, BlobOptions} from './BlobTypes';\n\nimport NativeBlobModule from './NativeBlobModule';\nimport invariant from 'invariant';\n\nconst Blob: BlobT = require('./Blob').default;\nconst BlobRegistry = require('./BlobRegistry');\n\n/*eslint-disable no-bitwise */\n/*eslint-disable eqeqeq */\n\n/**\n * Based on the rfc4122-compliant solution posted at\n * http://stackoverflow.com/questions/105034\n */\nfunction uuidv4(): string {\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n    const r = (Math.random() * 16) | 0,\n      v = c == 'x' ? r : (r & 0x3) | 0x8;\n    return v.toString(16);\n  });\n}\n\n// **Temporary workaround**\n// TODO(#24654): Use turbomodules for the Blob module.\n// Blob collector is a jsi::HostObject that is used by native to know\n// when the a Blob instance is deallocated. This allows to free the\n// underlying native resources. This is a hack to workaround the fact\n// that the current bridge infra doesn't allow to track js objects\n// deallocation. Ideally the whole Blob object should be a jsi::HostObject.\nfunction createBlobCollector(blobId: string): BlobCollector | null {\n  if (global.__blobCollectorProvider == null) {\n    return null;\n  } else {\n    return global.__blobCollectorProvider(blobId);\n  }\n}\n\n/**\n * Module to manage blobs. Wrapper around the native blob module.\n */\nclass BlobManager {\n  /**\n   * If the native blob module is available.\n   */\n  static isAvailable: boolean = !!NativeBlobModule;\n\n  /**\n   * Create blob from existing array of blobs.\n   */\n  static createFromParts(\n    parts: Array<Blob | string>,\n    options?: BlobOptions,\n  ): Blob {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    const blobId = uuidv4();\n    const items = parts.map(part => {\n      if (part instanceof ArrayBuffer || ArrayBuffer.isView(part)) {\n        throw new Error(\n          \"Creating blobs from 'ArrayBuffer' and 'ArrayBufferView' are not supported\",\n        );\n      }\n      if (part instanceof Blob) {\n        return {\n          data: part.data,\n          type: 'blob',\n        };\n      } else {\n        return {\n          data: String(part),\n          type: 'string',\n        };\n      }\n    });\n    const size = items.reduce((acc, curr) => {\n      if (curr.type === 'string') {\n        /* $FlowFixMe[incompatible-call] Natural Inference rollout. See\n         * https://fburl.com/workplace/6291gfvu */\n        return acc + global.unescape(encodeURI(curr.data)).length;\n      } else {\n        /* $FlowFixMe[prop-missing] Natural Inference rollout. See\n         * https://fburl.com/workplace/6291gfvu */\n        return acc + curr.data.size;\n      }\n    }, 0);\n\n    NativeBlobModule.createFromParts(items, blobId);\n\n    return BlobManager.createFromOptions({\n      blobId,\n      offset: 0,\n      size,\n      type: options ? options.type : '',\n      lastModified: options ? options.lastModified : Date.now(),\n    });\n  }\n\n  /**\n   * Create blob instance from blob data from native.\n   * Used internally by modules like XHR, WebSocket, etc.\n   */\n  static createFromOptions(options: BlobData): Blob {\n    BlobRegistry.register(options.blobId);\n    // $FlowFixMe[prop-missing]\n    // $FlowFixMe[unsafe-object-assign]\n    return Object.assign(Object.create(Blob.prototype), {\n      data:\n        // Reuse the collector instance when creating from an existing blob.\n        // This will make sure that the underlying resource is only deallocated\n        // when all blobs that refer to it are deallocated.\n        options.__collector == null\n          ? {\n              ...options,\n              __collector: createBlobCollector(options.blobId),\n            }\n          : options,\n    });\n  }\n\n  /**\n   * Deallocate resources for a blob.\n   */\n  static release(blobId: string): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    BlobRegistry.unregister(blobId);\n    if (BlobRegistry.has(blobId)) {\n      return;\n    }\n    NativeBlobModule.release(blobId);\n  }\n\n  /**\n   * Inject the blob content handler in the networking module to support blob\n   * requests and responses.\n   */\n  static addNetworkingHandler(): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    NativeBlobModule.addNetworkingHandler();\n  }\n\n  /**\n   * Indicate the websocket should return a blob for incoming binary\n   * messages.\n   */\n  static addWebSocketHandler(socketId: number): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    NativeBlobModule.addWebSocketHandler(socketId);\n  }\n\n  /**\n   * Indicate the websocket should no longer return a blob for incoming\n   * binary messages.\n   */\n  static removeWebSocketHandler(socketId: number): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    NativeBlobModule.removeWebSocketHandler(socketId);\n  }\n\n  /**\n   * Send a blob message to a websocket.\n   */\n  static sendOverSocket(blob: Blob, socketId: number): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    NativeBlobModule.sendOverSocket(blob.data, socketId);\n  }\n}\n\nexport default BlobManager;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeBlobModule';\nimport NativeBlobModule from '../../src/private/specs_DEPRECATED/modules/NativeBlobModule';\n\nexport default NativeBlobModule;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type Constants = {BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => Constants;\n  +addNetworkingHandler: () => void;\n  +addWebSocketHandler: (id: number) => void;\n  +removeWebSocketHandler: (id: number) => void;\n  +sendOverSocket: (blob: Object, socketID: number) => void;\n  +createFromParts: (parts: Array<Object>, withId: string) => void;\n  +release: (blobId: string) => void;\n}\n\nconst NativeModule = TurboModuleRegistry.get<Spec>('BlobModule');\n\nlet constants = null;\nlet NativeBlobModule = null;\n\nif (NativeModule != null) {\n  NativeBlobModule = {\n    getConstants(): Constants {\n      if (constants == null) {\n        constants = NativeModule.getConstants();\n      }\n      return constants;\n    },\n    addNetworkingHandler(): void {\n      NativeModule.addNetworkingHandler();\n    },\n    addWebSocketHandler(id: number): void {\n      NativeModule.addWebSocketHandler(id);\n    },\n    removeWebSocketHandler(id: number): void {\n      NativeModule.removeWebSocketHandler(id);\n    },\n    sendOverSocket(blob: Object, socketID: number): void {\n      NativeModule.sendOverSocket(blob, socketID);\n    },\n    createFromParts(parts: Array<Object>, withId: string): void {\n      NativeModule.createFromParts(parts, withId);\n    },\n    release(blobId: string): void {\n      NativeModule.release(blobId);\n    },\n  };\n}\n\nexport default (NativeBlobModule: ?Spec);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {BlobData, BlobOptions} from './BlobTypes';\n\n/**\n * Opaque JS representation of some binary data in native.\n *\n * The API is modeled after the W3C Blob API, with one caveat\n * regarding explicit deallocation. Refer to the `close()`\n * method for further details.\n *\n * Example usage in a React component:\n *\n *   class WebSocketImage extends React.Component {\n *      state = {blob: null};\n *      componentDidMount() {\n *        let ws = this.ws = new WebSocket(...);\n *        ws.binaryType = 'blob';\n *        ws.onmessage = (event) => {\n *          if (this.state.blob) {\n *            this.state.blob.close();\n *          }\n *          this.setState({blob: event.data});\n *        };\n *      }\n *      componentUnmount() {\n *        if (this.state.blob) {\n *          this.state.blob.close();\n *        }\n *        this.ws.close();\n *      }\n *      render() {\n *        if (!this.state.blob) {\n *          return <View />;\n *        }\n *        return <Image source={{uri: URL.createObjectURL(this.state.blob)}} />;\n *      }\n *   }\n *\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob\n */\nclass Blob {\n  _data: ?BlobData;\n\n  /**\n   * Constructor for JS consumers.\n   * Currently we only support creating Blobs from other Blobs.\n   * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob\n   */\n  constructor(parts: Array<Blob | string> = [], options?: BlobOptions) {\n    const BlobManager = require('./BlobManager').default;\n    this.data = BlobManager.createFromParts(parts, options).data;\n  }\n\n  /*\n   * This method is used to create a new Blob object containing\n   * the data in the specified range of bytes of the source Blob.\n   * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/slice\n   */\n  // $FlowFixMe[unsafe-getters-setters]\n  set data(data: ?BlobData) {\n    this._data = data;\n  }\n\n  // $FlowFixMe[unsafe-getters-setters]\n  get data(): BlobData {\n    if (!this._data) {\n      throw new Error('Blob has been closed and is no longer available');\n    }\n\n    return this._data;\n  }\n\n  slice(start?: number, end?: number, contentType?: string = ''): Blob {\n    const BlobManager = require('./BlobManager').default;\n    let {offset, size} = this.data;\n\n    if (typeof start === 'number') {\n      if (start > size) {\n        // $FlowFixMe[reassign-const]\n        start = size;\n      }\n      offset += start;\n      size -= start;\n\n      if (typeof end === 'number') {\n        if (end < 0) {\n          // $FlowFixMe[reassign-const]\n          end = this.size + end;\n        }\n        if (end > this.size) {\n          // $FlowFixMe[reassign-const]\n          end = this.size;\n        }\n        size = end - start;\n      }\n    }\n    return BlobManager.createFromOptions({\n      blobId: this.data.blobId,\n      offset,\n      size,\n      type: contentType,\n      /* Since `blob.slice()` creates a new view onto the same binary\n       * data as the original blob, we should re-use the same collector\n       * object so that the underlying resource gets deallocated when\n       * the last view into the data is released, not the first.\n       */\n      __collector: this.data.__collector,\n    });\n  }\n\n  /**\n   * This method is in the standard, but not actually implemented by\n   * any browsers at this point. It's important for how Blobs work in\n   * React Native, however, since we cannot de-allocate resources automatically,\n   * so consumers need to explicitly de-allocate them.\n   *\n   * Note that the semantics around Blobs created via `blob.slice()`\n   * and `new Blob([blob])` are different. `blob.slice()` creates a\n   * new *view* onto the same binary data, so calling `close()` on any\n   * of those views is enough to deallocate the data, whereas\n   * `new Blob([blob, ...])` actually copies the data in memory.\n   */\n  close() {\n    const BlobManager = require('./BlobManager').default;\n    BlobManager.release(this.data.blobId);\n    this.data = null;\n  }\n\n  /**\n   * Size of the data contained in the Blob object, in bytes.\n   */\n  // $FlowFixMe[unsafe-getters-setters]\n  get size(): number {\n    return this.data.size;\n  }\n\n  /*\n   * String indicating the MIME type of the data contained in the Blob.\n   * If the type is unknown, this string is empty.\n   */\n  // $FlowFixMe[unsafe-getters-setters]\n  get type(): string {\n    return this.data.type || '';\n  }\n}\n\nexport default Blob;\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 * @flow strict\n * @format\n */\n\nconst registry: Map<string, number> = new Map();\n\nexport const register = (id: string) => {\n  const used = registry.get(id);\n\n  if (used != null) {\n    registry.set(id, used + 1);\n  } else {\n    registry.set(id, 1);\n  }\n};\n\nexport const unregister = (id: string) => {\n  const used = registry.get(id);\n\n  if (used != null) {\n    if (used <= 1) {\n      registry.delete(id);\n    } else {\n      registry.set(id, used - 1);\n    }\n  }\n};\n\nexport const has = (id: string): number | boolean => {\n  return registry.get(id) || false;\n};\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 * @flow strict\n * @format\n */\n\nimport type {IPerformanceLogger} from './createPerformanceLogger';\n\nimport createPerformanceLogger from './createPerformanceLogger';\n\n/**\n * This is a global shared instance of IPerformanceLogger that is created with\n * createPerformanceLogger().\n * This logger should be used only for global performance metrics like the ones\n * that are logged during loading bundle. If you want to log something from your\n * React component you should use PerformanceLoggerContext instead.\n */\nconst GlobalPerformanceLogger: IPerformanceLogger = createPerformanceLogger();\n\nexport default GlobalPerformanceLogger;\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 * @flow strict\n * @format\n */\n\nimport type {\n  Extras,\n  ExtraValue,\n  IPerformanceLogger,\n  Timespan,\n} from './IPerformanceLogger';\n\nconst PRINT_TO_CONSOLE: false = false; // Type as false to prevent accidentally committing `true`;\n\nexport const getCurrentTimestamp: () => number =\n  global.nativeQPLTimestamp ?? (() => global.performance.now());\n\nclass PerformanceLogger implements IPerformanceLogger {\n  _timespans: {[key: string]: ?Timespan} = {};\n  _extras: {[key: string]: ?ExtraValue} = {};\n  _points: {[key: string]: ?number} = {};\n  _pointExtras: {[key: string]: ?Extras, ...} = {};\n  _closed: boolean = false;\n\n  addTimespan(\n    key: string,\n    startTime: number,\n    endTime: number,\n    startExtras?: Extras,\n    endExtras?: Extras,\n  ) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: addTimespan - has closed ignoring: ',\n          key,\n        );\n      }\n      return;\n    }\n    if (this._timespans[key]) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: Attempting to add a timespan that already exists ',\n          key,\n        );\n      }\n      return;\n    }\n\n    this._timespans[key] = {\n      startTime,\n      endTime,\n      totalTime: endTime - (startTime || 0),\n      startExtras,\n      endExtras,\n    };\n  }\n\n  append(performanceLogger: IPerformanceLogger) {\n    this._timespans = {\n      ...performanceLogger.getTimespans(),\n      ...this._timespans,\n    };\n    this._extras = {...performanceLogger.getExtras(), ...this._extras};\n    this._points = {...performanceLogger.getPoints(), ...this._points};\n    this._pointExtras = {\n      ...performanceLogger.getPointExtras(),\n      ...this._pointExtras,\n    };\n  }\n\n  clear() {\n    this._timespans = {};\n    this._extras = {};\n    this._points = {};\n    if (PRINT_TO_CONSOLE) {\n      console.log('PerformanceLogger.js', 'clear');\n    }\n  }\n\n  clearCompleted() {\n    for (const key in this._timespans) {\n      if (this._timespans[key]?.totalTime != null) {\n        delete this._timespans[key];\n      }\n    }\n    this._extras = {};\n    this._points = {};\n    if (PRINT_TO_CONSOLE) {\n      console.log('PerformanceLogger.js', 'clearCompleted');\n    }\n  }\n\n  close() {\n    this._closed = true;\n  }\n\n  currentTimestamp(): number {\n    return getCurrentTimestamp();\n  }\n\n  getExtras(): {[key: string]: ?ExtraValue} {\n    return this._extras;\n  }\n\n  getPoints(): {[key: string]: ?number} {\n    return this._points;\n  }\n\n  getPointExtras(): {[key: string]: ?Extras} {\n    return this._pointExtras;\n  }\n\n  getTimespans(): {[key: string]: ?Timespan} {\n    return this._timespans;\n  }\n\n  hasTimespan(key: string): boolean {\n    return !!this._timespans[key];\n  }\n\n  isClosed(): boolean {\n    return this._closed;\n  }\n\n  logEverything() {\n    if (PRINT_TO_CONSOLE) {\n      // log timespans\n      for (const key in this._timespans) {\n        if (this._timespans[key]?.totalTime != null) {\n          console.log(key + ': ' + this._timespans[key].totalTime + 'ms');\n        }\n      }\n\n      // log extras\n      console.log(this._extras);\n\n      // log points\n      for (const key in this._points) {\n        if (this._points[key] != null) {\n          console.log(key + ': ' + this._points[key] + 'ms');\n        }\n      }\n    }\n  }\n\n  markPoint(\n    key: string,\n    timestamp?: number = getCurrentTimestamp(),\n    extras?: Extras,\n  ) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: markPoint - has closed ignoring: ',\n          key,\n        );\n      }\n      return;\n    }\n    if (this._points[key] != null) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: Attempting to mark a point that has been already logged ',\n          key,\n        );\n      }\n      return;\n    }\n    this._points[key] = timestamp;\n    if (extras) {\n      this._pointExtras[key] = extras;\n    }\n  }\n\n  removeExtra(key: string): ?ExtraValue {\n    const value = this._extras[key];\n    delete this._extras[key];\n    return value;\n  }\n\n  setExtra(key: string, value: ExtraValue) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log('PerformanceLogger: setExtra - has closed ignoring: ', key);\n      }\n      return;\n    }\n\n    if (this._extras.hasOwnProperty(key)) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: Attempting to set an extra that already exists ',\n          {key, currentValue: this._extras[key], attemptedValue: value},\n        );\n      }\n      return;\n    }\n    this._extras[key] = value;\n  }\n\n  startTimespan(\n    key: string,\n    timestamp?: number = getCurrentTimestamp(),\n    extras?: Extras,\n  ) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: startTimespan - has closed ignoring: ',\n          key,\n        );\n      }\n      return;\n    }\n\n    if (this._timespans[key]) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: Attempting to start a timespan that already exists ',\n          key,\n        );\n      }\n      return;\n    }\n\n    this._timespans[key] = {\n      startTime: timestamp,\n      startExtras: extras,\n    };\n    if (PRINT_TO_CONSOLE) {\n      console.log('PerformanceLogger.js', 'start: ' + key);\n    }\n  }\n\n  stopTimespan(\n    key: string,\n    timestamp?: number = getCurrentTimestamp(),\n    extras?: Extras,\n  ) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: stopTimespan - has closed ignoring: ',\n          key,\n        );\n      }\n      return;\n    }\n\n    const timespan = this._timespans[key];\n    if (!timespan || timespan.startTime == null) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: Attempting to end a timespan that has not started ',\n          key,\n        );\n      }\n      return;\n    }\n    if (timespan.endTime != null) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        console.log(\n          'PerformanceLogger: Attempting to end a timespan that has already ended ',\n          key,\n        );\n      }\n      return;\n    }\n\n    timespan.endExtras = extras;\n    timespan.endTime = timestamp;\n    timespan.totalTime = timespan.endTime - (timespan.startTime || 0);\n    if (PRINT_TO_CONSOLE) {\n      console.log('PerformanceLogger.js', 'end: ' + key);\n    }\n  }\n}\n\n// Re-exporting for backwards compatibility with all the clients that\n// may still import it from this module.\nexport type {Extras, ExtraValue, IPerformanceLogger, Timespan};\n\n/**\n * This function creates performance loggers that can be used to collect and log\n * various performance data such as timespans, points and extras.\n * The loggers need to have minimal overhead since they're used in production.\n */\nexport default function createPerformanceLogger(): IPerformanceLogger {\n  return new PerformanceLogger();\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport typeof BlobT from '../Blob/Blob';\nimport typeof FormDataT from './FormData';\n\nconst Blob: BlobT = require('../Blob/Blob').default;\nconst binaryToBase64 = require('../Utilities/binaryToBase64').default;\nconst FormData: FormDataT = require('./FormData').default;\n\nexport type RequestBody =\n  | string\n  | Blob\n  | FormData\n  | {uri: string, ...}\n  | ArrayBuffer\n  | $ArrayBufferView;\n\nfunction convertRequestBody(body: RequestBody): Object {\n  if (typeof body === 'string') {\n    return {string: body};\n  }\n  if (body instanceof Blob) {\n    return {blob: body.data};\n  }\n  if (body instanceof FormData) {\n    return {formData: body.getParts()};\n  }\n  if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\n    /* $FlowFixMe[incompatible-call] : no way to assert that 'body' is indeed\n     * an ArrayBufferView */\n    return {base64: binaryToBase64(body)};\n  }\n  return body;\n}\n\nexport default convertRequestBody;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst base64 = require('base64-js');\n\nfunction binaryToBase64(data: ArrayBuffer | $ArrayBufferView): string {\n  if (data instanceof ArrayBuffer) {\n    // $FlowFixMe[reassign-const]\n    data = new Uint8Array(data);\n  }\n  if (data instanceof Uint8Array) {\n    return base64.fromByteArray(data);\n  }\n  if (!ArrayBuffer.isView(data)) {\n    throw new Error('data must be ArrayBuffer or typed array');\n  }\n  // Already checked that `data` is `DataView` in `ArrayBuffer.isView(data)`\n  const {buffer, byteOffset, byteLength}: DataView = (data: $FlowFixMe);\n  return base64.fromByteArray(new Uint8Array(buffer, byteOffset, byteLength));\n}\n\nexport default binaryToBase64;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\ntype FormDataValue = string | {name?: string, type?: string, uri: string};\ntype FormDataNameValuePair = [string, FormDataValue];\n\ntype Headers = {[name: string]: string, ...};\ntype FormDataPart =\n  | {\n      string: string,\n      headers: Headers,\n      ...\n    }\n  | {\n      uri: string,\n      headers: Headers,\n      name?: string,\n      type?: string,\n      ...\n    };\n\n/**\n * Encode a FormData filename compliant with RFC 2183\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition#directives\n */\nfunction encodeFilename(filename: string): string {\n  return encodeURIComponent(filename.replace(/\\//g, '_'));\n}\n\n/**\n * Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests\n * with mixed data (string, native files) to be submitted via XMLHttpRequest.\n *\n * Example:\n *\n *   var photo = {\n *     uri: uriFromCameraRoll,\n *     type: 'image/jpeg',\n *     name: 'photo.jpg',\n *   };\n *\n *   var body = new FormData();\n *   body.append('authToken', 'secret');\n *   body.append('photo', photo);\n *   body.append('title', 'A beautiful photo!');\n *\n *   xhr.open('POST', serverURL);\n *   xhr.send(body);\n */\nclass FormData {\n  _parts: Array<FormDataNameValuePair>;\n\n  constructor() {\n    this._parts = [];\n  }\n\n  append(key: string, value: FormDataValue) {\n    // The XMLHttpRequest spec doesn't specify if duplicate keys are allowed.\n    // MDN says that any new values should be appended to existing values.\n    // In any case, major browsers allow duplicate keys, so that's what we'll do\n    // too. They'll simply get appended as additional form data parts in the\n    // request body, leaving the server to deal with them.\n    this._parts.push([key, value]);\n  }\n\n  getAll(key: string): Array<FormDataValue> {\n    return this._parts\n      .filter(([name]) => name === key)\n      .map(([, value]) => value);\n  }\n\n  getParts(): Array<FormDataPart> {\n    return this._parts.map(([name, value]) => {\n      const contentDisposition = 'form-data; name=\"' + name + '\"';\n\n      const headers: Headers = {'content-disposition': contentDisposition};\n\n      // The body part is a \"blob\", which in React Native just means\n      // an object with a `uri` attribute. Optionally, it can also\n      // have a `name` and `type` attribute to specify filename and\n      // content type (cf. web Blob interface.)\n      if (typeof value === 'object' && !Array.isArray(value) && value) {\n        if (typeof value.name === 'string') {\n          headers['content-disposition'] +=\n            `; filename=\"${encodeFilename(value.name)}\"`;\n        }\n        if (typeof value.type === 'string') {\n          headers['content-type'] = value.type;\n        }\n        return {...value, headers, fieldName: name};\n      }\n      // Convert non-object values to strings as per FormData.append() spec\n      return {string: String(value), headers, fieldName: name};\n    });\n  }\n}\n\nexport default FormData;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n// side-effectful require() to put fetch,\n// Headers, Request, Response in global scope\nrequire('whatwg-fetch');\n\nexport const fetch = global.fetch;\nexport const Headers = global.Headers;\nexport const Request = global.Request;\nexport const Response = global.Response;\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.WHATWGFetch = {})));\n}(this, (function (exports) { 'use strict';\n\n  /* eslint-disable no-prototype-builtins */\n  var g =\n    (typeof globalThis !== 'undefined' && globalThis) ||\n    (typeof self !== 'undefined' && self) ||\n    // eslint-disable-next-line no-undef\n    (typeof global !== 'undefined' && global) ||\n    {};\n\n  var support = {\n    searchParams: 'URLSearchParams' in g,\n    iterable: 'Symbol' in g && 'iterator' in Symbol,\n    blob:\n      'FileReader' in g &&\n      'Blob' in g &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in g,\n    arrayBuffer: 'ArrayBuffer' in g\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n      throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        if (header.length != 2) {\n          throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n        }\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body._noBody) return\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n    var encoding = match ? match[1] : 'utf-8';\n    reader.readAsText(blob, encoding);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      /*\n        fetch-mock wraps the Response object in an ES6 Proxy to\n        provide useful test harness features such as flush. However, on\n        ES5 browsers without fetch or Proxy support pollyfills must be used;\n        the proxy-pollyfill is unable to proxy an attribute unless it exists\n        on the object before the Proxy is created. This change ensures\n        Response.bodyUsed exists on the instance, while maintaining the\n        semantic of setting Request.bodyUsed in the constructor before\n        _initBody is called.\n      */\n      // eslint-disable-next-line no-self-assign\n      this.bodyUsed = this.bodyUsed;\n      this._bodyInit = body;\n      if (!body) {\n        this._noBody = true;\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n    }\n\n    this.arrayBuffer = function() {\n      if (this._bodyArrayBuffer) {\n        var isConsumed = consumed(this);\n        if (isConsumed) {\n          return isConsumed\n        } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n          return Promise.resolve(\n            this._bodyArrayBuffer.buffer.slice(\n              this._bodyArrayBuffer.byteOffset,\n              this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n            )\n          )\n        } else {\n          return Promise.resolve(this._bodyArrayBuffer)\n        }\n      } else if (support.blob) {\n        return this.blob().then(readBlobAsArrayBuffer)\n      } else {\n        throw new Error('could not read as ArrayBuffer')\n      }\n    };\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    if (!(this instanceof Request)) {\n      throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n    }\n\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal || (function () {\n      if ('AbortController' in g) {\n        var ctrl = new AbortController();\n        return ctrl.signal;\n      }\n    }());\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n\n    if (this.method === 'GET' || this.method === 'HEAD') {\n      if (options.cache === 'no-store' || options.cache === 'no-cache') {\n        // Search for a '_' parameter in the query string\n        var reParamSearch = /([?&])_=[^&]*/;\n        if (reParamSearch.test(this.url)) {\n          // If it already exists then set the value with the current time\n          this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n        } else {\n          // Otherwise add a new '_' parameter to the end with the current time\n          var reQueryString = /\\?/;\n          this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n        }\n      }\n    }\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n    // https://github.com/github/fetch/issues/748\n    // https://github.com/zloirock/core-js/issues/751\n    preProcessedHeaders\n      .split('\\r')\n      .map(function(header) {\n        return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n      })\n      .forEach(function(line) {\n        var parts = line.split(':');\n        var key = parts.shift().trim();\n        if (key) {\n          var value = parts.join(':').trim();\n          try {\n            headers.append(key, value);\n          } catch (error) {\n            console.warn('Response ' + error.message);\n          }\n        }\n      });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!(this instanceof Response)) {\n      throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n    }\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    if (this.status < 200 || this.status > 599) {\n      throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n    }\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 200, statusText: ''});\n    response.ok = false;\n    response.status = 0;\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = g.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        // This check if specifically for when a user fetches a file locally from the file system\n        // Only if the status is out of a normal range\n        if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n          options.status = 200;\n        } else {\n          options.status = xhr.status;\n        }\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        setTimeout(function() {\n          resolve(new Response(body, options));\n        }, 0);\n      };\n\n      xhr.onerror = function() {\n        setTimeout(function() {\n          reject(new TypeError('Network request failed'));\n        }, 0);\n      };\n\n      xhr.ontimeout = function() {\n        setTimeout(function() {\n          reject(new TypeError('Network request timed out'));\n        }, 0);\n      };\n\n      xhr.onabort = function() {\n        setTimeout(function() {\n          reject(new exports.DOMException('Aborted', 'AbortError'));\n        }, 0);\n      };\n\n      function fixUrl(url) {\n        try {\n          return url === '' && g.location.href ? g.location.href : url\n        } catch (e) {\n          return url\n        }\n      }\n\n      xhr.open(request.method, fixUrl(request.url), true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr) {\n        if (support.blob) {\n          xhr.responseType = 'blob';\n        } else if (\n          support.arrayBuffer\n        ) {\n          xhr.responseType = 'arraybuffer';\n        }\n      }\n\n      if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n        var names = [];\n        Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n          names.push(normalizeName(name));\n          xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n        });\n        request.headers.forEach(function(value, name) {\n          if (names.indexOf(name) === -1) {\n            xhr.setRequestHeader(name, value);\n          }\n        });\n      } else {\n        request.headers.forEach(function(value, name) {\n          xhr.setRequestHeader(name, value);\n        });\n      }\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!g.fetch) {\n    g.fetch = fetch;\n    g.Headers = Headers;\n    g.Request = Request;\n    g.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\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 * @flow\n * @format\n */\n\nimport type {EventCallback} from '../../src/private/webapis/dom/events/EventTarget';\nimport type {BlobData} from '../Blob/BlobTypes';\nimport type {EventSubscription} from '../vendor/emitter/EventEmitter';\n\nimport Event from '../../src/private/webapis/dom/events/Event';\nimport {\n  getEventHandlerAttribute,\n  setEventHandlerAttribute,\n} from '../../src/private/webapis/dom/events/EventHandlerAttributes';\nimport EventTarget from '../../src/private/webapis/dom/events/EventTarget';\nimport MessageEvent from '../../src/private/webapis/html/events/MessageEvent';\nimport CloseEvent from '../../src/private/webapis/websockets/events/CloseEvent';\nimport Blob from '../Blob/Blob';\nimport BlobManager from '../Blob/BlobManager';\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport binaryToBase64 from '../Utilities/binaryToBase64';\nimport Platform from '../Utilities/Platform';\nimport NativeWebSocketModule from './NativeWebSocketModule';\nimport base64 from 'base64-js';\nimport invariant from 'invariant';\n\ntype ArrayBufferView =\n  | Int8Array\n  | Uint8Array\n  | Uint8ClampedArray\n  | Int16Array\n  | Uint16Array\n  | Int32Array\n  | Uint32Array\n  | Float32Array\n  | Float64Array\n  | DataView;\n\ntype BinaryType = 'blob' | 'arraybuffer';\n\nconst CONNECTING = 0;\nconst OPEN = 1;\nconst CLOSING = 2;\nconst CLOSED = 3;\n\nconst CLOSE_NORMAL = 1000;\n\n// Abnormal closure where no code is provided in a control frame\n// https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5\nconst CLOSE_ABNORMAL = 1006;\n\nlet nextWebSocketId = 0;\n\ntype WebSocketEventDefinitions = {\n  websocketOpen: [{id: number, protocol: string}],\n  websocketClosed: [{id: number, code: number, reason: string}],\n  websocketMessage: [\n    | {type: 'binary', id: number, data: string}\n    | {type: 'text', id: number, data: string}\n    | {type: 'blob', id: number, data: BlobData},\n  ],\n  websocketFailed: [{id: number, message: string}],\n};\n\n/**\n * Browser-compatible WebSockets implementation.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * See https://github.com/websockets/ws\n */\nclass WebSocket extends EventTarget {\n  static CONNECTING: number = CONNECTING;\n  static OPEN: number = OPEN;\n  static CLOSING: number = CLOSING;\n  static CLOSED: number = CLOSED;\n\n  CONNECTING: number = CONNECTING;\n  OPEN: number = OPEN;\n  CLOSING: number = CLOSING;\n  CLOSED: number = CLOSED;\n\n  _socketId: number;\n  _eventEmitter: NativeEventEmitter<WebSocketEventDefinitions>;\n  _subscriptions: Array<EventSubscription>;\n  _binaryType: ?BinaryType;\n\n  bufferedAmount: number;\n  extension: ?string;\n  protocol: ?string;\n  readyState: number = CONNECTING;\n  url: ?string;\n\n  constructor(\n    url: string,\n    protocols: ?string | ?Array<string>,\n    options: ?{headers?: {origin?: string, ...}, ...},\n  ) {\n    super();\n    this.url = url;\n    if (typeof protocols === 'string') {\n      protocols = [protocols];\n    }\n\n    const {headers = {}, ...unrecognized} = options || {};\n\n    // Preserve deprecated backwards compatibility for the 'origin' option\n    // $FlowFixMe[prop-missing]\n    if (unrecognized && typeof unrecognized.origin === 'string') {\n      console.warn(\n        'Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead.',\n      );\n      /* $FlowFixMe[prop-missing] (>=0.54.0 site=react_native_fb,react_native_\n       * oss) This comment suppresses an error found when Flow v0.54 was\n       * deployed. To see the error delete this comment and run Flow. */\n      headers.origin = unrecognized.origin;\n      /* $FlowFixMe[prop-missing] (>=0.54.0 site=react_native_fb,react_native_\n       * oss) This comment suppresses an error found when Flow v0.54 was\n       * deployed. To see the error delete this comment and run Flow. */\n      delete unrecognized.origin;\n    }\n\n    // Warn about and discard anything else\n    if (Object.keys(unrecognized).length > 0) {\n      console.warn(\n        'Unrecognized WebSocket connection option(s) `' +\n          Object.keys(unrecognized).join('`, `') +\n          '`. ' +\n          'Did you mean to put these under `headers`?',\n      );\n    }\n\n    if (!Array.isArray(protocols)) {\n      protocols = null;\n    }\n\n    this._eventEmitter = new NativeEventEmitter(\n      // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior\n      // If you want to use the native module on other platforms, please remove this condition and test its behavior\n      Platform.OS !== 'ios' ? null : NativeWebSocketModule,\n    );\n    this._socketId = nextWebSocketId++;\n    this._registerEvents();\n    NativeWebSocketModule.connect(url, protocols, {headers}, this._socketId);\n  }\n\n  get binaryType(): ?BinaryType {\n    return this._binaryType;\n  }\n\n  set binaryType(binaryType: BinaryType): void {\n    if (binaryType !== 'blob' && binaryType !== 'arraybuffer') {\n      throw new Error(\"binaryType must be either 'blob' or 'arraybuffer'\");\n    }\n    if (this._binaryType === 'blob' || binaryType === 'blob') {\n      invariant(\n        BlobManager.isAvailable,\n        'Native module BlobModule is required for blob support',\n      );\n      if (binaryType === 'blob') {\n        BlobManager.addWebSocketHandler(this._socketId);\n      } else {\n        BlobManager.removeWebSocketHandler(this._socketId);\n      }\n    }\n    this._binaryType = binaryType;\n  }\n\n  close(code?: number, reason?: string): void {\n    if (this.readyState === this.CLOSING || this.readyState === this.CLOSED) {\n      return;\n    }\n\n    this.readyState = this.CLOSING;\n    this._close(code, reason);\n  }\n\n  send(data: string | ArrayBuffer | ArrayBufferView | Blob): void {\n    if (this.readyState === this.CONNECTING) {\n      throw new Error('INVALID_STATE_ERR');\n    }\n\n    if (data instanceof Blob) {\n      invariant(\n        BlobManager.isAvailable,\n        'Native module BlobModule is required for blob support',\n      );\n      BlobManager.sendOverSocket(data, this._socketId);\n      return;\n    }\n\n    if (typeof data === 'string') {\n      NativeWebSocketModule.send(data, this._socketId);\n      return;\n    }\n\n    if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n      NativeWebSocketModule.sendBinary(binaryToBase64(data), this._socketId);\n      return;\n    }\n\n    throw new Error('Unsupported data type');\n  }\n\n  ping(): void {\n    if (this.readyState === this.CONNECTING) {\n      throw new Error('INVALID_STATE_ERR');\n    }\n\n    NativeWebSocketModule.ping(this._socketId);\n  }\n\n  _close(code?: number, reason?: string): void {\n    // See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent\n    const statusCode = typeof code === 'number' ? code : CLOSE_NORMAL;\n    const closeReason = typeof reason === 'string' ? reason : '';\n    NativeWebSocketModule.close(statusCode, closeReason, this._socketId);\n\n    if (BlobManager.isAvailable && this._binaryType === 'blob') {\n      BlobManager.removeWebSocketHandler(this._socketId);\n    }\n  }\n\n  _unregisterEvents(): void {\n    this._subscriptions.forEach(e => e.remove());\n    this._subscriptions = [];\n  }\n\n  _registerEvents(): void {\n    this._subscriptions = [\n      this._eventEmitter.addListener('websocketMessage', ev => {\n        if (ev.id !== this._socketId) {\n          return;\n        }\n        let data: Blob | BlobData | ArrayBuffer | string = ev.data;\n        switch (ev.type) {\n          case 'binary':\n            data = base64.toByteArray(ev.data).buffer;\n            break;\n          case 'blob':\n            data = BlobManager.createFromOptions(ev.data);\n            break;\n        }\n        this.dispatchEvent(new MessageEvent('message', {data}));\n      }),\n      this._eventEmitter.addListener('websocketOpen', ev => {\n        if (ev.id !== this._socketId) {\n          return;\n        }\n        this.readyState = this.OPEN;\n        this.protocol = ev.protocol;\n        this.dispatchEvent(new Event('open'));\n      }),\n      this._eventEmitter.addListener('websocketClosed', ev => {\n        if (ev.id !== this._socketId) {\n          return;\n        }\n        this.readyState = this.CLOSED;\n        this.dispatchEvent(\n          new CloseEvent('close', {\n            code: ev.code,\n            reason: ev.reason,\n            // TODO: missing `wasClean` (exposed on iOS as `clean` but missing on Android)\n          }),\n        );\n        this._unregisterEvents();\n        this.close();\n      }),\n      this._eventEmitter.addListener('websocketFailed', ev => {\n        if (ev.id !== this._socketId) {\n          return;\n        }\n        this.readyState = this.CLOSED;\n        this.dispatchEvent(new Event('error'));\n        this.dispatchEvent(\n          new CloseEvent('close', {\n            code: CLOSE_ABNORMAL,\n            reason: ev.message,\n            // TODO: Expose `wasClean`\n          }),\n        );\n        this._unregisterEvents();\n        this.close();\n      }),\n    ];\n  }\n\n  get onclose(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'close');\n  }\n\n  set onclose(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'close', listener);\n  }\n\n  get onerror(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'error');\n  }\n\n  set onerror(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'error', listener);\n  }\n\n  get onmessage(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'message');\n  }\n\n  set onmessage(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'message', listener);\n  }\n\n  get onopen(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'open');\n  }\n\n  set onopen(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'open', listener);\n  }\n}\n\nexport default WebSocket;\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 * @flow strict\n * @format\n */\n\n/**\n * This module implements the `MessageEvent` interface from the HTML spec.\n * See https://html.spec.whatwg.org/multipage/comms.html#messageevent.\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {EventInit} from '../../dom/events/Event';\n\nimport Event from '../../dom/events/Event';\n\nexport interface MessageEventInit extends EventInit {\n  +data?: mixed;\n  +origin?: string;\n  +lastEventId?: string;\n  // Unsupported\n  // +source?: MessageEventSource,\n  // Unsupported\n  // +ports?: Array<MessagePort>,\n}\n\nexport default class MessageEvent extends Event {\n  _data: mixed;\n  _origin: string;\n  _lastEventId: string;\n\n  constructor(type: string, options?: ?MessageEventInit) {\n    super(type, options);\n\n    this._data = options?.data;\n    this._origin = String(options?.origin ?? '');\n    this._lastEventId = String(options?.lastEventId ?? '');\n  }\n\n  get data(): mixed {\n    return this._data;\n  }\n\n  get origin(): string {\n    return this._origin;\n  }\n\n  get lastEventId(): string {\n    return this._lastEventId;\n  }\n}\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 * @flow strict\n * @format\n */\n\n/**\n * This module implements the `CloseEvent` interface from `WebSocket`.\n * See https://websockets.spec.whatwg.org/#the-closeevent-interface.\n */\n\n// flowlint unsafe-getters-setters:off\n\nimport type {EventInit} from '../../dom/events/Event';\n\nimport Event from '../../dom/events/Event';\n\nexport interface CloseEventInit extends EventInit {\n  +wasClean?: boolean;\n  +code?: number;\n  +reason?: string;\n}\n\nexport default class CloseEvent extends Event {\n  _wasClean: boolean;\n  _code: number;\n  _reason: string;\n\n  constructor(type: string, options?: ?CloseEventInit) {\n    super(type, options);\n\n    this._wasClean = Boolean(options?.wasClean);\n    this._code = Number(options?.code) || 0;\n    this._reason = options?.reason != null ? String(options.reason) : '';\n  }\n\n  get wasClean(): boolean {\n    return this._wasClean;\n  }\n\n  get code(): number {\n    return this._code;\n  }\n\n  get reason(): string {\n    return this._reason;\n  }\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {\n  EventSubscription,\n  IEventEmitter,\n} from '../vendor/emitter/EventEmitter';\n\nimport Platform from '../Utilities/Platform';\nimport RCTDeviceEventEmitter from './RCTDeviceEventEmitter';\nimport invariant from 'invariant';\n\ninterface NativeModule {\n  addListener(eventType: string): void;\n  removeListeners(count: number): void;\n}\n\n/** @deprecated Use `EventSubscription` instead. */\ntype EmitterSubscription = EventSubscription;\n\nexport type {EventSubscription, EmitterSubscription};\n/** @deprecated Use `EventSubscription` instead. */\nexport type NativeEventSubscription = EventSubscription;\n\n// $FlowFixMe[unclear-type] unclear type of events\ntype UnsafeNativeEventObject = Object;\n\n/**\n * `NativeEventEmitter` is intended for use by Native Modules to emit events to\n * JavaScript listeners. If a `NativeModule` is supplied to the constructor, it\n * will be notified (via `addListener` and `removeListeners`) when the listener\n * count changes to manage \"native memory\".\n *\n * Currently, all native events are fired via a global `RCTDeviceEventEmitter`.\n * This means event names must be globally unique, and it means that call sites\n * can theoretically listen to `RCTDeviceEventEmitter` (although discouraged).\n */\nexport default class NativeEventEmitter<\n  TEventToArgsMap: $ReadOnly<\n    Record<string, $ReadOnlyArray<UnsafeNativeEventObject>>,\n  > = $ReadOnly<Record<string, $ReadOnlyArray<UnsafeNativeEventObject>>>,\n> implements IEventEmitter<TEventToArgsMap>\n{\n  _nativeModule: ?NativeModule;\n\n  constructor(nativeModule?: ?NativeModule) {\n    if (Platform.OS === 'ios') {\n      invariant(\n        nativeModule != null,\n        '`new NativeEventEmitter()` requires a non-null argument.',\n      );\n    }\n\n    const hasAddListener =\n      // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n      !!nativeModule && typeof nativeModule.addListener === 'function';\n    const hasRemoveListeners =\n      // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n      !!nativeModule && typeof nativeModule.removeListeners === 'function';\n\n    if (nativeModule && hasAddListener && hasRemoveListeners) {\n      this._nativeModule = nativeModule;\n    } else if (nativeModule != null) {\n      if (!hasAddListener) {\n        console.warn(\n          '`new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method.',\n        );\n      }\n      if (!hasRemoveListeners) {\n        console.warn(\n          '`new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method.',\n        );\n      }\n    }\n  }\n\n  addListener<TEvent: $Keys<TEventToArgsMap>>(\n    eventType: TEvent,\n    listener: (...args: TEventToArgsMap[TEvent]) => mixed,\n    context?: mixed,\n  ): EventSubscription {\n    this._nativeModule?.addListener(eventType);\n    let subscription: ?EventSubscription = RCTDeviceEventEmitter.addListener(\n      eventType,\n      listener,\n      context,\n    );\n\n    return {\n      remove: () => {\n        if (subscription != null) {\n          this._nativeModule?.removeListeners(1);\n          // $FlowFixMe[incompatible-use]\n          subscription.remove();\n          subscription = null;\n        }\n      },\n    };\n  }\n\n  emit<TEvent: $Keys<TEventToArgsMap>>(\n    eventType: TEvent,\n    ...args: TEventToArgsMap[TEvent]\n  ): void {\n    // Generally, `RCTDeviceEventEmitter` is directly invoked. But this is\n    // included for completeness.\n    RCTDeviceEventEmitter.emit(eventType, ...args);\n  }\n\n  removeAllListeners<TEvent: $Keys<TEventToArgsMap>>(\n    eventType?: ?TEvent,\n  ): void {\n    invariant(\n      eventType != null,\n      '`NativeEventEmitter.removeAllListener()` requires a non-null argument.',\n    );\n    this._nativeModule?.removeListeners(this.listenerCount(eventType));\n    RCTDeviceEventEmitter.removeAllListeners(eventType);\n  }\n\n  listenerCount<TEvent: $Keys<TEventToArgsMap>>(eventType: TEvent): number {\n    return RCTDeviceEventEmitter.listenerCount(eventType);\n  }\n}\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeWebSocketModule';\nimport NativeWebSocketModule from '../../src/private/specs_DEPRECATED/modules/NativeWebSocketModule';\n\nexport default NativeWebSocketModule;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +connect: (\n    url: string,\n    protocols: ?Array<string>,\n    options: {headers?: Object},\n    socketID: number,\n  ) => void;\n  +send: (message: string, forSocketID: number) => void;\n  +sendBinary: (base64String: string, forSocketID: number) => void;\n  +ping: (socketID: number) => void;\n  +close: (code: number, reason: string, socketID: number) => void;\n\n  // RCTEventEmitter\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'WebSocketModule',\n): Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {BlobOptions} from './BlobTypes';\n\nimport Blob from './Blob';\n\nconst invariant = require('invariant');\n\n/**\n * The File interface provides information about files.\n */\nclass File extends Blob {\n  /**\n   * Constructor for JS consumers.\n   */\n  constructor(\n    parts: Array<Blob | string>,\n    name: string,\n    options?: BlobOptions,\n  ) {\n    invariant(\n      parts != null && name != null,\n      'Failed to construct `File`: Must pass both `parts` and `name` arguments.',\n    );\n\n    super(parts, options);\n    this.data.name = name;\n  }\n\n  /**\n   * Name of the file.\n   */\n  get name(): string {\n    invariant(this.data.name != null, 'Files must have a name set.');\n    return this.data.name;\n  }\n\n  /*\n   * Last modified time of the file.\n   */\n  get lastModified(): number {\n    return this.data.lastModified || 0;\n  }\n}\n\nexport default File;\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 * @flow\n * @format\n */\n\nimport type {EventCallback} from '../../src/private/webapis/dom/events/EventTarget';\nimport type Blob from './Blob';\n\nimport Event from '../../src/private/webapis/dom/events/Event';\nimport {\n  getEventHandlerAttribute,\n  setEventHandlerAttribute,\n} from '../../src/private/webapis/dom/events/EventHandlerAttributes';\nimport EventTarget from '../../src/private/webapis/dom/events/EventTarget';\nimport NativeFileReaderModule from './NativeFileReaderModule';\nimport {toByteArray} from 'base64-js';\n\ntype ReadyState =\n  | 0 // EMPTY\n  | 1 // LOADING\n  | 2; // DONE\n\ntype ReaderResult = string | ArrayBuffer;\n\nconst EMPTY = 0;\nconst LOADING = 1;\nconst DONE = 2;\n\nclass FileReader extends EventTarget {\n  static EMPTY: number = EMPTY;\n  static LOADING: number = LOADING;\n  static DONE: number = DONE;\n\n  EMPTY: number = EMPTY;\n  LOADING: number = LOADING;\n  DONE: number = DONE;\n\n  _readyState: ReadyState;\n  _error: ?Error;\n  _result: ?ReaderResult;\n  _aborted: boolean = false;\n\n  constructor() {\n    super();\n    this._reset();\n  }\n\n  _reset(): void {\n    this._readyState = EMPTY;\n    this._error = null;\n    this._result = null;\n  }\n\n  _setReadyState(newState: ReadyState) {\n    this._readyState = newState;\n    this.dispatchEvent(new Event('readystatechange'));\n    if (newState === DONE) {\n      if (this._aborted) {\n        this.dispatchEvent(new Event('abort'));\n      } else if (this._error) {\n        this.dispatchEvent(new Event('error'));\n      } else {\n        this.dispatchEvent(new Event('load'));\n      }\n      this.dispatchEvent(new Event('loadend'));\n    }\n  }\n\n  readAsArrayBuffer(blob: ?Blob): void {\n    this._aborted = false;\n\n    if (blob == null) {\n      throw new TypeError(\n        \"Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'\",\n      );\n    }\n\n    NativeFileReaderModule.readAsDataURL(blob.data).then(\n      (text: string) => {\n        if (this._aborted) {\n          return;\n        }\n\n        const base64 = text.split(',')[1];\n        const typedArray = toByteArray(base64);\n\n        this._result = typedArray.buffer;\n        this._setReadyState(DONE);\n      },\n      error => {\n        if (this._aborted) {\n          return;\n        }\n        this._error = error;\n        this._setReadyState(DONE);\n      },\n    );\n  }\n\n  readAsDataURL(blob: ?Blob): void {\n    this._aborted = false;\n\n    if (blob == null) {\n      throw new TypeError(\n        \"Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'\",\n      );\n    }\n\n    NativeFileReaderModule.readAsDataURL(blob.data).then(\n      (text: string) => {\n        if (this._aborted) {\n          return;\n        }\n        this._result = text;\n        this._setReadyState(DONE);\n      },\n      error => {\n        if (this._aborted) {\n          return;\n        }\n        this._error = error;\n        this._setReadyState(DONE);\n      },\n    );\n  }\n\n  readAsText(blob: ?Blob, encoding: string = 'UTF-8'): void {\n    this._aborted = false;\n\n    if (blob == null) {\n      throw new TypeError(\n        \"Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'\",\n      );\n    }\n\n    NativeFileReaderModule.readAsText(blob.data, encoding).then(\n      (text: string) => {\n        if (this._aborted) {\n          return;\n        }\n        this._result = text;\n        this._setReadyState(DONE);\n      },\n      error => {\n        if (this._aborted) {\n          return;\n        }\n        this._error = error;\n        this._setReadyState(DONE);\n      },\n    );\n  }\n\n  abort() {\n    this._aborted = true;\n    // only call onreadystatechange if there is something to abort, as per spec\n    if (this._readyState !== EMPTY && this._readyState !== DONE) {\n      this._reset();\n      this._setReadyState(DONE);\n    }\n    // Reset again after, in case modified in handler\n    this._reset();\n  }\n\n  get readyState(): ReadyState {\n    return this._readyState;\n  }\n\n  get error(): ?Error {\n    return this._error;\n  }\n\n  get result(): ?ReaderResult {\n    return this._result;\n  }\n\n  get onabort(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'abort');\n  }\n\n  set onabort(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'abort', listener);\n  }\n\n  get onerror(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'error');\n  }\n\n  set onerror(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'error', listener);\n  }\n\n  get onload(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'load');\n  }\n\n  set onload(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'load', listener);\n  }\n\n  get onloadstart(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'loadstart');\n  }\n\n  set onloadstart(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'loadstart', listener);\n  }\n\n  get onloadend(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'loadend');\n  }\n\n  set onloadend(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'loadend', listener);\n  }\n\n  get onprogress(): EventCallback | null {\n    return getEventHandlerAttribute(this, 'progress');\n  }\n\n  set onprogress(listener: ?EventCallback) {\n    setEventHandlerAttribute(this, 'progress', listener);\n  }\n}\n\nexport default FileReader;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeFileReaderModule';\nimport NativeFileReaderModule from '../../src/private/specs_DEPRECATED/modules/NativeFileReaderModule';\n\nexport default NativeFileReaderModule;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +readAsDataURL: (data: Object) => Promise<string>;\n  +readAsText: (data: Object, encoding: string) => Promise<string>;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'FileReaderModule',\n): Spec);\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 * @flow\n * @format\n */\n\nimport type Blob from './Blob';\n\nimport NativeBlobModule from './NativeBlobModule';\n\nlet BLOB_URL_PREFIX = null;\n\nif (\n  NativeBlobModule &&\n  typeof NativeBlobModule.getConstants().BLOB_URI_SCHEME === 'string'\n) {\n  const constants = NativeBlobModule.getConstants();\n  // $FlowFixMe[incompatible-type] asserted above\n  // $FlowFixMe[unsafe-addition]\n  BLOB_URL_PREFIX = constants.BLOB_URI_SCHEME + ':';\n  if (typeof constants.BLOB_URI_HOST === 'string') {\n    BLOB_URL_PREFIX += `//${constants.BLOB_URI_HOST}/`;\n  }\n}\n\n/*\n * To allow Blobs be accessed via `content://` URIs,\n * you need to register `BlobProvider` as a ContentProvider in your app's `AndroidManifest.xml`:\n *\n * ```xml\n * <manifest>\n *   <application>\n *     <provider\n *       android:name=\"com.facebook.react.modules.blob.BlobProvider\"\n *       android:authorities=\"@string/blob_provider_authority\"\n *       android:exported=\"false\"\n *     />\n *   </application>\n * </manifest>\n * ```\n * And then define the `blob_provider_authority` string in `res/values/strings.xml`.\n * Use a dotted name that's entirely unique to your app:\n *\n * ```xml\n * <resources>\n *   <string name=\"blob_provider_authority\">your.app.package.blobs</string>\n * </resources>\n * ```\n */\n\nexport {URLSearchParams} from './URLSearchParams';\n\nfunction validateBaseUrl(url: string) {\n  // from this MIT-licensed gist: https://gist.github.com/dperini/729294\n  return /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)*(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/.test(\n    url,\n  );\n}\n\nexport class URL {\n  _url: string;\n  _searchParamsInstance: ?URLSearchParams = null;\n\n  static createObjectURL(blob: Blob): string {\n    if (BLOB_URL_PREFIX === null) {\n      throw new Error('Cannot create URL for blob!');\n    }\n    return `${BLOB_URL_PREFIX}${blob.data.blobId}?offset=${blob.data.offset}&size=${blob.size}`;\n  }\n\n  static revokeObjectURL(url: string) {\n    // Do nothing.\n  }\n\n  // $FlowFixMe[missing-local-annot]\n  constructor(url: string, base?: string | URL) {\n    let baseUrl = null;\n    if (!base || validateBaseUrl(url)) {\n      this._url = url;\n      if (this._url.includes('#')) {\n        const split = this._url.split('#');\n        const beforeHash = split[0];\n        const website = beforeHash.split('://')[1];\n        if (!website.includes('/')) {\n          this._url = split.join('/#');\n        }\n      }\n\n      if (\n        !this._url.endsWith('/') &&\n        !(this._url.includes('?') || this._url.includes('#'))\n      ) {\n        this._url += '/';\n      }\n    } else {\n      if (typeof base === 'string') {\n        baseUrl = base;\n        if (!validateBaseUrl(baseUrl)) {\n          throw new TypeError(`Invalid base URL: ${baseUrl}`);\n        }\n      } else {\n        baseUrl = base.toString();\n      }\n      if (baseUrl.endsWith('/')) {\n        baseUrl = baseUrl.slice(0, baseUrl.length - 1);\n      }\n      if (!url.startsWith('/')) {\n        url = `/${url}`;\n      }\n      if (baseUrl.endsWith(url)) {\n        url = '';\n      }\n      this._url = `${baseUrl}${url}`;\n    }\n  }\n\n  get hash(): string {\n    const hashMatch = this._url.match(/#([^/]*)/);\n    return hashMatch ? `#${hashMatch[1]}` : '';\n  }\n\n  get host(): string {\n    const hostMatch = this._url.match(/^https?:\\/\\/(?:[^@]+@)?([^:/?#]+)/);\n    const portMatch = this._url.match(/:(\\d+)(?=[/?#]|$)/);\n    return hostMatch\n      ? hostMatch[1] + (portMatch ? `:${portMatch[1]}` : '')\n      : '';\n  }\n\n  get hostname(): string {\n    const hostnameMatch = this._url.match(/^https?:\\/\\/(?:[^@]+@)?([^:/?#]+)/);\n    return hostnameMatch ? hostnameMatch[1] : '';\n  }\n\n  get href(): string {\n    return this.toString();\n  }\n\n  get origin(): string {\n    const matches = this._url.match(/^(https?:\\/\\/[^/]+)/);\n    return matches ? matches[1] : '';\n  }\n\n  get password(): string {\n    const passwordMatch = this._url.match(/https?:\\/\\/.*:(.*)@/);\n    return passwordMatch ? passwordMatch[1] : '';\n  }\n\n  get pathname(): string {\n    const pathMatch = this._url.match(/https?:\\/\\/[^/]+(\\/[^?#]*)?/);\n    return pathMatch ? pathMatch[1] || '/' : '/';\n  }\n\n  get port(): string {\n    const portMatch = this._url.match(/:(\\d+)(?=[/?#]|$)/);\n    return portMatch ? portMatch[1] : '';\n  }\n\n  get protocol(): string {\n    const protocolMatch = this._url.match(/^([a-zA-Z][a-zA-Z\\d+\\-.]*):/);\n    return protocolMatch ? protocolMatch[1] + ':' : '';\n  }\n\n  get search(): string {\n    const searchMatch = this._url.match(/\\?([^#]*)/);\n    return searchMatch ? `?${searchMatch[1]}` : '';\n  }\n\n  get searchParams(): URLSearchParams {\n    if (this._searchParamsInstance == null) {\n      this._searchParamsInstance = new URLSearchParams(this.search);\n    }\n    return this._searchParamsInstance;\n  }\n\n  toJSON(): string {\n    return this.toString();\n  }\n\n  toString(): string {\n    if (this._searchParamsInstance === null) {\n      return this._url;\n    }\n    // $FlowFixMe[incompatible-use]\n    const instanceString = this._searchParamsInstance.toString();\n    const separator = this._url.indexOf('?') > -1 ? '&' : '?';\n    return this._url + separator + instanceString;\n  }\n\n  get username(): string {\n    const usernameMatch = this._url.match(/^https?:\\/\\/([^:@]+)(?::[^@]*)?@/);\n    return usernameMatch ? usernameMatch[1] : '';\n  }\n}\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 * @flow\n * @format\n */\n\n// Small subset from whatwg-url: https://github.com/jsdom/whatwg-url/tree/master/src\n// The reference code bloat comes from Unicode issues with URLs, so those won't work here.\nexport class URLSearchParams {\n  _searchParams: Map<string, string[]> = new Map();\n\n  get size(): number {\n    return this._searchParams.size;\n  }\n\n  constructor(params?: Record<string, string> | string | [string, string][]) {\n    if (params === null) {\n      return;\n    }\n\n    if (typeof params === 'string') {\n      // URLSearchParams(\"key1=value1&key2=value2\");\n      params\n        .replace(/^\\?/, '')\n        .split('&')\n        .forEach(pair => {\n          if (!pair) {\n            return;\n          }\n          const [key, value] = pair\n            .split('=')\n            .map(part => decodeURIComponent(part.replace(/\\+/g, ' ')));\n          this.append(key, value);\n        });\n    } else if (Array.isArray(params)) {\n      //URLSearchParams([[\"key1\", \"value1\"], [\"key2\", \"value2\"]]);\n      params.forEach(([key, value]) => this.append(key, value));\n    } else if (typeof params === 'object') {\n      //URLSearchParams({ key1: \"value1\", key2: \"value2\" });\n      Object.entries(params).forEach(([key, value]) => this.append(key, value));\n    }\n  }\n\n  append(key: string, value: string): void {\n    if (!this._searchParams.has(key)) {\n      this._searchParams.set(key, [value]); // Initialize with an array if key is missing\n    } else {\n      this._searchParams.get(key)?.push(value); // Else push the value to the array\n    }\n  }\n\n  delete(name: string): void {\n    this._searchParams.delete(name);\n  }\n\n  get(name: string): string | null {\n    const values = this._searchParams.get(name);\n    return values ? values[0] : null;\n  }\n\n  getAll(name: string): string[] {\n    return this._searchParams.get(name) ?? [];\n  }\n\n  has(name: string): boolean {\n    return this._searchParams.has(name);\n  }\n\n  set(name: string, value: string): void {\n    this._searchParams.set(name, [value]);\n  }\n\n  keys(): Iterator<string> {\n    return this._searchParams.keys();\n  }\n\n  values(): Iterator<string> {\n    function* generateValues(params: Map<string, string[]>): Iterator<string> {\n      for (const valueArray of params.values()) {\n        for (const value of valueArray) {\n          yield value;\n        }\n      }\n    }\n    return generateValues(this._searchParams);\n  }\n\n  entries(): Iterator<[string, string]> {\n    function* generateEntries(\n      params: Map<string, string[]>,\n    ): Iterator<[string, string]> {\n      for (const [key, values] of params) {\n        for (const value of values) {\n          yield [key, value];\n        }\n      }\n    }\n\n    return generateEntries(this._searchParams);\n  }\n\n  forEach(\n    callback: (value: string, key: string, searchParams: this) => void,\n  ): void {\n    for (const [key, values] of this._searchParams) {\n      for (const value of values) {\n        callback(value, key, this);\n      }\n    }\n  }\n\n  sort(): void {\n    this._searchParams = new Map(\n      [...this._searchParams.entries()].sort(([a], [b]) => a.localeCompare(b)),\n    );\n  }\n\n  // $FlowFixMe[unsupported-syntax]\n  [Symbol.iterator](): Iterator<[string, string]> {\n    const entries: [string, string][] = [];\n\n    for (const [key, values] of this._searchParams) {\n      for (const value of values) {\n        entries.push([key, value]);\n      }\n    }\n\n    return entries[Symbol.iterator]();\n  }\n\n  toString(): string {\n    return Array.from(this._searchParams.entries())\n      .map(([key, values]) =>\n        values\n          .map(\n            value =>\n              `${encodeURIComponent(key).replace(/%20/g, '+')}=${encodeURIComponent(\n                value,\n              ).replace(/%20/g, '+')}`, // Convert only spaces to '+'\n          )\n          .join('&'),\n      )\n      .join('&');\n  }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\nimport { EventTarget, defineEventAttribute } from 'event-target-shim';\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nclass AbortSignal extends EventTarget {\n    /**\n     * AbortSignal cannot be constructed directly.\n     */\n    constructor() {\n        super();\n        throw new TypeError(\"AbortSignal cannot be constructed directly\");\n    }\n    /**\n     * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n     */\n    get aborted() {\n        const aborted = abortedFlags.get(this);\n        if (typeof aborted !== \"boolean\") {\n            throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? \"null\" : typeof this}`);\n        }\n        return aborted;\n    }\n}\ndefineEventAttribute(AbortSignal.prototype, \"abort\");\n/**\n * Create an AbortSignal object.\n */\nfunction createAbortSignal() {\n    const signal = Object.create(AbortSignal.prototype);\n    EventTarget.call(signal);\n    abortedFlags.set(signal, false);\n    return signal;\n}\n/**\n * Abort a given signal.\n */\nfunction abortSignal(signal) {\n    if (abortedFlags.get(signal) !== false) {\n        return;\n    }\n    abortedFlags.set(signal, true);\n    signal.dispatchEvent({ type: \"abort\" });\n}\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap();\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n    aborted: { enumerable: true },\n});\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n    Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n        configurable: true,\n        value: \"AbortSignal\",\n    });\n}\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nclass AbortController {\n    /**\n     * Initialize this controller.\n     */\n    constructor() {\n        signals.set(this, createAbortSignal());\n    }\n    /**\n     * Returns the `AbortSignal` object associated with this object.\n     */\n    get signal() {\n        return getSignal(this);\n    }\n    /**\n     * Abort and signal to any observers that the associated activity is to be aborted.\n     */\n    abort() {\n        abortSignal(getSignal(this));\n    }\n}\n/**\n * Associated signals.\n */\nconst signals = new WeakMap();\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller) {\n    const signal = signals.get(controller);\n    if (signal == null) {\n        throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? \"null\" : typeof controller}`);\n    }\n    return signal;\n}\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n    signal: { enumerable: true },\n    abort: { enumerable: true },\n});\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n    Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n        configurable: true,\n        value: \"AbortController\",\n    });\n}\n\nexport default AbortController;\nexport { AbortController, AbortSignal };\n//# sourceMappingURL=abort-controller.mjs.map\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap<Event, PrivateData>}\n * @private\n */\nconst privateData = new WeakMap();\n\n/**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\nconst wrappers = new WeakMap();\n\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\nfunction pd(event) {\n    const retv = privateData.get(event);\n    console.assert(\n        retv != null,\n        \"'this' is expected an Event object, but got\",\n        event\n    );\n    return retv\n}\n\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\nfunction setCancelFlag(data) {\n    if (data.passiveListener != null) {\n        if (\n            typeof console !== \"undefined\" &&\n            typeof console.error === \"function\"\n        ) {\n            console.error(\n                \"Unable to preventDefault inside passive event listener invocation.\",\n                data.passiveListener\n            );\n        }\n        return\n    }\n    if (!data.event.cancelable) {\n        return\n    }\n\n    data.canceled = true;\n    if (typeof data.event.preventDefault === \"function\") {\n        data.event.preventDefault();\n    }\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\nfunction Event(eventTarget, event) {\n    privateData.set(this, {\n        eventTarget,\n        event,\n        eventPhase: 2,\n        currentTarget: eventTarget,\n        canceled: false,\n        stopped: false,\n        immediateStopped: false,\n        passiveListener: null,\n        timeStamp: event.timeStamp || Date.now(),\n    });\n\n    // https://heycam.github.io/webidl/#Unforgeable\n    Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true });\n\n    // Define accessors\n    const keys = Object.keys(event);\n    for (let i = 0; i < keys.length; ++i) {\n        const key = keys[i];\n        if (!(key in this)) {\n            Object.defineProperty(this, key, defineRedirectDescriptor(key));\n        }\n    }\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEvent.prototype = {\n    /**\n     * The type of this event.\n     * @type {string}\n     */\n    get type() {\n        return pd(this).event.type\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     */\n    get target() {\n        return pd(this).eventTarget\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     */\n    get currentTarget() {\n        return pd(this).currentTarget\n    },\n\n    /**\n     * @returns {EventTarget[]} The composed path of this event.\n     */\n    composedPath() {\n        const currentTarget = pd(this).currentTarget;\n        if (currentTarget == null) {\n            return []\n        }\n        return [currentTarget]\n    },\n\n    /**\n     * Constant of NONE.\n     * @type {number}\n     */\n    get NONE() {\n        return 0\n    },\n\n    /**\n     * Constant of CAPTURING_PHASE.\n     * @type {number}\n     */\n    get CAPTURING_PHASE() {\n        return 1\n    },\n\n    /**\n     * Constant of AT_TARGET.\n     * @type {number}\n     */\n    get AT_TARGET() {\n        return 2\n    },\n\n    /**\n     * Constant of BUBBLING_PHASE.\n     * @type {number}\n     */\n    get BUBBLING_PHASE() {\n        return 3\n    },\n\n    /**\n     * The target of this event.\n     * @type {number}\n     */\n    get eventPhase() {\n        return pd(this).eventPhase\n    },\n\n    /**\n     * Stop event bubbling.\n     * @returns {void}\n     */\n    stopPropagation() {\n        const data = pd(this);\n\n        data.stopped = true;\n        if (typeof data.event.stopPropagation === \"function\") {\n            data.event.stopPropagation();\n        }\n    },\n\n    /**\n     * Stop event bubbling.\n     * @returns {void}\n     */\n    stopImmediatePropagation() {\n        const data = pd(this);\n\n        data.stopped = true;\n        data.immediateStopped = true;\n        if (typeof data.event.stopImmediatePropagation === \"function\") {\n            data.event.stopImmediatePropagation();\n        }\n    },\n\n    /**\n     * The flag to be bubbling.\n     * @type {boolean}\n     */\n    get bubbles() {\n        return Boolean(pd(this).event.bubbles)\n    },\n\n    /**\n     * The flag to be cancelable.\n     * @type {boolean}\n     */\n    get cancelable() {\n        return Boolean(pd(this).event.cancelable)\n    },\n\n    /**\n     * Cancel this event.\n     * @returns {void}\n     */\n    preventDefault() {\n        setCancelFlag(pd(this));\n    },\n\n    /**\n     * The flag to indicate cancellation state.\n     * @type {boolean}\n     */\n    get defaultPrevented() {\n        return pd(this).canceled\n    },\n\n    /**\n     * The flag to be composed.\n     * @type {boolean}\n     */\n    get composed() {\n        return Boolean(pd(this).event.composed)\n    },\n\n    /**\n     * The unix time of this event.\n     * @type {number}\n     */\n    get timeStamp() {\n        return pd(this).timeStamp\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     * @deprecated\n     */\n    get srcElement() {\n        return pd(this).eventTarget\n    },\n\n    /**\n     * The flag to stop event bubbling.\n     * @type {boolean}\n     * @deprecated\n     */\n    get cancelBubble() {\n        return pd(this).stopped\n    },\n    set cancelBubble(value) {\n        if (!value) {\n            return\n        }\n        const data = pd(this);\n\n        data.stopped = true;\n        if (typeof data.event.cancelBubble === \"boolean\") {\n            data.event.cancelBubble = true;\n        }\n    },\n\n    /**\n     * The flag to indicate cancellation state.\n     * @type {boolean}\n     * @deprecated\n     */\n    get returnValue() {\n        return !pd(this).canceled\n    },\n    set returnValue(value) {\n        if (!value) {\n            setCancelFlag(pd(this));\n        }\n    },\n\n    /**\n     * Initialize this event object. But do nothing under event dispatching.\n     * @param {string} type The event type.\n     * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n     * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n     * @deprecated\n     */\n    initEvent() {\n        // Do nothing.\n    },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(Event.prototype, \"constructor\", {\n    value: Event,\n    configurable: true,\n    writable: true,\n});\n\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n    Object.setPrototypeOf(Event.prototype, window.Event.prototype);\n\n    // Make association for wrappers.\n    wrappers.set(window.Event.prototype, Event);\n}\n\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\nfunction defineRedirectDescriptor(key) {\n    return {\n        get() {\n            return pd(this).event[key]\n        },\n        set(value) {\n            pd(this).event[key] = value;\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\nfunction defineCallDescriptor(key) {\n    return {\n        value() {\n            const event = pd(this).event;\n            return event[key].apply(event, arguments)\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\nfunction defineWrapper(BaseEvent, proto) {\n    const keys = Object.keys(proto);\n    if (keys.length === 0) {\n        return BaseEvent\n    }\n\n    /** CustomEvent */\n    function CustomEvent(eventTarget, event) {\n        BaseEvent.call(this, eventTarget, event);\n    }\n\n    CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n        constructor: { value: CustomEvent, configurable: true, writable: true },\n    });\n\n    // Define accessors.\n    for (let i = 0; i < keys.length; ++i) {\n        const key = keys[i];\n        if (!(key in BaseEvent.prototype)) {\n            const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n            const isFunc = typeof descriptor.value === \"function\";\n            Object.defineProperty(\n                CustomEvent.prototype,\n                key,\n                isFunc\n                    ? defineCallDescriptor(key)\n                    : defineRedirectDescriptor(key)\n            );\n        }\n    }\n\n    return CustomEvent\n}\n\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\nfunction getWrapper(proto) {\n    if (proto == null || proto === Object.prototype) {\n        return Event\n    }\n\n    let wrapper = wrappers.get(proto);\n    if (wrapper == null) {\n        wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);\n        wrappers.set(proto, wrapper);\n    }\n    return wrapper\n}\n\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\nfunction wrapEvent(eventTarget, event) {\n    const Wrapper = getWrapper(Object.getPrototypeOf(event));\n    return new Wrapper(eventTarget, event)\n}\n\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\nfunction isStopped(event) {\n    return pd(event).immediateStopped\n}\n\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\nfunction setEventPhase(event, eventPhase) {\n    pd(event).eventPhase = eventPhase;\n}\n\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\nfunction setCurrentTarget(event, currentTarget) {\n    pd(event).currentTarget = currentTarget;\n}\n\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\nfunction setPassiveListener(event, passiveListener) {\n    pd(event).passiveListener = passiveListener;\n}\n\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap<object, Map<string, ListenerNode>>}\n * @private\n */\nconst listenersMap = new WeakMap();\n\n// Listener types\nconst CAPTURE = 1;\nconst BUBBLE = 2;\nconst ATTRIBUTE = 3;\n\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\nfunction isObject(x) {\n    return x !== null && typeof x === \"object\" //eslint-disable-line no-restricted-syntax\n}\n\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map<string, ListenerNode>} The listeners.\n * @private\n */\nfunction getListeners(eventTarget) {\n    const listeners = listenersMap.get(eventTarget);\n    if (listeners == null) {\n        throw new TypeError(\n            \"'this' is expected an EventTarget object, but got another value.\"\n        )\n    }\n    return listeners\n}\n\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\nfunction defineEventAttributeDescriptor(eventName) {\n    return {\n        get() {\n            const listeners = getListeners(this);\n            let node = listeners.get(eventName);\n            while (node != null) {\n                if (node.listenerType === ATTRIBUTE) {\n                    return node.listener\n                }\n                node = node.next;\n            }\n            return null\n        },\n\n        set(listener) {\n            if (typeof listener !== \"function\" && !isObject(listener)) {\n                listener = null; // eslint-disable-line no-param-reassign\n            }\n            const listeners = getListeners(this);\n\n            // Traverse to the tail while removing old value.\n            let prev = null;\n            let node = listeners.get(eventName);\n            while (node != null) {\n                if (node.listenerType === ATTRIBUTE) {\n                    // Remove old value.\n                    if (prev !== null) {\n                        prev.next = node.next;\n                    } else if (node.next !== null) {\n                        listeners.set(eventName, node.next);\n                    } else {\n                        listeners.delete(eventName);\n                    }\n                } else {\n                    prev = node;\n                }\n\n                node = node.next;\n            }\n\n            // Add new value.\n            if (listener !== null) {\n                const newNode = {\n                    listener,\n                    listenerType: ATTRIBUTE,\n                    passive: false,\n                    once: false,\n                    next: null,\n                };\n                if (prev === null) {\n                    listeners.set(eventName, newNode);\n                } else {\n                    prev.next = newNode;\n                }\n            }\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n    Object.defineProperty(\n        eventTargetPrototype,\n        `on${eventName}`,\n        defineEventAttributeDescriptor(eventName)\n    );\n}\n\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\nfunction defineCustomEventTarget(eventNames) {\n    /** CustomEventTarget */\n    function CustomEventTarget() {\n        EventTarget.call(this);\n    }\n\n    CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n        constructor: {\n            value: CustomEventTarget,\n            configurable: true,\n            writable: true,\n        },\n    });\n\n    for (let i = 0; i < eventNames.length; ++i) {\n        defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n    }\n\n    return CustomEventTarget\n}\n\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n *     class A extends EventTarget {}\n *     class B extends EventTarget(\"message\") {}\n *     class C extends EventTarget(\"message\", \"error\") {}\n *     class D extends EventTarget([\"message\", \"error\"]) {}\n */\nfunction EventTarget() {\n    /*eslint-disable consistent-return */\n    if (this instanceof EventTarget) {\n        listenersMap.set(this, new Map());\n        return\n    }\n    if (arguments.length === 1 && Array.isArray(arguments[0])) {\n        return defineCustomEventTarget(arguments[0])\n    }\n    if (arguments.length > 0) {\n        const types = new Array(arguments.length);\n        for (let i = 0; i < arguments.length; ++i) {\n            types[i] = arguments[i];\n        }\n        return defineCustomEventTarget(types)\n    }\n    throw new TypeError(\"Cannot call a class as a function\")\n    /*eslint-enable consistent-return */\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEventTarget.prototype = {\n    /**\n     * Add a given listener to this event target.\n     * @param {string} eventName The event name to add.\n     * @param {Function} listener The listener to add.\n     * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n     * @returns {void}\n     */\n    addEventListener(eventName, listener, options) {\n        if (listener == null) {\n            return\n        }\n        if (typeof listener !== \"function\" && !isObject(listener)) {\n            throw new TypeError(\"'listener' should be a function or an object.\")\n        }\n\n        const listeners = getListeners(this);\n        const optionsIsObj = isObject(options);\n        const capture = optionsIsObj\n            ? Boolean(options.capture)\n            : Boolean(options);\n        const listenerType = capture ? CAPTURE : BUBBLE;\n        const newNode = {\n            listener,\n            listenerType,\n            passive: optionsIsObj && Boolean(options.passive),\n            once: optionsIsObj && Boolean(options.once),\n            next: null,\n        };\n\n        // Set it as the first node if the first node is null.\n        let node = listeners.get(eventName);\n        if (node === undefined) {\n            listeners.set(eventName, newNode);\n            return\n        }\n\n        // Traverse to the tail while checking duplication..\n        let prev = null;\n        while (node != null) {\n            if (\n                node.listener === listener &&\n                node.listenerType === listenerType\n            ) {\n                // Should ignore duplication.\n                return\n            }\n            prev = node;\n            node = node.next;\n        }\n\n        // Add it.\n        prev.next = newNode;\n    },\n\n    /**\n     * Remove a given listener from this event target.\n     * @param {string} eventName The event name to remove.\n     * @param {Function} listener The listener to remove.\n     * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n     * @returns {void}\n     */\n    removeEventListener(eventName, listener, options) {\n        if (listener == null) {\n            return\n        }\n\n        const listeners = getListeners(this);\n        const capture = isObject(options)\n            ? Boolean(options.capture)\n            : Boolean(options);\n        const listenerType = capture ? CAPTURE : BUBBLE;\n\n        let prev = null;\n        let node = listeners.get(eventName);\n        while (node != null) {\n            if (\n                node.listener === listener &&\n                node.listenerType === listenerType\n            ) {\n                if (prev !== null) {\n                    prev.next = node.next;\n                } else if (node.next !== null) {\n                    listeners.set(eventName, node.next);\n                } else {\n                    listeners.delete(eventName);\n                }\n                return\n            }\n\n            prev = node;\n            node = node.next;\n        }\n    },\n\n    /**\n     * Dispatch a given event.\n     * @param {Event|{type:string}} event The event to dispatch.\n     * @returns {boolean} `false` if canceled.\n     */\n    dispatchEvent(event) {\n        if (event == null || typeof event.type !== \"string\") {\n            throw new TypeError('\"event.type\" should be a string.')\n        }\n\n        // If listeners aren't registered, terminate.\n        const listeners = getListeners(this);\n        const eventName = event.type;\n        let node = listeners.get(eventName);\n        if (node == null) {\n            return true\n        }\n\n        // Since we cannot rewrite several properties, so wrap object.\n        const wrappedEvent = wrapEvent(this, event);\n\n        // This doesn't process capturing phase and bubbling phase.\n        // This isn't participating in a tree.\n        let prev = null;\n        while (node != null) {\n            // Remove this listener if it's once\n            if (node.once) {\n                if (prev !== null) {\n                    prev.next = node.next;\n                } else if (node.next !== null) {\n                    listeners.set(eventName, node.next);\n                } else {\n                    listeners.delete(eventName);\n                }\n            } else {\n                prev = node;\n            }\n\n            // Call this listener\n            setPassiveListener(\n                wrappedEvent,\n                node.passive ? node.listener : null\n            );\n            if (typeof node.listener === \"function\") {\n                try {\n                    node.listener.call(this, wrappedEvent);\n                } catch (err) {\n                    if (\n                        typeof console !== \"undefined\" &&\n                        typeof console.error === \"function\"\n                    ) {\n                        console.error(err);\n                    }\n                }\n            } else if (\n                node.listenerType !== ATTRIBUTE &&\n                typeof node.listener.handleEvent === \"function\"\n            ) {\n                node.listener.handleEvent(wrappedEvent);\n            }\n\n            // Break if `event.stopImmediatePropagation` was called.\n            if (isStopped(wrappedEvent)) {\n                break\n            }\n\n            node = node.next;\n        }\n        setPassiveListener(wrappedEvent, null);\n        setEventPhase(wrappedEvent, 0);\n        setCurrentTarget(wrappedEvent, null);\n\n        return !wrappedEvent.defaultPrevented\n    },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(EventTarget.prototype, \"constructor\", {\n    value: EventTarget,\n    configurable: true,\n    writable: true,\n});\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (\n    typeof window !== \"undefined\" &&\n    typeof window.EventTarget !== \"undefined\"\n) {\n    Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);\n}\n\nexport default EventTarget;\nexport { defineEventAttribute, EventTarget };\n//# sourceMappingURL=event-target-shim.mjs.map\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\n/**\n * Set up alert().\n * You can use this module directly, or just require InitializeCore.\n */\nif (!global.alert) {\n  global.alert = function (text: string) {\n    // Require Alert on demand. Requiring it too early can lead to issues\n    // with things like Platform not being fully initialized.\n    require('../Alert/Alert').default.alert('Alert', '' + text);\n  };\n}\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 * @flow\n * @format\n */\n\nimport type {DialogOptions} from '../NativeModules/specs/NativeDialogManagerAndroid';\n\nimport Platform from '../Utilities/Platform';\nimport {alertWithArgs} from './RCTAlertManager';\n\n/**\n * @platform ios\n */\nexport type AlertType =\n  | 'default'\n  | 'plain-text'\n  | 'secure-text'\n  | 'login-password';\n\n/**\n * @platform ios\n */\nexport type AlertButtonStyle = 'default' | 'cancel' | 'destructive';\n\nexport type AlertButton = {\n  text?: string,\n  onPress?: ?((value?: string) => any) | ?Function,\n  isPreferred?: boolean,\n  style?: AlertButtonStyle,\n  ...\n};\n\nexport type AlertButtons = Array<AlertButton>;\n\nexport type AlertOptions = {\n  /** @platform android */\n  cancelable?: ?boolean,\n  userInterfaceStyle?: 'unspecified' | 'light' | 'dark',\n  /** @platform android */\n  onDismiss?: ?() => void,\n  ...\n};\n\n/**\n * Launches an alert dialog with the specified title and message.\n *\n * Optionally provide a list of buttons. Tapping any button will fire the\n * respective onPress callback and dismiss the alert. By default, the only\n * button will be an 'OK' button.\n *\n * This is an API that works both on iOS and Android and can show static\n * alerts. On iOS, you can show an alert that prompts the user to enter\n * some information.\n *\n * See https://reactnative.dev/docs/alert\n */\nclass Alert {\n  static alert(\n    title: ?string,\n    message?: ?string,\n    buttons?: AlertButtons,\n    options?: AlertOptions,\n  ): void {\n    if (Platform.OS === 'ios') {\n      Alert.prompt(\n        title,\n        message,\n        buttons,\n        'default',\n        undefined,\n        undefined,\n        options,\n      );\n    } else if (Platform.OS === 'android') {\n      const NativeDialogManagerAndroid =\n        require('../NativeModules/specs/NativeDialogManagerAndroid').default;\n      if (!NativeDialogManagerAndroid) {\n        return;\n      }\n      const constants = NativeDialogManagerAndroid.getConstants();\n\n      const config: DialogOptions = {\n        title: title || '',\n        message: message || '',\n        cancelable: false,\n      };\n\n      if (options && options.cancelable) {\n        config.cancelable = options.cancelable;\n      }\n      // At most three buttons (neutral, negative, positive). Ignore rest.\n      // The text 'OK' should be probably localized. iOS Alert does that in native.\n      const defaultPositiveText = 'OK';\n      const validButtons: AlertButtons = buttons\n        ? buttons.slice(0, 3)\n        : [{text: defaultPositiveText}];\n      const buttonPositive = validButtons.pop();\n      const buttonNegative = validButtons.pop();\n      const buttonNeutral = validButtons.pop();\n\n      if (buttonNeutral) {\n        config.buttonNeutral = buttonNeutral.text || '';\n      }\n      if (buttonNegative) {\n        config.buttonNegative = buttonNegative.text || '';\n      }\n      if (buttonPositive) {\n        config.buttonPositive = buttonPositive.text || defaultPositiveText;\n      }\n\n      /* $FlowFixMe[missing-local-annot] The type annotation(s) required by\n       * Flow's LTI update could not be added via codemod */\n      const onAction = (action, buttonKey) => {\n        if (action === constants.buttonClicked) {\n          if (buttonKey === constants.buttonNeutral) {\n            // $FlowFixMe[incompatible-type]\n            // $FlowFixMe[incompatible-use]\n            buttonNeutral.onPress && buttonNeutral.onPress();\n          } else if (buttonKey === constants.buttonNegative) {\n            // $FlowFixMe[incompatible-type]\n            // $FlowFixMe[incompatible-use]\n            buttonNegative.onPress && buttonNegative.onPress();\n          } else if (buttonKey === constants.buttonPositive) {\n            // $FlowFixMe[incompatible-type]\n            // $FlowFixMe[incompatible-use]\n            buttonPositive.onPress && buttonPositive.onPress();\n          }\n        } else if (action === constants.dismissed) {\n          options && options.onDismiss && options.onDismiss();\n        }\n      };\n      const onError = (errorMessage: string) => console.warn(errorMessage);\n      NativeDialogManagerAndroid.showAlert(config, onError, onAction);\n    }\n  }\n\n  /**\n   * @platform ios\n   */\n  static prompt(\n    title: ?string,\n    message?: ?string,\n    callbackOrButtons?: ?(((text: string) => void) | AlertButtons),\n    type?: ?AlertType = 'plain-text',\n    defaultValue?: string,\n    keyboardType?: string,\n    options?: AlertOptions,\n  ): void {\n    if (Platform.OS === 'ios') {\n      let callbacks: Array<?any> = [];\n      const buttons = [];\n      let cancelButtonKey;\n      let destructiveButtonKey;\n      let preferredButtonKey;\n      if (typeof callbackOrButtons === 'function') {\n        callbacks = [callbackOrButtons];\n      } else if (Array.isArray(callbackOrButtons)) {\n        callbackOrButtons.forEach((btn, index) => {\n          callbacks[index] = btn.onPress;\n          if (btn.style === 'cancel') {\n            cancelButtonKey = String(index);\n          } else if (btn.style === 'destructive') {\n            destructiveButtonKey = String(index);\n          }\n          if (btn.isPreferred) {\n            preferredButtonKey = String(index);\n          }\n          if (btn.text || index < (callbackOrButtons || []).length - 1) {\n            const btnDef: {[number]: string} = {};\n            btnDef[index] = btn.text || '';\n            buttons.push(btnDef);\n          }\n        });\n      }\n\n      alertWithArgs(\n        {\n          title: title || '',\n          message: message || undefined,\n          buttons,\n          type: type || undefined,\n          defaultValue,\n          cancelButtonKey,\n          destructiveButtonKey,\n          preferredButtonKey,\n          keyboardType,\n          userInterfaceStyle: options?.userInterfaceStyle || undefined,\n        },\n        (id, value) => {\n          const cb = callbacks[id];\n          cb && cb(value);\n        },\n      );\n    }\n  }\n}\n\nexport default Alert;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst {polyfillObjectProperty} = require('../Utilities/PolyfillFunctions');\n\nconst navigator = global.navigator;\nif (navigator === undefined) {\n  // $FlowExpectedError[cannot-write] The global isn't writable anywhere but here, where we define it.\n  global.navigator = {product: 'ReactNative'};\n} else {\n  // see https://github.com/facebook/react-native/issues/10881\n  polyfillObjectProperty(navigator, 'product', () => 'ReactNative');\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport registerModule from './registerCallableModule';\n\nregisterModule('Systrace', () => require('../Performance/Systrace'));\nif (!(global.RN$Bridgeless === true)) {\n  registerModule('JSTimers', () => require('./Timers/JSTimers').default);\n}\nregisterModule('RCTLog', () => require('../Utilities/RCTLog').default);\nregisterModule(\n  'RCTDeviceEventEmitter',\n  () => require('../EventEmitter/RCTDeviceEventEmitter').default,\n);\nregisterModule(\n  'RCTNativeAppEventEmitter',\n  () => require('../EventEmitter/RCTNativeAppEventEmitter').default,\n);\nregisterModule(\n  'GlobalPerformanceLogger',\n  () => require('../Utilities/GlobalPerformanceLogger').default,\n);\n\nif (__DEV__) {\n  registerModule('HMRClient', () => require('../Utilities/HMRClient').default);\n} else {\n  registerModule(\n    'HMRClient',\n    () => require('../Utilities/HMRClientProdShim').default,\n  );\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nconst levelsMap = {\n  log: 'log',\n  info: 'info',\n  warn: 'warn',\n  error: 'error',\n  fatal: 'error',\n};\n\nlet warningHandler: ?(...Array<mixed>) => void = null;\n\nconst RCTLog = {\n  // level one of log, info, warn, error, mustfix\n  logIfNoNativeHook(level: string, ...args: Array<mixed>): void {\n    // We already printed in the native console, so only log here if using a js debugger\n    if (typeof global.nativeLoggingHook === 'undefined') {\n      RCTLog.logToConsole(level, ...args);\n    } else {\n      // Report native warnings to LogBox\n      if (warningHandler && level === 'warn') {\n        warningHandler(...args);\n      }\n    }\n  },\n\n  // Log to console regardless of nativeLoggingHook\n  logToConsole(level: string, ...args: Array<mixed>): void {\n    // $FlowFixMe[invalid-computed-prop]\n    const logFn = levelsMap[level];\n    invariant(\n      logFn,\n      'Level \"' + level + '\" not one of ' + Object.keys(levelsMap).toString(),\n    );\n\n    console[logFn](...args);\n  },\n\n  setWarningHandler(handler: typeof warningHandler): void {\n    warningHandler = handler;\n  },\n};\n\nexport default RCTLog;\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 * @flow strict-local\n * @format\n */\n\nimport RCTDeviceEventEmitter from './RCTDeviceEventEmitter';\n\n/**\n * Deprecated - subclass NativeEventEmitter to create granular event modules instead of\n * adding all event listeners directly to RCTNativeAppEventEmitter.\n */\nconst RCTNativeAppEventEmitter = RCTDeviceEventEmitter;\nexport default RCTNativeAppEventEmitter;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {HMRClientNativeInterface} from './HMRClient';\n\n// This shim ensures DEV binary builds don't crash in JS\n// when they're combined with a PROD JavaScript build.\nconst HMRClientProdShim: HMRClientNativeInterface = {\n  setup() {},\n  enable() {\n    console.error(\n      'Fast Refresh is disabled in JavaScript bundles built in production mode. ' +\n        'Did you forget to run Metro?',\n    );\n  },\n  disable() {},\n  registerBundle() {},\n  log() {},\n};\n\nexport default HMRClientProdShim;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nexport type FetchSegmentFunction = typeof __fetchSegment;\n\n/**\n * Set up SegmentFetcher.\n * You can use this module directly, or just require InitializeCore.\n */\n\nfunction __fetchSegment(\n  segmentId: number,\n  options: $ReadOnly<{\n    otaBuildNumber: ?string,\n    requestedModuleName: string,\n    segmentHash: string,\n  }>,\n  callback: (?Error) => void,\n) {\n  const SegmentFetcher =\n    require('./SegmentFetcher/NativeSegmentFetcher').default;\n  SegmentFetcher.fetchSegment(\n    segmentId,\n    options,\n    (\n      errorObject: ?{\n        message: string,\n        code: string,\n        ...\n      },\n    ) => {\n      if (errorObject) {\n        const error = new Error(errorObject.message);\n        (error: any).code = errorObject.code; // flowlint-line unclear-type: off\n        callback(error);\n        return;\n      }\n\n      callback(null);\n    },\n  );\n}\n\nglobal.__fetchSegment = __fetchSegment;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeSegmentFetcher';\nimport NativeSegmentFetcher from '../../../src/private/specs_DEPRECATED/modules/NativeSegmentFetcher';\n\nexport default NativeSegmentFetcher;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +fetchSegment: (\n    segmentId: number,\n    options: Object, // flowlint-line unclear-type: off\n    callback: (error: ?Object) => void, // flowlint-line unclear-type: off\n  ) => void;\n  +getSegment?: (\n    segmentId: number,\n    options: Object, // flowlint-line unclear-type: off\n    callback: (error: ?Object, path: ?string) => void, // flowlint-line unclear-type: off\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('SegmentFetcher'): Spec);\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 * @flow\n * @format\n */\n\nimport registerCallableModule from '../Core/registerCallableModule';\n/**\n * `AppRegistry` is the JavaScript entry point to running all React Native apps.\n *\n * See https://reactnative.dev/docs/appregistry\n */\nimport * as AppRegistry from './AppRegistryImpl';\n\n// Register LogBox as a default surface\nAppRegistry.registerComponent('LogBox', () => {\n  if (__DEV__ && typeof jest === 'undefined') {\n    return require('../LogBox/LogBoxInspectorContainer').default;\n  } else {\n    return function NoOp() {\n      return null;\n    };\n  }\n});\n\nglobal.RN$AppRegistry = AppRegistry;\n\n// Backwards compat with SurfaceRegistry, remove me later\nglobal.RN$SurfaceRegistry = {\n  renderSurface: AppRegistry.runApplication,\n  setSurfaceProps: AppRegistry.setSurfaceProps,\n};\n\nregisterCallableModule('AppRegistry', AppRegistry);\n\nexport {AppRegistry};\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 * @flow\n * @format\n */\n\nimport type {RootTag} from '../Types/RootTagTypes';\nimport type {\n  AppConfig,\n  AppParameters,\n  ComponentProvider,\n  ComponentProviderInstrumentationHook,\n  Registry,\n  RootViewStyleProvider,\n  Runnable,\n  Runnables,\n  TaskProvider,\n  WrapperComponentProvider,\n} from './AppRegistry.flow';\n\nimport createPerformanceLogger from '../Utilities/createPerformanceLogger';\nimport SceneTracker from '../Utilities/SceneTracker';\nimport {coerceDisplayMode} from './DisplayMode';\nimport HeadlessJsTaskError from './HeadlessJsTaskError';\nimport NativeHeadlessJsTaskSupport from './NativeHeadlessJsTaskSupport';\nimport renderApplication from './renderApplication';\nimport {unmountComponentAtNodeAndRemoveContainer} from './RendererProxy';\nimport invariant from 'invariant';\n\ntype TaskCanceller = () => void;\ntype TaskCancelProvider = () => TaskCanceller;\n\nconst runnables: Runnables = {};\nconst sections: Runnables = {};\nconst taskProviders: Map<string, TaskProvider> = new Map();\nconst taskCancelProviders: Map<string, TaskCancelProvider> = new Map();\nlet componentProviderInstrumentationHook: ComponentProviderInstrumentationHook =\n  (component: ComponentProvider) => component();\n\nlet wrapperComponentProvider: ?WrapperComponentProvider;\nlet rootViewStyleProvider: ?RootViewStyleProvider;\n\nexport function setWrapperComponentProvider(\n  provider: WrapperComponentProvider,\n) {\n  wrapperComponentProvider = provider;\n}\n\nexport function setRootViewStyleProvider(provider: RootViewStyleProvider) {\n  rootViewStyleProvider = provider;\n}\n\nexport function registerConfig(config: Array<AppConfig>): void {\n  config.forEach(appConfig => {\n    if (appConfig.run) {\n      registerRunnable(appConfig.appKey, appConfig.run);\n    } else {\n      invariant(\n        appConfig.component != null,\n        'AppRegistry.registerConfig(...): Every config is expected to set ' +\n          'either `run` or `component`, but `%s` has neither.',\n        appConfig.appKey,\n      );\n      registerComponent(\n        appConfig.appKey,\n        appConfig.component,\n        appConfig.section,\n      );\n    }\n  });\n}\n\n/**\n * Registers an app's root component.\n *\n * See https://reactnative.dev/docs/appregistry#registercomponent\n */\nexport function registerComponent(\n  appKey: string,\n  componentProvider: ComponentProvider,\n  section?: boolean,\n): string {\n  const scopedPerformanceLogger = createPerformanceLogger();\n  runnables[appKey] = (appParameters, displayMode) => {\n    renderApplication(\n      componentProviderInstrumentationHook(\n        componentProvider,\n        scopedPerformanceLogger,\n      ),\n      appParameters.initialProps,\n      appParameters.rootTag,\n      wrapperComponentProvider && wrapperComponentProvider(appParameters),\n      rootViewStyleProvider && rootViewStyleProvider(appParameters),\n      appParameters.fabric,\n      scopedPerformanceLogger,\n      appKey === 'LogBox', // is logbox\n      appKey,\n      displayMode,\n    );\n  };\n  if (section) {\n    sections[appKey] = runnables[appKey];\n  }\n  return appKey;\n}\n\nexport function registerRunnable(appKey: string, run: Runnable): string {\n  runnables[appKey] = run;\n  return appKey;\n}\n\nexport function registerSection(\n  appKey: string,\n  component: ComponentProvider,\n): void {\n  registerComponent(appKey, component, true);\n}\n\nexport function getAppKeys(): $ReadOnlyArray<string> {\n  return Object.keys(runnables);\n}\n\nexport function getSectionKeys(): $ReadOnlyArray<string> {\n  return Object.keys(sections);\n}\n\nexport function getSections(): Runnables {\n  return {\n    ...sections,\n  };\n}\n\nexport function getRunnable(appKey: string): ?Runnable {\n  return runnables[appKey];\n}\n\nexport function getRegistry(): Registry {\n  return {\n    sections: getSectionKeys(),\n    runnables: {...runnables},\n  };\n}\n\nexport function setComponentProviderInstrumentationHook(\n  hook: ComponentProviderInstrumentationHook,\n) {\n  componentProviderInstrumentationHook = hook;\n}\n\n/**\n * Loads the JavaScript bundle and runs the app.\n *\n * See https://reactnative.dev/docs/appregistry#runapplication\n */\nexport function runApplication(\n  appKey: string,\n  appParameters: AppParameters,\n  displayMode?: number,\n): void {\n  if (appKey !== 'LogBox') {\n    const logParams = __DEV__ ? ` with ${JSON.stringify(appParameters)}` : '';\n    const msg = `Running \"${appKey}\"${logParams}`;\n    console.log(msg);\n  }\n  invariant(\n    runnables[appKey],\n    `\"${appKey}\" has not been registered. This can happen if:\\n` +\n      '* Metro (the local dev server) is run from the wrong folder. ' +\n      'Check if Metro is running, stop it and restart it in the current project.\\n' +\n      \"* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.\",\n  );\n\n  SceneTracker.setActiveScene({name: appKey});\n  runnables[appKey](appParameters, coerceDisplayMode(displayMode));\n}\n\n/**\n * Update initial props for a surface that's already rendered\n */\nexport function setSurfaceProps(\n  appKey: string,\n  appParameters: Object,\n  displayMode?: number,\n): void {\n  if (appKey !== 'LogBox') {\n    const msg =\n      'Updating props for Surface \"' +\n      appKey +\n      '\" with ' +\n      JSON.stringify(appParameters);\n    console.log(msg);\n  }\n  invariant(\n    runnables[appKey],\n    `\"${appKey}\" has not been registered. This can happen if:\\n` +\n      '* Metro (the local dev server) is run from the wrong folder. ' +\n      'Check if Metro is running, stop it and restart it in the current project.\\n' +\n      \"* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.\",\n  );\n\n  runnables[appKey](appParameters, coerceDisplayMode(displayMode));\n}\n\n/**\n * Stops an application when a view should be destroyed.\n *\n * See https://reactnative.dev/docs/appregistry#unmountapplicationcomponentatroottag\n */\nexport function unmountApplicationComponentAtRootTag(rootTag: RootTag): void {\n  unmountComponentAtNodeAndRemoveContainer(rootTag);\n}\n\n/**\n * Register a headless task. A headless task is a bit of code that runs without a UI.\n *\n * See https://reactnative.dev/docs/appregistry#registerheadlesstask\n */\nexport function registerHeadlessTask(\n  taskKey: string,\n  taskProvider: TaskProvider,\n): void {\n  // $FlowFixMe[object-this-reference]\n  registerCancellableHeadlessTask(taskKey, taskProvider, () => () => {\n    /* Cancel is no-op */\n  });\n}\n\n/**\n * Register a cancellable headless task. A headless task is a bit of code that runs without a UI.\n *\n * See https://reactnative.dev/docs/appregistry#registercancellableheadlesstask\n */\nexport function registerCancellableHeadlessTask(\n  taskKey: string,\n  taskProvider: TaskProvider,\n  taskCancelProvider: TaskCancelProvider,\n): void {\n  if (taskProviders.has(taskKey)) {\n    console.warn(\n      `registerHeadlessTask or registerCancellableHeadlessTask called multiple times for same key '${taskKey}'`,\n    );\n  }\n  taskProviders.set(taskKey, taskProvider);\n  taskCancelProviders.set(taskKey, taskCancelProvider);\n}\n\n/**\n * Only called from native code. Starts a headless task.\n *\n * See https://reactnative.dev/docs/appregistry#startheadlesstask\n */\nexport function startHeadlessTask(\n  taskId: number,\n  taskKey: string,\n  data: any,\n): void {\n  const taskProvider = taskProviders.get(taskKey);\n  if (!taskProvider) {\n    console.warn(`No task registered for key ${taskKey}`);\n    if (NativeHeadlessJsTaskSupport) {\n      NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);\n    }\n    return;\n  }\n  taskProvider()(data)\n    .then(() => {\n      if (NativeHeadlessJsTaskSupport) {\n        NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);\n      }\n    })\n    .catch(reason => {\n      console.error(reason);\n\n      if (\n        NativeHeadlessJsTaskSupport &&\n        reason instanceof HeadlessJsTaskError\n      ) {\n        // $FlowFixMe[unused-promise]\n        NativeHeadlessJsTaskSupport.notifyTaskRetry(taskId).then(\n          retryPosted => {\n            if (!retryPosted) {\n              NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);\n            }\n          },\n        );\n      }\n    });\n}\n\n/**\n * Only called from native code. Cancels a headless task.\n *\n * See https://reactnative.dev/docs/appregistry#cancelheadlesstask\n */\nexport function cancelHeadlessTask(taskId: number, taskKey: string): void {\n  const taskCancelProvider = taskCancelProviders.get(taskKey);\n  if (!taskCancelProvider) {\n    throw new Error(`No task canceller registered for key '${taskKey}'`);\n  }\n  taskCancelProvider()();\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nexport type Scene = {name: string, [string]: mixed, ...};\n\nlet _listeners: Array<(scene: Scene) => void> = [];\n\nlet _activeScene = {name: 'default'};\n\nconst SceneTracker = {\n  setActiveScene(scene: Scene) {\n    _activeScene = scene;\n    _listeners.forEach(listener => listener(_activeScene));\n  },\n\n  getActiveScene(): Scene {\n    return _activeScene;\n  },\n\n  addActiveSceneChangedListener(callback: (scene: Scene) => void): {\n    remove: () => void,\n    ...\n  } {\n    _listeners.push(callback);\n    return {\n      remove: () => {\n        _listeners = _listeners.filter(listener => callback !== listener);\n      },\n    };\n  },\n};\n\nexport default SceneTracker;\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 * @flow strict-local\n * @format\n */\n\nexport opaque type DisplayModeType = number;\n\n/** DisplayMode should be in sync with the method displayModeToInt from\n * react/renderer/uimanager/primitives.h. */\nconst DisplayMode: {+[string]: DisplayModeType} = Object.freeze({\n  VISIBLE: 1,\n  SUSPENDED: 2,\n  HIDDEN: 3,\n});\n\nexport function coerceDisplayMode(value: ?number): DisplayModeType {\n  switch (value) {\n    case DisplayMode.SUSPENDED:\n      return DisplayMode.SUSPENDED;\n    case DisplayMode.HIDDEN:\n      return DisplayMode.HIDDEN;\n    default:\n      return DisplayMode.VISIBLE;\n  }\n}\n\nexport default DisplayMode;\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 * @flow strict-local\n * @format\n */\n\nexport default class HeadlessJsTaskError extends Error {}\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport';\nimport NativeHeadlessJsTaskSupport from '../../src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport';\n\nexport default NativeHeadlessJsTaskSupport;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +notifyTaskFinished: (taskId: number) => void;\n  +notifyTaskRetry: (taskId: number) => Promise<boolean>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('HeadlessJsTaskSupport'): ?Spec);\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 * @flow\n * @format\n */\n\nimport type {ViewStyleProp} from '../StyleSheet/StyleSheet';\nimport type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';\n\nimport GlobalPerformanceLogger from '../Utilities/GlobalPerformanceLogger';\nimport PerformanceLoggerContext from '../Utilities/PerformanceLoggerContext';\nimport warnOnce from '../Utilities/warnOnce';\nimport AppContainer from './AppContainer';\nimport DisplayMode, {type DisplayModeType} from './DisplayMode';\nimport getCachedComponentWithDebugName from './getCachedComponentWithDebugName';\nimport * as Renderer from './RendererProxy';\nimport invariant from 'invariant';\nimport * as React from 'react';\n\n// require BackHandler so it sets the default handler that exits the app if no listeners respond\nimport '../Utilities/BackHandler';\n\ntype ActivityType = component(\n  ...{\n    mode: 'visible' | 'hidden',\n    children: React.Node,\n  }\n);\n\nexport default function renderApplication<Props: Object>(\n  RootComponent: React.ComponentType<Props>,\n  initialProps: Props,\n  rootTag: any,\n  WrapperComponent?: ?React.ComponentType<any>,\n  rootViewStyle?: ?ViewStyleProp,\n  fabric?: boolean,\n  scopedPerformanceLogger?: IPerformanceLogger,\n  isLogBox?: boolean,\n  debugName?: string,\n  displayMode?: ?DisplayModeType,\n  useOffscreen?: boolean,\n) {\n  invariant(rootTag, 'Expect to have a valid rootTag, instead got ', rootTag);\n\n  const performanceLogger = scopedPerformanceLogger ?? GlobalPerformanceLogger;\n\n  let renderable: React.MixedElement = (\n    <PerformanceLoggerContext.Provider value={performanceLogger}>\n      <AppContainer\n        rootTag={rootTag}\n        fabric={fabric}\n        WrapperComponent={WrapperComponent}\n        rootViewStyle={rootViewStyle}\n        initialProps={initialProps ?? Object.freeze({})}\n        internal_excludeLogBox={isLogBox}>\n        <RootComponent {...initialProps} rootTag={rootTag} />\n      </AppContainer>\n    </PerformanceLoggerContext.Provider>\n  );\n\n  if (__DEV__ && debugName) {\n    const RootComponentWithMeaningfulName = getCachedComponentWithDebugName(\n      `${debugName}(RootComponent)`,\n    );\n    renderable = (\n      <RootComponentWithMeaningfulName>\n        {renderable}\n      </RootComponentWithMeaningfulName>\n    );\n  }\n\n  if (useOffscreen && displayMode != null) {\n    // $FlowFixMe[incompatible-type]\n    // $FlowFixMe[prop-missing]\n    const Activity: ActivityType = React.unstable_Activity;\n\n    renderable = (\n      <Activity\n        mode={displayMode === DisplayMode.VISIBLE ? 'visible' : 'hidden'}>\n        {renderable}\n      </Activity>\n    );\n  }\n\n  // We want to have concurrentRoot always enabled when you're on Fabric.\n  const useConcurrentRoot = Boolean(fabric);\n\n  performanceLogger.startTimespan('renderApplication_React_render');\n  performanceLogger.setExtra(\n    'usedReactConcurrentRoot',\n    useConcurrentRoot ? '1' : '0',\n  );\n  performanceLogger.setExtra('usedReactFabric', fabric ? '1' : '0');\n  performanceLogger.setExtra(\n    'usedReactProfiler',\n    Renderer.isProfilingRenderer(),\n  );\n  Renderer.renderElement({\n    element: renderable,\n    rootTag,\n    useFabric: Boolean(fabric),\n    useConcurrentRoot,\n  });\n\n  const newArchitecture = !!fabric;\n  if (!newArchitecture) {\n    warnOnce(\n      '[OSS][OldArchDeprecatedWarning]',\n      'The app is running using the Legacy Architecture. The Legacy Architecture is deprecated and will be removed in a future version of React Native. Please consider migrating to the New Architecture. For more information, please see https://reactnative.dev/blog/2024/10/23/the-new-architecture-is-here',\n    );\n  }\n  performanceLogger.stopTimespan('renderApplication_React_render');\n}\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 * @flow strict\n * @format\n */\n\nimport type {IPerformanceLogger} from './createPerformanceLogger';\n\nimport GlobalPerformanceLogger from './GlobalPerformanceLogger';\nimport * as React from 'react';\nimport {createContext, useContext} from 'react';\n\n/**\n * This is a React Context that provides a scoped instance of IPerformanceLogger.\n * We wrap every <AppContainer /> with a Provider for this context so the logger\n * should be available in every component.\n * See React docs about using Context: https://react.dev/docs/context.html\n */\nconst PerformanceLoggerContext: React.Context<IPerformanceLogger> =\n  createContext(GlobalPerformanceLogger);\nif (__DEV__) {\n  PerformanceLoggerContext.displayName = 'PerformanceLoggerContext';\n}\n\nexport function usePerformanceLogger(): IPerformanceLogger {\n  return useContext(PerformanceLoggerContext);\n}\n\nexport default PerformanceLoggerContext;\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 * @flow\n * @format\n */\n\nimport type {ViewStyleProp} from '../StyleSheet/StyleSheet';\nimport type {RootTag} from './RootTag';\n\nimport * as React from 'react';\n\nexport type Props = $ReadOnly<{\n  children?: React.Node,\n  fabric?: boolean,\n  rootTag: number | RootTag,\n  initialProps?: {...},\n  WrapperComponent?: ?React.ComponentType<any>,\n  rootViewStyle?: ?ViewStyleProp,\n  internal_excludeLogBox?: boolean,\n  internal_excludeInspector?: boolean,\n}>;\n\nconst AppContainer: component(...Props) = __DEV__\n  ? require('./AppContainer-dev').default\n  : require('./AppContainer-prod').default;\n\nexport default AppContainer;\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 * @flow strict-local\n * @format\n */\n\nimport type {Props} from './AppContainer';\n\nimport View from '../Components/View/View';\nimport StyleSheet from '../StyleSheet/StyleSheet';\nimport {RootTagContext, createRootTag} from './RootTag';\nimport * as React from 'react';\n\nconst AppContainer = ({\n  children,\n  fabric,\n  initialProps,\n  rootTag,\n  WrapperComponent,\n  rootViewStyle,\n}: Props): React.Node => {\n  let innerView = children;\n\n  if (WrapperComponent != null) {\n    innerView = (\n      <WrapperComponent initialProps={initialProps} fabric={fabric === true}>\n        {innerView}\n      </WrapperComponent>\n    );\n  }\n\n  return (\n    <RootTagContext.Provider value={createRootTag(rootTag)}>\n      <View style={rootViewStyle || styles.root} pointerEvents=\"box-none\">\n        {innerView}\n      </View>\n    </RootTagContext.Provider>\n  );\n};\n\nconst styles = StyleSheet.create({\n  root: {flex: 1},\n});\n\nexport default AppContainer;\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 * @flow strict\n * @format\n */\n\nimport * as React from 'react';\nimport {createContext} from 'react';\n\nexport opaque type RootTag = number;\n\nexport const RootTagContext: React.Context<RootTag> = createContext<RootTag>(0);\n\nif (__DEV__) {\n  RootTagContext.displayName = 'RootTagContext';\n}\n\n/**\n * Intended to only be used by `AppContainer`.\n */\nexport function createRootTag(rootTag: number | RootTag): RootTag {\n  return rootTag;\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-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","/**\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 * @flow strict\n * @format\n */\n\nimport * as React from 'react';\n\ntype NoopComponent = component(children: React.Node);\n\nconst cache: Map<\n  string, // displayName\n  NoopComponent, // ComponentWithDisplayName\n> = new Map();\n\nexport default function getCachedComponentWithDisplayName(\n  displayName: string,\n): NoopComponent {\n  let ComponentWithDisplayName = cache.get(displayName);\n\n  if (!ComponentWithDisplayName) {\n    ComponentWithDisplayName = ({children}: {children: React.Node}) => children;\n    // $FlowFixMe[prop-missing]\n    ComponentWithDisplayName.displayName = displayName;\n    cache.set(displayName, ComponentWithDisplayName);\n  }\n\n  return ComponentWithDisplayName;\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.native.production.js');\n} else {\n  module.exports = require('./cjs/scheduler.native.development.js');\n}\n","/**\n * @license React\n * scheduler.native.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}\nvar getCurrentTime;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  var localPerformance = performance;\n  getCurrentTime = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date,\n    initialTime = localDate.now();\n  getCurrentTime = 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}\nfunction unstable_scheduleCallback$1(priorityLevel, callback, options) {\n  var currentTime = getCurrentTime();\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}\nfunction unstable_cancelCallback$1(task) {\n  task.callback = null;\n}\nfunction unstable_getCurrentPriorityLevel$1() {\n  return currentPriorityLevel;\n}\nvar isMessageLoopRunning = !1,\n  taskTimeoutID = -1,\n  startTime = -1;\nfunction shouldYieldToHost() {\n  return needsPaint ? !0 : 5 > getCurrentTime() - startTime ? !1 : !0;\n}\nfunction requestPaint() {\n  needsPaint = !0;\n}\nfunction performWorkUntilDeadline() {\n  needsPaint = !1;\n  if (isMessageLoopRunning) {\n    var currentTime = getCurrentTime();\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 = getCurrentTime();\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(getCurrentTime());\n  }, ms);\n}\nvar unstable_UserBlockingPriority =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_UserBlockingPriority\n      : 2,\n  unstable_NormalPriority =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_NormalPriority\n      : 3,\n  unstable_LowPriority =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_LowPriority\n      : 4,\n  unstable_ImmediatePriority =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_ImmediatePriority\n      : 1,\n  unstable_scheduleCallback =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_scheduleCallback\n      : unstable_scheduleCallback$1,\n  unstable_cancelCallback =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_cancelCallback\n      : unstable_cancelCallback$1,\n  unstable_getCurrentPriorityLevel =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_getCurrentPriorityLevel\n      : unstable_getCurrentPriorityLevel$1,\n  unstable_shouldYield =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_shouldYield\n      : shouldYieldToHost,\n  unstable_requestPaint =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_requestPaint\n      : requestPaint,\n  unstable_now =\n    \"undefined\" !== typeof nativeRuntimeScheduler\n      ? nativeRuntimeScheduler.unstable_now\n      : getCurrentTime;\nfunction throwNotImplemented() {\n  throw Error(\"Not implemented.\");\n}\nexports.unstable_IdlePriority =\n  \"undefined\" !== typeof nativeRuntimeScheduler\n    ? nativeRuntimeScheduler.unstable_IdlePriority\n    : 5;\nexports.unstable_ImmediatePriority = unstable_ImmediatePriority;\nexports.unstable_LowPriority = unstable_LowPriority;\nexports.unstable_NormalPriority = unstable_NormalPriority;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = unstable_UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_forceFrameRate = throwNotImplemented;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_next = throwNotImplemented;\nexports.unstable_now = unstable_now;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_runWithPriority = throwNotImplemented;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_shouldYield = unstable_shouldYield;\nexports.unstable_wrapCallback = throwNotImplemented;\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 * @noformat\n * @nolint\n * @flow\n * @generated SignedSource<<8f46fdc9267fcc4fdc9e76842fe24066>>\n */\n'use strict';\n\nimport type {ReactNativeType} from './ReactNativeTypes';\n\nlet ReactNative: ReactNativeType;\n\nif (__DEV__) {\n  ReactNative = require('../implementations/ReactNativeRenderer-dev');\n} else {\n  ReactNative = require('../implementations/ReactNativeRenderer-prod');\n}\n\nexport default ReactNative;\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 * @noflow\n * @nolint\n * @preventMunge\n * @generated SignedSource<<43be62d6fc9b622e265e2acb066ed13c>>\n *\n * This file was sync'd from the facebook/react repository.\n */\n\n\"use strict\";\nrequire(\"react-native/Libraries/ReactPrivate/ReactNativePrivateInitializeCore\");\nvar ReactNativePrivateInterface = require(\"react-native/Libraries/ReactPrivate/ReactNativePrivateInterface\"),\n  React = require(\"react\"),\n  Scheduler = require(\"scheduler\"),\n  isArrayImpl = Array.isArray,\n  ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  assign = Object.assign,\n  prefix,\n  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$0) {\n                control = x$0;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$1) {\n              control = x$1;\n            }\n            (Fake = fn()) &&\n              \"function\" === typeof Fake.catch &&\n              Fake.catch(function () {});\n          }\n        } catch (sample) {\n          if (sample && control && \"string\" === typeof sample.stack)\n            return [sample.stack, control.stack];\n        }\n        return [null, null];\n      }\n    };\n    RunInRootFrame.DetermineComponentFrameRoot.displayName =\n      \"DetermineComponentFrameRoot\";\n    var namePropDescriptor = Object.getOwnPropertyDescriptor(\n      RunInRootFrame.DetermineComponentFrameRoot,\n      \"name\"\n    );\n    namePropDescriptor &&\n      namePropDescriptor.configurable &&\n      Object.defineProperty(\n        RunInRootFrame.DetermineComponentFrameRoot,\n        \"name\",\n        { value: \"DetermineComponentFrameRoot\" }\n      );\n    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n      sampleStack = _RunInRootFrame$Deter[0],\n      controlStack = _RunInRootFrame$Deter[1];\n    if (sampleStack && controlStack) {\n      var sampleLines = sampleStack.split(\"\\n\"),\n        controlLines = controlStack.split(\"\\n\");\n      for (\n        namePropDescriptor = RunInRootFrame = 0;\n        RunInRootFrame < sampleLines.length &&\n        !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n      )\n        RunInRootFrame++;\n      for (\n        ;\n        namePropDescriptor < controlLines.length &&\n        !controlLines[namePropDescriptor].includes(\n          \"DetermineComponentFrameRoot\"\n        );\n\n      )\n        namePropDescriptor++;\n      if (\n        RunInRootFrame === sampleLines.length ||\n        namePropDescriptor === controlLines.length\n      )\n        for (\n          RunInRootFrame = sampleLines.length - 1,\n            namePropDescriptor = controlLines.length - 1;\n          1 <= RunInRootFrame &&\n          0 <= namePropDescriptor &&\n          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n        )\n          namePropDescriptor--;\n      for (\n        ;\n        1 <= RunInRootFrame && 0 <= namePropDescriptor;\n        RunInRootFrame--, namePropDescriptor--\n      )\n        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n            do\n              if (\n                (RunInRootFrame--,\n                namePropDescriptor--,\n                0 > namePropDescriptor ||\n                  sampleLines[RunInRootFrame] !==\n                    controlLines[namePropDescriptor])\n              ) {\n                var frame =\n                  \"\\n\" +\n                  sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n                fn.displayName &&\n                  frame.includes(\"<anonymous>\") &&\n                  (frame = frame.replace(\"<anonymous>\", fn.displayName));\n                return frame;\n              }\n            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n          }\n          break;\n        }\n    }\n  } finally {\n    (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n  }\n  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n    ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n    : \"\";\n}\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return describeNativeComponentFrame(fiber.type, !1);\n    case 11:\n      return describeNativeComponentFrame(fiber.type.render, !1);\n    case 1:\n      return describeNativeComponentFrame(fiber.type, !0);\n    case 31:\n      return describeBuiltInComponentFrame(\"Activity\");\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\";\n    do\n      (info += describeFiber(workInProgress)),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nvar REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n    case REACT_ACTIVITY_TYPE:\n      return \"Activity\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_PORTAL_TYPE:\n        return \"Portal\";\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Provider\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar hasError = !1,\n  caughtError = null,\n  getFiberCurrentPropsFromNode$1 = null,\n  getInstanceFromNode = null,\n  getNodeFromInstance = null;\nfunction executeDispatch(event, listener, inst) {\n  event.currentTarget = getNodeFromInstance(inst);\n  try {\n    listener(event);\n  } catch (error) {\n    hasError || ((hasError = !0), (caughtError = error));\n  }\n  event.currentTarget = null;\n}\nfunction executeDirectDispatch(event) {\n  var dispatchListener = event._dispatchListeners,\n    dispatchInstance = event._dispatchInstances;\n  if (isArrayImpl(dispatchListener)) throw Error(\"Invalid `event`.\");\n  event.currentTarget = dispatchListener\n    ? getNodeFromInstance(dispatchInstance)\n    : null;\n  dispatchListener = dispatchListener ? dispatchListener(event) : null;\n  event.currentTarget = null;\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n  return dispatchListener;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction SyntheticEvent(\n  dispatchConfig,\n  targetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  this.dispatchConfig = dispatchConfig;\n  this._targetInst = targetInst;\n  this.nativeEvent = nativeEvent;\n  this._dispatchInstances = this._dispatchListeners = null;\n  dispatchConfig = this.constructor.Interface;\n  for (var propName in dispatchConfig)\n    dispatchConfig.hasOwnProperty(propName) &&\n      ((targetInst = dispatchConfig[propName])\n        ? (this[propName] = targetInst(nativeEvent))\n        : \"target\" === propName\n          ? (this.target = nativeEventTarget)\n          : (this[propName] = 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}\nassign(SyntheticEvent.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 && (event.cancelBubble = !0),\n      (this.isPropagationStopped = functionThatReturnsTrue));\n  },\n  persist: function () {\n    this.isPersistent = functionThatReturnsTrue;\n  },\n  isPersistent: functionThatReturnsFalse,\n  destructor: function () {\n    var Interface = this.constructor.Interface,\n      propName;\n    for (propName in Interface) this[propName] = null;\n    this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n    this.isPropagationStopped = this.isDefaultPrevented =\n      functionThatReturnsFalse;\n    this._dispatchInstances = this._dispatchListeners = null;\n  }\n});\nSyntheticEvent.Interface = {\n  type: null,\n  target: null,\n  currentTarget: function () {\n    return null;\n  },\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function (event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\nSyntheticEvent.extend = function (Interface) {\n  function E() {}\n  function Class() {\n    return Super.apply(this, arguments);\n  }\n  var Super = this;\n  E.prototype = Super.prototype;\n  var prototype = new E();\n  assign(prototype, Class.prototype);\n  Class.prototype = prototype;\n  Class.prototype.constructor = Class;\n  Class.Interface = assign({}, Super.Interface, Interface);\n  Class.extend = Super.extend;\n  addEventPoolingTo(Class);\n  return Class;\n};\naddEventPoolingTo(SyntheticEvent);\nfunction createOrGetPooledEvent(\n  dispatchConfig,\n  targetInst,\n  nativeEvent,\n  nativeInst\n) {\n  if (this.eventPool.length) {\n    var instance = this.eventPool.pop();\n    this.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);\n    return instance;\n  }\n  return new this(dispatchConfig, targetInst, nativeEvent, nativeInst);\n}\nfunction releasePooledEvent(event) {\n  if (!(event instanceof this))\n    throw Error(\n      \"Trying to release an event instance into a pool of a different type.\"\n    );\n  event.destructor();\n  10 > this.eventPool.length && this.eventPool.push(event);\n}\nfunction addEventPoolingTo(EventConstructor) {\n  EventConstructor.getPooled = createOrGetPooledEvent;\n  EventConstructor.eventPool = [];\n  EventConstructor.release = releasePooledEvent;\n}\nvar ResponderSyntheticEvent = SyntheticEvent.extend({\n  touchHistory: function () {\n    return null;\n  }\n});\nfunction isStartish(topLevelType) {\n  return \"topTouchStart\" === topLevelType;\n}\nfunction isMoveish(topLevelType) {\n  return \"topTouchMove\" === topLevelType;\n}\nvar startDependencies = [\"topTouchStart\"],\n  moveDependencies = [\"topTouchMove\"],\n  endDependencies = [\"topTouchCancel\", \"topTouchEnd\"],\n  touchBank = [],\n  touchHistory = {\n    touchBank: touchBank,\n    numberActiveTouches: 0,\n    indexOfSingleActiveTouch: -1,\n    mostRecentTimeStamp: 0\n  };\nfunction timestampForTouch(touch) {\n  return touch.timeStamp || touch.timestamp;\n}\nfunction getTouchIdentifier(_ref) {\n  _ref = _ref.identifier;\n  if (null == _ref) throw Error(\"Touch object is missing identifier.\");\n  return _ref;\n}\nfunction recordTouchStart(touch) {\n  var identifier = getTouchIdentifier(touch),\n    touchRecord = touchBank[identifier];\n  touchRecord\n    ? ((touchRecord.touchActive = !0),\n      (touchRecord.startPageX = touch.pageX),\n      (touchRecord.startPageY = touch.pageY),\n      (touchRecord.startTimeStamp = timestampForTouch(touch)),\n      (touchRecord.currentPageX = touch.pageX),\n      (touchRecord.currentPageY = touch.pageY),\n      (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n      (touchRecord.previousPageX = touch.pageX),\n      (touchRecord.previousPageY = touch.pageY),\n      (touchRecord.previousTimeStamp = timestampForTouch(touch)))\n    : ((touchRecord = {\n        touchActive: !0,\n        startPageX: touch.pageX,\n        startPageY: touch.pageY,\n        startTimeStamp: timestampForTouch(touch),\n        currentPageX: touch.pageX,\n        currentPageY: touch.pageY,\n        currentTimeStamp: timestampForTouch(touch),\n        previousPageX: touch.pageX,\n        previousPageY: touch.pageY,\n        previousTimeStamp: timestampForTouch(touch)\n      }),\n      (touchBank[identifier] = touchRecord));\n  touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n}\nfunction recordTouchMove(touch) {\n  var touchRecord = touchBank[getTouchIdentifier(touch)];\n  touchRecord &&\n    ((touchRecord.touchActive = !0),\n    (touchRecord.previousPageX = touchRecord.currentPageX),\n    (touchRecord.previousPageY = touchRecord.currentPageY),\n    (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n    (touchRecord.currentPageX = touch.pageX),\n    (touchRecord.currentPageY = touch.pageY),\n    (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n    (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)));\n}\nfunction recordTouchEnd(touch) {\n  var touchRecord = touchBank[getTouchIdentifier(touch)];\n  touchRecord &&\n    ((touchRecord.touchActive = !1),\n    (touchRecord.previousPageX = touchRecord.currentPageX),\n    (touchRecord.previousPageY = touchRecord.currentPageY),\n    (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n    (touchRecord.currentPageX = touch.pageX),\n    (touchRecord.currentPageY = touch.pageY),\n    (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n    (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)));\n}\nvar instrumentationCallback,\n  ResponderTouchHistoryStore = {\n    instrument: function (callback) {\n      instrumentationCallback = callback;\n    },\n    recordTouchTrack: function (topLevelType, nativeEvent) {\n      null != instrumentationCallback &&\n        instrumentationCallback(topLevelType, nativeEvent);\n      if (isMoveish(topLevelType))\n        nativeEvent.changedTouches.forEach(recordTouchMove);\n      else if (isStartish(topLevelType))\n        nativeEvent.changedTouches.forEach(recordTouchStart),\n          (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n          1 === touchHistory.numberActiveTouches &&\n            (touchHistory.indexOfSingleActiveTouch =\n              nativeEvent.touches[0].identifier);\n      else if (\n        \"topTouchEnd\" === topLevelType ||\n        \"topTouchCancel\" === topLevelType\n      )\n        if (\n          (nativeEvent.changedTouches.forEach(recordTouchEnd),\n          (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n          1 === touchHistory.numberActiveTouches)\n        )\n          for (\n            topLevelType = 0;\n            topLevelType < touchBank.length;\n            topLevelType++\n          )\n            if (\n              ((nativeEvent = touchBank[topLevelType]),\n              null != nativeEvent && nativeEvent.touchActive)\n            ) {\n              touchHistory.indexOfSingleActiveTouch = topLevelType;\n              break;\n            }\n    },\n    touchHistory: touchHistory\n  };\nfunction accumulate(current, next) {\n  if (null == next)\n    throw Error(\"Accumulated items must not be null or undefined.\");\n  return null == current\n    ? next\n    : isArrayImpl(current)\n      ? current.concat(next)\n      : isArrayImpl(next)\n        ? [current].concat(next)\n        : [current, next];\n}\nfunction accumulateInto(current, next) {\n  if (null == next)\n    throw Error(\"Accumulated items must not be null or undefined.\");\n  if (null == current) return next;\n  if (isArrayImpl(current)) {\n    if (isArrayImpl(next)) return current.push.apply(current, next), current;\n    current.push(next);\n    return current;\n  }\n  return isArrayImpl(next) ? [current].concat(next) : [current, next];\n}\nfunction forEachAccumulated(arr, cb, scope) {\n  Array.isArray(arr) ? arr.forEach(cb, scope) : arr && cb.call(scope, arr);\n}\nvar responderInst = null,\n  trackedTouchCount = 0;\nfunction changeResponder(nextResponderInst, blockHostResponder) {\n  var oldResponderInst = responderInst;\n  responderInst = nextResponderInst;\n  if (null !== ResponderEventPlugin.GlobalResponderHandler)\n    ResponderEventPlugin.GlobalResponderHandler.onChange(\n      oldResponderInst,\n      nextResponderInst,\n      blockHostResponder\n    );\n}\nvar eventTypes = {\n  startShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onStartShouldSetResponder\",\n      captured: \"onStartShouldSetResponderCapture\"\n    },\n    dependencies: startDependencies\n  },\n  scrollShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onScrollShouldSetResponder\",\n      captured: \"onScrollShouldSetResponderCapture\"\n    },\n    dependencies: [\"topScroll\"]\n  },\n  selectionChangeShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onSelectionChangeShouldSetResponder\",\n      captured: \"onSelectionChangeShouldSetResponderCapture\"\n    },\n    dependencies: [\"topSelectionChange\"]\n  },\n  moveShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onMoveShouldSetResponder\",\n      captured: \"onMoveShouldSetResponderCapture\"\n    },\n    dependencies: moveDependencies\n  },\n  responderStart: {\n    registrationName: \"onResponderStart\",\n    dependencies: startDependencies\n  },\n  responderMove: {\n    registrationName: \"onResponderMove\",\n    dependencies: moveDependencies\n  },\n  responderEnd: {\n    registrationName: \"onResponderEnd\",\n    dependencies: endDependencies\n  },\n  responderRelease: {\n    registrationName: \"onResponderRelease\",\n    dependencies: endDependencies\n  },\n  responderTerminationRequest: {\n    registrationName: \"onResponderTerminationRequest\",\n    dependencies: []\n  },\n  responderGrant: { registrationName: \"onResponderGrant\", dependencies: [] },\n  responderReject: { registrationName: \"onResponderReject\", dependencies: [] },\n  responderTerminate: {\n    registrationName: \"onResponderTerminate\",\n    dependencies: []\n  }\n};\nfunction getParent$1(inst) {\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction traverseTwoPhase$1(inst, fn, arg) {\n  for (var path = []; inst; ) path.push(inst), (inst = getParent$1(inst));\n  for (inst = path.length; 0 < inst--; ) fn(path[inst], \"captured\", arg);\n  for (inst = 0; inst < path.length; inst++) fn(path[inst], \"bubbled\", arg);\n}\nfunction getListener$1(inst, registrationName) {\n  inst = inst.stateNode;\n  if (null === inst) return null;\n  inst = getFiberCurrentPropsFromNode$1(inst);\n  if (null === inst) return null;\n  if ((inst = inst[registrationName]) && \"function\" !== typeof inst)\n    throw Error(\n      \"Expected `\" +\n        registrationName +\n        \"` listener to be a function, instead got a value of `\" +\n        typeof inst +\n        \"` type.\"\n    );\n  return inst;\n}\nfunction accumulateDirectionalDispatches$1(inst, phase, event) {\n  if (\n    (phase = getListener$1(\n      inst,\n      event.dispatchConfig.phasedRegistrationNames[phase]\n    ))\n  )\n    (event._dispatchListeners = accumulateInto(\n      event._dispatchListeners,\n      phase\n    )),\n      (event._dispatchInstances = accumulateInto(\n        event._dispatchInstances,\n        inst\n      ));\n}\nfunction accumulateDirectDispatchesSingle$1(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    var inst = event._targetInst;\n    if (inst && event && event.dispatchConfig.registrationName) {\n      var listener = getListener$1(inst, event.dispatchConfig.registrationName);\n      listener &&\n        ((event._dispatchListeners = accumulateInto(\n          event._dispatchListeners,\n          listener\n        )),\n        (event._dispatchInstances = accumulateInto(\n          event._dispatchInstances,\n          inst\n        )));\n    }\n  }\n}\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    var targetInst = event._targetInst;\n    targetInst = targetInst ? getParent$1(targetInst) : null;\n    traverseTwoPhase$1(targetInst, accumulateDirectionalDispatches$1, event);\n  }\n}\nfunction accumulateTwoPhaseDispatchesSingle$1(event) {\n  event &&\n    event.dispatchConfig.phasedRegistrationNames &&\n    traverseTwoPhase$1(\n      event._targetInst,\n      accumulateDirectionalDispatches$1,\n      event\n    );\n}\nvar ResponderEventPlugin = {\n    _getResponder: function () {\n      return responderInst;\n    },\n    eventTypes: eventTypes,\n    extractEvents: function (\n      topLevelType,\n      targetInst,\n      nativeEvent,\n      nativeEventTarget\n    ) {\n      if (isStartish(topLevelType)) trackedTouchCount += 1;\n      else if (\n        \"topTouchEnd\" === topLevelType ||\n        \"topTouchCancel\" === topLevelType\n      )\n        if (0 <= trackedTouchCount) --trackedTouchCount;\n        else return null;\n      ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);\n      if (\n        targetInst &&\n        ((\"topScroll\" === topLevelType && !nativeEvent.responderIgnoreScroll) ||\n          (0 < trackedTouchCount && \"topSelectionChange\" === topLevelType) ||\n          isStartish(topLevelType) ||\n          isMoveish(topLevelType))\n      ) {\n        var shouldSetEventType = isStartish(topLevelType)\n          ? eventTypes.startShouldSetResponder\n          : isMoveish(topLevelType)\n            ? eventTypes.moveShouldSetResponder\n            : \"topSelectionChange\" === topLevelType\n              ? eventTypes.selectionChangeShouldSetResponder\n              : eventTypes.scrollShouldSetResponder;\n        if (responderInst)\n          b: {\n            var JSCompiler_temp = responderInst;\n            for (\n              var depthA = 0, tempA = JSCompiler_temp;\n              tempA;\n              tempA = getParent$1(tempA)\n            )\n              depthA++;\n            tempA = 0;\n            for (var tempB = targetInst; tempB; tempB = getParent$1(tempB))\n              tempA++;\n            for (; 0 < depthA - tempA; )\n              (JSCompiler_temp = getParent$1(JSCompiler_temp)), depthA--;\n            for (; 0 < tempA - depthA; )\n              (targetInst = getParent$1(targetInst)), tempA--;\n            for (; depthA--; ) {\n              if (\n                JSCompiler_temp === targetInst ||\n                JSCompiler_temp === targetInst.alternate\n              )\n                break b;\n              JSCompiler_temp = getParent$1(JSCompiler_temp);\n              targetInst = getParent$1(targetInst);\n            }\n            JSCompiler_temp = null;\n          }\n        else JSCompiler_temp = targetInst;\n        targetInst = JSCompiler_temp;\n        JSCompiler_temp = targetInst === responderInst;\n        shouldSetEventType = ResponderSyntheticEvent.getPooled(\n          shouldSetEventType,\n          targetInst,\n          nativeEvent,\n          nativeEventTarget\n        );\n        shouldSetEventType.touchHistory =\n          ResponderTouchHistoryStore.touchHistory;\n        JSCompiler_temp\n          ? forEachAccumulated(\n              shouldSetEventType,\n              accumulateTwoPhaseDispatchesSingleSkipTarget\n            )\n          : forEachAccumulated(\n              shouldSetEventType,\n              accumulateTwoPhaseDispatchesSingle$1\n            );\n        b: {\n          JSCompiler_temp = shouldSetEventType._dispatchListeners;\n          targetInst = shouldSetEventType._dispatchInstances;\n          if (isArrayImpl(JSCompiler_temp))\n            for (\n              depthA = 0;\n              depthA < JSCompiler_temp.length &&\n              !shouldSetEventType.isPropagationStopped();\n              depthA++\n            ) {\n              if (\n                JSCompiler_temp[depthA](shouldSetEventType, targetInst[depthA])\n              ) {\n                JSCompiler_temp = targetInst[depthA];\n                break b;\n              }\n            }\n          else if (\n            JSCompiler_temp &&\n            JSCompiler_temp(shouldSetEventType, targetInst)\n          ) {\n            JSCompiler_temp = targetInst;\n            break b;\n          }\n          JSCompiler_temp = null;\n        }\n        shouldSetEventType._dispatchInstances = null;\n        shouldSetEventType._dispatchListeners = null;\n        shouldSetEventType.isPersistent() ||\n          shouldSetEventType.constructor.release(shouldSetEventType);\n        if (JSCompiler_temp && JSCompiler_temp !== responderInst)\n          if (\n            ((shouldSetEventType = ResponderSyntheticEvent.getPooled(\n              eventTypes.responderGrant,\n              JSCompiler_temp,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            (shouldSetEventType.touchHistory =\n              ResponderTouchHistoryStore.touchHistory),\n            forEachAccumulated(\n              shouldSetEventType,\n              accumulateDirectDispatchesSingle$1\n            ),\n            (targetInst = !0 === executeDirectDispatch(shouldSetEventType)),\n            responderInst)\n          )\n            if (\n              ((depthA = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderTerminationRequest,\n                responderInst,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (depthA.touchHistory = ResponderTouchHistoryStore.touchHistory),\n              forEachAccumulated(depthA, accumulateDirectDispatchesSingle$1),\n              (tempA =\n                !depthA._dispatchListeners || executeDirectDispatch(depthA)),\n              depthA.isPersistent() || depthA.constructor.release(depthA),\n              tempA)\n            ) {\n              depthA = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderTerminate,\n                responderInst,\n                nativeEvent,\n                nativeEventTarget\n              );\n              depthA.touchHistory = ResponderTouchHistoryStore.touchHistory;\n              forEachAccumulated(depthA, accumulateDirectDispatchesSingle$1);\n              var JSCompiler_temp$jscomp$0 = accumulate(\n                JSCompiler_temp$jscomp$0,\n                [shouldSetEventType, depthA]\n              );\n              changeResponder(JSCompiler_temp, targetInst);\n            } else\n              (shouldSetEventType = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderReject,\n                JSCompiler_temp,\n                nativeEvent,\n                nativeEventTarget\n              )),\n                (shouldSetEventType.touchHistory =\n                  ResponderTouchHistoryStore.touchHistory),\n                forEachAccumulated(\n                  shouldSetEventType,\n                  accumulateDirectDispatchesSingle$1\n                ),\n                (JSCompiler_temp$jscomp$0 = accumulate(\n                  JSCompiler_temp$jscomp$0,\n                  shouldSetEventType\n                ));\n          else\n            (JSCompiler_temp$jscomp$0 = accumulate(\n              JSCompiler_temp$jscomp$0,\n              shouldSetEventType\n            )),\n              changeResponder(JSCompiler_temp, targetInst);\n        else JSCompiler_temp$jscomp$0 = null;\n      } else JSCompiler_temp$jscomp$0 = null;\n      shouldSetEventType = responderInst && isStartish(topLevelType);\n      JSCompiler_temp = responderInst && isMoveish(topLevelType);\n      targetInst =\n        responderInst &&\n        (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType);\n      if (\n        (shouldSetEventType = shouldSetEventType\n          ? eventTypes.responderStart\n          : JSCompiler_temp\n            ? eventTypes.responderMove\n            : targetInst\n              ? eventTypes.responderEnd\n              : null)\n      )\n        (shouldSetEventType = ResponderSyntheticEvent.getPooled(\n          shouldSetEventType,\n          responderInst,\n          nativeEvent,\n          nativeEventTarget\n        )),\n          (shouldSetEventType.touchHistory =\n            ResponderTouchHistoryStore.touchHistory),\n          forEachAccumulated(\n            shouldSetEventType,\n            accumulateDirectDispatchesSingle$1\n          ),\n          (JSCompiler_temp$jscomp$0 = accumulate(\n            JSCompiler_temp$jscomp$0,\n            shouldSetEventType\n          ));\n      shouldSetEventType = responderInst && \"topTouchCancel\" === topLevelType;\n      if (\n        (topLevelType =\n          responderInst &&\n          !shouldSetEventType &&\n          (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType))\n      )\n        a: {\n          if ((topLevelType = nativeEvent.touches) && 0 !== topLevelType.length)\n            for (\n              JSCompiler_temp = 0;\n              JSCompiler_temp < topLevelType.length;\n              JSCompiler_temp++\n            )\n              if (\n                ((targetInst = topLevelType[JSCompiler_temp].target),\n                null !== targetInst &&\n                  void 0 !== targetInst &&\n                  0 !== targetInst)\n              ) {\n                depthA = getInstanceFromNode(targetInst);\n                b: {\n                  for (targetInst = responderInst; depthA; ) {\n                    if (\n                      targetInst === depthA ||\n                      targetInst === depthA.alternate\n                    ) {\n                      targetInst = !0;\n                      break b;\n                    }\n                    depthA = getParent$1(depthA);\n                  }\n                  targetInst = !1;\n                }\n                if (targetInst) {\n                  topLevelType = !1;\n                  break a;\n                }\n              }\n          topLevelType = !0;\n        }\n      if (\n        (topLevelType = shouldSetEventType\n          ? eventTypes.responderTerminate\n          : topLevelType\n            ? eventTypes.responderRelease\n            : null)\n      )\n        (nativeEvent = ResponderSyntheticEvent.getPooled(\n          topLevelType,\n          responderInst,\n          nativeEvent,\n          nativeEventTarget\n        )),\n          (nativeEvent.touchHistory = ResponderTouchHistoryStore.touchHistory),\n          forEachAccumulated(nativeEvent, accumulateDirectDispatchesSingle$1),\n          (JSCompiler_temp$jscomp$0 = accumulate(\n            JSCompiler_temp$jscomp$0,\n            nativeEvent\n          )),\n          changeResponder(null);\n      return JSCompiler_temp$jscomp$0;\n    },\n    GlobalResponderHandler: null,\n    injection: {\n      injectGlobalResponderHandler: function (GlobalResponderHandler) {\n        ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;\n      }\n    }\n  },\n  eventPluginOrder = null,\n  namesToPlugins = {};\nfunction recomputePluginOrdering() {\n  if (eventPluginOrder)\n    for (var pluginName in namesToPlugins) {\n      var pluginModule = namesToPlugins[pluginName],\n        pluginIndex = eventPluginOrder.indexOf(pluginName);\n      if (-1 >= pluginIndex)\n        throw Error(\n          \"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `\" +\n            (pluginName + \"`.\")\n        );\n      if (!plugins[pluginIndex]) {\n        if (!pluginModule.extractEvents)\n          throw Error(\n            \"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `\" +\n              (pluginName + \"` does not.\")\n          );\n        plugins[pluginIndex] = pluginModule;\n        pluginIndex = pluginModule.eventTypes;\n        for (var eventName in pluginIndex) {\n          var JSCompiler_inline_result = void 0;\n          var dispatchConfig = pluginIndex[eventName];\n          if (eventNameDispatchConfigs.hasOwnProperty(eventName))\n            throw Error(\n              \"EventPluginRegistry: More than one plugin attempted to publish the same event name, `\" +\n                (eventName + \"`.\")\n            );\n          eventNameDispatchConfigs[eventName] = dispatchConfig;\n          var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n          if (phasedRegistrationNames) {\n            for (JSCompiler_inline_result in phasedRegistrationNames)\n              phasedRegistrationNames.hasOwnProperty(\n                JSCompiler_inline_result\n              ) &&\n                publishRegistrationName(\n                  phasedRegistrationNames[JSCompiler_inline_result],\n                  pluginModule\n                );\n            JSCompiler_inline_result = !0;\n          } else\n            dispatchConfig.registrationName\n              ? (publishRegistrationName(\n                  dispatchConfig.registrationName,\n                  pluginModule\n                ),\n                (JSCompiler_inline_result = !0))\n              : (JSCompiler_inline_result = !1);\n          if (!JSCompiler_inline_result)\n            throw Error(\n              \"EventPluginRegistry: Failed to publish event `\" +\n                eventName +\n                \"` for plugin `\" +\n                pluginName +\n                \"`.\"\n            );\n        }\n      }\n    }\n}\nfunction publishRegistrationName(registrationName, pluginModule) {\n  if (registrationNameModules[registrationName])\n    throw Error(\n      \"EventPluginRegistry: More than one plugin attempted to publish the same registration name, `\" +\n        (registrationName + \"`.\")\n    );\n  registrationNameModules[registrationName] = pluginModule;\n}\nvar plugins = [],\n  eventNameDispatchConfigs = {},\n  registrationNameModules = {};\nfunction getListener(inst, registrationName) {\n  inst = inst.stateNode;\n  if (null === inst) return null;\n  inst = getFiberCurrentPropsFromNode$1(inst);\n  if (null === inst) return null;\n  if ((inst = inst[registrationName]) && \"function\" !== typeof inst)\n    throw Error(\n      \"Expected `\" +\n        registrationName +\n        \"` listener to be a function, instead got a value of `\" +\n        typeof inst +\n        \"` type.\"\n    );\n  return inst;\n}\nvar customBubblingEventTypes =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry\n      .customBubblingEventTypes,\n  customDirectEventTypes =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry\n      .customDirectEventTypes;\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n  if (\n    (phase = getListener(\n      inst,\n      event.dispatchConfig.phasedRegistrationNames[phase]\n    ))\n  )\n    (event._dispatchListeners = accumulateInto(\n      event._dispatchListeners,\n      phase\n    )),\n      (event._dispatchInstances = accumulateInto(\n        event._dispatchInstances,\n        inst\n      ));\n}\nfunction traverseTwoPhase(inst, fn, arg, skipBubbling) {\n  for (var path = []; inst; ) {\n    path.push(inst);\n    do inst = inst.return;\n    while (inst && 5 !== inst.tag);\n    inst = inst ? inst : null;\n  }\n  for (inst = path.length; 0 < inst--; ) fn(path[inst], \"captured\", arg);\n  if (skipBubbling) fn(path[0], \"bubbled\", arg);\n  else\n    for (inst = 0; inst < path.length; inst++) fn(path[inst], \"bubbled\", arg);\n}\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n  event &&\n    event.dispatchConfig.phasedRegistrationNames &&\n    traverseTwoPhase(\n      event._targetInst,\n      accumulateDirectionalDispatches,\n      event,\n      !1\n    );\n}\nfunction accumulateDirectDispatchesSingle(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    var inst = event._targetInst;\n    if (inst && event && event.dispatchConfig.registrationName) {\n      var listener = getListener(inst, event.dispatchConfig.registrationName);\n      listener &&\n        ((event._dispatchListeners = accumulateInto(\n          event._dispatchListeners,\n          listener\n        )),\n        (event._dispatchInstances = accumulateInto(\n          event._dispatchInstances,\n          inst\n        )));\n    }\n  }\n}\nif (eventPluginOrder)\n  throw Error(\n    \"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.\"\n  );\neventPluginOrder = Array.prototype.slice.call([\n  \"ResponderEventPlugin\",\n  \"ReactNativeBridgeEventPlugin\"\n]);\nrecomputePluginOrdering();\nvar injectedNamesToPlugins$jscomp$inline_283 = {\n    ResponderEventPlugin: ResponderEventPlugin,\n    ReactNativeBridgeEventPlugin: {\n      eventTypes: {},\n      extractEvents: function (\n        topLevelType,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      ) {\n        if (null == targetInst) return null;\n        var bubbleDispatchConfig = customBubblingEventTypes[topLevelType],\n          directDispatchConfig = customDirectEventTypes[topLevelType];\n        if (!bubbleDispatchConfig && !directDispatchConfig)\n          throw Error(\n            'Unsupported top level event type \"' + topLevelType + '\" dispatched'\n          );\n        topLevelType = SyntheticEvent.getPooled(\n          bubbleDispatchConfig || directDispatchConfig,\n          targetInst,\n          nativeEvent,\n          nativeEventTarget\n        );\n        if (bubbleDispatchConfig)\n          null != topLevelType &&\n          null != topLevelType.dispatchConfig.phasedRegistrationNames &&\n          topLevelType.dispatchConfig.phasedRegistrationNames.skipBubbling\n            ? topLevelType &&\n              topLevelType.dispatchConfig.phasedRegistrationNames &&\n              traverseTwoPhase(\n                topLevelType._targetInst,\n                accumulateDirectionalDispatches,\n                topLevelType,\n                !0\n              )\n            : forEachAccumulated(\n                topLevelType,\n                accumulateTwoPhaseDispatchesSingle\n              );\n        else if (directDispatchConfig)\n          forEachAccumulated(topLevelType, accumulateDirectDispatchesSingle);\n        else return null;\n        return topLevelType;\n      }\n    }\n  },\n  isOrderingDirty$jscomp$inline_284 = !1,\n  pluginName$jscomp$inline_285;\nfor (pluginName$jscomp$inline_285 in injectedNamesToPlugins$jscomp$inline_283)\n  if (\n    injectedNamesToPlugins$jscomp$inline_283.hasOwnProperty(\n      pluginName$jscomp$inline_285\n    )\n  ) {\n    var pluginModule$jscomp$inline_286 =\n      injectedNamesToPlugins$jscomp$inline_283[pluginName$jscomp$inline_285];\n    if (\n      !namesToPlugins.hasOwnProperty(pluginName$jscomp$inline_285) ||\n      namesToPlugins[pluginName$jscomp$inline_285] !==\n        pluginModule$jscomp$inline_286\n    ) {\n      if (namesToPlugins[pluginName$jscomp$inline_285])\n        throw Error(\n          \"EventPluginRegistry: Cannot inject two different event plugins using the same name, `\" +\n            (pluginName$jscomp$inline_285 + \"`.\")\n        );\n      namesToPlugins[pluginName$jscomp$inline_285] =\n        pluginModule$jscomp$inline_286;\n      isOrderingDirty$jscomp$inline_284 = !0;\n    }\n  }\nisOrderingDirty$jscomp$inline_284 && recomputePluginOrdering();\nvar instanceCache = new Map(),\n  instanceProps = new Map();\nfunction getInstanceFromTag(tag) {\n  return instanceCache.get(tag) || null;\n}\nfunction batchedUpdatesImpl(fn, bookkeeping) {\n  return fn(bookkeeping);\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, bookkeeping) {\n  if (isInsideEventHandler) return fn(bookkeeping);\n  isInsideEventHandler = !0;\n  try {\n    return batchedUpdatesImpl(fn, bookkeeping);\n  } finally {\n    isInsideEventHandler = !1;\n  }\n}\nvar eventQueue = null;\nfunction executeDispatchesAndReleaseTopLevel(e) {\n  if (e) {\n    var dispatchListeners = e._dispatchListeners,\n      dispatchInstances = e._dispatchInstances;\n    if (isArrayImpl(dispatchListeners))\n      for (\n        var i = 0;\n        i < dispatchListeners.length && !e.isPropagationStopped();\n        i++\n      )\n        executeDispatch(e, dispatchListeners[i], dispatchInstances[i]);\n    else\n      dispatchListeners &&\n        executeDispatch(e, dispatchListeners, dispatchInstances);\n    e._dispatchListeners = null;\n    e._dispatchInstances = null;\n    e.isPersistent() || e.constructor.release(e);\n  }\n}\nvar EMPTY_NATIVE_EVENT = {};\nfunction _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam) {\n  var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT,\n    inst = getInstanceFromTag(rootNodeID),\n    target = null;\n  null != inst && (target = inst.stateNode);\n  batchedUpdates$1(function () {\n    var JSCompiler_inline_result = target;\n    for (\n      var events = null, legacyPlugins = plugins, i = 0;\n      i < legacyPlugins.length;\n      i++\n    ) {\n      var possiblePlugin = legacyPlugins[i];\n      possiblePlugin &&\n        (possiblePlugin = possiblePlugin.extractEvents(\n          topLevelType,\n          inst,\n          nativeEvent,\n          JSCompiler_inline_result\n        )) &&\n        (events = accumulateInto(events, possiblePlugin));\n    }\n    JSCompiler_inline_result = events;\n    null !== JSCompiler_inline_result &&\n      (eventQueue = accumulateInto(eventQueue, JSCompiler_inline_result));\n    JSCompiler_inline_result = eventQueue;\n    eventQueue = null;\n    if (JSCompiler_inline_result) {\n      forEachAccumulated(\n        JSCompiler_inline_result,\n        executeDispatchesAndReleaseTopLevel\n      );\n      if (eventQueue)\n        throw Error(\n          \"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.\"\n        );\n      if (hasError)\n        throw (\n          ((JSCompiler_inline_result = caughtError),\n          (hasError = !1),\n          (caughtError = null),\n          JSCompiler_inline_result)\n        );\n    }\n  });\n}\nReactNativePrivateInterface.RCTEventEmitter.register({\n  receiveEvent: function (rootNodeID, topLevelType, nativeEventParam) {\n    _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam);\n  },\n  receiveTouches: function (eventTopLevelType, touches, changedIndices) {\n    if (\n      \"topTouchEnd\" === eventTopLevelType ||\n      \"topTouchCancel\" === eventTopLevelType\n    ) {\n      var JSCompiler_temp = [];\n      for (var i = 0; i < changedIndices.length; i++) {\n        var index$4 = changedIndices[i];\n        JSCompiler_temp.push(touches[index$4]);\n        touches[index$4] = null;\n      }\n      for (i = changedIndices = 0; i < touches.length; i++)\n        (index$4 = touches[i]),\n          null !== index$4 && (touches[changedIndices++] = index$4);\n      touches.length = changedIndices;\n    } else\n      for (JSCompiler_temp = [], i = 0; i < changedIndices.length; i++)\n        JSCompiler_temp.push(touches[changedIndices[i]]);\n    for (\n      changedIndices = 0;\n      changedIndices < JSCompiler_temp.length;\n      changedIndices++\n    ) {\n      i = JSCompiler_temp[changedIndices];\n      i.changedTouches = JSCompiler_temp;\n      i.touches = touches;\n      index$4 = null;\n      var target = i.target;\n      null === target || void 0 === target || 1 > target || (index$4 = target);\n      _receiveRootNodeIDEvent(index$4, eventTopLevelType, i);\n    }\n  }\n});\ngetFiberCurrentPropsFromNode$1 = function (stateNode) {\n  return instanceProps.get(stateNode._nativeTag) || null;\n};\ngetInstanceFromNode = getInstanceFromTag;\ngetNodeFromInstance = function (inst) {\n  inst = inst.stateNode;\n  var tag = inst._nativeTag;\n  void 0 === tag &&\n    null != inst.canonical &&\n    ((tag = inst.canonical.nativeTag), (inst = inst.canonical.publicInstance));\n  if (!tag) throw Error(\"All native instances should have a tag.\");\n  return inst;\n};\nResponderEventPlugin.injection.injectGlobalResponderHandler({\n  onChange: function (from, to, blockNativeResponder) {\n    null !== to\n      ? ReactNativePrivateInterface.UIManager.setJSResponder(\n          to.stateNode._nativeTag,\n          blockNativeResponder\n        )\n      : ReactNativePrivateInterface.UIManager.clearJSResponder();\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 assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(\"Unable to find node on an unmounted component.\");\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate)\n      throw Error(\"Unable to find node on an unmounted component.\");\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(\"Unable to find node on an unmounted component.\");\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$5 = parentA.child; child$5; ) {\n        if (child$5 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$5 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$5 = child$5.sibling;\n      }\n      if (!didFindChild) {\n        for (child$5 = parentB.child; child$5; ) {\n          if (child$5 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$5 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$5 = child$5.sibling;\n        }\n        if (!didFindChild)\n          throw Error(\n            \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\"\n          );\n      }\n    }\n    if (a.alternate !== b)\n      throw Error(\n        \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n  }\n  if (3 !== a.tag)\n    throw Error(\"Unable to find node on an unmounted component.\");\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 emptyObject = {},\n  removedKeys = null,\n  removedKeyCount = 0,\n  deepDifferOptions = { unsafelyIgnoreFunctions: !0 };\nfunction defaultDiffer(prevProp, nextProp) {\n  return \"object\" !== typeof nextProp || null === nextProp\n    ? !0\n    : ReactNativePrivateInterface.deepDiffer(\n        prevProp,\n        nextProp,\n        deepDifferOptions\n      );\n}\nfunction restoreDeletedValuesInNestedArray(\n  updatePayload,\n  node,\n  validAttributes\n) {\n  if (isArrayImpl(node))\n    for (var i = node.length; i-- && 0 < removedKeyCount; )\n      restoreDeletedValuesInNestedArray(\n        updatePayload,\n        node[i],\n        validAttributes\n      );\n  else if (node && 0 < removedKeyCount)\n    for (i in removedKeys)\n      if (removedKeys[i]) {\n        var nextProp = node[i];\n        if (void 0 !== nextProp) {\n          var attributeConfig = validAttributes[i];\n          if (attributeConfig) {\n            \"function\" === typeof nextProp && (nextProp = !0);\n            \"undefined\" === typeof nextProp && (nextProp = null);\n            if (\"object\" !== typeof attributeConfig)\n              updatePayload[i] = nextProp;\n            else if (\n              \"function\" === typeof attributeConfig.diff ||\n              \"function\" === typeof attributeConfig.process\n            )\n              (nextProp =\n                \"function\" === typeof attributeConfig.process\n                  ? attributeConfig.process(nextProp)\n                  : nextProp),\n                (updatePayload[i] = nextProp);\n            removedKeys[i] = !1;\n            removedKeyCount--;\n          }\n        }\n      }\n}\nfunction diffNestedProperty(\n  updatePayload,\n  prevProp,\n  nextProp,\n  validAttributes\n) {\n  if (!updatePayload && prevProp === nextProp) return updatePayload;\n  if (!prevProp || !nextProp)\n    return nextProp\n      ? addNestedProperty(updatePayload, nextProp, validAttributes)\n      : prevProp\n        ? clearNestedProperty(updatePayload, prevProp, validAttributes)\n        : updatePayload;\n  if (!isArrayImpl(prevProp) && !isArrayImpl(nextProp))\n    return diffProperties(updatePayload, prevProp, nextProp, validAttributes);\n  if (isArrayImpl(prevProp) && isArrayImpl(nextProp)) {\n    var minLength =\n        prevProp.length < nextProp.length ? prevProp.length : nextProp.length,\n      i;\n    for (i = 0; i < minLength; i++)\n      updatePayload = diffNestedProperty(\n        updatePayload,\n        prevProp[i],\n        nextProp[i],\n        validAttributes\n      );\n    for (; i < prevProp.length; i++)\n      updatePayload = clearNestedProperty(\n        updatePayload,\n        prevProp[i],\n        validAttributes\n      );\n    for (; i < nextProp.length; i++)\n      updatePayload = addNestedProperty(\n        updatePayload,\n        nextProp[i],\n        validAttributes\n      );\n    return updatePayload;\n  }\n  return isArrayImpl(prevProp)\n    ? diffProperties(\n        updatePayload,\n        ReactNativePrivateInterface.flattenStyle(prevProp),\n        nextProp,\n        validAttributes\n      )\n    : diffProperties(\n        updatePayload,\n        prevProp,\n        ReactNativePrivateInterface.flattenStyle(nextProp),\n        validAttributes\n      );\n}\nfunction addNestedProperty(updatePayload, nextProp, validAttributes) {\n  if (!nextProp) return updatePayload;\n  if (!isArrayImpl(nextProp))\n    return diffProperties(\n      updatePayload,\n      emptyObject,\n      nextProp,\n      validAttributes\n    );\n  for (var i = 0; i < nextProp.length; i++)\n    updatePayload = addNestedProperty(\n      updatePayload,\n      nextProp[i],\n      validAttributes\n    );\n  return updatePayload;\n}\nfunction clearNestedProperty(updatePayload, prevProp, validAttributes) {\n  if (!prevProp) return updatePayload;\n  if (!isArrayImpl(prevProp))\n    return diffProperties(\n      updatePayload,\n      prevProp,\n      emptyObject,\n      validAttributes\n    );\n  for (var i = 0; i < prevProp.length; i++)\n    updatePayload = clearNestedProperty(\n      updatePayload,\n      prevProp[i],\n      validAttributes\n    );\n  return updatePayload;\n}\nfunction diffProperties(updatePayload, prevProps, nextProps, validAttributes) {\n  var attributeConfig, propKey;\n  for (propKey in nextProps)\n    if ((attributeConfig = validAttributes[propKey])) {\n      var prevProp = prevProps[propKey];\n      var nextProp = nextProps[propKey];\n      \"function\" === typeof nextProp &&\n        ((nextProp = !0), \"function\" === typeof prevProp && (prevProp = !0));\n      \"undefined\" === typeof nextProp &&\n        ((nextProp = null),\n        \"undefined\" === typeof prevProp && (prevProp = null));\n      removedKeys && (removedKeys[propKey] = !1);\n      if (updatePayload && void 0 !== updatePayload[propKey])\n        if (\"object\" !== typeof attributeConfig)\n          updatePayload[propKey] = nextProp;\n        else {\n          if (\n            \"function\" === typeof attributeConfig.diff ||\n            \"function\" === typeof attributeConfig.process\n          )\n            (attributeConfig =\n              \"function\" === typeof attributeConfig.process\n                ? attributeConfig.process(nextProp)\n                : nextProp),\n              (updatePayload[propKey] = attributeConfig);\n        }\n      else if (prevProp !== nextProp)\n        if (\"object\" !== typeof attributeConfig)\n          defaultDiffer(prevProp, nextProp) &&\n            ((updatePayload || (updatePayload = {}))[propKey] = nextProp);\n        else if (\n          \"function\" === typeof attributeConfig.diff ||\n          \"function\" === typeof attributeConfig.process\n        ) {\n          if (\n            void 0 === prevProp ||\n            (\"function\" === typeof attributeConfig.diff\n              ? attributeConfig.diff(prevProp, nextProp)\n              : defaultDiffer(prevProp, nextProp))\n          )\n            (attributeConfig =\n              \"function\" === typeof attributeConfig.process\n                ? attributeConfig.process(nextProp)\n                : nextProp),\n              ((updatePayload || (updatePayload = {}))[propKey] =\n                attributeConfig);\n        } else\n          (removedKeys = null),\n            (removedKeyCount = 0),\n            (updatePayload = diffNestedProperty(\n              updatePayload,\n              prevProp,\n              nextProp,\n              attributeConfig\n            )),\n            0 < removedKeyCount &&\n              updatePayload &&\n              (restoreDeletedValuesInNestedArray(\n                updatePayload,\n                nextProp,\n                attributeConfig\n              ),\n              (removedKeys = null));\n    }\n  for (var propKey$7 in prevProps)\n    void 0 === nextProps[propKey$7] &&\n      (!(attributeConfig = validAttributes[propKey$7]) ||\n        (updatePayload && void 0 !== updatePayload[propKey$7]) ||\n        ((prevProp = prevProps[propKey$7]),\n        void 0 !== prevProp &&\n          (\"object\" !== typeof attributeConfig ||\n          \"function\" === typeof attributeConfig.diff ||\n          \"function\" === typeof attributeConfig.process\n            ? (((updatePayload || (updatePayload = {}))[propKey$7] = null),\n              removedKeys || (removedKeys = {}),\n              removedKeys[propKey$7] ||\n                ((removedKeys[propKey$7] = !0), removedKeyCount++))\n            : (updatePayload = clearNestedProperty(\n                updatePayload,\n                prevProp,\n                attributeConfig\n              )))));\n  return updatePayload;\n}\nfunction mountSafeCallback_NOT_REALLY_SAFE(context, callback) {\n  return function () {\n    if (\n      callback &&\n      (\"boolean\" !== typeof context.__isMounted || context.__isMounted)\n    )\n      return callback.apply(context, arguments);\n  };\n}\nvar ReactNativeFiberHostComponent = (function () {\n    function ReactNativeFiberHostComponent(tag, viewConfig) {\n      this.viewConfig = this._internalFiberInstanceHandleDEV = void 0;\n      this._nativeTag = tag;\n      this._children = [];\n      this.viewConfig = viewConfig;\n    }\n    var _proto = ReactNativeFiberHostComponent.prototype;\n    _proto.blur = function () {\n      ReactNativePrivateInterface.TextInputState.blurTextInput(this);\n    };\n    _proto.focus = function () {\n      ReactNativePrivateInterface.TextInputState.focusTextInput(this);\n    };\n    _proto.measure = function (callback) {\n      ReactNativePrivateInterface.UIManager.measure(\n        this._nativeTag,\n        mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n      );\n    };\n    _proto.measureInWindow = function (callback) {\n      ReactNativePrivateInterface.UIManager.measureInWindow(\n        this._nativeTag,\n        mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n      );\n    };\n    _proto.measureLayout = function (relativeToNativeNode, onSuccess, onFail) {\n      if (\"number\" === typeof relativeToNativeNode)\n        var relativeNode = relativeToNativeNode;\n      else\n        relativeToNativeNode._nativeTag &&\n          (relativeNode = relativeToNativeNode._nativeTag);\n      null != relativeNode &&\n        ReactNativePrivateInterface.UIManager.measureLayout(\n          this._nativeTag,\n          relativeNode,\n          mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n          mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n        );\n    };\n    _proto.setNativeProps = function (nativeProps) {\n      nativeProps = diffProperties(\n        null,\n        emptyObject,\n        nativeProps,\n        this.viewConfig.validAttributes\n      );\n      null != nativeProps &&\n        ReactNativePrivateInterface.UIManager.updateView(\n          this._nativeTag,\n          this.viewConfig.uiViewClassName,\n          nativeProps\n        );\n    };\n    return ReactNativeFiberHostComponent;\n  })(),\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  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 256,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n      return 128;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 4194048;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  root = root.warmLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : rootHasPendingCommit ||\n              ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n              0 !== rootHasPendingCommit &&\n                (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : rootHasPendingCommit ||\n            ((rootHasPendingCommit = pendingLanes & ~root),\n            0 !== rootHasPendingCommit &&\n              (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (rootHasPendingCommit = wipLanes & -wipLanes),\n        suspendedLanes >= rootHasPendingCommit ||\n          (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n    case 64:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextTransitionLane() {\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n  0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$12 = 31 - clz32(remainingLanes),\n      lane = 1 << index$12;\n    entanglements[index$12] = 0;\n    expirationTimes[index$12] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$12];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$12] = null, index$12 = 0;\n        index$12 < hiddenUpdatesForLane.length;\n        index$12++\n      ) {\n        var update = hiddenUpdatesForLane[index$12];\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    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 4194090);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$13 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$13;\n    (lane & entangledLanes) | (root[index$13] & entangledLanes) &&\n      (root[index$13] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\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 shim$1() {\n  throw Error(\n    \"The current renderer does not support hydration. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction shim() {\n  throw Error(\n    \"The current renderer does not support Resources. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nvar extraDevToolsConfig = {\n    getInspectorDataForInstance: void 0,\n    getInspectorDataForViewTag: function () {\n      throw Error(\n        \"getInspectorDataForViewTag() is not available in production\"\n      );\n    },\n    getInspectorDataForViewAtPoint: function () {\n      throw Error(\n        \"getInspectorDataForViewAtPoint() is not available in production.\"\n      );\n    }\n  },\n  getViewConfigForType =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry.get,\n  nextReactTag = 3;\nfunction allocateTag() {\n  var tag = nextReactTag;\n  1 === tag % 10 && (tag += 2);\n  nextReactTag = tag + 2;\n  return tag;\n}\nfunction recursivelyUncacheFiberNode(node) {\n  if (\"number\" === typeof node)\n    instanceCache.delete(node), instanceProps.delete(node);\n  else {\n    var tag = node._nativeTag;\n    instanceCache.delete(tag);\n    instanceProps.delete(tag);\n    node._children.forEach(recursivelyUncacheFiberNode);\n  }\n}\nfunction finalizeInitialChildren(parentInstance) {\n  if (0 === parentInstance._children.length) return !1;\n  var nativeTags = parentInstance._children.map(function (child) {\n    return \"number\" === typeof child ? child : child._nativeTag;\n  });\n  ReactNativePrivateInterface.UIManager.setChildren(\n    parentInstance._nativeTag,\n    nativeTags\n  );\n  return !1;\n}\nfunction getPublicInstance(instance) {\n  return null != instance.canonical && null != instance.canonical.publicInstance\n    ? instance.canonical.publicInstance\n    : instance;\n}\nvar scheduleTimeout = setTimeout,\n  cancelTimeout = clearTimeout,\n  currentUpdatePriority = 0,\n  HostTransitionContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Provider: null,\n    Consumer: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\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 emptyContextObject = {},\n  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 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  pop(contextStackCursor);\n  push(contextStackCursor, { isInAParentText: !1 });\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 = fiber.type;\n  JSCompiler_inline_result =\n    \"AndroidTextInput\" === JSCompiler_inline_result ||\n    \"RCTMultilineTextInputView\" === JSCompiler_inline_result ||\n    \"RCTSinglelineTextInputView\" === JSCompiler_inline_result ||\n    \"RCTText\" === JSCompiler_inline_result ||\n    \"RCTVirtualText\" === JSCompiler_inline_result;\n  JSCompiler_inline_result =\n    context.isInAParentText !== JSCompiler_inline_result\n      ? { isInAParentText: JSCompiler_inline_result }\n      : context;\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 = null));\n}\nvar hydrationErrors = null;\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 is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  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)\n        throw Error(\n          \"We just came from a parent so we must have had a parent. This is a bug in React.\"\n        );\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)\n        throw Error(\"Should have a current fiber. This is a bug in React.\");\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)\n        throw Error(\"Should have a current fiber. This is a bug in React.\");\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)\n      throw Error(\n        \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\"\n      );\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 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),\n    scheduleCallback$3(ImmediatePriority, processRootScheduleInImmediateTask));\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n  if (!isFlushingWork && mightHavePendingSyncWork) {\n    isFlushingWork = !0;\n    do {\n      var didPerformSomeWork = !1;\n      for (var root = firstScheduledRoot; null !== root; ) {\n        if (!onlyLegacy || 0 === root.tag)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root.suspendedLanes,\n                pingedLanes = root.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, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root,\n                root === workInProgressRoot ? JSCompiler_inline_result : 0,\n                null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root, JSCompiler_inline_result));\n        root = root.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInImmediateTask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    0 === nextLanes\n      ? ((root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev))\n      : ((prev = root),\n        0 !== (nextLanes & 3) && (mightHavePendingSyncWork = !0));\n    root = next;\n  }\n  flushSyncWorkAcrossRoots_impl(0, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$10 = 31 - clz32(lanes),\n      lane = 1 << index$10,\n      expirationTime = expirationTimes[index$10];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$10] = 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    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackPriority = 2),\n      (root.callbackNode = null),\n      2\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}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n    return (root.callbackNode = null), (root.callbackPriority = 0), null;\n  var originalCallbackNode = root.callbackNode;\n  if (flushPendingEffects(!0) && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPendingEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction requestTransitionLane() {\n  0 === currentEventTransitionLane &&\n    (currentEventTransitionLane = claimNextTransitionLane());\n  return currentEventTransitionLane;\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    null !== currentEntangledListeners\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\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}\nvar SuspenseException = Error(\n    \"Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\\n\\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`.\"\n  ),\n  SuspenseyCommitException = Error(\n    \"Suspense Exception: This is not a real error, and should not leak into userspace. If you're seeing this, it's likely a bug in React.\"\n  ),\n  SuspenseActionException = Error(\n    \"Suspense Exception: This is not a real error! It's an implementation detail of `useActionState` to interrupt the current render. You must either rethrow it immediately, or move the `useActionState` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\\n\\nTo handle async errors, wrap your component in an error boundary.\"\n  ),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop, noop), (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, noop);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(\n            \"An unknown Component is an async Client Component. Only Server Components can be async at the moment. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.\"\n          );\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw (\n            ((thenableState = thenable.reason),\n            checkIfUseWrappedInAsyncCatch(thenableState),\n            thenableState)\n          );\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable)\n    throw Error(\n      \"Expected a suspended thenable. This is a bug in React. Please file an issue.\"\n    );\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(\n      \"Hooks are not supported inside an async component. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.\"\n    );\n}\nvar concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  return 3 === sourceFiber.tag\n    ? ((parent = sourceFiber.stateNode),\n      isHidden &&\n        null !== update &&\n        ((isHidden = 31 - clz32(lane)),\n        (sourceFiber = parent.hiddenUpdates),\n        (alternate = sourceFiber[isHidden]),\n        null === alternate\n          ? (sourceFiber[isHidden] = [update])\n          : alternate.push(update),\n        (update.lane = lane | 536870912)),\n      parent)\n    : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(\n        \"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\"\n      ))\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 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(\n      \"Invalid argument passed as callback. Expected a function. Instead received: \" +\n        callback\n    );\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  thenableIndexCounter$1 = 0,\n  thenableState$1 = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(\n    \"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.\"\n  );\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter$1 = 0;\n  thenableState$1 = null;\n  if (didRenderTooFewHooks)\n    throw Error(\n      \"Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\"\n    );\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);\n    thenableIndexCounter$1 = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders)\n      throw Error(\n        \"Too many re-renders. React limits the number of renders to prevent an infinite loop.\"\n      );\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 bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter$1 = 0;\n  thenableState$1 = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber.alternate)\n        throw Error(\n          \"Update hook called on initial render. This is likely a bug in React. Please file an issue.\"\n        );\n      throw Error(\"Rendered more hooks than during the previous render.\");\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  thenable = trackUsedThenable(thenableState$1, thenable, index);\n  index = currentlyRenderingFiber;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(\"An unsupported type was passed to use(): \" + 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)\n    throw Error(\n      \"Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)\"\n    );\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$25 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$25 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$25 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$25 &&\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)\n    throw Error(\n      \"Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)\"\n    );\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) {\n  var fiber = currentlyRenderingFiber,\n    hook = updateWorkInProgressHook();\n  var nextSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    nextSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = nextSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  var create = subscribeToStore.bind(null, fiber, hook, subscribe);\n  updateEffectImpl(2048, 8, create, [subscribe]);\n  if (\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n  ) {\n    fiber.flags |= 2048;\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      updateStoreInstance.bind(null, fiber, hook, nextSnapshot, getSnapshot),\n      null\n    );\n    if (null === workInProgressRoot)\n      throw Error(\n        \"Expected a work-in-progress root. This is a bug in React. Please file an issue.\"\n      );\n    0 !== (renderLanes & 124) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n  }\n  return nextSnapshot;\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))\n    throw Error(\"Cannot update form state while rendering.\");\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      ReactSharedInternals.T = prevTransition;\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$29) {\n      onActionError(actionQueue, node, error$29);\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  var stateHook = mountWorkInProgressHook();\n  stateHook.memoizedState = stateHook.baseState = initialStateProp;\n  var stateQueue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  stateHook.queue = stateQueue;\n  stateHook = dispatchSetState.bind(null, currentlyRenderingFiber, stateQueue);\n  stateQueue.dispatch = stateHook;\n  stateQueue = mountStateImpl(!1);\n  var setPendingState = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    !1,\n    stateQueue.queue\n  );\n  stateQueue = mountWorkInProgressHook();\n  var actionQueue = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  stateQueue.queue = actionQueue;\n  stateHook = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber,\n    actionQueue,\n    setPendingState,\n    stateHook\n  );\n  actionQueue.dispatch = stateHook;\n  stateQueue.memoizedState = action;\n  return [initialStateProp, stateHook, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  if (\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n  )\n    try {\n      var state = useThenable(currentStateHook);\n    } catch (x) {\n      if (x === SuspenseException) throw SuspenseActionException;\n      throw x;\n    }\n  else state = currentStateHook;\n  currentStateHook = updateWorkInProgressHook();\n  var actionQueue = currentStateHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== currentStateHook.memoizedState &&\n    ((currentlyRenderingFiber.flags |= 2048),\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      actionStateActionEffect.bind(null, actionQueue, action),\n      null\n    ));\n  return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, createDeps) {\n  tag = { tag: tag, create: create, deps: createDeps, inst: inst, next: null };\n  inst = currentlyRenderingFiber.updateQueue;\n  null === inst &&\n    ((inst = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = inst));\n  create = inst.lastEffect;\n  null === create\n    ? (inst.lastEffect = tag.next = tag)\n    : ((createDeps = create.next),\n      (create.next = tag),\n      (tag.next = createDeps),\n      (inst.lastEffect = tag));\n  return tag;\n}\nfunction createEffectInstance() {\n  return { destroy: void 0, resource: void 0 };\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, createDeps) {\n  var hook = mountWorkInProgressHook();\n  createDeps = void 0 === createDeps ? null : createDeps;\n  currentlyRenderingFiber.flags |= fiberFlags;\n  hook.memoizedState = pushSimpleEffect(\n    1 | hookFlags,\n    createEffectInstance(),\n    create,\n    createDeps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n    : ((currentlyRenderingFiber.flags |= fiberFlags),\n      (hook.memoizedState = pushSimpleEffect(\n        1 | hookFlags,\n        inst,\n        create,\n        deps\n      )));\n}\nfunction mountEffect(create, createDeps) {\n  mountEffectImpl(8390656, 8, create, createDeps);\n}\nfunction updateEffect(create, createDeps) {\n  updateEffectImpl(2048, 8, create, createDeps);\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (0 === (renderLanes & 42))\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = currentUpdatePriority;\n  currentUpdatePriority =\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(fiber)\n    );\n  } finally {\n    (currentUpdatePriority = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\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(provider);\n        fiber = createUpdate(lane);\n        var root = enqueueUpdate(provider, fiber, lane);\n        null !== root &&\n          (scheduleUpdateOnFiber(root, provider, lane),\n          entangleTransitions(root, 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(fiber);\n  action = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane(fiber);\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender)\n      throw Error(\"Cannot update optimistic state while rendering.\");\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber ||\n    (null !== alternate && alternate === currentlyRenderingFiber)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194048)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n    readContext: readContext,\n    use: use,\n    useCallback: throwInvalidHookError,\n    useContext: throwInvalidHookError,\n    useEffect: throwInvalidHookError,\n    useImperativeHandle: throwInvalidHookError,\n    useLayoutEffect: throwInvalidHookError,\n    useInsertionEffect: throwInvalidHookError,\n    useMemo: throwInvalidHookError,\n    useReducer: throwInvalidHookError,\n    useRef: throwInvalidHookError,\n    useState: throwInvalidHookError,\n    useDebugValue: throwInvalidHookError,\n    useDeferredValue: throwInvalidHookError,\n    useTransition: throwInvalidHookError,\n    useSyncExternalStore: throwInvalidHookError,\n    useId: throwInvalidHookError,\n    useHostTransitionStatus: throwInvalidHookError,\n    useFormState: throwInvalidHookError,\n    useActionState: throwInvalidHookError,\n    useOptimistic: throwInvalidHookError,\n    useMemoCache: throwInvalidHookError,\n    useCacheRefresh: throwInvalidHookError\n  },\n  HooksDispatcherOnMount = {\n    readContext: readContext,\n    use: use,\n    useCallback: function (callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function (ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      mountEffectImpl(\n        4194308,\n        4,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function (create, deps) {\n      return mountEffectImpl(4194308, 4, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function (nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      var nextValue = nextCreate();\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          nextCreate();\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n      hook.memoizedState = [nextValue, deps];\n      return nextValue;\n    },\n    useReducer: function (reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      if (void 0 !== init) {\n        var initialState = init(initialArg);\n        if (shouldDoubleInvokeUserFnsInHooksDEV) {\n          setIsStrictModeForDevtools(!0);\n          try {\n            init(initialArg);\n          } finally {\n            setIsStrictModeForDevtools(!1);\n          }\n        }\n      } else initialState = initialArg;\n      hook.memoizedState = hook.baseState = initialState;\n      reducer = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialState\n      };\n      hook.queue = reducer;\n      reducer = reducer.dispatch = dispatchReducerAction.bind(\n        null,\n        currentlyRenderingFiber,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function (initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: function (initialState) {\n      initialState = mountStateImpl(initialState);\n      var queue = initialState.queue,\n        dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n      queue.dispatch = dispatch;\n      return [initialState.memoizedState, dispatch];\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = mountWorkInProgressHook();\n      return mountDeferredValueImpl(hook, value, initialValue);\n    },\n    useTransition: function () {\n      var stateHook = mountStateImpl(!1);\n      stateHook = startTransition.bind(\n        null,\n        currentlyRenderingFiber,\n        stateHook.queue,\n        !0,\n        !1\n      );\n      mountWorkInProgressHook().memoizedState = stateHook;\n      return [!1, stateHook];\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot) {\n      var fiber = currentlyRenderingFiber,\n        hook = mountWorkInProgressHook();\n      var nextSnapshot = getSnapshot();\n      if (null === workInProgressRoot)\n        throw Error(\n          \"Expected a work-in-progress root. This is a bug in React. Please file an issue.\"\n        );\n      0 !== (workInProgressRootRenderLanes & 124) ||\n        pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n      hook.memoizedState = nextSnapshot;\n      var inst = { value: nextSnapshot, getSnapshot: getSnapshot };\n      hook.queue = inst;\n      mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n        subscribe\n      ]);\n      fiber.flags |= 2048;\n      pushSimpleEffect(\n        9,\n        createEffectInstance(),\n        updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot),\n        null\n      );\n      return nextSnapshot;\n    },\n    useId: function () {\n      var hook = mountWorkInProgressHook(),\n        identifierPrefix = workInProgressRoot.identifierPrefix,\n        globalClientId = globalClientIdCounter++;\n      identifierPrefix =\n        \"\\u00ab\" +\n        identifierPrefix +\n        \"r\" +\n        globalClientId.toString(32) +\n        \"\\u00bb\";\n      return (hook.memoizedState = identifierPrefix);\n    },\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: mountActionState,\n    useActionState: mountActionState,\n    useOptimistic: function (passthrough) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = hook.baseState = passthrough;\n      var queue = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: null,\n        lastRenderedState: null\n      };\n      hook.queue = queue;\n      hook = dispatchOptimisticSetState.bind(\n        null,\n        currentlyRenderingFiber,\n        !0,\n        queue\n      );\n      queue.dispatch = hook;\n      return [passthrough, hook];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: function () {\n      return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n        null,\n        currentlyRenderingFiber\n      ));\n    }\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function () {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return updateDeferredValueImpl(\n        hook,\n        currentHook.memoizedState,\n        value,\n        initialValue\n      );\n    },\n    useTransition: function () {\n      var booleanOrThenable = updateReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: updateActionState,\n    useActionState: updateActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  HooksDispatcherOnRerender = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: rerenderReducer,\n    useRef: updateRef,\n    useState: function () {\n      return rerenderReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return null === currentHook\n        ? mountDeferredValueImpl(hook, value, initialValue)\n        : updateDeferredValueImpl(\n            hook,\n            currentHook.memoizedState,\n            value,\n            initialValue\n          );\n    },\n    useTransition: function () {\n      var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: rerenderActionState,\n    useActionState: rerenderActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      if (null !== currentHook)\n        return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n      hook.baseState = passthrough;\n      return [passthrough, hook.queue.dispatch];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  thenableState = null,\n  thenableIndexCounter = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  return trackUsedThenable(thenableState, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(\n      'A React Element from an older version of React was rendered. This is not supported. It can happen if:\\n- Multiple copies of the \"react\" package is used.\\n- A library pre-bundled an old copy of \"react\" or \"react/jsx-runtime\".\\n- A compiler tries to \"inline\" JSX instead of using the runtime.'\n    );\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    \"Objects are not valid as a React child (found: \" +\n      (\"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber) +\n      \"). If you meant to render a collection of children, use an array instead.\"\n  );\n}\nfunction resolveLazy(lazyType) {\n  var init = lazyType._init;\n  return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n        : existingChildren.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 67108866;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 67108866);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return updateFragment(\n        returnFiber,\n        current,\n        element.props.children,\n        lanes,\n        element.key\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return createChild(returnFiber, newChild, lanes);\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return updateFromMap(\n            existingChildren,\n            returnFiber,\n            newIdx,\n            newChild,\n            lanes\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber), 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      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    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren)\n      throw Error(\"An iterable object provided no iterator.\");\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), 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      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    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key)\n          throw Error(\n            \"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (\n        x === SuspenseException ||\n        x === SuspenseActionException ||\n        (0 === (returnFiber.mode & 1) &&\n          \"object\" === typeof x &&\n          null !== x &&\n          \"function\" === typeof x.then)\n      )\n        throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  if (22 === fiber.tag) {\n    if (\n      (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary)\n    ) {\n      var current = fiber.alternate;\n      null !== current &&\n        null !== current.memoizedState &&\n        (shellBoundary = fiber);\n    }\n  } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (null !== state && (null === state.dehydrated || shim$1() || shim$1()))\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(inst),\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(inst),\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(inst),\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 constructClassInstance(workInProgress, ctor, props) {\n  var context = emptyContextObject,\n    contextType = ctor.contextType;\n  \"object\" === typeof contextType &&\n    null !== contextType &&\n    (context = readContext(contextType));\n  ctor = new ctor(props, context);\n  workInProgress.memoizedState =\n    null !== ctor.state && void 0 !== ctor.state ? ctor.state : null;\n  ctor.updater = classComponentUpdater;\n  workInProgress.stateNode = ctor;\n  ctor._reactInternals = workInProgress;\n  return ctor;\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 mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  instance.props = newProps;\n  instance.state = workInProgress.memoizedState;\n  instance.refs = {};\n  initializeUpdateQueue(workInProgress);\n  var contextType = ctor.contextType;\n  instance.context =\n    \"object\" === typeof contextType && null !== contextType\n      ? readContext(contextType)\n      : emptyContextObject;\n  instance.state = workInProgress.memoizedState;\n  contextType = ctor.getDerivedStateFromProps;\n  \"function\" === typeof contextType &&\n    (applyDerivedStateFromProps(workInProgress, ctor, contextType, newProps),\n    (instance.state = workInProgress.memoizedState));\n  \"function\" === typeof ctor.getDerivedStateFromProps ||\n    \"function\" === typeof instance.getSnapshotBeforeUpdate ||\n    (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n      \"function\" !== typeof instance.componentWillMount) ||\n    ((ctor = instance.state),\n    \"function\" === typeof instance.componentWillMount &&\n      instance.componentWillMount(),\n    \"function\" === typeof instance.UNSAFE_componentWillMount &&\n      instance.UNSAFE_componentWillMount(),\n    ctor !== instance.state &&\n      classComponentUpdater.enqueueReplaceState(instance, instance.state, null),\n    processUpdateQueue(workInProgress, newProps, instance, renderLanes),\n    suspendIfUpdateReadFromEntangledAsyncAction(),\n    (instance.state = workInProgress.memoizedState));\n  \"function\" === typeof instance.componentDidMount &&\n    (workInProgress.flags |= 4194308);\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$55 in Component)\n      void 0 === newProps[propName$55] &&\n        (newProps[propName$55] = Component[propName$55]);\n  }\n  return newProps;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction 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) {\n    setTimeout(function () {\n      throw e;\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) {\n    setTimeout(function () {\n      throw e;\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    var currentSourceFiber = sourceFiber.alternate;\n    null !== currentSourceFiber &&\n      propagateParentContextChanges(\n        currentSourceFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    currentSourceFiber = sourceFiber.tag;\n    0 !== (sourceFiber.mode & 1) ||\n      (0 !== currentSourceFiber &&\n        11 !== currentSourceFiber &&\n        15 !== currentSourceFiber) ||\n      ((currentSourceFiber = sourceFiber.alternate)\n        ? ((sourceFiber.updateQueue = currentSourceFiber.updateQueue),\n          (sourceFiber.memoizedState = currentSourceFiber.memoizedState),\n          (sourceFiber.lanes = currentSourceFiber.lanes))\n        : ((sourceFiber.updateQueue = null),\n          (sourceFiber.memoizedState = null)));\n    currentSourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== currentSourceFiber) {\n      switch (currentSourceFiber.tag) {\n        case 13:\n          return (\n            sourceFiber.mode & 1 &&\n              (null === shellBoundary\n                ? renderDidSuspendDelayIfPossible()\n                : null === currentSourceFiber.alternate &&\n                  0 === workInProgressRootExitStatus &&\n                  (workInProgressRootExitStatus = 3)),\n            (currentSourceFiber.flags &= -257),\n            0 === (currentSourceFiber.mode & 1)\n              ? currentSourceFiber === returnFiber\n                ? (currentSourceFiber.flags |= 65536)\n                : ((currentSourceFiber.flags |= 128),\n                  (sourceFiber.flags |= 131072),\n                  (sourceFiber.flags &= -52805),\n                  1 === sourceFiber.tag\n                    ? null === sourceFiber.alternate\n                      ? (sourceFiber.tag = 17)\n                      : ((returnFiber = createUpdate(2)),\n                        (returnFiber.tag = 2),\n                        enqueueUpdate(sourceFiber, returnFiber, 2))\n                    : 0 === sourceFiber.tag &&\n                      null === sourceFiber.alternate &&\n                      (sourceFiber.tag = 28),\n                  (sourceFiber.lanes |= 2))\n              : ((currentSourceFiber.flags |= 65536),\n                (currentSourceFiber.lanes = rootRenderLanes)),\n            value === noopSuspenseyCommitThenable\n              ? (currentSourceFiber.flags |= 16384)\n              : ((returnFiber = currentSourceFiber.updateQueue),\n                null === returnFiber\n                  ? (currentSourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                currentSourceFiber.mode & 1 &&\n                  attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          if (currentSourceFiber.mode & 1)\n            return (\n              (currentSourceFiber.flags |= 65536),\n              value === noopSuspenseyCommitThenable\n                ? (currentSourceFiber.flags |= 16384)\n                : ((returnFiber = currentSourceFiber.updateQueue),\n                  null === returnFiber\n                    ? ((returnFiber = {\n                        transitions: null,\n                        markerInstances: null,\n                        retryQueue: new Set([value])\n                      }),\n                      (currentSourceFiber.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(\n        \"Unexpected Suspense handler tag (\" +\n          currentSourceFiber.tag +\n          \"). This is a bug in React.\"\n      );\n    }\n    if (1 === root.tag)\n      return (\n        attachPingListener(root, value, rootRenderLanes),\n        renderDidSuspendDelayIfPossible(),\n        !1\n      );\n    value = Error(\n      \"A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.\"\n    );\n  }\n  currentSourceFiber = createCapturedValueAtFiber(\n    Error(\n      \"There was an error during concurrent rendering but React was able to recover by instead synchronously rendering the entire root.\",\n      { cause: value }\n    ),\n    sourceFiber\n  );\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [currentSourceFiber])\n    : workInProgressRootConcurrentErrors.push(currentSourceFiber);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  do {\n    switch (returnFiber.tag) {\n      case 3:\n        return (\n          (returnFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (returnFiber.lanes |= root),\n          (root = createRootErrorUpdate(returnFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(returnFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((sourceFiber = returnFiber.type),\n          (currentSourceFiber = returnFiber.stateNode),\n          0 === (returnFiber.flags & 128) &&\n            (\"function\" === typeof sourceFiber.getDerivedStateFromError ||\n              (null !== currentSourceFiber &&\n                \"function\" === typeof currentSourceFiber.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(\n                    currentSourceFiber\n                  )))))\n        )\n          return (\n            (returnFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (returnFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              returnFiber,\n              value\n            ),\n            enqueueCapturedUpdate(returnFiber, rootRenderLanes),\n            !1\n          );\n    }\n    returnFiber = returnFiber.return;\n  } while (null !== returnFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(\n    \"This is not a real error. It's an implementation detail of React's selective hydration feature. If this leaks into userspace, it's a bug in React. Please file an issue.\"\n  ),\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  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  if (\"hidden\" === nextProps.mode) {\n    if (0 !== (workInProgress.flags & 128)) {\n      nextProps =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextChildren = workInProgress.child = current.child;\n        for (prevState = 0; null !== nextChildren; )\n          (prevState =\n            prevState | nextChildren.lanes | nextChildren.childLanes),\n            (nextChildren = nextChildren.sibling);\n        workInProgress.childLanes = prevState & ~nextProps;\n      } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        nextProps,\n        renderLanes\n      );\n    }\n    if (0 === (workInProgress.mode & 1))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (workInProgress.lanes = workInProgress.childLanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack(workInProgress));\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  return null;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 4194816);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(\n        \"Expected ref to be a function, an object returned by React.createRef(), or undefined/null.\"\n      );\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  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\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  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\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    resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress),\n      constructClassInstance(workInProgress, Component, nextProps),\n      mountClassInstance(workInProgress, Component, nextProps, renderLanes),\n      (nextProps = !0);\n  else if (null === current) {\n    var instance = workInProgress.stateNode,\n      unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    instance.props = oldProps;\n    var oldContext = instance.context,\n      contextType = Component.contextType,\n      nextContext = emptyContextObject;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (nextContext = readContext(contextType));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof instance.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType ||\n      (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof instance.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== nextContext) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          instance,\n          nextProps,\n          nextContext\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    instance.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, instance, 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            nextContext\n          ))\n          ? (contextType ||\n              (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n                \"function\" !== typeof instance.componentWillMount) ||\n              (\"function\" === typeof instance.componentWillMount &&\n                instance.componentWillMount(),\n              \"function\" === typeof instance.UNSAFE_componentWillMount &&\n                instance.UNSAFE_componentWillMount()),\n            \"function\" === typeof instance.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof instance.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (instance.props = nextProps),\n        (instance.state = oldContext),\n        (instance.context = nextContext),\n        (nextProps = oldProps))\n      : (\"function\" === typeof instance.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    instance = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    nextContext = workInProgress.memoizedProps;\n    contextType = resolveClassComponentProps(Component, nextContext);\n    instance.props = contextType;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = instance.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 instance.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof instance.componentWillReceiveProps) ||\n      ((nextContext !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          instance,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    instance.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, instance, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    nextContext !== 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 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType,\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 instance.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof instance.componentWillUpdate) ||\n              (\"function\" === typeof instance.componentWillUpdate &&\n                instance.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof instance.UNSAFE_componentWillUpdate &&\n                instance.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof instance.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof instance.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof instance.componentDidUpdate ||\n              (nextContext === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n              (nextContext === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (instance.props = nextProps),\n        (instance.state = newState),\n        (instance.context = oldProps),\n        (nextProps = contextType))\n      : (\"function\" !== typeof instance.componentDidUpdate ||\n          (nextContext === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n          (nextContext === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  return finishClassComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    !1,\n    renderLanes\n  );\n}\nfunction finishClassComponent(\n  current,\n  workInProgress,\n  Component,\n  shouldUpdate,\n  hasContext,\n  renderLanes\n) {\n  markRef(current, workInProgress);\n  hasContext = 0 !== (workInProgress.flags & 128);\n  if (!shouldUpdate && !hasContext)\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  shouldUpdate = workInProgress.stateNode;\n  Component =\n    hasContext && \"function\" !== typeof Component.getDerivedStateFromError\n      ? null\n      : shouldUpdate.render();\n  workInProgress.flags |= 1;\n  null !== current && hasContext\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 = shouldUpdate.state;\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    var nextPrimaryChildren = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (didSuspend = workInProgress.child),\n        (nextPrimaryChildren = {\n          mode: \"hidden\",\n          children: nextPrimaryChildren\n        }),\n        0 === (showFallback & 1) && null !== didSuspend\n          ? ((didSuspend.childLanes = 0),\n            (didSuspend.pendingProps = nextPrimaryChildren))\n          : (didSuspend = mountWorkInProgressOffscreenFiber(\n              nextPrimaryChildren,\n              showFallback\n            )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (didSuspend.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (didSuspend.sibling = nextProps),\n        (workInProgress.child = didSuspend),\n        (nextPrimaryChildren = workInProgress.child),\n        (nextPrimaryChildren.memoizedState =\n          mountSuspenseOffscreenState(renderLanes)),\n        (nextPrimaryChildren.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n  }\n  nextPrimaryChildren = current.memoizedState;\n  if (null !== nextPrimaryChildren && null !== nextPrimaryChildren.dehydrated) {\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            0 !== (workInProgress.mode & 1) &&\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 = nextPrimaryChildren));\n    else if ((pushPrimaryTreeSuspenseHandler(workInProgress), shim$1()))\n      (JSCompiler_temp = shim$1().digest),\n        (nextProps = Error(\n          \"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.\"\n        )),\n        (nextProps.stack = \"\"),\n        (nextProps.digest = JSCompiler_temp),\n        (JSCompiler_temp = { value: nextProps, source: null, stack: null }),\n        null === hydrationErrors\n          ? (hydrationErrors = [JSCompiler_temp])\n          : hydrationErrors.push(JSCompiler_temp),\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 (null !== JSCompiler_temp) {\n        nextProps = renderLanes & -renderLanes;\n        if (0 !== (nextProps & 42)) nextProps = 1;\n        else\n          switch (nextProps) {\n            case 2:\n              nextProps = 1;\n              break;\n            case 8:\n              nextProps = 4;\n              break;\n            case 32:\n              nextProps = 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              nextProps = 128;\n              break;\n            case 268435456:\n              nextProps = 134217728;\n              break;\n            default:\n              nextProps = 0;\n          }\n        nextProps =\n          0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n            ? 0\n            : nextProps;\n        if (0 !== nextProps && nextProps !== nextPrimaryChildren.retryLane)\n          throw (\n            ((nextPrimaryChildren.retryLane = nextProps),\n            enqueueConcurrentRenderForLane(current, nextProps),\n            scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n            SelectiveHydrationException)\n          );\n      }\n      shim$1() || renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      shim$1()\n        ? ((workInProgress.flags |= 192),\n          (workInProgress.child = current.child),\n          (workInProgress = null))\n        : ((workInProgress = mountSuspensePrimaryChildren(\n            workInProgress,\n            nextProps.children\n          )),\n          (workInProgress.flags |= 4096));\n    return workInProgress;\n  }\n  if (showFallback) {\n    reuseSuspenseHandlerOnStack(workInProgress);\n    nextPrimaryChildren = nextProps.fallback;\n    showFallback = workInProgress.mode;\n    didSuspend = current.child;\n    var currentFallbackChildFragment = didSuspend.sibling,\n      primaryChildProps = { mode: \"hidden\", children: nextProps.children };\n    0 === (showFallback & 1) && workInProgress.child !== didSuspend\n      ? ((nextProps = workInProgress.child),\n        (nextProps.childLanes = 0),\n        (nextProps.pendingProps = primaryChildProps),\n        (workInProgress.deletions = null))\n      : ((nextProps = createWorkInProgress(didSuspend, primaryChildProps)),\n        (nextProps.subtreeFlags = didSuspend.subtreeFlags & 65011712));\n    null !== currentFallbackChildFragment\n      ? (nextPrimaryChildren = createWorkInProgress(\n          currentFallbackChildFragment,\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    nextProps = nextPrimaryChildren;\n    nextPrimaryChildren = workInProgress.child;\n    showFallback = current.child.memoizedState;\n    null === showFallback\n      ? (showFallback = mountSuspenseOffscreenState(renderLanes))\n      : ((didSuspend = showFallback.cachePool),\n        null !== didSuspend\n          ? ((currentFallbackChildFragment = CacheContext._currentValue),\n            (didSuspend =\n              didSuspend.parent !== currentFallbackChildFragment\n                ? {\n                    parent: currentFallbackChildFragment,\n                    pool: currentFallbackChildFragment\n                  }\n                : didSuspend))\n          : (didSuspend = getSuspendedCache()),\n        (showFallback = {\n          baseLanes: showFallback.baseLanes | renderLanes,\n          cachePool: didSuspend\n        }));\n    nextPrimaryChildren.memoizedState = showFallback;\n    nextPrimaryChildren.childLanes = getRemainingWorkInPrimaryTree(\n      current,\n      JSCompiler_temp,\n      renderLanes\n    );\n    workInProgress.memoizedState = SUSPENDED_MARKER;\n    return nextProps;\n  }\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  JSCompiler_temp = current.child;\n  current = JSCompiler_temp.sibling;\n  JSCompiler_temp = createWorkInProgress(JSCompiler_temp, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  0 === (workInProgress.mode & 1) && (JSCompiler_temp.lanes = renderLanes);\n  JSCompiler_temp.return = workInProgress;\n  JSCompiler_temp.sibling = null;\n  null !== current &&\n    ((renderLanes = workInProgress.deletions),\n    null === renderLanes\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : renderLanes.push(current));\n  workInProgress.child = JSCompiler_temp;\n  workInProgress.memoizedState = null;\n  return JSCompiler_temp;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n  offscreenProps.lanes = 0;\n  offscreenProps.stateNode = {\n    _visibility: 1,\n    _pendingMarkers: null,\n    _retryCache: null,\n    _transitions: null\n  };\n  return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n  else {\n    if (null !== current && 0 !== (current.flags & 128))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (19 === current.tag)\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  if (0 === (workInProgress.mode & 1)) workInProgress.memoizedState = null;\n  else\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),\n            (workInProgress.child = null))\n          : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n        initSuspenseListRenderState(\n          workInProgress,\n          !1,\n          revealOrder,\n          renderLanes,\n          tailMode\n        );\n        break;\n      case \"backwards\":\n        renderLanes = null;\n        revealOrder = workInProgress.child;\n        for (workInProgress.child = null; null !== revealOrder; ) {\n          current = revealOrder.alternate;\n          if (null !== current && null === findFirstSuspended(current)) {\n            workInProgress.child = revealOrder;\n            break;\n          }\n          current = revealOrder.sibling;\n          revealOrder.sibling = renderLanes;\n          renderLanes = revealOrder;\n          revealOrder = current;\n        }\n        initSuspenseListRenderState(\n          workInProgress,\n          !0,\n          renderLanes,\n          null,\n          tailMode\n        );\n        break;\n      case \"together\":\n        initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n        break;\n      default:\n        workInProgress.memoizedState = null;\n    }\n  return workInProgress.child;\n}\nfunction resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress) {\n  0 === (workInProgress.mode & 1) &&\n    null !== current &&\n    ((current.alternate = null),\n    (workInProgress.alternate = null),\n    (workInProgress.flags |= 2));\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(\"Resuming work not yet implemented.\");\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      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 13:\n      var state = workInProgress.memoizedState;\n      if (null !== state) {\n        if (null !== state.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        if (0 !== (renderLanes & workInProgress.child.childLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      var didSuspendBefore = 0 !== (current.flags & 128);\n      state = 0 !== (renderLanes & workInProgress.childLanes);\n      state ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      didSuspendBefore = workInProgress.memoizedState;\n      null !== didSuspendBefore &&\n        ((didSuspendBefore.rendering = null),\n        (didSuspendBefore.tail = null),\n        (didSuspendBefore.lastEffect = null));\n      push(suspenseStackCursor, suspenseStackCursor.current);\n      if (state) break;\n      else return null;\n    case 22:\n    case 23:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(current, workInProgress, renderLanes)\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else didReceiveUpdate = !1;\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      var elementType = workInProgress.elementType;\n      a: {\n        resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress);\n        current = workInProgress.pendingProps;\n        var init = elementType._init;\n        elementType = init(elementType._payload);\n        workInProgress.type = elementType;\n        if (\"function\" === typeof elementType)\n          shouldConstruct(elementType)\n            ? ((current = resolveClassComponentProps(elementType, current)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                elementType,\n                current,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                elementType,\n                current,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== elementType && null !== elementType)\n            if (\n              ((init = elementType.$$typeof), init === REACT_FORWARD_REF_TYPE)\n            ) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                elementType,\n                current,\n                renderLanes\n              );\n              break a;\n            } else if (init === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                elementType,\n                current,\n                renderLanes\n              );\n              break a;\n            }\n          workInProgress = getComponentNameFromType(elementType) || elementType;\n          throw Error(\n            \"Element type is invalid. Received a promise that resolves to: \" +\n              workInProgress +\n              \". Lazy element type must resolve to a class or function.\"\n          );\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        (elementType = workInProgress.type),\n        (init = resolveClassComponentProps(\n          elementType,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          elementType,\n          init,\n          renderLanes\n        )\n      );\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      if (null === current)\n        throw Error(\"Should have a current fiber. This is a bug in React.\");\n      var nextProps = workInProgress.pendingProps;\n      init = workInProgress.memoizedState;\n      elementType = init.element;\n      cloneUpdateQueue(current, workInProgress);\n      processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n      nextProps = workInProgress.memoizedState;\n      var nextCache = nextProps.cache;\n      pushProvider(workInProgress, CacheContext, nextCache);\n      nextCache !== init.cache &&\n        propagateContextChanges(\n          workInProgress,\n          [CacheContext],\n          renderLanes,\n          !0\n        );\n      suspendIfUpdateReadFromEntangledAsyncAction();\n      init = nextProps.element;\n      init === elementType\n        ? (workInProgress = bailoutOnAlreadyFinishedWork(\n            current,\n            workInProgress,\n            renderLanes\n          ))\n        : (reconcileChildren(current, workInProgress, init, renderLanes),\n          (workInProgress = workInProgress.child));\n      return workInProgress;\n    case 26:\n    case 27:\n    case 5:\n      return (\n        pushHostContext(workInProgress),\n        (elementType = workInProgress.pendingProps.children),\n        null !== workInProgress.memoizedState &&\n          ((init = renderWithHooks(\n            current,\n            workInProgress,\n            TransitionAwareHostComponent,\n            null,\n            null,\n            renderLanes\n          )),\n          (HostTransitionContext._currentValue = init)),\n        markRef(current, workInProgress),\n        reconcileChildren(current, workInProgress, elementType, renderLanes),\n        workInProgress.child\n      );\n    case 6:\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        (elementType = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              elementType,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              elementType,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return (\n        (elementType = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, elementType.value),\n        reconcileChildren(\n          current,\n          workInProgress,\n          elementType.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        (init = workInProgress.type._context),\n        (elementType = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        (init = readContext(init)),\n        (elementType = elementType(init)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, elementType, 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 17:\n      return (\n        (elementType = workInProgress.type),\n        (init = resolveClassComponentProps(\n          elementType,\n          workInProgress.pendingProps\n        )),\n        resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress),\n        (workInProgress.tag = 1),\n        prepareToReadContext(workInProgress),\n        constructClassInstance(workInProgress, elementType, init),\n        mountClassInstance(workInProgress, elementType, init, renderLanes),\n        finishClassComponent(\n          null,\n          workInProgress,\n          elementType,\n          !0,\n          !1,\n          renderLanes\n        )\n      );\n    case 28:\n      return (\n        (elementType = workInProgress.type),\n        (init = resolveClassComponentProps(\n          elementType,\n          workInProgress.pendingProps\n        )),\n        resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress),\n        (workInProgress.tag = 0),\n        updateFunctionComponent(\n          null,\n          workInProgress,\n          elementType,\n          init,\n          renderLanes\n        )\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 31:\n      return (\n        (elementType = workInProgress.pendingProps),\n        (renderLanes = workInProgress.mode),\n        (elementType = {\n          mode: elementType.mode,\n          children: elementType.children\n        }),\n        null === current\n          ? ((renderLanes = mountWorkInProgressOffscreenFiber(\n              elementType,\n              renderLanes\n            )),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes))\n          : ((renderLanes = createWorkInProgress(current.child, elementType)),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes)),\n        workInProgress\n      );\n    case 22:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (elementType = readContext(CacheContext)),\n        null === current\n          ? ((init = peekCacheFromPool()),\n            null === init &&\n              ((init = workInProgressRoot),\n              (nextProps = createCache()),\n              (init.pooledCache = nextProps),\n              nextProps.refCount++,\n              null !== nextProps && (init.pooledCacheLanes |= renderLanes),\n              (init = nextProps)),\n            (workInProgress.memoizedState = {\n              parent: elementType,\n              cache: init\n            }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, init))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            (init = current.memoizedState),\n            (nextProps = workInProgress.memoizedState),\n            init.parent !== elementType\n              ? ((init = { parent: elementType, cache: elementType }),\n                (workInProgress.memoizedState = init),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      init),\n                pushProvider(workInProgress, CacheContext, elementType))\n              : ((elementType = nextProps.cache),\n                pushProvider(workInProgress, CacheContext, elementType),\n                elementType !== init.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(\n    \"Unknown unit of work tag (\" +\n      workInProgress.tag +\n      \"). This error is likely caused by a bug in React. Please file an issue.\"\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  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$93 = null; null !== lastTailNode; )\n        null !== lastTailNode.alternate && (lastTailNode$93 = lastTailNode),\n          (lastTailNode = lastTailNode.sibling);\n      null === lastTailNode$93\n        ? hasRenderedATailFallback || null === renderState.tail\n          ? (renderState.tail = null)\n          : (renderState.tail.sibling = null)\n        : (lastTailNode$93.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$94 = completedWork.child; null !== child$94; )\n      (newChildLanes |= child$94.lanes | child$94.childLanes),\n        (subtreeFlags |= child$94.subtreeFlags & 65011712),\n        (subtreeFlags |= child$94.flags & 65011712),\n        (child$94.return = completedWork),\n        (child$94 = child$94.sibling);\n  else\n    for (child$94 = completedWork.child; null !== child$94; )\n      (newChildLanes |= child$94.lanes | child$94.childLanes),\n        (subtreeFlags |= child$94.subtreeFlags),\n        (subtreeFlags |= child$94.flags),\n        (child$94.return = completedWork),\n        (child$94 = child$94.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  switch (workInProgress.tag) {\n    case 28:\n    case 31:\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      return (\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        (null !== current && null !== current.child) ||\n          null === current ||\n          (current.memoizedState.isDehydrated &&\n            0 === (workInProgress.flags & 256)) ||\n          ((workInProgress.flags |= 1024),\n          upgradeHydrationErrorsToRecoverable()),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(workInProgress);\n      var type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && (workInProgress.flags |= 4);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(\n              \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n            );\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        renderLanes = rootInstanceStackCursor.current;\n        current = allocateTag();\n        type = getViewConfigForType(type);\n        var updatePayload = diffProperties(\n          null,\n          emptyObject,\n          newProps,\n          type.validAttributes\n        );\n        ReactNativePrivateInterface.UIManager.createView(\n          current,\n          type.uiViewClassName,\n          renderLanes.containerTag,\n          updatePayload\n        );\n        renderLanes = new ReactNativeFiberHostComponent(\n          current,\n          type,\n          workInProgress\n        );\n        instanceCache.set(current, workInProgress);\n        instanceProps.set(current, newProps);\n        a: for (current = workInProgress.child; null !== current; ) {\n          if (5 === current.tag || 6 === current.tag)\n            renderLanes._children.push(current.stateNode);\n          else if (4 !== current.tag && 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        workInProgress.stateNode = renderLanes;\n        finalizeInitialChildren(renderLanes) && (workInProgress.flags |= 4);\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.flags &= -16777217;\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && (workInProgress.flags |= 4);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(\n            \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n        current = rootInstanceStackCursor.current;\n        if (!contextStackCursor.current.isInAParentText)\n          throw Error(\n            \"Text strings must be rendered within a <Text> component.\"\n          );\n        renderLanes = allocateTag();\n        ReactNativePrivateInterface.UIManager.createView(\n          renderLanes,\n          \"RCTRawText\",\n          current.containerTag,\n          { text: newProps }\n        );\n        instanceCache.set(renderLanes, workInProgress);\n        workInProgress.stateNode = renderLanes;\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        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            throw Error(\n              \"A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.\"\n            );\n            throw Error(\n              \"Expected prepareToHydrateHostSuspenseInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.\"\n            );\n          }\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        (updatePayload = null),\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (updatePayload = newProps.memoizedState.cachePool.pool),\n        updatePayload !== 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 popHostContainer(), bubbleProperties(workInProgress), null;\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 17:\n      return bubbleProperties(workInProgress), null;\n    case 19:\n      pop(suspenseStackCursor);\n      type = workInProgress.memoizedState;\n      if (null === type) return bubbleProperties(workInProgress), null;\n      newProps = 0 !== (workInProgress.flags & 128);\n      updatePayload = type.rendering;\n      if (null === updatePayload)\n        if (newProps) cutOffTailIfNeeded(type, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              updatePayload = findFirstSuspended(current);\n              if (null !== updatePayload) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(type, !1);\n                current = updatePayload.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== type.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (newProps = !0),\n            cutOffTailIfNeeded(type, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!newProps)\n          if (\n            ((current = findFirstSuspended(updatePayload)), null !== current)\n          ) {\n            if (\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(type, !0),\n              null === type.tail &&\n                \"hidden\" === type.tailMode &&\n                !updatePayload.alternate)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - type.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              cutOffTailIfNeeded(type, !1),\n              (workInProgress.lanes = 4194304));\n        type.isBackwards\n          ? ((updatePayload.sibling = workInProgress.child),\n            (workInProgress.child = updatePayload))\n          : ((current = type.last),\n            null !== current\n              ? (current.sibling = updatePayload)\n              : (workInProgress.child = updatePayload),\n            (type.last = updatePayload));\n      }\n      if (null !== type.tail)\n        return (\n          (workInProgress = type.tail),\n          (type.rendering = workInProgress),\n          (type.tail = workInProgress.sibling),\n          (type.renderingStartTime = now()),\n          (workInProgress.sibling = null),\n          (current = suspenseStackCursor.current),\n          push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n          workInProgress\n        );\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps && 0 !== (workInProgress.mode & 1)\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    case 29:\n      return null;\n  }\n  throw Error(\n    \"Unknown unit of work tag (\" +\n      workInProgress.tag +\n      \"). This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction unwindWork(current, workInProgress) {\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (\n        null !== current &&\n        null !== current.dehydrated &&\n        null === workInProgress.alternate\n      )\n        throw Error(\n          \"Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.\"\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  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      pop(suspenseStackCursor);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create$116 = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create$116();\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 = getPublicInstance(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$118) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$118);\n      }\n    else ref.current = null;\n}\nfunction isHostParent(fiber) {\n  return 5 === fiber.tag || 3 === fiber.tag || 4 === fiber.tag;\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 (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    if (((node = node.stateNode), before)) {\n      if (\"number\" === typeof parent)\n        throw Error(\"Container does not support insertBefore operation\");\n    } else\n      ReactNativePrivateInterface.UIManager.setChildren(parent.containerTag, [\n        \"number\" === typeof node ? node : node._nativeTag\n      ]);\n  else if (4 !== tag && ((node = node.child), null !== node))\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    if (((node = node.stateNode), before)) {\n      tag = parent._children;\n      var index = tag.indexOf(node);\n      0 <= index\n        ? (tag.splice(index, 1),\n          (before = tag.indexOf(before)),\n          tag.splice(before, 0, node),\n          ReactNativePrivateInterface.UIManager.manageChildren(\n            parent._nativeTag,\n            [index],\n            [before],\n            [],\n            [],\n            []\n          ))\n        : ((before = tag.indexOf(before)),\n          tag.splice(before, 0, node),\n          ReactNativePrivateInterface.UIManager.manageChildren(\n            parent._nativeTag,\n            [],\n            [],\n            [\"number\" === typeof node ? node : node._nativeTag],\n            [before],\n            []\n          ));\n    } else\n      (before = \"number\" === typeof node ? node : node._nativeTag),\n        (tag = parent._children),\n        (index = tag.indexOf(node)),\n        0 <= index\n          ? (tag.splice(index, 1),\n            tag.push(node),\n            ReactNativePrivateInterface.UIManager.manageChildren(\n              parent._nativeTag,\n              [index],\n              [tag.length - 1],\n              [],\n              [],\n              []\n            ))\n          : (tag.push(node),\n            ReactNativePrivateInterface.UIManager.manageChildren(\n              parent._nativeTag,\n              [],\n              [],\n              [before],\n              [tag.length - 1],\n              []\n            ));\n  else if (4 !== tag && ((node = node.child), null !== node))\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((root = nextEffect),\n      (firstChild = root.child),\n      0 !== (root.subtreeFlags & 1024) && null !== firstChild)\n    )\n      (firstChild.return = root), (nextEffect = firstChild);\n    else\n      for (; null !== nextEffect; ) {\n        root = nextEffect;\n        var current = root.alternate;\n        firstChild = root.flags;\n        switch (root.tag) {\n          case 0:\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (firstChild & 1024) && null !== current) {\n              firstChild = void 0;\n              var finishedWork = root,\n                prevProps = current.memoizedProps;\n              current = current.memoizedState;\n              var instance = finishedWork.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  finishedWork.type,\n                  prevProps,\n                  finishedWork.elementType === finishedWork.type\n                );\n                firstChild = instance.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  current\n                );\n                instance.__reactInternalSnapshotBeforeUpdate = firstChild;\n              } catch (error) {\n                captureCommitPhaseError(\n                  finishedWork,\n                  finishedWork.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\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 !== (firstChild & 1024))\n              throw Error(\n                \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n              );\n        }\n        firstChild = root.sibling;\n        if (null !== firstChild) {\n          firstChild.return = root.return;\n          nextEffect = firstChild;\n          break;\n        }\n        nextEffect = root.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$117) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$117\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 = getPublicInstance(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    case 26:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 64 &&\n        ((finishedRoot = finishedWork.memoizedState),\n        null !== finishedRoot &&\n          null !== finishedRoot.dehydrated &&\n          (retryDehydratedSuspenseBoundary.bind(null, finishedWork), shim$1()));\n      break;\n    case 22:\n      if (0 !== (finishedWork.mode & 1)) {\n        if (\n          ((flags =\n            null !== finishedWork.memoizedState || offscreenSubtreeIsHidden),\n          !flags)\n        ) {\n          current =\n            (null !== current && null !== current.memoizedState) ||\n            offscreenSubtreeWasHidden;\n          prevProps = offscreenSubtreeIsHidden;\n          var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n          offscreenSubtreeIsHidden = flags;\n          (offscreenSubtreeWasHidden = current) &&\n          !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      } else recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\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  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    case 27:\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      var 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            (finishedRoot = hostParent),\n              recursivelyUncacheFiberNode(deletedFiber.stateNode),\n              ReactNativePrivateInterface.UIManager.manageChildren(\n                finishedRoot.containerTag,\n                [],\n                [],\n                [],\n                [],\n                [0]\n              );\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            finishedRoot = hostParent;\n            var child = deletedFiber.stateNode;\n            recursivelyUncacheFiberNode(child);\n            var children = finishedRoot._children,\n              index = children.indexOf(child);\n            children.splice(index, 1);\n            ReactNativePrivateInterface.UIManager.manageChildren(\n              finishedRoot._nativeTag,\n              [],\n              [],\n              [],\n              [],\n              [index]\n            );\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent && shim$1();\n      break;\n    case 4:\n      child = hostParent;\n      children = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode.containerInfo;\n      hostParentIsContainer = !0;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = child;\n      hostParentIsContainer = children;\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      offscreenSubtreeWasHidden ||\n        (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        (child = deletedFiber.stateNode),\n        \"function\" === typeof child.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            child\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      deletedFiber.mode & 1\n        ? ((offscreenSubtreeWasHidden =\n            (child = offscreenSubtreeWasHidden) ||\n            null !== deletedFiber.memoizedState),\n          recursivelyTraverseDeletionEffects(\n            finishedRoot,\n            nearestMountedAncestor,\n            deletedFiber\n          ),\n          (offscreenSubtreeWasHidden = child))\n        : recursivelyTraverseDeletionEffects(\n            finishedRoot,\n            nearestMountedAncestor,\n            deletedFiber\n          );\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(\n        \"Unexpected Suspense handler tag (\" +\n          finishedWork.tag +\n          \"). This is a bug in React.\"\n      );\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n    retryCache.has(wakeable) ||\n      (retryCache.add(wakeable), wakeable.then(retry, retry));\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (null !== deletions)\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i],\n        root = root$jscomp$0,\n        returnFiber = parentFiber,\n        parent = returnFiber;\n      a: for (; null !== parent; ) {\n        switch (parent.tag) {\n          case 27:\n          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)\n        throw Error(\n          \"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n      hostParent = null;\n      hostParentIsContainer = !1;\n      root = childToDelete.alternate;\n      null !== root && (root.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13878)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n        (parentFiber = parentFiber.sibling);\n}\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      if (\n        flags & 64 &&\n        offscreenSubtreeIsHidden &&\n        ((finishedWork = finishedWork.updateQueue),\n        null !== finishedWork &&\n          ((flags = finishedWork.callbacks), null !== flags))\n      ) {\n        var existingHiddenCallbacks = finishedWork.shared.hiddenCallbacks;\n        finishedWork.shared.hiddenCallbacks =\n          null === existingHiddenCallbacks\n            ? flags\n            : existingHiddenCallbacks.concat(flags);\n      }\n      break;\n    case 26:\n    case 27:\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 (flags & 4 && null != finishedWork.stateNode) {\n        flags = finishedWork.memoizedProps;\n        existingHiddenCallbacks =\n          null !== current ? current.memoizedProps : flags;\n        try {\n          var instance = finishedWork.stateNode,\n            viewConfig = instance.viewConfig;\n          instanceProps.set(instance._nativeTag, flags);\n          var updatePayload = diffProperties(\n            null,\n            existingHiddenCallbacks,\n            flags,\n            viewConfig.validAttributes\n          );\n          null != updatePayload &&\n            ReactNativePrivateInterface.UIManager.updateView(\n              instance._nativeTag,\n              viewConfig.uiViewClassName,\n              updatePayload\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4) {\n        if (null === finishedWork.stateNode)\n          throw Error(\n            \"This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n        flags = finishedWork.memoizedProps;\n        existingHiddenCallbacks = finishedWork.stateNode;\n        try {\n          ReactNativePrivateInterface.UIManager.updateView(\n            existingHiddenCallbacks,\n            \"RCTRawText\",\n            { text: flags }\n          );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 3:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 4:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        ((existingHiddenCallbacks =\n          null !== current && null !== current.memoizedState),\n        null === finishedWork.memoizedState ||\n          existingHiddenCallbacks ||\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      instance = null !== finishedWork.memoizedState;\n      viewConfig = null !== current && null !== current.memoizedState;\n      if (finishedWork.mode & 1) {\n        updatePayload = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = updatePayload || instance;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || viewConfig;\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = updatePayload;\n      } else recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 8192)\n        a: for (\n          root = finishedWork.stateNode,\n            root._visibility = instance\n              ? root._visibility & -2\n              : root._visibility | 1,\n            instance &&\n              (null === current ||\n                viewConfig ||\n                offscreenSubtreeIsHidden ||\n                offscreenSubtreeWasHidden ||\n                (0 !== (finishedWork.mode & 1) &&\n                  recursivelyTraverseDisappearLayoutEffects(finishedWork))),\n            current = null,\n            root = finishedWork;\n          ;\n\n        ) {\n          if (5 === root.tag) {\n            if (null === current) {\n              viewConfig = current = root;\n              try {\n                if (\n                  ((existingHiddenCallbacks = viewConfig.stateNode), instance)\n                ) {\n                  updatePayload = existingHiddenCallbacks;\n                  var viewConfig$jscomp$0 = updatePayload.viewConfig;\n                  var updatePayload$jscomp$0 = diffProperties(\n                    null,\n                    emptyObject,\n                    { style: { display: \"none\" } },\n                    viewConfig$jscomp$0.validAttributes\n                  );\n                  ReactNativePrivateInterface.UIManager.updateView(\n                    updatePayload._nativeTag,\n                    viewConfig$jscomp$0.uiViewClassName,\n                    updatePayload$jscomp$0\n                  );\n                } else {\n                  var instance$jscomp$0 = viewConfig.stateNode,\n                    props = viewConfig.memoizedProps,\n                    viewConfig$jscomp$1 = instance$jscomp$0.viewConfig,\n                    prevProps = assign({}, props, {\n                      style: [props.style, { display: \"none\" }]\n                    });\n                  var updatePayload$jscomp$1 = diffProperties(\n                    null,\n                    prevProps,\n                    props,\n                    viewConfig$jscomp$1.validAttributes\n                  );\n                  ReactNativePrivateInterface.UIManager.updateView(\n                    instance$jscomp$0._nativeTag,\n                    viewConfig$jscomp$1.uiViewClassName,\n                    updatePayload$jscomp$1\n                  );\n                }\n              } catch (error) {\n                captureCommitPhaseError(viewConfig, viewConfig.return, error);\n              }\n            }\n          } else if (6 === root.tag) {\n            if (null === current) {\n              viewConfig = root;\n              try {\n                throw Error(\"Not yet implemented.\");\n              } catch (error) {\n                captureCommitPhaseError(viewConfig, viewConfig.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          ((existingHiddenCallbacks = flags.retryQueue),\n          null !== existingHiddenCallbacks &&\n            ((flags.retryQueue = null),\n            attachSuspenseRetryListeners(\n              finishedWork,\n              existingHiddenCallbacks\n            ))));\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)\n        throw Error(\n          \"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      switch (hostParentFiber.tag) {\n        case 27:\n        case 5:\n          var parent = hostParentFiber.stateNode;\n          hostParentFiber.flags & 32 && (hostParentFiber.flags &= -33);\n          var before = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before, parent);\n          break;\n        case 3:\n        case 4:\n          var parent$119 = hostParentFiber.stateNode.containerInfo,\n            before$120 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNodeIntoContainer(\n            finishedWork,\n            before$120,\n            parent$119\n          );\n          break;\n        default:\n          throw Error(\n            \"Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n      }\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n    finishedWork.flags &= -3;\n  }\n  flags & 4096 && (finishedWork.flags &= -4097);\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      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 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        finishedRoot = finishedWork;\n        var instance = finishedRoot.stateNode;\n        if (\"function\" === typeof instance.componentDidMount)\n          try {\n            instance.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(finishedRoot, finishedRoot.return, error);\n          }\n        finishedRoot = finishedWork;\n        instance = finishedRoot.updateQueue;\n        if (null !== instance) {\n          var instance$jscomp$0 = finishedRoot.stateNode;\n          try {\n            var hiddenCallbacks = instance.shared.hiddenCallbacks;\n            if (null !== hiddenCallbacks)\n              for (\n                instance.shared.hiddenCallbacks = null, instance = 0;\n                instance < hiddenCallbacks.length;\n                instance++\n              )\n                callCallback(hiddenCallbacks[instance], instance$jscomp$0);\n          } catch (error) {\n            captureCommitPhaseError(finishedRoot, finishedRoot.return, error);\n          }\n        }\n        includeWorkInProgressEffects &&\n          flags & 64 &&\n          commitClassCallbacks(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 27:\n      case 26:\n      case 5:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            includeWorkInProgressEffects\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 30:\n        break;\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 1:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              finishedRoot.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 13:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      id = finishedWork.alternate;\n      null !== finishedWork.memoizedState\n        ? _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : finishedWork.mode & 1\n            ? recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n            : ((_finishedWork$memoize2._visibility |= 2),\n              recursivelyTraversePassiveMountEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions\n              ))\n        : _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256)\n            ));\n      flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 2\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : finishedWork.mode & 1\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          : ((instance._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        shim();\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 3:\n    case 4:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 22:\n      if (null === fiber.memoizedState) {\n        var current = fiber.alternate;\n        null !== current && null !== current.memoizedState\n          ? ((current = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(fiber),\n            (suspenseyCommitFlag = current))\n          : recursivelyAccumulateSuspenseyCommit(fiber);\n      }\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 2 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 2 &&\n          ((i._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  pendingEffectsStatus = 0,\n  pendingEffectsRoot = null,\n  pendingFinishedWork = null,\n  pendingEffectsLanes = 0,\n  pendingEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  pendingRecoverableErrors = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane(fiber) {\n  if (0 === (fiber.mode & 1)) return 2;\n  if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n    return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n  if (null !== ReactSharedInternals.T)\n    return (\n      (fiber = currentEntangledLane),\n      0 !== fiber ? fiber : requestTransitionLane()\n    );\n  fiber = 0 !== currentUpdatePriority ? currentUpdatePriority : 32;\n  return fiber;\n}\nfunction requestDeferredLane() {\n  0 === workInProgressDeferredLane &&\n    (workInProgressDeferredLane =\n      0 !== (workInProgressRootRenderLanes & 536870912)\n        ? 536870912\n        : claimNextTransitionLane());\n  var suspenseHandler = suspenseHandlerStackCursor.current;\n  null !== suspenseHandler && (suspenseHandler.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root),\n      2 === lane &&\n        0 === executionContext &&\n        0 === (fiber.mode & 1) &&\n        ((workInProgressRootRenderTargetTime = now() + 500),\n        flushSyncWorkAcrossRoots_impl(0, !0));\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6))\n    throw Error(\"Should not already be working.\");\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 124) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (0 !== root$jscomp$0.tag && 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            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (2 !== JSCompiler_inline_result) {\n              if (workInProgressRootDidAttachPingListener) {\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(\"Root did not complete. This is a bug in React.\");\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(\"Unknown root exit status.\");\n        }\n        if (\n          (lanes & 62914560) === lanes &&\n          3 === renderWasConcurrent &&\n          ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n          10 < exitStatus)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              renderWasConcurrent,\n              2,\n              -0,\n              0\n            ),\n            exitStatus\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes\n        );\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) {\n  root.timeoutHandle = -1;\n  var subtreeFlags = finishedWork.subtreeFlags;\n  (subtreeFlags & 8192 || 16785408 === (subtreeFlags & 16785408)) &&\n    accumulateSuspenseyCommitOnFiber(finishedWork);\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$11 = 31 - clz32(lanes),\n      lane = 1 << index$11;\n    didAttemptEntireTree[index$11] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber$1 = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState = null),\n        (thenableIndexCounter = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  0 !== (lanes & 8) && (lanes |= lanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= lanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$9 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$9;\n      lanes |= root[index$9];\n      allEntangledLanes &= ~lane;\n    }\n  entangledRenderLanes = lanes;\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException || thrownValue === SuspenseActionException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194048) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 9:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$134) {\n      handleThrow(root, thrownValue$134);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n          case 9:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              (2 !== workInProgressSuspendedReason &&\n                9 !== workInProgressSuspendedReason) ||\n                workInProgressRoot !== root ||\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (resource ? shim(resource) : 1) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(\"Unexpected SuspendedReason. This is a bug in React.\");\n        }\n      }\n      workLoopConcurrentByScheduler();\n      break;\n    } catch (thrownValue$136) {\n      handleThrow(root, thrownValue$136);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState = null;\n  thenableIndexCounter = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (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))\n    throw Error(\"Should not already be working.\");\n  if (null !== finishedWork) {\n    if (finishedWork === root.current)\n      throw Error(\n        \"Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.\"\n      );\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(NormalPriority$1, function () {\n          flushPassiveEffects(!0);\n          return null;\n        }))\n      : ((root.callbackNode = null), (root.callbackPriority = 0));\n    recoverableErrors = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n      recoverableErrors = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      transitions = currentUpdatePriority;\n      currentUpdatePriority = 2;\n      spawnedLane = executionContext;\n      executionContext |= 4;\n      try {\n        commitBeforeMutationEffects(root, finishedWork, lanes);\n      } finally {\n        (executionContext = spawnedLane),\n          (currentUpdatePriority = 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 = currentUpdatePriority;\n      currentUpdatePriority = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitMutationEffectsOnFiber(finishedWork, root);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (currentUpdatePriority = 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 = currentUpdatePriority;\n      currentUpdatePriority = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (currentUpdatePriority = 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 = currentUpdatePriority;\n      currentUpdatePriority = 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          (currentUpdatePriority = remainingLanes);\n      }\n    }\n    0 !== (pendingEffectsLanes & 3) && 0 !== root.tag && flushPendingEffects();\n    ensureRootIsScheduled(root);\n    remainingLanes = root.pendingLanes;\n    0 !== (lanes & 4194090) && 0 !== (remainingLanes & 42)\n      ? root === rootWithNestedUpdates\n        ? nestedUpdateCount++\n        : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n      : (nestedUpdateCount = 0);\n    flushSyncWorkAcrossRoots_impl(0, !1);\n  }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects(wasDelayedCommit) {\n  flushMutationEffects();\n  flushLayoutEffects();\n  flushSpawnedWork();\n  return flushPassiveEffects(wasDelayedCommit);\n}\nfunction flushPassiveEffects() {\n  if (5 !== pendingEffectsStatus) return !1;\n  var root = pendingEffectsRoot,\n    remainingLanes = pendingEffectsRemainingLanes;\n  pendingEffectsRemainingLanes = 0;\n  var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n    prevTransition = ReactSharedInternals.T,\n    previousPriority = currentUpdatePriority;\n  try {\n    currentUpdatePriority = 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))\n      throw Error(\"Cannot flush passive effects while already rendering.\");\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    (currentUpdatePriority = 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 &&\n    (retryLane = 0 === (boundaryFiber.mode & 1) ? 2 : claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(\n        \"Pinged unknown suspense boundary type. This is probably a bug in React.\"\n      );\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\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) fiberTag = 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 |= 8;\n        0 !== (mode & 1) && (mode |= 16);\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: \" +\n            ((null === type ? \"null\" : typeof type) + \".\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  formState\n) {\n  this.tag = tag;\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 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}\nfunction findHostInstance(component) {\n  var fiber = component._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof component.render)\n      throw Error(\"Unable to find node on an unmounted component.\");\n    component = Object.keys(component).join(\",\");\n    throw Error(\n      \"Argument appears to not be a ReactComponent. Keys: \" + component\n    );\n  }\n  component = findCurrentFiberUsingSlowPath(fiber);\n  component = null !== component ? findCurrentHostFiberImpl(component) : null;\n  return null === component ? null : getPublicInstance(component.stateNode);\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n  parentComponent = container.current;\n  var lane = requestUpdateLane(parentComponent);\n  null === container.context\n    ? (container.context = emptyContextObject)\n    : (container.pendingContext = emptyContextObject);\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(parentComponent, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, parentComponent, lane),\n    entangleTransitions(element, parentComponent, lane));\n  return lane;\n}\nvar isomorphicReactPackageVersion = React.version;\nif (\"19.1.0\" !== isomorphicReactPackageVersion)\n  throw Error(\n    'Incompatible React versions: The \"react\" and \"react-native-renderer\" packages must have the exact same version. Instead got:\\n  - react:                  ' +\n      (isomorphicReactPackageVersion +\n        \"\\n  - react-native-renderer:  19.1.0\\nLearn more: https://react.dev/warnings/version-mismatch\")\n  );\nif (\n  \"function\" !==\n  typeof ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog\n)\n  throw Error(\n    \"Expected ReactFiberErrorDialog.showErrorDialog to be a function.\"\n  );\nfunction nativeOnUncaughtError(error, errorInfo) {\n  !1 !==\n    ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog({\n      errorBoundary: null,\n      error: error,\n      componentStack:\n        null != errorInfo.componentStack ? errorInfo.componentStack : \"\"\n    }) && reportGlobalError(error);\n}\nfunction nativeOnCaughtError(error, errorInfo) {\n  !1 !==\n    ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog({\n      errorBoundary: errorInfo.errorBoundary,\n      error: error,\n      componentStack:\n        null != errorInfo.componentStack ? errorInfo.componentStack : \"\"\n    }) && console.error(error);\n}\nfunction unmountComponentAtNode(containerTag) {\n  var root = roots.get(containerTag);\n  root &&\n    updateContainer(null, root, null, function () {\n      roots.delete(containerTag);\n    });\n}\nbatchedUpdatesImpl = function (fn, a) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 1;\n  try {\n    return fn(a);\n  } finally {\n    (executionContext = prevExecutionContext),\n      0 === executionContext &&\n        ((workInProgressRootRenderTargetTime = now() + 500),\n        flushSyncWorkAcrossRoots_impl(0, !0));\n  }\n};\nvar roots = new Map(),\n  internals$jscomp$inline_1269 = {\n    bundleType: 0,\n    version: \"19.1.0\",\n    rendererPackageName: \"react-native-renderer\",\n    currentDispatcherRef: ReactSharedInternals,\n    reconcilerVersion: \"19.1.0\"\n  };\nnull !== extraDevToolsConfig &&\n  (internals$jscomp$inline_1269.rendererConfig = extraDevToolsConfig);\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_1605 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_1605.isDisabled &&\n    hook$jscomp$inline_1605.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_1605.inject(\n        internals$jscomp$inline_1269\n      )),\n        (injectedHook = hook$jscomp$inline_1605);\n    } catch (err) {}\n}\nexports.createPortal = function (children, containerTag) {\n  return createPortal$1(\n    children,\n    containerTag,\n    null,\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null\n  );\n};\nexports.dispatchCommand = function (handle, command, args) {\n  var nativeTag =\n    null != handle._nativeTag\n      ? handle._nativeTag\n      : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle);\n  null != nativeTag &&\n    ((handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle)),\n    null != handle\n      ? nativeFabricUIManager.dispatchCommand(handle, command, args)\n      : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand(\n          nativeTag,\n          command,\n          args\n        ));\n};\nexports.findHostInstance_DEPRECATED = function (componentOrHandle) {\n  return null == componentOrHandle\n    ? null\n    : componentOrHandle.canonical && componentOrHandle.canonical.publicInstance\n      ? componentOrHandle.canonical.publicInstance\n      : componentOrHandle._nativeTag\n        ? componentOrHandle\n        : findHostInstance(componentOrHandle);\n};\nexports.findNodeHandle = function (componentOrHandle) {\n  if (null == componentOrHandle) return null;\n  if (\"number\" === typeof componentOrHandle) return componentOrHandle;\n  if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag;\n  if (\n    null != componentOrHandle.canonical &&\n    null != componentOrHandle.canonical.nativeTag\n  )\n    return componentOrHandle.canonical.nativeTag;\n  var nativeTag =\n    ReactNativePrivateInterface.getNativeTagFromPublicInstance(\n      componentOrHandle\n    );\n  if (nativeTag) return nativeTag;\n  componentOrHandle = findHostInstance(componentOrHandle);\n  return null == componentOrHandle\n    ? componentOrHandle\n    : null != componentOrHandle._nativeTag\n      ? componentOrHandle._nativeTag\n      : ReactNativePrivateInterface.getNativeTagFromPublicInstance(\n          componentOrHandle\n        );\n};\nexports.isChildPublicInstance = function () {\n  throw Error(\"isChildPublicInstance() is not available in production.\");\n};\nexports.render = function (element, containerTag, callback, options) {\n  var root = roots.get(containerTag);\n  if (!root) {\n    root = nativeOnUncaughtError;\n    var onCaughtError = nativeOnCaughtError,\n      onRecoverableError = defaultOnRecoverableError;\n    options &&\n      void 0 !== options.onUncaughtError &&\n      (root = options.onUncaughtError);\n    options &&\n      void 0 !== options.onCaughtError &&\n      (onCaughtError = options.onCaughtError);\n    options &&\n      void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError);\n    options = new FiberRootNode(\n      { containerTag: containerTag, publicInstance: null },\n      0,\n      !1,\n      \"\",\n      root,\n      onCaughtError,\n      onRecoverableError,\n      null\n    );\n    root = createFiberImplClass(3, null, null, 0);\n    options.current = root;\n    root.stateNode = options;\n    onCaughtError = createCache();\n    onCaughtError.refCount++;\n    options.pooledCache = onCaughtError;\n    onCaughtError.refCount++;\n    root.memoizedState = {\n      element: null,\n      isDehydrated: !1,\n      cache: onCaughtError\n    };\n    initializeUpdateQueue(root);\n    root = options;\n    roots.set(containerTag, root);\n  }\n  updateContainer(element, root, null, callback);\n  a: if (((element = root.current), element.child))\n    switch (element.child.tag) {\n      case 27:\n      case 5:\n        element = getPublicInstance(element.child.stateNode);\n        break a;\n      default:\n        element = element.child.stateNode;\n    }\n  else element = null;\n  return element;\n};\nexports.sendAccessibilityEvent = function (handle, eventType) {\n  var nativeTag =\n    null != handle._nativeTag\n      ? handle._nativeTag\n      : ReactNativePrivateInterface.getNativeTagFromPublicInstance(handle);\n  null != nativeTag &&\n    ((handle = ReactNativePrivateInterface.getNodeFromPublicInstance(handle)),\n    null != handle\n      ? nativeFabricUIManager.sendAccessibilityEvent(handle, eventType)\n      : ReactNativePrivateInterface.legacySendAccessibilityEvent(\n          nativeTag,\n          eventType\n        ));\n};\nexports.unmountComponentAtNode = unmountComponentAtNode;\nexports.unmountComponentAtNodeAndRemoveContainer = function (containerTag) {\n  unmountComponentAtNode(containerTag);\n  ReactNativePrivateInterface.UIManager.removeRootView(containerTag);\n};\nexports.unstable_batchedUpdates = batchedUpdates$1;\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 * @flow strict-local\n * @format\n */\n\n// TODO: move this file to shims/ReactNative (requires React update and sync)\n\nimport type {HostComponent} from '../../src/private/types/HostComponent';\n\nimport requireNativeComponent from '../../Libraries/ReactNative/requireNativeComponent';\nimport UIManager from '../ReactNative/UIManager';\n\n// TODO: import from CodegenSchema once workspaces are enabled\ntype NativeComponentOptions = $ReadOnly<{\n  interfaceOnly?: boolean,\n  paperComponentName?: string,\n  paperComponentNameDeprecated?: string,\n  excludedPlatforms?: $ReadOnlyArray<'iOS' | 'android'>,\n}>;\n\nexport type NativeComponentType<T: {...}> = HostComponent<T>;\n\n// If this function runs then that means the view configs were not\n// generated at build time using `GenerateViewConfigJs.js`. Thus\n// we need to `requireNativeComponent` to get the view configs from view managers.\n// `requireNativeComponent` is not available in Bridgeless mode.\n// e.g. This function runs at runtime if `codegenNativeComponent` was not called\n// from a file suffixed with NativeComponent.js.\nfunction codegenNativeComponent<Props: {...}>(\n  componentName: string,\n  options?: NativeComponentOptions,\n): NativeComponentType<Props> {\n  if (global.RN$Bridgeless === true && __DEV__) {\n    console.warn(\n      `Codegen didn't run for ${componentName}. This will be an error in the future. Make sure you are using @react-native/babel-preset when building your JavaScript code.`,\n    );\n  }\n\n  let componentNameInUse =\n    options && options.paperComponentName != null\n      ? options.paperComponentName\n      : componentName;\n\n  if (options != null && options.paperComponentNameDeprecated != null) {\n    if (UIManager.hasViewManagerConfig(componentName)) {\n      componentNameInUse = componentName;\n    } else if (\n      options.paperComponentNameDeprecated != null &&\n      UIManager.hasViewManagerConfig(options.paperComponentNameDeprecated)\n    ) {\n      // $FlowFixMe[incompatible-type]\n      componentNameInUse = options.paperComponentNameDeprecated;\n    } else {\n      throw new Error(\n        `Failed to find native component for either ${componentName} or ${\n          options.paperComponentNameDeprecated ?? '(unknown)'\n        }`,\n      );\n    }\n  }\n\n  return (requireNativeComponent<Props>(\n    // $FlowFixMe[incompatible-call]\n    componentNameInUse,\n  ): HostComponent<Props>);\n}\n\nexport default codegenNativeComponent;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {HostComponent} from '../../src/private/types/HostComponent';\n\nconst createReactNativeComponentClass =\n  require('../Renderer/shims/createReactNativeComponentClass').default;\nconst getNativeComponentAttributes =\n  require('./getNativeComponentAttributes').default;\n\n/**\n * Creates values that can be used like React components which represent native\n * view managers. You should create JavaScript modules that wrap these values so\n * that the results are memoized. Example:\n *\n *   const View = requireNativeComponent('RCTView');\n *\n */\n\nconst requireNativeComponent = <T: {...}>(\n  uiViewClassName: string,\n): HostComponent<T> =>\n  ((createReactNativeComponentClass(uiViewClassName, () =>\n    getNativeComponentAttributes(uiViewClassName),\n  ): any): HostComponent<T>);\n\nexport default requireNativeComponent;\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 * @noformat\n * @nolint\n * @flow strict-local\n * @generated SignedSource<<52163887de05f1cff05388145cf85b3b>>\n */\n\n'use strict';\n\nimport {ReactNativeViewConfigRegistry} from 'react-native/Libraries/ReactPrivate/ReactNativePrivateInterface';\nimport {type ViewConfig} from './ReactNativeTypes';\n\nconst {register} = ReactNativeViewConfigRegistry;\n\n/**\n * Creates a renderable ReactNative host component.\n * Use this method for view configs that are loaded from UIManager.\n * Use createReactNativeComponentClass() for view configs defined within JavaScript.\n *\n * @param {string} config iOS View configuration.\n * @private\n */\nconst createReactNativeComponentClass = function (\n  name: string,\n  callback: () => ViewConfig,\n): string {\n  return register(name, callback);\n};\n\nexport default createReactNativeComponentClass;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TextStyleProp, ViewStyleProp} from '../StyleSheet/StyleSheet';\nimport type {GestureResponderEvent} from '../Types/CoreEventTypes';\nimport type {\n  AccessibilityActionEvent,\n  AccessibilityActionInfo,\n  AccessibilityState,\n} from './View/ViewAccessibility';\n\nimport StyleSheet, {type ColorValue} from '../StyleSheet/StyleSheet';\nimport Text from '../Text/Text';\nimport Platform from '../Utilities/Platform';\nimport TouchableNativeFeedback from './Touchable/TouchableNativeFeedback';\nimport TouchableOpacity from './Touchable/TouchableOpacity';\nimport View from './View/View';\nimport invariant from 'invariant';\nimport * as React from 'react';\n\nexport type ButtonProps = $ReadOnly<{\n  /**\n    Text to display inside the button. On Android the given title will be\n    converted to the uppercased form.\n   */\n  title: string,\n\n  /**\n    Handler to be called when the user taps the button. The first function\n    argument is an event in form of [GestureResponderEvent](pressevent).\n   */\n  onPress?: (event?: GestureResponderEvent) => mixed,\n\n  /**\n    If `true`, doesn't play system sound on touch.\n\n    @platform android\n\n    @default false\n   */\n  touchSoundDisabled?: ?boolean,\n\n  /**\n    Color of the text (iOS), or background color of the button (Android).\n\n    @default {@platform android} '#2196F3'\n    @default {@platform ios} '#007AFF'\n   */\n  color?: ?ColorValue,\n\n  /**\n    TV preferred focus.\n\n    @platform tv\n\n    @default false\n    @deprecated Use `focusable` instead\n   */\n  hasTVPreferredFocus?: ?boolean,\n\n  /**\n    Designates the next view to receive focus when the user navigates down. See\n    the [Android documentation][android:nextFocusDown].\n\n    [android:nextFocusDown]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusDown\n\n    @platform android, tv\n   */\n  nextFocusDown?: ?number,\n\n  /**\n    Designates the next view to receive focus when the user navigates forward.\n    See the [Android documentation][android:nextFocusForward].\n\n    [android:nextFocusForward]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusForward\n\n    @platform android, tv\n   */\n  nextFocusForward?: ?number,\n\n  /**\n    Designates the next view to receive focus when the user navigates left. See\n    the [Android documentation][android:nextFocusLeft].\n\n    [android:nextFocusLeft]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusLeft\n\n    @platform android, tv\n   */\n  nextFocusLeft?: ?number,\n\n  /**\n    Designates the next view to receive focus when the user navigates right. See\n    the [Android documentation][android:nextFocusRight].\n\n    [android:nextFocusRight]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusRight\n\n    @platform android, tv\n   */\n  nextFocusRight?: ?number,\n\n  /**\n    Designates the next view to receive focus when the user navigates up. See\n    the [Android documentation][android:nextFocusUp].\n\n    [android:nextFocusUp]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusUp\n\n    @platform android, tv\n   */\n  nextFocusUp?: ?number,\n\n  /**\n    Text to display for blindness accessibility features.\n   */\n  accessibilityLabel?: ?string,\n  /**\n   * Alias for accessibilityLabel  https://reactnative.dev/docs/view#accessibilitylabel\n   * https://github.com/facebook/react-native/issues/34424\n   */\n  'aria-label'?: ?string,\n  /**\n    If `true`, disable all interactions for this component.\n\n    @default false\n   */\n  disabled?: ?boolean,\n\n  /**\n    Used to locate this view in end-to-end tests.\n   */\n  testID?: ?string,\n\n  /**\n   * Accessibility props.\n   */\n  accessible?: ?boolean,\n  accessibilityActions?: ?$ReadOnlyArray<AccessibilityActionInfo>,\n  onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed,\n  accessibilityState?: ?AccessibilityState,\n\n  /**\n   * alias for accessibilityState\n   *\n   * see https://reactnative.dev/docs/accessibility#accessibilitystate\n   */\n  'aria-busy'?: ?boolean,\n  'aria-checked'?: ?boolean | 'mixed',\n  'aria-disabled'?: ?boolean,\n  'aria-expanded'?: ?boolean,\n  'aria-selected'?: ?boolean,\n\n  /**\n   * [Android] Controlling if a view fires accessibility events and if it is reported to accessibility services.\n   */\n  importantForAccessibility?: ?('auto' | 'yes' | 'no' | 'no-hide-descendants'),\n  accessibilityHint?: ?string,\n  accessibilityLanguage?: ?Stringish,\n}>;\n\n/**\n  A basic button component that should render nicely on any platform. Supports a\n  minimal level of customization.\n\n  If this button doesn't look right for your app, you can build your own button\n  using [TouchableOpacity](touchableopacity) or\n  [TouchableWithoutFeedback](touchablewithoutfeedback). For inspiration, look at\n  the [source code for this button component][button:source]. Or, take a look at\n  the [wide variety of button components built by the community]\n  [button:examples].\n\n  [button:source]:\n  https://github.com/facebook/react-native/blob/HEAD/Libraries/Components/Button.js\n\n  [button:examples]:\n  https://js.coach/?menu%5Bcollections%5D=React%20Native&page=1&query=button\n\n  ```jsx\n  <Button\n    onPress={onPressLearnMore}\n    title=\"Learn More\"\n    color=\"#841584\"\n    accessibilityLabel=\"Learn more about this purple button\"\n  />\n  ```\n\n  ```SnackPlayer name=Button%20Example\n  import React from 'react';\n  import { StyleSheet, Button, View, SafeAreaView, Text, Alert } from 'react-native';\n\n  const Separator = () => (\n    <View style={styles.separator} />\n  );\n\n  const App = () => (\n    <SafeAreaView style={styles.container}>\n      <View>\n        <Text style={styles.title}>\n          The title and onPress handler are required. It is recommended to set accessibilityLabel to help make your app usable by everyone.\n        </Text>\n        <Button\n          title=\"Press me\"\n          onPress={() => Alert.alert('Simple Button pressed')}\n        />\n      </View>\n      <Separator />\n      <View>\n        <Text style={styles.title}>\n          Adjust the color in a way that looks standard on each platform. On  iOS, the color prop controls the color of the text. On Android, the color adjusts the background color of the button.\n        </Text>\n        <Button\n          title=\"Press me\"\n          color=\"#f194ff\"\n          onPress={() => Alert.alert('Button with adjusted color pressed')}\n        />\n      </View>\n      <Separator />\n      <View>\n        <Text style={styles.title}>\n          All interaction for the component are disabled.\n        </Text>\n        <Button\n          title=\"Press me\"\n          disabled\n          onPress={() => Alert.alert('Cannot press this one')}\n        />\n      </View>\n      <Separator />\n      <View>\n        <Text style={styles.title}>\n          This layout strategy lets the title define the width of the button.\n        </Text>\n        <View style={styles.fixToText}>\n          <Button\n            title=\"Left button\"\n            onPress={() => Alert.alert('Left button pressed')}\n          />\n          <Button\n            title=\"Right button\"\n            onPress={() => Alert.alert('Right button pressed')}\n          />\n        </View>\n      </View>\n    </SafeAreaView>\n  );\n\n  const styles = StyleSheet.create({\n    container: {\n      flex: 1,\n      justifyContent: 'center',\n      marginHorizontal: 16,\n    },\n    title: {\n      textAlign: 'center',\n      marginVertical: 8,\n    },\n    fixToText: {\n      flexDirection: 'row',\n      justifyContent: 'space-between',\n    },\n    separator: {\n      marginVertical: 8,\n      borderBottomColor: '#737373',\n      borderBottomWidth: StyleSheet.hairlineWidth,\n    },\n  });\n\n  export default App;\n  ```\n */\n\nconst NativeTouchable:\n  | typeof TouchableNativeFeedback\n  | typeof TouchableOpacity =\n  Platform.OS === 'android' ? TouchableNativeFeedback : TouchableOpacity;\n\ntype ButtonRef = React.ElementRef<typeof NativeTouchable>;\n\nconst Button: component(\n  ref?: React.RefSetter<ButtonRef>,\n  ...props: ButtonProps\n) = ({ref, ...props}: {ref?: React.RefSetter<ButtonRef>, ...ButtonProps}) => {\n  const {\n    accessibilityLabel,\n    accessibilityState,\n    'aria-busy': ariaBusy,\n    'aria-checked': ariaChecked,\n    'aria-disabled': ariaDisabled,\n    'aria-expanded': ariaExpanded,\n    'aria-label': ariaLabel,\n    'aria-selected': ariaSelected,\n    importantForAccessibility,\n    color,\n    onPress,\n    touchSoundDisabled,\n    title,\n    hasTVPreferredFocus,\n    nextFocusDown,\n    nextFocusForward,\n    nextFocusLeft,\n    nextFocusRight,\n    nextFocusUp,\n    testID,\n    accessible,\n    accessibilityActions,\n    accessibilityHint,\n    accessibilityLanguage,\n    onAccessibilityAction,\n  } = props;\n  const buttonStyles: Array<ViewStyleProp> = [styles.button];\n  const textStyles: Array<TextStyleProp> = [styles.text];\n  if (color) {\n    if (Platform.OS === 'ios') {\n      textStyles.push({color: color});\n    } else {\n      buttonStyles.push({backgroundColor: color});\n    }\n  }\n\n  let _accessibilityState = {\n    busy: ariaBusy ?? accessibilityState?.busy,\n    checked: ariaChecked ?? accessibilityState?.checked,\n    disabled: ariaDisabled ?? accessibilityState?.disabled,\n    expanded: ariaExpanded ?? accessibilityState?.expanded,\n    selected: ariaSelected ?? accessibilityState?.selected,\n  };\n\n  const disabled =\n    props.disabled != null ? props.disabled : _accessibilityState?.disabled;\n\n  _accessibilityState =\n    disabled !== _accessibilityState?.disabled\n      ? {..._accessibilityState, disabled}\n      : _accessibilityState;\n\n  if (disabled) {\n    buttonStyles.push(styles.buttonDisabled);\n    textStyles.push(styles.textDisabled);\n  }\n\n  invariant(\n    typeof title === 'string',\n    'The title prop of a Button must be a string',\n  );\n  const formattedTitle =\n    Platform.OS === 'android' ? title.toUpperCase() : title;\n\n  // If `no` is specified for `importantForAccessibility`, it will be changed to `no-hide-descendants` because the text inside should not be focused.\n  const _importantForAccessibility =\n    importantForAccessibility === 'no'\n      ? 'no-hide-descendants'\n      : importantForAccessibility;\n\n  return (\n    <NativeTouchable\n      accessible={accessible}\n      accessibilityActions={accessibilityActions}\n      onAccessibilityAction={onAccessibilityAction}\n      accessibilityLabel={ariaLabel || accessibilityLabel}\n      accessibilityHint={accessibilityHint}\n      accessibilityLanguage={accessibilityLanguage}\n      accessibilityRole=\"button\"\n      accessibilityState={_accessibilityState}\n      importantForAccessibility={_importantForAccessibility}\n      hasTVPreferredFocus={hasTVPreferredFocus}\n      nextFocusDown={nextFocusDown}\n      nextFocusForward={nextFocusForward}\n      nextFocusLeft={nextFocusLeft}\n      nextFocusRight={nextFocusRight}\n      nextFocusUp={nextFocusUp}\n      testID={testID}\n      disabled={disabled}\n      onPress={onPress}\n      touchSoundDisabled={touchSoundDisabled}\n      // $FlowFixMe[incompatible-exact]\n      // $FlowFixMe[prop-missing]\n      // $FlowFixMe[incompatible-type-arg]\n      ref={ref}>\n      <View style={buttonStyles}>\n        <Text style={textStyles} disabled={disabled}>\n          {formattedTitle}\n        </Text>\n      </View>\n    </NativeTouchable>\n  );\n};\n\nButton.displayName = 'Button';\n\nconst styles = StyleSheet.create({\n  button: Platform.select({\n    ios: {},\n    android: {\n      elevation: 4,\n      // Material design blue from https://material.google.com/style/color.html#color-color-palette\n      backgroundColor: '#2196F3',\n      borderRadius: 2,\n    },\n  }),\n  text: {\n    textAlign: 'center',\n    margin: 8,\n    ...Platform.select({\n      ios: {\n        // iOS blue from https://developer.apple.com/ios/human-interface-guidelines/visual-design/color/\n        color: '#007AFF',\n        fontSize: 18,\n      },\n      android: {\n        color: 'white',\n        fontWeight: '500',\n      },\n    }),\n  },\n  buttonDisabled: Platform.select({\n    ios: {},\n    android: {\n      elevation: 0,\n      backgroundColor: '#dfdfdf',\n    },\n  }),\n  textDisabled: Platform.select({\n    ios: {\n      color: '#cdcdcd',\n    },\n    android: {\n      color: '#a1a1a1',\n    },\n  }),\n});\n\nexport default Button;\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 * @flow strict-local\n * @format\n */\n\nimport type {TextStyleProp} from '../StyleSheet/StyleSheet';\nimport type {____TextStyle_Internal as TextStyleInternal} from '../StyleSheet/StyleSheetTypes';\nimport type {GestureResponderEvent} from '../Types/CoreEventTypes';\nimport type {NativeTextProps} from './TextNativeComponent';\nimport type {PressRetentionOffset, TextProps} from './TextProps';\n\nimport * as PressabilityDebug from '../Pressability/PressabilityDebug';\nimport usePressability from '../Pressability/usePressability';\nimport flattenStyle from '../StyleSheet/flattenStyle';\nimport processColor from '../StyleSheet/processColor';\nimport Platform from '../Utilities/Platform';\nimport TextAncestorContext from './TextAncestorContext';\nimport {NativeText, NativeVirtualText} from './TextNativeComponent';\nimport * as React from 'react';\nimport {useContext, useMemo, useState} from 'react';\n\nexport type {TextProps} from './TextProps';\n\ntype TextForwardRef = React.ElementRef<\n  typeof NativeText | typeof NativeVirtualText,\n>;\n\n/**\n * Text is the fundamental component for displaying text.\n *\n * @see https://reactnative.dev/docs/text\n */\nconst TextImpl: component(\n  ref?: React.RefSetter<TextForwardRef>,\n  ...props: TextProps\n) = ({\n  ref: forwardedRef,\n  accessible,\n  accessibilityLabel,\n  accessibilityState,\n  allowFontScaling,\n  'aria-busy': ariaBusy,\n  'aria-checked': ariaChecked,\n  'aria-disabled': ariaDisabled,\n  'aria-expanded': ariaExpanded,\n  'aria-label': ariaLabel,\n  'aria-selected': ariaSelected,\n  children,\n  ellipsizeMode,\n  disabled,\n  id,\n  nativeID,\n  numberOfLines,\n  onLongPress,\n  onPress,\n  onPressIn,\n  onPressOut,\n  onResponderGrant,\n  onResponderMove,\n  onResponderRelease,\n  onResponderTerminate,\n  onResponderTerminationRequest,\n  onStartShouldSetResponder,\n  pressRetentionOffset,\n  selectable,\n  selectionColor,\n  suppressHighlighting,\n  style,\n  ...restProps\n}: {\n  ref?: React.RefSetter<TextForwardRef>,\n  ...TextProps,\n}) => {\n  const _accessibilityLabel = ariaLabel ?? accessibilityLabel;\n\n  let _accessibilityState: ?TextProps['accessibilityState'] =\n    accessibilityState;\n  if (\n    ariaBusy != null ||\n    ariaChecked != null ||\n    ariaDisabled != null ||\n    ariaExpanded != null ||\n    ariaSelected != null\n  ) {\n    if (_accessibilityState != null) {\n      _accessibilityState = {\n        busy: ariaBusy ?? _accessibilityState.busy,\n        checked: ariaChecked ?? _accessibilityState.checked,\n        disabled: ariaDisabled ?? _accessibilityState.disabled,\n        expanded: ariaExpanded ?? _accessibilityState.expanded,\n        selected: ariaSelected ?? _accessibilityState.selected,\n      };\n    } else {\n      _accessibilityState = {\n        busy: ariaBusy,\n        checked: ariaChecked,\n        disabled: ariaDisabled,\n        expanded: ariaExpanded,\n        selected: ariaSelected,\n      };\n    }\n  }\n\n  const _accessibilityStateDisabled = _accessibilityState?.disabled;\n  const _disabled = disabled ?? _accessibilityStateDisabled;\n\n  const isPressable =\n    (onPress != null ||\n      onLongPress != null ||\n      onStartShouldSetResponder != null) &&\n    _disabled !== true;\n\n  // TODO: Move this processing to the view configuration.\n  const _selectionColor =\n    selectionColor != null ? processColor(selectionColor) : undefined;\n\n  let _style = style;\n  if (__DEV__) {\n    if (PressabilityDebug.isEnabled() && onPress != null) {\n      _style = [style, {color: 'magenta'}];\n    }\n  }\n\n  let _numberOfLines = numberOfLines;\n  if (_numberOfLines != null && !(_numberOfLines >= 0)) {\n    if (__DEV__) {\n      console.error(\n        `'numberOfLines' in <Text> must be a non-negative number, received: ${_numberOfLines}. The value will be set to 0.`,\n      );\n    }\n    _numberOfLines = 0;\n  }\n\n  let _selectable = selectable;\n\n  let processedStyle = flattenStyle<TextStyleProp>(_style);\n  if (processedStyle != null) {\n    let overrides: ?{...TextStyleInternal} = null;\n    if (typeof processedStyle.fontWeight === 'number') {\n      overrides = overrides || ({}: {...TextStyleInternal});\n      overrides.fontWeight =\n        // $FlowFixMe[incompatible-cast]\n        (processedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']);\n    }\n\n    if (processedStyle.userSelect != null) {\n      _selectable = userSelectToSelectableMap[processedStyle.userSelect];\n      overrides = overrides || ({}: {...TextStyleInternal});\n      overrides.userSelect = undefined;\n    }\n\n    if (processedStyle.verticalAlign != null) {\n      overrides = overrides || ({}: {...TextStyleInternal});\n      overrides.textAlignVertical =\n        verticalAlignToTextAlignVerticalMap[processedStyle.verticalAlign];\n      overrides.verticalAlign = undefined;\n    }\n\n    if (overrides != null) {\n      // $FlowFixMe[incompatible-type]\n      _style = [_style, overrides];\n    }\n  }\n\n  const _nativeID = id ?? nativeID;\n\n  const hasTextAncestor = useContext(TextAncestorContext);\n  if (hasTextAncestor) {\n    if (isPressable) {\n      return (\n        <NativePressableVirtualText\n          ref={forwardedRef}\n          textProps={{\n            ...restProps,\n            accessibilityLabel: _accessibilityLabel,\n            accessibilityState: _accessibilityState,\n            nativeID: _nativeID,\n            numberOfLines: _numberOfLines,\n            selectable: _selectable,\n            selectionColor: _selectionColor,\n            style: _style,\n            disabled: disabled,\n            children,\n          }}\n          textPressabilityProps={{\n            onLongPress,\n            onPress,\n            onPressIn,\n            onPressOut,\n            onResponderGrant,\n            onResponderMove,\n            onResponderRelease,\n            onResponderTerminate,\n            onResponderTerminationRequest,\n            onStartShouldSetResponder,\n            pressRetentionOffset,\n            suppressHighlighting,\n          }}\n        />\n      );\n    }\n\n    return (\n      <NativeVirtualText\n        {...restProps}\n        accessibilityLabel={_accessibilityLabel}\n        accessibilityState={_accessibilityState}\n        nativeID={_nativeID}\n        numberOfLines={_numberOfLines}\n        ref={forwardedRef}\n        selectable={_selectable}\n        selectionColor={_selectionColor}\n        style={_style}\n        disabled={disabled}>\n        {children}\n      </NativeVirtualText>\n    );\n  }\n\n  // If the disabled prop and accessibilityState.disabled are out of sync but not both in\n  // falsy states we need to update the accessibilityState object to use the disabled prop.\n  if (\n    _disabled !== _accessibilityStateDisabled &&\n    ((_disabled != null && _disabled !== false) ||\n      (_accessibilityStateDisabled != null &&\n        _accessibilityStateDisabled !== false))\n  ) {\n    _accessibilityState = {..._accessibilityState, disabled: _disabled};\n  }\n\n  const _accessible = Platform.select({\n    ios: accessible !== false,\n    android:\n      accessible == null ? onPress != null || onLongPress != null : accessible,\n    default: accessible,\n  });\n\n  let nativeText = null;\n  if (isPressable) {\n    nativeText = (\n      <NativePressableText\n        ref={forwardedRef}\n        textProps={{\n          ...restProps,\n          accessibilityLabel: _accessibilityLabel,\n          accessibilityState: _accessibilityState,\n          accessible: _accessible,\n          allowFontScaling: allowFontScaling !== false,\n          disabled: _disabled,\n          ellipsizeMode: ellipsizeMode ?? 'tail',\n          nativeID: _nativeID,\n          numberOfLines: _numberOfLines,\n          selectable: _selectable,\n          selectionColor: _selectionColor,\n          style: _style,\n          children,\n        }}\n        textPressabilityProps={{\n          onLongPress,\n          onPress,\n          onPressIn,\n          onPressOut,\n          onResponderGrant,\n          onResponderMove,\n          onResponderRelease,\n          onResponderTerminate,\n          onResponderTerminationRequest,\n          onStartShouldSetResponder,\n          pressRetentionOffset,\n          suppressHighlighting,\n        }}\n      />\n    );\n  } else {\n    nativeText = (\n      <NativeText\n        {...restProps}\n        accessibilityLabel={_accessibilityLabel}\n        accessibilityState={_accessibilityState}\n        accessible={_accessible}\n        allowFontScaling={allowFontScaling !== false}\n        disabled={_disabled}\n        ellipsizeMode={ellipsizeMode ?? 'tail'}\n        nativeID={_nativeID}\n        numberOfLines={_numberOfLines}\n        ref={forwardedRef}\n        selectable={_selectable}\n        selectionColor={_selectionColor}\n        style={_style}>\n        {children}\n      </NativeText>\n    );\n  }\n\n  if (children == null) {\n    return nativeText;\n  }\n\n  // If the children do not contain a JSX element it would not be possible to have a\n  // nested `Text` component so we can skip adding the `TextAncestorContext` context wrapper\n  // which has a performance overhead. Since we do this for performance reasons we need\n  // to keep the check simple to avoid regressing overall perf. For this reason the\n  // `children.length` constant is set to `3`, this should be a reasonable tradeoff\n  // to capture the majority of `Text` uses but also not make this check too expensive.\n  if (Array.isArray(children) && children.length <= 3) {\n    let hasNonTextChild = false;\n    for (let child of children) {\n      if (child != null && typeof child === 'object') {\n        hasNonTextChild = true;\n        break;\n      }\n    }\n    if (!hasNonTextChild) {\n      return nativeText;\n    }\n  } else if (typeof children !== 'object') {\n    return nativeText;\n  }\n\n  return <TextAncestorContext value={true}>{nativeText}</TextAncestorContext>;\n};\n\nTextImpl.displayName = 'Text';\n\ntype TextPressabilityProps = $ReadOnly<{\n  onLongPress?: ?(event: GestureResponderEvent) => mixed,\n  onPress?: ?(event: GestureResponderEvent) => mixed,\n  onPressIn?: ?(event: GestureResponderEvent) => mixed,\n  onPressOut?: ?(event: GestureResponderEvent) => mixed,\n  onResponderGrant?: ?(event: GestureResponderEvent) => void,\n  onResponderMove?: ?(event: GestureResponderEvent) => void,\n  onResponderRelease?: ?(event: GestureResponderEvent) => void,\n  onResponderTerminate?: ?(event: GestureResponderEvent) => void,\n  onResponderTerminationRequest?: ?() => boolean,\n  onStartShouldSetResponder?: ?() => boolean,\n  pressRetentionOffset?: ?PressRetentionOffset,\n  suppressHighlighting?: ?boolean,\n}>;\n\n/**\n * Hook that handles setting up Pressability of Text components.\n *\n * NOTE: This hook is relatively expensive so it should only be used absolutely necessary.\n */\nfunction useTextPressability({\n  onLongPress,\n  onPress,\n  onPressIn,\n  onPressOut,\n  onResponderGrant,\n  onResponderMove,\n  onResponderRelease,\n  onResponderTerminate,\n  onResponderTerminationRequest,\n  onStartShouldSetResponder,\n  pressRetentionOffset,\n  suppressHighlighting,\n}: TextPressabilityProps) {\n  const [isHighlighted, setHighlighted] = useState(false);\n\n  // Setup pressability config and wrap callbacks needs to track the highlight state.\n  const config = useMemo(() => {\n    let _onPressIn = onPressIn;\n    let _onPressOut = onPressOut;\n\n    // Updating isHighlighted causes unnecessary re-renders for platforms that don't use it\n    // in the best case, and cause issues with text selection in the worst case. Forcing\n    // the isHighlighted prop to false on all platforms except iOS.\n    if (Platform.OS === 'ios') {\n      _onPressIn = (event: GestureResponderEvent) => {\n        setHighlighted(suppressHighlighting == null || !suppressHighlighting);\n        onPressIn?.(event);\n      };\n\n      _onPressOut = (event: GestureResponderEvent) => {\n        setHighlighted(false);\n        onPressOut?.(event);\n      };\n    }\n\n    return {\n      disabled: false,\n      pressRectOffset: pressRetentionOffset,\n      onLongPress,\n      onPress,\n      onPressIn: _onPressIn,\n      onPressOut: _onPressOut,\n    };\n  }, [\n    pressRetentionOffset,\n    onLongPress,\n    onPress,\n    onPressIn,\n    onPressOut,\n    suppressHighlighting,\n  ]);\n\n  // Init the pressability class\n  const eventHandlers = usePressability(config);\n\n  // Create NativeText event handlers which proxy events to pressability\n  const eventHandlersForText = useMemo(\n    () =>\n      eventHandlers == null\n        ? null\n        : {\n            onResponderGrant(event: GestureResponderEvent) {\n              eventHandlers.onResponderGrant(event);\n              if (onResponderGrant != null) {\n                onResponderGrant(event);\n              }\n            },\n            onResponderMove(event: GestureResponderEvent) {\n              eventHandlers.onResponderMove(event);\n              if (onResponderMove != null) {\n                onResponderMove(event);\n              }\n            },\n            onResponderRelease(event: GestureResponderEvent) {\n              eventHandlers.onResponderRelease(event);\n              if (onResponderRelease != null) {\n                onResponderRelease(event);\n              }\n            },\n            onResponderTerminate(event: GestureResponderEvent) {\n              eventHandlers.onResponderTerminate(event);\n              if (onResponderTerminate != null) {\n                onResponderTerminate(event);\n              }\n            },\n            onClick: eventHandlers.onClick,\n            onResponderTerminationRequest:\n              onResponderTerminationRequest != null\n                ? onResponderTerminationRequest\n                : eventHandlers.onResponderTerminationRequest,\n            onStartShouldSetResponder:\n              onStartShouldSetResponder != null\n                ? onStartShouldSetResponder\n                : eventHandlers.onStartShouldSetResponder,\n          },\n    [\n      eventHandlers,\n      onResponderGrant,\n      onResponderMove,\n      onResponderRelease,\n      onResponderTerminate,\n      onResponderTerminationRequest,\n      onStartShouldSetResponder,\n    ],\n  );\n\n  // Return the highlight state and NativeText event handlers\n  return useMemo(\n    () => [isHighlighted, eventHandlersForText],\n    [isHighlighted, eventHandlersForText],\n  );\n}\n\ntype NativePressableTextProps = $ReadOnly<{\n  textProps: NativeTextProps,\n  textPressabilityProps: TextPressabilityProps,\n}>;\n\n/**\n * Wrap the NativeVirtualText component and initialize pressability.\n *\n * This logic is split out from the main Text component to enable the more\n * expensive pressability logic to be only initialized when needed.\n */\nconst NativePressableVirtualText: component(\n  ref: React.RefSetter<TextForwardRef>,\n  ...props: NativePressableTextProps\n) = ({\n  ref: forwardedRef,\n  textProps,\n  textPressabilityProps,\n}: {\n  ref?: React.RefSetter<TextForwardRef>,\n  ...NativePressableTextProps,\n}) => {\n  const [isHighlighted, eventHandlersForText] = useTextPressability(\n    textPressabilityProps,\n  );\n\n  return (\n    <NativeVirtualText\n      {...textProps}\n      {...eventHandlersForText}\n      isHighlighted={isHighlighted}\n      isPressable={true}\n      ref={forwardedRef}\n    />\n  );\n};\n\n/**\n * Wrap the NativeText component and initialize pressability.\n *\n * This logic is split out from the main Text component to enable the more\n * expensive pressability logic to be only initialized when needed.\n */\nconst NativePressableText: component(\n  ref: React.RefSetter<TextForwardRef>,\n  ...props: NativePressableTextProps\n) = ({\n  ref: forwardedRef,\n  textProps,\n  textPressabilityProps,\n}: {\n  ref?: React.RefSetter<TextForwardRef>,\n  ...NativePressableTextProps,\n}) => {\n  const [isHighlighted, eventHandlersForText] = useTextPressability(\n    textPressabilityProps,\n  );\n\n  return (\n    <NativeText\n      {...textProps}\n      {...eventHandlersForText}\n      isHighlighted={isHighlighted}\n      isPressable={true}\n      ref={forwardedRef}\n    />\n  );\n};\n\nconst userSelectToSelectableMap = {\n  auto: true,\n  text: true,\n  none: false,\n  contain: true,\n  all: true,\n};\n\nconst verticalAlignToTextAlignVerticalMap = {\n  auto: 'auto',\n  top: 'top',\n  bottom: 'bottom',\n  middle: 'center',\n} as const;\n\nexport default TextImpl;\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 * @flow strict-local\n * @format\n */\n\nimport type {ColorValue} from '../StyleSheet/StyleSheet';\n\nimport View from '../Components/View/View';\nimport normalizeColor from '../StyleSheet/normalizeColor';\nimport {type RectOrSize, normalizeRect} from '../StyleSheet/Rect';\nimport * as React from 'react';\n\ntype Props = $ReadOnly<{\n  color: ColorValue,\n  hitSlop: ?RectOrSize,\n}>;\n\n/**\n * Displays a debug overlay to visualize press targets when enabled via the\n * React Native Inspector. Calls to this module should be guarded by `__DEV__`,\n * for example:\n *\n *   return (\n *     <View>\n *       {children}\n *       {__DEV__ ? (\n *         <PressabilityDebugView color=\"...\" hitSlop={props.hitSlop} />\n *       ) : null}\n *     </View>\n *   );\n *\n */\nexport function PressabilityDebugView(props: Props): React.Node {\n  if (__DEV__) {\n    if (isEnabled()) {\n      const normalizedColor = normalizeColor(props.color);\n      if (typeof normalizedColor !== 'number') {\n        return null;\n      }\n      const baseColor =\n        '#' + (normalizedColor ?? 0).toString(16).padStart(8, '0');\n      const hitSlop = normalizeRect(props.hitSlop);\n      return (\n        <View\n          pointerEvents=\"none\"\n          style={\n            // eslint-disable-next-line react-native/no-inline-styles\n            {\n              backgroundColor: baseColor.slice(0, -2) + '0F', // 15%\n              borderColor: baseColor.slice(0, -2) + '55', // 85%\n              borderStyle: 'dashed',\n              borderWidth: 1,\n              bottom: -(hitSlop?.bottom ?? 0),\n              left: -(hitSlop?.left ?? 0),\n              position: 'absolute',\n              right: -(hitSlop?.right ?? 0),\n              top: -(hitSlop?.top ?? 0),\n            }\n          }\n        />\n      );\n    }\n  }\n  return null;\n}\n\nlet isDebugEnabled = false;\n\nexport function isEnabled(): boolean {\n  if (__DEV__) {\n    return isDebugEnabled;\n  }\n  return false;\n}\n\nexport function setEnabled(value: boolean): void {\n  if (__DEV__) {\n    isDebugEnabled = value;\n  }\n}\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 * @flow strict\n * @format\n */\n\nexport type Rect = $ReadOnly<{\n  bottom?: ?number,\n  left?: ?number,\n  right?: ?number,\n  top?: ?number,\n}>;\n\nexport type Insets = Rect;\nexport type RectOrSize = Rect | number;\n\nexport function createSquare(size: number): Rect {\n  return {bottom: size, left: size, right: size, top: size};\n}\n\nexport function normalizeRect(rectOrSize: ?RectOrSize): ?Rect {\n  return typeof rectOrSize === 'number' ? createSquare(rectOrSize) : rectOrSize;\n}\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 * @flow strict-local\n * @format\n */\n\nimport Pressability, {\n  type EventHandlers,\n  type PressabilityConfig,\n} from './Pressability';\nimport {useEffect, useRef} from 'react';\n\ndeclare function usePressability(config: PressabilityConfig): EventHandlers;\ndeclare function usePressability(config: null | void): null | EventHandlers;\n\n/**\n * Creates a persistent instance of `Pressability` that automatically configures\n * itself and resets. Accepts null `config` to support lazy initialization. Once\n * initialized, will not un-initialize until the component has been unmounted.\n *\n * In order to use `usePressability`, do the following:\n *\n *   const config = useMemo(...);\n *   const eventHandlers = usePressability(config);\n *   const pressableView = <View {...eventHandlers} />;\n *\n */\nexport default function usePressability(\n  config: ?PressabilityConfig,\n): null | EventHandlers {\n  const pressabilityRef = useRef<?Pressability>(null);\n  if (config != null && pressabilityRef.current == null) {\n    pressabilityRef.current = new Pressability(config);\n  }\n  const pressability = pressabilityRef.current;\n\n  // On the initial mount, this is a no-op. On updates, `pressability` will be\n  // re-configured to use the new configuration.\n  useEffect(() => {\n    if (config != null && pressability != null) {\n      pressability.configure(config);\n    }\n  }, [config, pressability]);\n\n  // On unmount, reset pending state and timers inside `pressability`. This is\n  // a separate effect because we do not want to reset when `config` changes.\n  useEffect(() => {\n    if (pressability != null) {\n      return () => {\n        pressability.reset();\n      };\n    }\n  }, [pressability]);\n\n  return pressability == null ? null : pressability.getEventHandlers();\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {HostInstance} from '../../src/private/types/HostInstance';\nimport type {\n  BlurEvent,\n  FocusEvent,\n  GestureResponderEvent,\n  MouseEvent,\n} from '../Types/CoreEventTypes';\n\nimport SoundManager from '../Components/Sound/SoundManager';\nimport ReactNativeFeatureFlags from '../ReactNative/ReactNativeFeatureFlags';\nimport UIManager from '../ReactNative/UIManager';\nimport {type RectOrSize, normalizeRect} from '../StyleSheet/Rect';\nimport {type PointerEvent} from '../Types/CoreEventTypes';\nimport Platform from '../Utilities/Platform';\nimport {isHoverEnabled} from './HoverState';\nimport PressabilityPerformanceEventEmitter from './PressabilityPerformanceEventEmitter.js';\nimport {type PressabilityTouchSignal as TouchSignal} from './PressabilityTypes.js';\nimport invariant from 'invariant';\n\nexport type PressabilityConfig = $ReadOnly<{\n  /**\n   * Whether a press gesture can be interrupted by a parent gesture such as a\n   * scroll event. Defaults to true.\n   */\n  cancelable?: ?boolean,\n\n  /**\n   * Whether to disable initialization of the press gesture.\n   */\n  disabled?: ?boolean,\n\n  /**\n   * Amount to extend the `VisualRect` by to create `HitRect`.\n   */\n  hitSlop?: ?RectOrSize,\n\n  /**\n   * Amount to extend the `HitRect` by to create `PressRect`.\n   */\n  pressRectOffset?: ?RectOrSize,\n\n  /**\n   * Whether to disable the systemm sound when `onPress` fires on Android.\n   **/\n  android_disableSound?: ?boolean,\n\n  /**\n   * Duration to wait after hover in before calling `onHoverIn`.\n   */\n  delayHoverIn?: ?number,\n\n  /**\n   * Duration to wait after hover out before calling `onHoverOut`.\n   */\n  delayHoverOut?: ?number,\n\n  /**\n   * Duration (in addition to `delayPressIn`) after which a press gesture is\n   * considered a long press gesture. Defaults to 500 (milliseconds).\n   */\n  delayLongPress?: ?number,\n\n  /**\n   * Duration to wait after press down before calling `onPressIn`.\n   */\n  delayPressIn?: ?number,\n\n  /**\n   * Duration to wait after letting up before calling `onPressOut`.\n   */\n  delayPressOut?: ?number,\n\n  /**\n   * Minimum duration to wait between calling `onPressIn` and `onPressOut`.\n   */\n  minPressDuration?: ?number,\n\n  /**\n   * Called after the element loses focus.\n   */\n  onBlur?: ?(event: BlurEvent) => mixed,\n\n  /**\n   * Called after the element is focused.\n   */\n  onFocus?: ?(event: FocusEvent) => mixed,\n\n  /**\n   * Called when the hover is activated to provide visual feedback.\n   */\n  onHoverIn?: ?(event: MouseEvent) => mixed,\n\n  /**\n   * Called when the hover is deactivated to undo visual feedback.\n   */\n  onHoverOut?: ?(event: MouseEvent) => mixed,\n\n  /**\n   * Called when a long press gesture has been triggered.\n   */\n  onLongPress?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Called when a press gesture has been triggered.\n   */\n  onPress?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Called when the press is activated to provide visual feedback.\n   */\n  onPressIn?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Called when the press location moves. (This should rarely be used.)\n   */\n  onPressMove?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Called when the press is deactivated to undo visual feedback.\n   */\n  onPressOut?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Whether to prevent any other native components from becoming responder\n   * while this pressable is responder.\n   */\n  blockNativeResponder?: ?boolean,\n}>;\n\nexport type EventHandlers = $ReadOnly<{\n  onBlur: (event: BlurEvent) => void,\n  onClick: (event: GestureResponderEvent) => void,\n  onFocus: (event: FocusEvent) => void,\n  onMouseEnter?: (event: MouseEvent) => void,\n  onMouseLeave?: (event: MouseEvent) => void,\n  onPointerEnter?: (event: PointerEvent) => void,\n  onPointerLeave?: (event: PointerEvent) => void,\n  onResponderGrant: (event: GestureResponderEvent) => void | boolean,\n  onResponderMove: (event: GestureResponderEvent) => void,\n  onResponderRelease: (event: GestureResponderEvent) => void,\n  onResponderTerminate: (event: GestureResponderEvent) => void,\n  onResponderTerminationRequest: () => boolean,\n  onStartShouldSetResponder: () => boolean,\n}>;\n\ntype TouchState =\n  | 'NOT_RESPONDER'\n  | 'RESPONDER_INACTIVE_PRESS_IN'\n  | 'RESPONDER_INACTIVE_PRESS_OUT'\n  | 'RESPONDER_ACTIVE_PRESS_IN'\n  | 'RESPONDER_ACTIVE_PRESS_OUT'\n  | 'RESPONDER_ACTIVE_LONG_PRESS_IN'\n  | 'RESPONDER_ACTIVE_LONG_PRESS_OUT'\n  | 'ERROR';\n\nconst Transitions = Object.freeze({\n  NOT_RESPONDER: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n    RESPONDER_RELEASE: 'ERROR',\n    RESPONDER_TERMINATED: 'ERROR',\n    ENTER_PRESS_RECT: 'ERROR',\n    LEAVE_PRESS_RECT: 'ERROR',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  RESPONDER_INACTIVE_PRESS_IN: {\n    DELAY: 'RESPONDER_ACTIVE_PRESS_IN',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  RESPONDER_INACTIVE_PRESS_OUT: {\n    DELAY: 'RESPONDER_ACTIVE_PRESS_OUT',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  RESPONDER_ACTIVE_PRESS_IN: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n  },\n  RESPONDER_ACTIVE_PRESS_OUT: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_IN: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  ERROR: {\n    DELAY: 'NOT_RESPONDER',\n    RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'NOT_RESPONDER',\n    LEAVE_PRESS_RECT: 'NOT_RESPONDER',\n    LONG_PRESS_DETECTED: 'NOT_RESPONDER',\n  },\n} as const);\n\nconst isActiveSignal = (signal: TouchState) =>\n  signal === 'RESPONDER_ACTIVE_PRESS_IN' ||\n  signal === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n\nconst isActivationSignal = (signal: TouchState) =>\n  signal === 'RESPONDER_ACTIVE_PRESS_OUT' ||\n  signal === 'RESPONDER_ACTIVE_PRESS_IN';\n\nconst isPressInSignal = (signal: TouchState) =>\n  signal === 'RESPONDER_INACTIVE_PRESS_IN' ||\n  signal === 'RESPONDER_ACTIVE_PRESS_IN' ||\n  signal === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n\nconst isTerminalSignal = (signal: TouchSignal) =>\n  signal === 'RESPONDER_TERMINATED' || signal === 'RESPONDER_RELEASE';\n\nconst DEFAULT_LONG_PRESS_DELAY_MS = 500;\nconst DEFAULT_PRESS_RECT_OFFSETS = {\n  bottom: 30,\n  left: 20,\n  right: 20,\n  top: 20,\n};\nconst DEFAULT_MIN_PRESS_DURATION = 130;\n\nconst DEFAULT_LONG_PRESS_DEACTIVATION_DISTANCE = 10;\nlet longPressDeactivationDistance = DEFAULT_LONG_PRESS_DEACTIVATION_DISTANCE;\n\n/**\n * Pressability implements press handling capabilities.\n *\n * =========================== Pressability Tutorial ===========================\n *\n * The `Pressability` class helps you create press interactions by analyzing the\n * geometry of elements and observing when another responder (e.g. ScrollView)\n * has stolen the touch lock. It offers hooks for your component to provide\n * interaction feedback to the user:\n *\n * - When a press has activated (e.g. highlight an element)\n * - When a press has deactivated (e.g. un-highlight an element)\n * - When a press should trigger an action, meaning it activated and deactivated\n *   while within the geometry of the element without the lock being stolen.\n *\n * A high quality interaction isn't as simple as you might think. There should\n * be a slight delay before activation. Moving your finger beyond an element's\n * bounds should trigger deactivation, but moving the same finger back within an\n * element's bounds should trigger reactivation.\n *\n * This should be consumed by functional components using `usePressability`. The\n * following steps are only relevant for using `Pressability` in classes:\n *\n * 1. Instantiate `Pressability` and store it on your component's state.\n *\n *    state = {\n *      pressability: new Pressability({\n *        // ...\n *      }),\n *    };\n *\n * 2. Choose the rendered component who should collect the press events. On that\n *    element, spread `pressability.getEventHandlers()` into its props.\n *\n *    return (\n *      <View {...this.state.pressability.getEventHandlers()} />\n *    );\n *\n * 3. Update `Pressability` when your component mounts, updates, and unmounts.\n *\n *    componentDidMount() {\n *      this.state.pressability.configure(...);\n *    }\n *\n *    componentDidUpdate() {\n *      this.state.pressability.configure(...);\n *    }\n *\n *    componentWillUnmount() {\n *      this.state.pressability.reset();\n *    }\n *\n * ==================== Pressability Implementation Details ====================\n *\n * `Pressability` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * # Geometry\n *\n *  ┌────────────────────────┐\n *  │  ┌──────────────────┐  │ - Presses start anywhere within `HitRect`, which\n *  │  │  ┌────────────┐  │  │   is expanded via the prop `hitSlop`.\n *  │  │  │ VisualRect │  │  │\n *  │  │  └────────────┘  │  │ - When pressed down for sufficient amount of time\n *  │  │    HitRect       │  │   before letting up, `VisualRect` activates for\n *  │  └──────────────────┘  │   as long as the press stays within `PressRect`.\n *  │       PressRect    o   │\n *  └────────────────────│───┘\n *          Out Region   └────── `PressRect`, which is expanded via the prop\n *                               `pressRectOffset`, allows presses to move\n *                               beyond `HitRect` while maintaining activation\n *                               and being eligible for a \"press\".\n *\n * # State Machine\n *\n * ┌───────────────┐ ◀──── RESPONDER_RELEASE\n * │ NOT_RESPONDER │\n * └───┬───────────┘ ◀──── RESPONDER_TERMINATED\n *     │\n *     │ RESPONDER_GRANT (HitRect)\n *     │\n *     ▼\n * ┌─────────────────────┐          ┌───────────────────┐              ┌───────────────────┐\n * │ RESPONDER_INACTIVE_ │  DELAY   │ RESPONDER_ACTIVE_ │  T + DELAY   │ RESPONDER_ACTIVE_ │\n * │ PRESS_IN            ├────────▶ │ PRESS_IN          ├────────────▶ │ LONG_PRESS_IN     │\n * └─┬───────────────────┘          └─┬─────────────────┘              └─┬─────────────────┘\n *   │           ▲                    │           ▲                      │           ▲\n *   │LEAVE_     │                    │LEAVE_     │                      │LEAVE_     │\n *   │PRESS_RECT │ENTER_              │PRESS_RECT │ENTER_                │PRESS_RECT │ENTER_\n *   │           │PRESS_RECT          │           │PRESS_RECT            │           │PRESS_RECT\n *   ▼           │                    ▼           │                      ▼           │\n * ┌─────────────┴───────┐          ┌─────────────┴─────┐              ┌─────────────┴─────┐\n * │ RESPONDER_INACTIVE_ │  DELAY   │ RESPONDER_ACTIVE_ │              │ RESPONDER_ACTIVE_ │\n * │ PRESS_OUT           ├────────▶ │ PRESS_OUT         │              │ LONG_PRESS_OUT    │\n * └─────────────────────┘          └───────────────────┘              └───────────────────┘\n *\n * T + DELAY => LONG_PRESS_DELAY + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the invocation of `onPress` and `onLongPress` that occur when a\n * responder is release while in the \"press in\" states.\n */\nexport default class Pressability {\n  _config: PressabilityConfig;\n  _eventHandlers: ?EventHandlers = null;\n  _hoverInDelayTimeout: ?TimeoutID = null;\n  _hoverOutDelayTimeout: ?TimeoutID = null;\n  _isHovered: boolean = false;\n  _longPressDelayTimeout: ?TimeoutID = null;\n  _pressDelayTimeout: ?TimeoutID = null;\n  _pressOutDelayTimeout: ?TimeoutID = null;\n  _responderID: ?number | HostInstance = null;\n  _responderRegion: ?$ReadOnly<{\n    bottom: number,\n    left: number,\n    right: number,\n    top: number,\n  }> = null;\n  _touchActivatePosition: ?$ReadOnly<{\n    pageX: number,\n    pageY: number,\n  }>;\n  _touchActivateTime: ?number;\n  _touchState: TouchState = 'NOT_RESPONDER';\n\n  constructor(config: PressabilityConfig) {\n    this.configure(config);\n  }\n\n  configure(config: PressabilityConfig): void {\n    this._config = config;\n  }\n\n  /**\n   * Resets any pending timers. This should be called on unmount.\n   */\n  reset(): void {\n    this._cancelHoverInDelayTimeout();\n    this._cancelHoverOutDelayTimeout();\n    this._cancelLongPressDelayTimeout();\n    this._cancelPressDelayTimeout();\n    this._cancelPressOutDelayTimeout();\n\n    // Ensure that, if any async event handlers are fired after unmount\n    // due to a race, we don't call any configured callbacks.\n    this._config = Object.freeze({});\n  }\n\n  /**\n   * Returns a set of props to spread into the interactive element.\n   */\n  getEventHandlers(): EventHandlers {\n    if (this._eventHandlers == null) {\n      this._eventHandlers = this._createEventHandlers();\n    }\n    return this._eventHandlers;\n  }\n\n  static setLongPressDeactivationDistance(distance: number): void {\n    longPressDeactivationDistance = distance;\n  }\n\n  _createEventHandlers(): EventHandlers {\n    const focusEventHandlers = {\n      onBlur: (event: BlurEvent): void => {\n        const {onBlur} = this._config;\n        if (onBlur != null) {\n          onBlur(event);\n        }\n      },\n      onFocus: (event: FocusEvent): void => {\n        const {onFocus} = this._config;\n        if (onFocus != null) {\n          onFocus(event);\n        }\n      },\n    };\n\n    const responderEventHandlers = {\n      onStartShouldSetResponder: (): boolean => {\n        const {disabled} = this._config;\n        return !disabled ?? true;\n      },\n\n      onResponderGrant: (event: GestureResponderEvent): void | boolean => {\n        event.persist();\n\n        this._cancelPressOutDelayTimeout();\n\n        this._responderID = event.currentTarget;\n        this._touchState = 'NOT_RESPONDER';\n        this._receiveSignal('RESPONDER_GRANT', event);\n\n        const delayPressIn = normalizeDelay(this._config.delayPressIn);\n        if (delayPressIn > 0) {\n          this._pressDelayTimeout = setTimeout(() => {\n            this._receiveSignal('DELAY', event);\n          }, delayPressIn);\n        } else {\n          this._receiveSignal('DELAY', event);\n        }\n\n        const delayLongPress = normalizeDelay(\n          this._config.delayLongPress,\n          10,\n          DEFAULT_LONG_PRESS_DELAY_MS - delayPressIn,\n        );\n        this._longPressDelayTimeout = setTimeout(() => {\n          this._handleLongPress(event);\n        }, delayLongPress + delayPressIn);\n\n        return this._config.blockNativeResponder === true;\n      },\n\n      onResponderMove: (event: GestureResponderEvent): void => {\n        const {onPressMove} = this._config;\n        if (onPressMove != null) {\n          onPressMove(event);\n        }\n\n        // Region may not have finished being measured, yet.\n        const responderRegion = this._responderRegion;\n        if (responderRegion == null) {\n          return;\n        }\n\n        const touch = getTouchFromPressEvent(event);\n        if (touch == null) {\n          this._cancelLongPressDelayTimeout();\n          this._receiveSignal('LEAVE_PRESS_RECT', event);\n          return;\n        }\n\n        if (this._touchActivatePosition != null) {\n          const deltaX = this._touchActivatePosition.pageX - touch.pageX;\n          const deltaY = this._touchActivatePosition.pageY - touch.pageY;\n          if (Math.hypot(deltaX, deltaY) > longPressDeactivationDistance) {\n            this._cancelLongPressDelayTimeout();\n          }\n        }\n\n        if (this._isTouchWithinResponderRegion(touch, responderRegion)) {\n          this._receiveSignal('ENTER_PRESS_RECT', event);\n        } else {\n          this._cancelLongPressDelayTimeout();\n          this._receiveSignal('LEAVE_PRESS_RECT', event);\n        }\n      },\n\n      onResponderRelease: (event: GestureResponderEvent): void => {\n        this._receiveSignal('RESPONDER_RELEASE', event);\n      },\n\n      onResponderTerminate: (event: GestureResponderEvent): void => {\n        this._receiveSignal('RESPONDER_TERMINATED', event);\n      },\n\n      onResponderTerminationRequest: (): boolean => {\n        const {cancelable} = this._config;\n        return cancelable ?? true;\n      },\n\n      onClick: (event: GestureResponderEvent): void => {\n        // If event has `pointerType`, it was emitted from a PointerEvent and\n        // we should ignore it to avoid triggering `onPress` twice.\n        if (event?.nativeEvent?.hasOwnProperty?.('pointerType')) {\n          return;\n        }\n\n        // for non-pointer click events (e.g. accessibility clicks), we should only dispatch when we're the \"real\" target\n        // in particular, we shouldn't respond to clicks from nested pressables\n        if (event?.currentTarget !== event?.target) {\n          event?.stopPropagation();\n          return;\n        }\n\n        const {onPress, disabled} = this._config;\n        if (onPress != null && disabled !== true) {\n          onPress(event);\n        }\n      },\n    };\n\n    if (process.env.NODE_ENV === 'test') {\n      // We are setting this in order to find this node in ReactNativeTestTools\n      // $FlowFixMe[prop-missing]\n      responderEventHandlers.onStartShouldSetResponder.testOnly_pressabilityConfig =\n        () => this._config;\n    }\n\n    if (\n      ReactNativeFeatureFlags.shouldPressibilityUseW3CPointerEventsForHover()\n    ) {\n      const hoverPointerEvents = {\n        onPointerEnter: (undefined: void | (PointerEvent => void)),\n        onPointerLeave: (undefined: void | (PointerEvent => void)),\n      };\n      const {onHoverIn, onHoverOut} = this._config;\n      if (onHoverIn != null) {\n        hoverPointerEvents.onPointerEnter = (event: PointerEvent) => {\n          this._isHovered = true;\n          this._cancelHoverOutDelayTimeout();\n          if (onHoverIn != null) {\n            const delayHoverIn = normalizeDelay(this._config.delayHoverIn);\n            if (delayHoverIn > 0) {\n              event.persist();\n              this._hoverInDelayTimeout = setTimeout(() => {\n                onHoverIn(convertPointerEventToMouseEvent(event));\n              }, delayHoverIn);\n            } else {\n              onHoverIn(convertPointerEventToMouseEvent(event));\n            }\n          }\n        };\n      }\n      if (onHoverOut != null) {\n        hoverPointerEvents.onPointerLeave = (event: PointerEvent) => {\n          if (this._isHovered) {\n            this._isHovered = false;\n            this._cancelHoverInDelayTimeout();\n            if (onHoverOut != null) {\n              const delayHoverOut = normalizeDelay(this._config.delayHoverOut);\n              if (delayHoverOut > 0) {\n                event.persist();\n                this._hoverOutDelayTimeout = setTimeout(() => {\n                  onHoverOut(convertPointerEventToMouseEvent(event));\n                }, delayHoverOut);\n              } else {\n                onHoverOut(convertPointerEventToMouseEvent(event));\n              }\n            }\n          }\n        };\n      }\n      return {\n        ...focusEventHandlers,\n        ...responderEventHandlers,\n        ...hoverPointerEvents,\n      };\n    } else {\n      const mouseEventHandlers =\n        Platform.OS === 'ios' || Platform.OS === 'android'\n          ? null\n          : {\n              onMouseEnter: (event: MouseEvent): void => {\n                if (isHoverEnabled()) {\n                  this._isHovered = true;\n                  this._cancelHoverOutDelayTimeout();\n                  const {onHoverIn} = this._config;\n                  if (onHoverIn != null) {\n                    const delayHoverIn = normalizeDelay(\n                      this._config.delayHoverIn,\n                    );\n                    if (delayHoverIn > 0) {\n                      event.persist();\n                      this._hoverInDelayTimeout = setTimeout(() => {\n                        onHoverIn(event);\n                      }, delayHoverIn);\n                    } else {\n                      onHoverIn(event);\n                    }\n                  }\n                }\n              },\n\n              onMouseLeave: (event: MouseEvent): void => {\n                if (this._isHovered) {\n                  this._isHovered = false;\n                  this._cancelHoverInDelayTimeout();\n                  const {onHoverOut} = this._config;\n                  if (onHoverOut != null) {\n                    const delayHoverOut = normalizeDelay(\n                      this._config.delayHoverOut,\n                    );\n                    if (delayHoverOut > 0) {\n                      event.persist();\n                      this._hoverInDelayTimeout = setTimeout(() => {\n                        onHoverOut(event);\n                      }, delayHoverOut);\n                    } else {\n                      onHoverOut(event);\n                    }\n                  }\n                }\n              },\n            };\n      return {\n        ...focusEventHandlers,\n        ...responderEventHandlers,\n        ...mouseEventHandlers,\n      };\n    }\n  }\n\n  /**\n   * Receives a state machine signal, performs side effects of the transition\n   * and stores the new state. Validates the transition as well.\n   */\n  _receiveSignal(signal: TouchSignal, event: GestureResponderEvent): void {\n    // Especially on iOS, not all events have timestamps associated.\n    // For telemetry purposes, this doesn't matter too much, as long as *some* do.\n    // Since the native timestamp is integral for logging telemetry, just skip\n    // events if they don't have a timestamp attached.\n    if (event.nativeEvent.timestamp != null) {\n      PressabilityPerformanceEventEmitter.emitEvent(() => {\n        return {\n          signal,\n          nativeTimestamp: event.nativeEvent.timestamp,\n        };\n      });\n    }\n\n    const prevState = this._touchState;\n    const nextState = Transitions[prevState]?.[signal];\n    if (this._responderID == null && signal === 'RESPONDER_RELEASE') {\n      return;\n    }\n    invariant(\n      nextState != null && nextState !== 'ERROR',\n      'Pressability: Invalid signal `%s` for state `%s` on responder: %s',\n      signal,\n      prevState,\n      typeof this._responderID === 'number'\n        ? this._responderID\n        : '<<host component>>',\n    );\n    if (prevState !== nextState) {\n      this._performTransitionSideEffects(prevState, nextState, signal, event);\n      this._touchState = nextState;\n    }\n  }\n\n  /**\n   * Performs a transition between touchable states and identify any activations\n   * or deactivations (and callback invocations).\n   */\n  _performTransitionSideEffects(\n    prevState: TouchState,\n    nextState: TouchState,\n    signal: TouchSignal,\n    event: GestureResponderEvent,\n  ): void {\n    if (isTerminalSignal(signal)) {\n      this._touchActivatePosition = null;\n      this._cancelLongPressDelayTimeout();\n    }\n\n    const isInitialTransition =\n      prevState === 'NOT_RESPONDER' &&\n      nextState === 'RESPONDER_INACTIVE_PRESS_IN';\n\n    const isActivationTransition =\n      !isActivationSignal(prevState) && isActivationSignal(nextState);\n\n    if (isInitialTransition || isActivationTransition) {\n      this._measureResponderRegion();\n    }\n\n    if (isPressInSignal(prevState) && signal === 'LONG_PRESS_DETECTED') {\n      const {onLongPress} = this._config;\n      if (onLongPress != null) {\n        onLongPress(event);\n      }\n    }\n\n    const isPrevActive = isActiveSignal(prevState);\n    const isNextActive = isActiveSignal(nextState);\n\n    if (!isPrevActive && isNextActive) {\n      this._activate(event);\n    } else if (isPrevActive && !isNextActive) {\n      this._deactivate(event);\n    }\n\n    if (isPressInSignal(prevState) && signal === 'RESPONDER_RELEASE') {\n      // If we never activated (due to delays), activate and deactivate now.\n      if (!isNextActive && !isPrevActive) {\n        this._activate(event);\n        this._deactivate(event);\n      }\n      const {onLongPress, onPress, android_disableSound} = this._config;\n      if (onPress != null) {\n        const isPressCanceledByLongPress =\n          onLongPress != null && prevState === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n        if (!isPressCanceledByLongPress) {\n          if (Platform.OS === 'android' && android_disableSound !== true) {\n            SoundManager.playTouchSound();\n          }\n          onPress(event);\n        }\n      }\n    }\n\n    this._cancelPressDelayTimeout();\n  }\n\n  _activate(event: GestureResponderEvent): void {\n    const {onPressIn} = this._config;\n    const {pageX, pageY} = getTouchFromPressEvent(event);\n    this._touchActivatePosition = {pageX, pageY};\n    this._touchActivateTime = Date.now();\n    if (onPressIn != null) {\n      onPressIn(event);\n    }\n  }\n\n  _deactivate(event: GestureResponderEvent): void {\n    const {onPressOut} = this._config;\n    if (onPressOut != null) {\n      const minPressDuration = normalizeDelay(\n        this._config.minPressDuration,\n        0,\n        DEFAULT_MIN_PRESS_DURATION,\n      );\n      const pressDuration = Date.now() - (this._touchActivateTime ?? 0);\n      const delayPressOut = Math.max(\n        minPressDuration - pressDuration,\n        normalizeDelay(this._config.delayPressOut),\n      );\n      if (delayPressOut > 0) {\n        event.persist();\n        this._pressOutDelayTimeout = setTimeout(() => {\n          onPressOut(event);\n        }, delayPressOut);\n      } else {\n        onPressOut(event);\n      }\n    }\n    this._touchActivateTime = null;\n  }\n\n  _measureResponderRegion(): void {\n    if (this._responderID == null) {\n      return;\n    }\n\n    if (typeof this._responderID === 'number') {\n      UIManager.measure(this._responderID, this._measureCallback);\n    } else {\n      this._responderID.measure(this._measureCallback);\n    }\n  }\n\n  _measureCallback = (\n    left: number,\n    top: number,\n    width: number,\n    height: number,\n    pageX: number,\n    pageY: number,\n  ) => {\n    if (!left && !top && !width && !height && !pageX && !pageY) {\n      return;\n    }\n    this._responderRegion = {\n      bottom: pageY + height,\n      left: pageX,\n      right: pageX + width,\n      top: pageY,\n    };\n  };\n\n  _isTouchWithinResponderRegion(\n    touch: GestureResponderEvent['nativeEvent'],\n    responderRegion: $ReadOnly<{\n      bottom: number,\n      left: number,\n      right: number,\n      top: number,\n    }>,\n  ): boolean {\n    const hitSlop = normalizeRect(this._config.hitSlop);\n    const pressRectOffset = normalizeRect(this._config.pressRectOffset);\n\n    let regionBottom = responderRegion.bottom;\n    let regionLeft = responderRegion.left;\n    let regionRight = responderRegion.right;\n    let regionTop = responderRegion.top;\n\n    if (hitSlop != null) {\n      if (hitSlop.bottom != null) {\n        regionBottom += hitSlop.bottom;\n      }\n      if (hitSlop.left != null) {\n        regionLeft -= hitSlop.left;\n      }\n      if (hitSlop.right != null) {\n        regionRight += hitSlop.right;\n      }\n      if (hitSlop.top != null) {\n        regionTop -= hitSlop.top;\n      }\n    }\n\n    regionBottom +=\n      pressRectOffset?.bottom ?? DEFAULT_PRESS_RECT_OFFSETS.bottom;\n    regionLeft -= pressRectOffset?.left ?? DEFAULT_PRESS_RECT_OFFSETS.left;\n    regionRight += pressRectOffset?.right ?? DEFAULT_PRESS_RECT_OFFSETS.right;\n    regionTop -= pressRectOffset?.top ?? DEFAULT_PRESS_RECT_OFFSETS.top;\n\n    return (\n      touch.pageX > regionLeft &&\n      touch.pageX < regionRight &&\n      touch.pageY > regionTop &&\n      touch.pageY < regionBottom\n    );\n  }\n\n  _handleLongPress(event: GestureResponderEvent): void {\n    if (\n      this._touchState === 'RESPONDER_ACTIVE_PRESS_IN' ||\n      this._touchState === 'RESPONDER_ACTIVE_LONG_PRESS_IN'\n    ) {\n      this._receiveSignal('LONG_PRESS_DETECTED', event);\n    }\n  }\n\n  _cancelHoverInDelayTimeout(): void {\n    if (this._hoverInDelayTimeout != null) {\n      clearTimeout(this._hoverInDelayTimeout);\n      this._hoverInDelayTimeout = null;\n    }\n  }\n\n  _cancelHoverOutDelayTimeout(): void {\n    if (this._hoverOutDelayTimeout != null) {\n      clearTimeout(this._hoverOutDelayTimeout);\n      this._hoverOutDelayTimeout = null;\n    }\n  }\n\n  _cancelLongPressDelayTimeout(): void {\n    if (this._longPressDelayTimeout != null) {\n      clearTimeout(this._longPressDelayTimeout);\n      this._longPressDelayTimeout = null;\n    }\n  }\n\n  _cancelPressDelayTimeout(): void {\n    if (this._pressDelayTimeout != null) {\n      clearTimeout(this._pressDelayTimeout);\n      this._pressDelayTimeout = null;\n    }\n  }\n\n  _cancelPressOutDelayTimeout(): void {\n    if (this._pressOutDelayTimeout != null) {\n      clearTimeout(this._pressOutDelayTimeout);\n      this._pressOutDelayTimeout = null;\n    }\n  }\n}\n\nfunction normalizeDelay(\n  delay: ?number,\n  min: number = 0,\n  fallback: number = 0,\n): number {\n  return Math.max(min, delay ?? fallback);\n}\n\nconst getTouchFromPressEvent = (event: GestureResponderEvent) => {\n  const {changedTouches, touches} = event.nativeEvent;\n\n  if (touches != null && touches.length > 0) {\n    return touches[0];\n  }\n  if (changedTouches != null && changedTouches.length > 0) {\n    return changedTouches[0];\n  }\n  return event.nativeEvent;\n};\n\nfunction convertPointerEventToMouseEvent(input: PointerEvent): MouseEvent {\n  const {clientX, clientY} = input.nativeEvent;\n  return {\n    ...input,\n    nativeEvent: {\n      clientX,\n      clientY,\n      pageX: clientX,\n      pageY: clientY,\n      timestamp: input.timeStamp,\n    },\n  };\n}\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 * @flow strict\n * @format\n */\n\nimport NativeSoundManager from './NativeSoundManager';\n\nconst SoundManager = {\n  playTouchSound: function (): void {\n    if (NativeSoundManager) {\n      NativeSoundManager.playTouchSound();\n    }\n  },\n};\n\nexport default SoundManager;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeSoundManager';\nexport {default} from '../../../src/private/specs_DEPRECATED/modules/NativeSoundManager';\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\n/**\n * Native Module used for playing sounds in native platform.\n */\nexport interface Spec extends TurboModule {\n  +playTouchSound: () => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('SoundManager'): ?Spec);\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 * @flow strict\n * @format\n */\n\nexport type FeatureFlags = {\n  /**\n   * Function used to enable / disable W3C pointer event emitting in React Native.\n   * If enabled you must also flip the equivalent native flags on each platform:\n   * iOS -> RCTSetDispatchW3CPointerEvents\n   * Android -> ReactFeatureFlags.dispatchPointerEvents\n   */\n  shouldEmitW3CPointerEvents: () => boolean,\n  /**\n   * Function used to enable / disable Pressibility from using W3C Pointer Events\n   * for its hover callbacks\n   */\n  shouldPressibilityUseW3CPointerEventsForHover: () => boolean,\n};\n\nconst ReactNativeFeatureFlags: FeatureFlags = {\n  shouldEmitW3CPointerEvents: () => false,\n  shouldPressibilityUseW3CPointerEventsForHover: () => false,\n};\n\nexport default ReactNativeFeatureFlags;\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 * @flow strict\n * @format\n */\n\nimport Platform from '../Utilities/Platform';\n\nlet isEnabled = false;\n\n/* $FlowFixMe[incompatible-type] Error found due to incomplete typing of\n * Platform.flow.js */\nif (Platform.OS === 'web') {\n  const canUseDOM = Boolean(\n    typeof window !== 'undefined' &&\n      window.document &&\n      // $FlowFixMe[method-unbinding]\n      window.document.createElement,\n  );\n\n  if (canUseDOM) {\n    /**\n     * Web browsers emulate mouse events (and hover states) after touch events.\n     * This code infers when the currently-in-use modality supports hover\n     * (including for multi-modality devices) and considers \"hover\" to be enabled\n     * if a mouse movement occurs more than 1 second after the last touch event.\n     * This threshold is long enough to account for longer delays between the\n     * browser firing touch and mouse events on low-powered devices.\n     */\n    const HOVER_THRESHOLD_MS = 1000;\n    let lastTouchTimestamp = 0;\n\n    const enableHover = () => {\n      if (isEnabled || Date.now() - lastTouchTimestamp < HOVER_THRESHOLD_MS) {\n        return;\n      }\n      isEnabled = true;\n    };\n\n    const disableHover = () => {\n      lastTouchTimestamp = Date.now();\n      if (isEnabled) {\n        isEnabled = false;\n      }\n    };\n\n    document.addEventListener('touchstart', disableHover, true);\n    document.addEventListener('touchmove', disableHover, true);\n    document.addEventListener('mousemove', enableHover, true);\n  }\n}\n\nexport function isHoverEnabled(): boolean {\n  return isEnabled;\n}\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 * @flow strict-local\n * @format\n */\n\nimport {type PressabilityTouchSignal as TouchSignal} from './PressabilityTypes.js';\n\nexport type PressabilityPerformanceEvent = $ReadOnly<{\n  signal: TouchSignal,\n  nativeTimestamp: number,\n}>;\nexport type PressabilityPerformanceEventListener =\n  PressabilityPerformanceEvent => void;\n\nclass PressabilityPerformanceEventEmitter {\n  _listeners: Array<PressabilityPerformanceEventListener> = [];\n\n  constructor() {}\n\n  addListener(listener: PressabilityPerformanceEventListener): void {\n    this._listeners.push(listener);\n  }\n\n  removeListener(listener: PressabilityPerformanceEventListener): void {\n    const index = this._listeners.indexOf(listener);\n    if (index > -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  emitEvent(constructEvent: () => PressabilityPerformanceEvent): void {\n    if (this._listeners.length === 0) {\n      return;\n    }\n\n    const event = constructEvent();\n    this._listeners.forEach(listener => listener(event));\n  }\n}\n\nconst PressabilityPerformanceEventEmitterSingleton: PressabilityPerformanceEventEmitter =\n  new PressabilityPerformanceEventEmitter();\n\nexport default PressabilityPerformanceEventEmitterSingleton;\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 * @flow\n * @format\n */\n\nimport type {HostComponent} from '../../src/private/types/HostComponent';\nimport type {ProcessedColorValue} from '../StyleSheet/processColor';\nimport type {GestureResponderEvent} from '../Types/CoreEventTypes';\nimport type {TextProps} from './TextProps';\n\nimport {createViewConfig} from '../NativeComponent/ViewConfig';\nimport UIManager from '../ReactNative/UIManager';\nimport createReactNativeComponentClass from '../Renderer/shims/createReactNativeComponentClass';\n\nexport type NativeTextProps = $ReadOnly<{\n  ...TextProps,\n  isHighlighted?: ?boolean,\n  selectionColor?: ?ProcessedColorValue,\n  onClick?: ?(event: GestureResponderEvent) => mixed,\n  // This is only needed for platforms that optimize text hit testing, e.g.,\n  // react-native-windows. It can be used to only hit test virtual text spans\n  // that have pressable events attached to them.\n  isPressable?: ?boolean,\n}>;\n\nconst textViewConfig = {\n  validAttributes: {\n    isHighlighted: true,\n    isPressable: true,\n    numberOfLines: true,\n    ellipsizeMode: true,\n    allowFontScaling: true,\n    dynamicTypeRamp: true,\n    maxFontSizeMultiplier: true,\n    disabled: true,\n    selectable: true,\n    selectionColor: true,\n    adjustsFontSizeToFit: true,\n    minimumFontScale: true,\n    textBreakStrategy: true,\n    onTextLayout: true,\n    dataDetectorType: true,\n    android_hyphenationFrequency: true,\n    lineBreakStrategyIOS: true,\n  },\n  directEventTypes: {\n    topTextLayout: {\n      registrationName: 'onTextLayout',\n    },\n  },\n  uiViewClassName: 'RCTText',\n};\n\nconst virtualTextViewConfig = {\n  validAttributes: {\n    isHighlighted: true,\n    isPressable: true,\n    maxFontSizeMultiplier: true,\n  },\n  uiViewClassName: 'RCTVirtualText',\n};\n\nexport const NativeText: HostComponent<NativeTextProps> =\n  (createReactNativeComponentClass('RCTText', () =>\n    /* $FlowFixMe[incompatible-call] Natural Inference rollout. See\n     * https://fburl.com/workplace/6291gfvu */\n    createViewConfig(textViewConfig),\n  ): any);\n\nexport const NativeVirtualText: HostComponent<NativeTextProps> =\n  !global.RN$Bridgeless && !UIManager.hasViewManagerConfig('RCTVirtualText')\n    ? NativeText\n    : (createReactNativeComponentClass('RCTVirtualText', () =>\n        /* $FlowFixMe[incompatible-call] Natural Inference rollout. See\n         * https://fburl.com/workplace/6291gfvu */\n        createViewConfig(virtualTextViewConfig),\n      ): any);\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 * @flow strict-local\n * @format\n */\n\nimport type {GestureResponderEvent} from '../../Types/CoreEventTypes';\nimport type {TouchableWithoutFeedbackProps} from './TouchableWithoutFeedback';\n\nimport View from '../../Components/View/View';\nimport Pressability, {\n  type PressabilityConfig,\n} from '../../Pressability/Pressability';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport {findHostInstance_DEPRECATED} from '../../ReactNative/RendererProxy';\nimport processColor from '../../StyleSheet/processColor';\nimport Platform from '../../Utilities/Platform';\nimport {Commands} from '../View/ViewNativeComponent';\nimport invariant from 'invariant';\nimport * as React from 'react';\nimport {cloneElement} from 'react';\n\ntype TouchableNativeFeedbackTVProps = {\n  /**\n   * *(Apple TV only)* TV preferred focus (see documentation for the View component).\n   *\n   * @platform ios\n   * @deprecated Use `focusable` instead\n   */\n  hasTVPreferredFocus?: ?boolean,\n\n  /**\n   * Designates the next view to receive focus when the user navigates down. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusDown?: ?number,\n\n  /**\n   * Designates the next view to receive focus when the user navigates forward. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusForward?: ?number,\n\n  /**\n   * Designates the next view to receive focus when the user navigates left. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusLeft?: ?number,\n\n  /**\n   * Designates the next view to receive focus when the user navigates right. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusRight?: ?number,\n\n  /**\n   * Designates the next view to receive focus when the user navigates up. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusUp?: ?number,\n};\n\nexport type TouchableNativeFeedbackProps = $ReadOnly<{\n  ...TouchableWithoutFeedbackProps,\n  ...TouchableNativeFeedbackTVProps,\n  /**\n   * Determines the type of background drawable that's going to be used to display feedback.\n   * It takes an object with type property and extra data depending on the type.\n   * It's recommended to use one of the following static methods to generate that dictionary:\n   *      1) TouchableNativeFeedback.SelectableBackground() - will create object that represents android theme's\n   *         default background for selectable elements (?android:attr/selectableItemBackground)\n   *      2) TouchableNativeFeedback.SelectableBackgroundBorderless() - will create object that represent android\n   *         theme's default background for borderless selectable elements\n   *         (?android:attr/selectableItemBackgroundBorderless). Available on android API level 21+\n   *      3) TouchableNativeFeedback.Ripple(color, borderless) - will create object that represents ripple drawable\n   *         with specified color (as a string). If property borderless evaluates to true the ripple will render\n   *         outside of the view bounds (see native actionbar buttons as an example of that behavior). This background\n   *         type is available on Android API level 21+\n   */\n  background?: ?(\n    | $ReadOnly<{\n        type: 'ThemeAttrAndroid',\n        attribute:\n          | 'selectableItemBackground'\n          | 'selectableItemBackgroundBorderless',\n        rippleRadius: ?number,\n      }>\n    | $ReadOnly<{\n        type: 'RippleAndroid',\n        color: ?number,\n        borderless: boolean,\n        rippleRadius: ?number,\n      }>\n  ),\n  /**\n   * Set to true to add the ripple effect to the foreground of the view, instead\n   * of the background. This is useful if one of your child views has a\n   * background of its own, or you're e.g. displaying images, and you don't want\n   * the ripple to be covered by them.\n   *\n   * Check TouchableNativeFeedback.canUseNativeForeground() first, as this is\n   * only available on Android 6.0 and above. If you try to use this on older\n   * versions, this will fallback to background.\n   */\n  useForeground?: ?boolean,\n}>;\n\ntype TouchableNativeFeedbackState = $ReadOnly<{\n  pressability: Pressability,\n}>;\n\n/**\n * A wrapper for making views respond properly to touches (Android only).\n * On Android this component uses native state drawable to display touch feedback.\n * At the moment it only supports having a single View instance as a child node,\n * as it's implemented by replacing that View with another instance of RCTView node with some additional properties set.\n *\n * Background drawable of native feedback touchable can be customized with background property.\n *\n * @see https://reactnative.dev/docs/touchablenativefeedback#content\n */\nclass TouchableNativeFeedback extends React.Component<\n  TouchableNativeFeedbackProps,\n  TouchableNativeFeedbackState,\n> {\n  /**\n   * Creates an object that represents android theme's default background for\n   * selectable elements (?android:attr/selectableItemBackground).\n   *\n   * @param rippleRadius The radius of ripple effect\n   */\n  static SelectableBackground: (rippleRadius?: ?number) => $ReadOnly<{\n    attribute: 'selectableItemBackground',\n    type: 'ThemeAttrAndroid',\n    rippleRadius: ?number,\n  }> = (rippleRadius?: ?number) => ({\n    type: 'ThemeAttrAndroid',\n    attribute: 'selectableItemBackground',\n    rippleRadius,\n  });\n\n  /**\n   * Creates an object that represent android theme's default background for borderless\n   * selectable elements (?android:attr/selectableItemBackgroundBorderless).\n   * Available on android API level 21+.\n   *\n   * @param rippleRadius The radius of ripple effect\n   */\n  static SelectableBackgroundBorderless: (rippleRadius?: ?number) => $ReadOnly<{\n    attribute: 'selectableItemBackgroundBorderless',\n    type: 'ThemeAttrAndroid',\n    rippleRadius: ?number,\n  }> = (rippleRadius?: ?number) => ({\n    type: 'ThemeAttrAndroid',\n    attribute: 'selectableItemBackgroundBorderless',\n    rippleRadius,\n  });\n\n  /**\n   * Creates an object that represents ripple drawable with specified color (as a\n   * string). If property `borderless` evaluates to true the ripple will\n   * render outside of the view bounds (see native actionbar buttons as an\n   * example of that behavior). This background type is available on Android\n   * API level 21+.\n   *\n   * @param color The ripple color\n   * @param borderless If the ripple can render outside it's bounds\n   * @param rippleRadius The radius of ripple effect\n   */\n  static Ripple: (\n    color: string,\n    borderless: boolean,\n    rippleRadius?: ?number,\n  ) => $ReadOnly<{\n    borderless: boolean,\n    color: ?number,\n    rippleRadius: ?number,\n    type: 'RippleAndroid',\n  }> = (color: string, borderless: boolean, rippleRadius?: ?number) => {\n    const processedColor = processColor(color);\n    invariant(\n      processedColor == null || typeof processedColor === 'number',\n      'Unexpected color given for Ripple color',\n    );\n    return {\n      type: 'RippleAndroid',\n      // $FlowFixMe[incompatible-type]\n      color: processedColor,\n      borderless,\n      rippleRadius,\n    };\n  };\n\n  /**\n   * Whether `useForeground` is supported.\n   */\n  static canUseNativeForeground: () => boolean = () =>\n    Platform.OS === 'android';\n\n  state: TouchableNativeFeedbackState = {\n    pressability: new Pressability(this._createPressabilityConfig()),\n  };\n\n  _createPressabilityConfig(): PressabilityConfig {\n    const accessibilityStateDisabled =\n      this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled;\n    return {\n      cancelable: !this.props.rejectResponderTermination,\n      disabled:\n        this.props.disabled != null\n          ? this.props.disabled\n          : accessibilityStateDisabled,\n      hitSlop: this.props.hitSlop,\n      delayLongPress: this.props.delayLongPress,\n      delayPressIn: this.props.delayPressIn,\n      delayPressOut: this.props.delayPressOut,\n      minPressDuration: 0,\n      pressRectOffset: this.props.pressRetentionOffset,\n      android_disableSound: this.props.touchSoundDisabled,\n      onLongPress: this.props.onLongPress,\n      onPress: this.props.onPress,\n      onPressIn: event => {\n        if (Platform.OS === 'android') {\n          this._dispatchHotspotUpdate(event);\n          this._dispatchPressedStateChange(true);\n        }\n        if (this.props.onPressIn != null) {\n          this.props.onPressIn(event);\n        }\n      },\n      onPressMove: event => {\n        if (Platform.OS === 'android') {\n          this._dispatchHotspotUpdate(event);\n        }\n      },\n      onPressOut: event => {\n        if (Platform.OS === 'android') {\n          this._dispatchPressedStateChange(false);\n        }\n        if (this.props.onPressOut != null) {\n          this.props.onPressOut(event);\n        }\n      },\n    };\n  }\n\n  _dispatchPressedStateChange(pressed: boolean): void {\n    if (Platform.OS === 'android') {\n      const hostComponentRef = findHostInstance_DEPRECATED<$FlowFixMe>(this);\n      if (hostComponentRef == null) {\n        console.warn(\n          'Touchable: Unable to find HostComponent instance. ' +\n            'Has your Touchable component been unmounted?',\n        );\n      } else {\n        Commands.setPressed(hostComponentRef, pressed);\n      }\n    }\n  }\n\n  _dispatchHotspotUpdate(event: GestureResponderEvent): void {\n    if (Platform.OS === 'android') {\n      const {locationX, locationY} = event.nativeEvent;\n      const hostComponentRef = findHostInstance_DEPRECATED<$FlowFixMe>(this);\n      if (hostComponentRef == null) {\n        console.warn(\n          'Touchable: Unable to find HostComponent instance. ' +\n            'Has your Touchable component been unmounted?',\n        );\n      } else {\n        Commands.hotspotUpdate(\n          hostComponentRef,\n          locationX ?? 0,\n          locationY ?? 0,\n        );\n      }\n    }\n  }\n\n  render(): React.Node {\n    const element = React.Children.only<$FlowFixMe>(this.props.children);\n    const children: Array<React.Node> = [element.props.children];\n    if (__DEV__) {\n      if (element.type === View) {\n        children.push(\n          <PressabilityDebugView color=\"brown\" hitSlop={this.props.hitSlop} />,\n        );\n      }\n    }\n\n    // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before\n    // adopting `Pressability`, so preserve that behavior.\n    const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =\n      this.state.pressability.getEventHandlers();\n\n    let _accessibilityState = {\n      busy: this.props['aria-busy'] ?? this.props.accessibilityState?.busy,\n      checked:\n        this.props['aria-checked'] ?? this.props.accessibilityState?.checked,\n      disabled:\n        this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled,\n      expanded:\n        this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded,\n      selected:\n        this.props['aria-selected'] ?? this.props.accessibilityState?.selected,\n    };\n\n    _accessibilityState =\n      this.props.disabled != null\n        ? {\n            ..._accessibilityState,\n            disabled: this.props.disabled,\n          }\n        : _accessibilityState;\n\n    const accessibilityValue = {\n      max: this.props['aria-valuemax'] ?? this.props.accessibilityValue?.max,\n      min: this.props['aria-valuemin'] ?? this.props.accessibilityValue?.min,\n      now: this.props['aria-valuenow'] ?? this.props.accessibilityValue?.now,\n      text: this.props['aria-valuetext'] ?? this.props.accessibilityValue?.text,\n    };\n\n    const accessibilityLiveRegion =\n      this.props['aria-live'] === 'off'\n        ? 'none'\n        : this.props['aria-live'] ?? this.props.accessibilityLiveRegion;\n\n    const accessibilityLabel =\n      this.props['aria-label'] ?? this.props.accessibilityLabel;\n    return cloneElement(\n      element,\n      {\n        ...eventHandlersWithoutBlurAndFocus,\n        ...getBackgroundProp(\n          this.props.background === undefined\n            ? TouchableNativeFeedback.SelectableBackground()\n            : this.props.background,\n          this.props.useForeground === true,\n        ),\n        accessible: this.props.accessible !== false,\n        accessibilityHint: this.props.accessibilityHint,\n        accessibilityLanguage: this.props.accessibilityLanguage,\n        accessibilityLabel: accessibilityLabel,\n        accessibilityRole: this.props.accessibilityRole,\n        accessibilityState: _accessibilityState,\n        accessibilityActions: this.props.accessibilityActions,\n        onAccessibilityAction: this.props.onAccessibilityAction,\n        accessibilityValue: accessibilityValue,\n        importantForAccessibility:\n          this.props['aria-hidden'] === true\n            ? 'no-hide-descendants'\n            : this.props.importantForAccessibility,\n        accessibilityViewIsModal:\n          this.props['aria-modal'] ?? this.props.accessibilityViewIsModal,\n        accessibilityLiveRegion: accessibilityLiveRegion,\n        accessibilityElementsHidden:\n          this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden,\n        hasTVPreferredFocus: this.props.hasTVPreferredFocus,\n        hitSlop: this.props.hitSlop,\n        focusable:\n          this.props.focusable !== false &&\n          this.props.onPress !== undefined &&\n          !this.props.disabled,\n        nativeID: this.props.id ?? this.props.nativeID,\n        nextFocusDown: this.props.nextFocusDown,\n        nextFocusForward: this.props.nextFocusForward,\n        nextFocusLeft: this.props.nextFocusLeft,\n        nextFocusRight: this.props.nextFocusRight,\n        nextFocusUp: this.props.nextFocusUp,\n        onLayout: this.props.onLayout,\n        testID: this.props.testID,\n      },\n      ...children,\n    );\n  }\n\n  componentDidUpdate(\n    prevProps: TouchableNativeFeedbackProps,\n    prevState: TouchableNativeFeedbackState,\n  ) {\n    this.state.pressability.configure(this._createPressabilityConfig());\n  }\n\n  componentDidMount(): mixed {\n    this.state.pressability.configure(this._createPressabilityConfig());\n  }\n\n  componentWillUnmount(): void {\n    this.state.pressability.reset();\n  }\n}\n\nconst getBackgroundProp =\n  Platform.OS === 'android'\n    ? /* $FlowFixMe[missing-local-annot] The type annotation(s) required by\n       * Flow's LTI update could not be added via codemod */\n      (background, useForeground: boolean) =>\n        useForeground && TouchableNativeFeedback.canUseNativeForeground()\n          ? {nativeForegroundAndroid: background}\n          : {nativeBackgroundAndroid: background}\n    : /* $FlowFixMe[missing-local-annot] The type annotation(s) required by\n       * Flow's LTI update could not be added via codemod */\n      (background, useForeground: boolean) => null;\n\nTouchableNativeFeedback.displayName = 'TouchableNativeFeedback';\n\nexport default TouchableNativeFeedback;\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {TouchableWithoutFeedbackProps} from './TouchableWithoutFeedback';\n\nimport Animated from '../../Animated/Animated';\nimport Easing from '../../Animated/Easing';\nimport Pressability, {\n  type PressabilityConfig,\n} from '../../Pressability/Pressability';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport flattenStyle from '../../StyleSheet/flattenStyle';\nimport Platform from '../../Utilities/Platform';\nimport * as React from 'react';\n\nexport type TouchableOpacityTVProps = $ReadOnly<{\n  /**\n   * *(Apple TV only)* TV preferred focus (see documentation for the View component).\n   *\n   * @platform ios\n   * @deprecated Use `focusable` instead\n   */\n  hasTVPreferredFocus?: ?boolean,\n\n  /**\n   * Designates the next view to receive focus when the user navigates down. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusDown?: ?number,\n\n  /**\n   * Designates the next view to receive focus when the user navigates forward. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusForward?: ?number,\n\n  /**\n   * Designates the next view to receive focus when the user navigates left. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusLeft?: ?number,\n\n  /**\n   * Designates the next view to receive focus when the user navigates right. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusRight?: ?number,\n\n  /**\n   * Designates the next view to receive focus when the user navigates up. See the Android documentation.\n   *\n   * @platform android\n   */\n  nextFocusUp?: ?number,\n}>;\n\ntype TouchableOpacityBaseProps = $ReadOnly<{\n  /**\n   * Determines what the opacity of the wrapped view should be when touch is active.\n   * Defaults to 0.2\n   */\n  activeOpacity?: ?number,\n  style?: ?Animated.WithAnimatedValue<ViewStyleProp>,\n\n  hostRef?: ?React.RefSetter<React.ElementRef<typeof Animated.View>>,\n}>;\n\nexport type TouchableOpacityProps = $ReadOnly<{\n  ...TouchableWithoutFeedbackProps,\n  ...TouchableOpacityTVProps,\n  ...TouchableOpacityBaseProps,\n}>;\n\ntype TouchableOpacityState = $ReadOnly<{\n  anim: Animated.Value,\n  pressability: Pressability,\n}>;\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, dimming it.\n *\n * Opacity is controlled by wrapping the children in an Animated.View, which is\n * added to the view hierarchy.  Be aware that this can affect layout.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n *   return (\n *     <TouchableOpacity onPress={this._onPressButton}>\n *       <Image\n *         style={styles.button}\n *         source={require('./myButton.png')}\n *       />\n *     </TouchableOpacity>\n *   );\n * },\n * ```\n * ### Example\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react'\n * import {\n *   AppRegistry,\n *   StyleSheet,\n *   TouchableOpacity,\n *   Text,\n *   View,\n * } from 'react-native'\n *\n * class App extends Component {\n *   state = { count: 0 }\n *\n *   onPress = () => {\n *     this.setState(state => ({\n *       count: state.count + 1\n *     }));\n *   };\n *\n *  render() {\n *    return (\n *      <View style={styles.container}>\n *        <TouchableOpacity\n *          style={styles.button}\n *          onPress={this.onPress}>\n *          <Text> Touch Here </Text>\n *        </TouchableOpacity>\n *        <View style={[styles.countContainer]}>\n *          <Text style={[styles.countText]}>\n *             { this.state.count !== 0 ? this.state.count: null}\n *           </Text>\n *         </View>\n *       </View>\n *     )\n *   }\n * }\n *\n * const styles = StyleSheet.create({\n *   container: {\n *     flex: 1,\n *     justifyContent: 'center',\n *     paddingHorizontal: 10\n *   },\n *   button: {\n *     alignItems: 'center',\n *     backgroundColor: '#DDDDDD',\n *     padding: 10\n *   },\n *   countContainer: {\n *     alignItems: 'center',\n *     padding: 10\n *   },\n *   countText: {\n *     color: '#FF00FF'\n *   }\n * })\n *\n * AppRegistry.registerComponent('App', () => App)\n * ```\n *\n */\nclass TouchableOpacity extends React.Component<\n  TouchableOpacityProps,\n  TouchableOpacityState,\n> {\n  state: TouchableOpacityState = {\n    anim: new Animated.Value(this._getChildStyleOpacityWithDefault()),\n    pressability: new Pressability(this._createPressabilityConfig()),\n  };\n\n  _createPressabilityConfig(): PressabilityConfig {\n    return {\n      cancelable: !this.props.rejectResponderTermination,\n      disabled:\n        this.props.disabled ??\n        this.props['aria-disabled'] ??\n        this.props.accessibilityState?.disabled,\n      hitSlop: this.props.hitSlop,\n      delayLongPress: this.props.delayLongPress,\n      delayPressIn: this.props.delayPressIn,\n      delayPressOut: this.props.delayPressOut,\n      minPressDuration: 0,\n      pressRectOffset: this.props.pressRetentionOffset,\n      onBlur: event => {\n        if (Platform.isTV) {\n          this._opacityInactive(250);\n        }\n        if (this.props.onBlur != null) {\n          this.props.onBlur(event);\n        }\n      },\n      onFocus: event => {\n        if (Platform.isTV) {\n          this._opacityActive(150);\n        }\n        if (this.props.onFocus != null) {\n          this.props.onFocus(event);\n        }\n      },\n      onLongPress: this.props.onLongPress,\n      onPress: this.props.onPress,\n      onPressIn: event => {\n        this._opacityActive(\n          event.dispatchConfig.registrationName === 'onResponderGrant'\n            ? 0\n            : 150,\n        );\n        if (this.props.onPressIn != null) {\n          this.props.onPressIn(event);\n        }\n      },\n      onPressOut: event => {\n        this._opacityInactive(250);\n        if (this.props.onPressOut != null) {\n          this.props.onPressOut(event);\n        }\n      },\n    };\n  }\n\n  /**\n   * Animate the touchable to a new opacity.\n   */\n  _setOpacityTo(toValue: number, duration: number): void {\n    Animated.timing(this.state.anim, {\n      toValue,\n      duration,\n      easing: Easing.inOut(Easing.quad),\n      useNativeDriver: true,\n    }).start();\n  }\n\n  _opacityActive(duration: number): void {\n    this._setOpacityTo(this.props.activeOpacity ?? 0.2, duration);\n  }\n\n  _opacityInactive(duration: number): void {\n    this._setOpacityTo(this._getChildStyleOpacityWithDefault(), duration);\n  }\n\n  _getChildStyleOpacityWithDefault(): number {\n    // $FlowFixMe[underconstrained-implicit-instantiation]\n    // $FlowFixMe[prop-missing]\n    const opacity = flattenStyle(this.props.style)?.opacity;\n    return typeof opacity === 'number' ? opacity : 1;\n  }\n\n  render(): React.Node {\n    // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before\n    // adopting `Pressability`, so preserve that behavior.\n    const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =\n      this.state.pressability.getEventHandlers();\n\n    let _accessibilityState = {\n      busy: this.props['aria-busy'] ?? this.props.accessibilityState?.busy,\n      checked:\n        this.props['aria-checked'] ?? this.props.accessibilityState?.checked,\n      disabled:\n        this.props['aria-disabled'] ?? this.props.accessibilityState?.disabled,\n      expanded:\n        this.props['aria-expanded'] ?? this.props.accessibilityState?.expanded,\n      selected:\n        this.props['aria-selected'] ?? this.props.accessibilityState?.selected,\n    };\n\n    _accessibilityState =\n      this.props.disabled != null\n        ? {\n            ..._accessibilityState,\n            disabled: this.props.disabled,\n          }\n        : _accessibilityState;\n\n    const accessibilityValue = {\n      max: this.props['aria-valuemax'] ?? this.props.accessibilityValue?.max,\n      min: this.props['aria-valuemin'] ?? this.props.accessibilityValue?.min,\n      now: this.props['aria-valuenow'] ?? this.props.accessibilityValue?.now,\n      text: this.props['aria-valuetext'] ?? this.props.accessibilityValue?.text,\n    };\n\n    const accessibilityLiveRegion =\n      this.props['aria-live'] === 'off'\n        ? 'none'\n        : this.props['aria-live'] ?? this.props.accessibilityLiveRegion;\n\n    const accessibilityLabel =\n      this.props['aria-label'] ?? this.props.accessibilityLabel;\n    return (\n      <Animated.View\n        accessible={this.props.accessible !== false}\n        accessibilityLabel={accessibilityLabel}\n        accessibilityHint={this.props.accessibilityHint}\n        accessibilityLanguage={this.props.accessibilityLanguage}\n        accessibilityRole={this.props.accessibilityRole}\n        accessibilityState={_accessibilityState}\n        accessibilityActions={this.props.accessibilityActions}\n        onAccessibilityAction={this.props.onAccessibilityAction}\n        accessibilityValue={accessibilityValue}\n        importantForAccessibility={\n          this.props['aria-hidden'] === true\n            ? 'no-hide-descendants'\n            : // $FlowFixMe[incompatible-type] - AnimatedProps types were made more strict and need refining at this call site\n              this.props.importantForAccessibility\n        }\n        accessibilityViewIsModal={\n          this.props['aria-modal'] ?? this.props.accessibilityViewIsModal\n        }\n        accessibilityLiveRegion={accessibilityLiveRegion}\n        accessibilityElementsHidden={\n          this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden\n        }\n        style={[this.props.style, {opacity: this.state.anim}]}\n        nativeID={this.props.id ?? this.props.nativeID}\n        testID={this.props.testID}\n        onLayout={this.props.onLayout}\n        nextFocusDown={this.props.nextFocusDown}\n        nextFocusForward={this.props.nextFocusForward}\n        nextFocusLeft={this.props.nextFocusLeft}\n        nextFocusRight={this.props.nextFocusRight}\n        nextFocusUp={this.props.nextFocusUp}\n        hasTVPreferredFocus={this.props.hasTVPreferredFocus}\n        hitSlop={this.props.hitSlop}\n        focusable={\n          this.props.focusable !== false &&\n          this.props.onPress !== undefined &&\n          !this.props.disabled\n        }\n        // $FlowFixMe[prop-missing]\n        ref={this.props.hostRef}\n        {...eventHandlersWithoutBlurAndFocus}>\n        {this.props.children}\n        {__DEV__ ? (\n          <PressabilityDebugView color=\"cyan\" hitSlop={this.props.hitSlop} />\n        ) : null}\n      </Animated.View>\n    );\n  }\n\n  componentDidUpdate(\n    prevProps: TouchableOpacityProps,\n    prevState: TouchableOpacityState,\n  ) {\n    this.state.pressability.configure(this._createPressabilityConfig());\n    if (\n      this.props.disabled !== prevProps.disabled ||\n      // $FlowFixMe[underconstrained-implicit-instantiation]\n      // $FlowFixMe[prop-missing]\n      flattenStyle(prevProps.style)?.opacity !==\n        // $FlowFixMe[underconstrained-implicit-instantiation]\n        // $FlowFixMe[prop-missing]\n        flattenStyle(this.props.style)?.opacity\n    ) {\n      this._opacityInactive(250);\n    }\n  }\n\n  componentDidMount(): void {\n    this.state.pressability.configure(this._createPressabilityConfig());\n  }\n\n  componentWillUnmount(): void {\n    this.state.pressability.reset();\n    this.state.anim.resetAnimation();\n  }\n}\n\nconst Touchable: component(\n  ref?: React.RefSetter<React.ElementRef<typeof Animated.View>>,\n  ...props: TouchableOpacityProps\n) = ({\n  ref,\n  ...props\n}: {\n  ref?: React.RefSetter<React.ElementRef<typeof Animated.View>>,\n  ...TouchableOpacityProps,\n}) => <TouchableOpacity {...props} hostRef={ref} />;\n\nTouchable.displayName = 'TouchableOpacity';\n\nexport default Touchable;\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 * @flow strict-local\n * @format\n */\n\nimport typeof * as AnimatedExports from './AnimatedExports';\n\n// The AnimatedExports module is typed as multiple exports to allow\n// for an implicit namespace, but underneath is's a single default export.\nconst Animated: AnimatedExports = (require('./AnimatedExports') as $FlowFixMe)\n  .default;\n\nexport default Animated;\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 * @flow\n * @format\n */\n\nimport typeof AnimatedFlatList from './components/AnimatedFlatList';\nimport typeof AnimatedImage from './components/AnimatedImage';\nimport typeof AnimatedScrollView from './components/AnimatedScrollView';\nimport typeof AnimatedSectionList from './components/AnimatedSectionList';\nimport typeof AnimatedText from './components/AnimatedText';\nimport typeof AnimatedView from './components/AnimatedView';\n\nimport Platform from '../Utilities/Platform';\nimport AnimatedImplementation from './AnimatedImplementation';\nimport AnimatedMock from './AnimatedMock';\n\nconst Animated: typeof AnimatedImplementation = Platform.isDisableAnimations\n  ? AnimatedMock\n  : AnimatedImplementation;\n\nexport default {\n  get FlatList(): AnimatedFlatList<any> {\n    return require('./components/AnimatedFlatList').default;\n  },\n  get Image(): AnimatedImage {\n    return require('./components/AnimatedImage').default;\n  },\n  get ScrollView(): AnimatedScrollView {\n    return require('./components/AnimatedScrollView').default;\n  },\n  get SectionList(): AnimatedSectionList<any, any> {\n    return require('./components/AnimatedSectionList').default;\n  },\n  get Text(): AnimatedText {\n    return require('./components/AnimatedText').default;\n  },\n  get View(): AnimatedView {\n    return require('./components/AnimatedView').default;\n  },\n  ...Animated,\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {EventConfig, Mapping} from './AnimatedEvent';\nimport type {\n  AnimationConfig,\n  EndCallback,\n  EndResult,\n} from './animations/Animation';\nimport type {DecayAnimationConfig} from './animations/DecayAnimation';\nimport type {SpringAnimationConfig} from './animations/SpringAnimation';\nimport type {TimingAnimationConfig} from './animations/TimingAnimation';\n\nimport {AnimatedEvent, attachNativeEventImpl} from './AnimatedEvent';\nimport DecayAnimation from './animations/DecayAnimation';\nimport SpringAnimation from './animations/SpringAnimation';\nimport TimingAnimation from './animations/TimingAnimation';\nimport createAnimatedComponent from './createAnimatedComponent';\nimport AnimatedAddition from './nodes/AnimatedAddition';\nimport AnimatedColor from './nodes/AnimatedColor';\nimport AnimatedDiffClamp from './nodes/AnimatedDiffClamp';\nimport AnimatedDivision from './nodes/AnimatedDivision';\nimport AnimatedInterpolation from './nodes/AnimatedInterpolation';\nimport AnimatedModulo from './nodes/AnimatedModulo';\nimport AnimatedMultiplication from './nodes/AnimatedMultiplication';\nimport AnimatedNode from './nodes/AnimatedNode';\nimport AnimatedSubtraction from './nodes/AnimatedSubtraction';\nimport AnimatedTracking from './nodes/AnimatedTracking';\nimport AnimatedValue from './nodes/AnimatedValue';\nimport AnimatedValueXY from './nodes/AnimatedValueXY';\n\nexport type CompositeAnimation = {\n  start: (callback?: ?EndCallback, isLooping?: boolean) => void,\n  stop: () => void,\n  reset: () => void,\n  _startNativeLoop: (iterations?: number) => void,\n  _isUsingNativeDriver: () => boolean,\n  ...\n};\n\nconst addImpl = function (\n  a: AnimatedNode | number,\n  b: AnimatedNode | number,\n): AnimatedAddition {\n  return new AnimatedAddition(a, b);\n};\n\nconst subtractImpl = function (\n  a: AnimatedNode | number,\n  b: AnimatedNode | number,\n): AnimatedSubtraction {\n  return new AnimatedSubtraction(a, b);\n};\n\nconst divideImpl = function (\n  a: AnimatedNode | number,\n  b: AnimatedNode | number,\n): AnimatedDivision {\n  return new AnimatedDivision(a, b);\n};\n\nconst multiplyImpl = function (\n  a: AnimatedNode | number,\n  b: AnimatedNode | number,\n): AnimatedMultiplication {\n  return new AnimatedMultiplication(a, b);\n};\n\nconst moduloImpl = function (a: AnimatedNode, modulus: number): AnimatedModulo {\n  return new AnimatedModulo(a, modulus);\n};\n\nconst diffClampImpl = function (\n  a: AnimatedNode,\n  min: number,\n  max: number,\n): AnimatedDiffClamp {\n  return new AnimatedDiffClamp(a, min, max);\n};\n\nconst _combineCallbacks = function (\n  callback: ?EndCallback,\n  config: $ReadOnly<{...AnimationConfig, ...}>,\n) {\n  if (callback && config.onComplete) {\n    return (...args: Array<EndResult>) => {\n      config.onComplete && config.onComplete(...args);\n      callback && callback(...args);\n    };\n  } else {\n    return callback || config.onComplete;\n  }\n};\n\nconst maybeVectorAnim = function (\n  value: AnimatedValue | AnimatedValueXY | AnimatedColor,\n  config: Object,\n  anim: (value: AnimatedValue, config: Object) => CompositeAnimation,\n): ?CompositeAnimation {\n  if (value instanceof AnimatedValueXY) {\n    const configX = {...config};\n    const configY = {...config};\n    for (const key in config) {\n      const {x, y} = config[key];\n      if (x !== undefined && y !== undefined) {\n        configX[key] = x;\n        configY[key] = y;\n      }\n    }\n    const aX = anim((value: AnimatedValueXY).x, configX);\n    const aY = anim((value: AnimatedValueXY).y, configY);\n    // We use `stopTogether: false` here because otherwise tracking will break\n    // because the second animation will get stopped before it can update.\n    return parallelImpl([aX, aY], {stopTogether: false});\n  } else if (value instanceof AnimatedColor) {\n    const configR = {...config};\n    const configG = {...config};\n    const configB = {...config};\n    const configA = {...config};\n    for (const key in config) {\n      const {r, g, b, a} = config[key];\n      if (\n        r !== undefined &&\n        g !== undefined &&\n        b !== undefined &&\n        a !== undefined\n      ) {\n        configR[key] = r;\n        configG[key] = g;\n        configB[key] = b;\n        configA[key] = a;\n      }\n    }\n    const aR = anim((value: AnimatedColor).r, configR);\n    const aG = anim((value: AnimatedColor).g, configG);\n    const aB = anim((value: AnimatedColor).b, configB);\n    const aA = anim((value: AnimatedColor).a, configA);\n    // We use `stopTogether: false` here because otherwise tracking will break\n    // because the second animation will get stopped before it can update.\n    return parallelImpl([aR, aG, aB, aA], {stopTogether: false});\n  }\n  return null;\n};\n\nconst springImpl = function (\n  value: AnimatedValue | AnimatedValueXY | AnimatedColor,\n  config: SpringAnimationConfig,\n): CompositeAnimation {\n  const start = function (\n    animatedValue: AnimatedValue | AnimatedValueXY | AnimatedColor,\n    configuration: SpringAnimationConfig,\n    callback?: ?EndCallback,\n  ): void {\n    callback = _combineCallbacks(callback, configuration);\n    const singleValue: any = animatedValue;\n    const singleConfig: any = configuration;\n    singleValue.stopTracking();\n    if (configuration.toValue instanceof AnimatedNode) {\n      singleValue.track(\n        new AnimatedTracking(\n          singleValue,\n          configuration.toValue,\n          SpringAnimation,\n          singleConfig,\n          callback,\n        ),\n      );\n    } else {\n      singleValue.animate(new SpringAnimation(singleConfig), callback);\n    }\n  };\n  return (\n    maybeVectorAnim(value, config, springImpl) || {\n      start: function (callback?: ?EndCallback): void {\n        start(value, config, callback);\n      },\n\n      stop: function (): void {\n        value.stopAnimation();\n      },\n\n      reset: function (): void {\n        value.resetAnimation();\n      },\n\n      _startNativeLoop: function (iterations?: number): void {\n        const singleConfig = {...config, iterations};\n        start(value, singleConfig);\n      },\n\n      _isUsingNativeDriver: function (): boolean {\n        return config.useNativeDriver || false;\n      },\n    }\n  );\n};\n\nconst timingImpl = function (\n  value: AnimatedValue | AnimatedValueXY | AnimatedColor,\n  config: TimingAnimationConfig,\n): CompositeAnimation {\n  const start = function (\n    animatedValue: AnimatedValue | AnimatedValueXY | AnimatedColor,\n    configuration: TimingAnimationConfig,\n    callback?: ?EndCallback,\n  ): void {\n    callback = _combineCallbacks(callback, configuration);\n    const singleValue: any = animatedValue;\n    const singleConfig: any = configuration;\n    singleValue.stopTracking();\n    if (configuration.toValue instanceof AnimatedNode) {\n      singleValue.track(\n        new AnimatedTracking(\n          singleValue,\n          configuration.toValue,\n          TimingAnimation,\n          singleConfig,\n          callback,\n        ),\n      );\n    } else {\n      singleValue.animate(new TimingAnimation(singleConfig), callback);\n    }\n  };\n\n  return (\n    maybeVectorAnim(value, config, timingImpl) || {\n      start: function (callback?: ?EndCallback, isLooping?: boolean): void {\n        start(value, {...config, isLooping}, callback);\n      },\n\n      stop: function (): void {\n        value.stopAnimation();\n      },\n\n      reset: function (): void {\n        value.resetAnimation();\n      },\n\n      _startNativeLoop: function (iterations?: number): void {\n        const singleConfig = {...config, iterations};\n        start(value, singleConfig);\n      },\n\n      _isUsingNativeDriver: function (): boolean {\n        return config.useNativeDriver || false;\n      },\n    }\n  );\n};\n\nconst decayImpl = function (\n  value: AnimatedValue | AnimatedValueXY | AnimatedColor,\n  config: DecayAnimationConfig,\n): CompositeAnimation {\n  const start = function (\n    animatedValue: AnimatedValue | AnimatedValueXY | AnimatedColor,\n    configuration: DecayAnimationConfig,\n    callback?: ?EndCallback,\n  ): void {\n    callback = _combineCallbacks(callback, configuration);\n    const singleValue: any = animatedValue;\n    const singleConfig: any = configuration;\n    singleValue.stopTracking();\n    singleValue.animate(new DecayAnimation(singleConfig), callback);\n  };\n\n  return (\n    maybeVectorAnim(value, config, decayImpl) || {\n      start: function (callback?: ?EndCallback): void {\n        start(value, config, callback);\n      },\n\n      stop: function (): void {\n        value.stopAnimation();\n      },\n\n      reset: function (): void {\n        value.resetAnimation();\n      },\n\n      _startNativeLoop: function (iterations?: number): void {\n        const singleConfig = {...config, iterations};\n        start(value, singleConfig);\n      },\n\n      _isUsingNativeDriver: function (): boolean {\n        return config.useNativeDriver || false;\n      },\n    }\n  );\n};\n\nconst sequenceImpl = function (\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n  let current = 0;\n  return {\n    start: function (callback?: ?EndCallback, isLooping?: boolean) {\n      const onComplete = function (result: EndResult) {\n        if (!result.finished) {\n          callback && callback(result);\n          return;\n        }\n\n        current++;\n\n        if (current === animations.length) {\n          // if the start is called, even without a reset, it should start from the beginning\n          current = 0;\n          callback && callback(result);\n          return;\n        }\n\n        animations[current].start(onComplete, isLooping);\n      };\n\n      if (animations.length === 0) {\n        callback && callback({finished: true});\n      } else {\n        animations[current].start(onComplete, isLooping);\n      }\n    },\n\n    stop: function () {\n      if (current < animations.length) {\n        animations[current].stop();\n      }\n    },\n\n    reset: function () {\n      animations.forEach((animation, idx) => {\n        if (idx <= current) {\n          animation.reset();\n        }\n      });\n      current = 0;\n    },\n\n    _startNativeLoop: function () {\n      throw new Error(\n        'Loops run using the native driver cannot contain Animated.sequence animations',\n      );\n    },\n\n    _isUsingNativeDriver: function (): boolean {\n      return false;\n    },\n  };\n};\n\ntype ParallelConfig = {\n  // If one is stopped, stop all.  default: true\n  stopTogether?: boolean,\n  ...\n};\nconst parallelImpl = function (\n  animations: Array<CompositeAnimation>,\n  config?: ?ParallelConfig,\n): CompositeAnimation {\n  let doneCount = 0;\n  // Make sure we only call stop() at most once for each animation\n  const hasEnded: {[number]: boolean} = {};\n  const stopTogether = !(config && config.stopTogether === false);\n\n  const result = {\n    start: function (callback?: ?EndCallback, isLooping?: boolean) {\n      if (doneCount === animations.length) {\n        callback && callback({finished: true});\n        return;\n      }\n\n      animations.forEach((animation, idx) => {\n        const cb = function (endResult: EndResult) {\n          hasEnded[idx] = true;\n          doneCount++;\n          if (doneCount === animations.length) {\n            doneCount = 0;\n            callback && callback(endResult);\n            return;\n          }\n\n          if (!endResult.finished && stopTogether) {\n            result.stop();\n          }\n        };\n\n        if (!animation) {\n          cb({finished: true});\n        } else {\n          animation.start(cb, isLooping);\n        }\n      });\n    },\n\n    stop: function (): void {\n      animations.forEach((animation, idx) => {\n        !hasEnded[idx] && animation.stop();\n        hasEnded[idx] = true;\n      });\n    },\n\n    reset: function (): void {\n      animations.forEach((animation, idx) => {\n        animation.reset();\n        hasEnded[idx] = false;\n        doneCount = 0;\n      });\n    },\n\n    _startNativeLoop: function (): empty {\n      throw new Error(\n        'Loops run using the native driver cannot contain Animated.parallel animations',\n      );\n    },\n\n    _isUsingNativeDriver: function (): boolean {\n      return false;\n    },\n  };\n\n  return result;\n};\n\nconst delayImpl = function (time: number): CompositeAnimation {\n  // Would be nice to make a specialized implementation\n  return timingImpl(new AnimatedValue(0), {\n    toValue: 0,\n    delay: time,\n    duration: 0,\n    useNativeDriver: false,\n  });\n};\n\nconst staggerImpl = function (\n  time: number,\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n  return parallelImpl(\n    animations.map((animation, i) => {\n      return sequenceImpl([delayImpl(time * i), animation]);\n    }),\n  );\n};\n\ntype LoopAnimationConfig = {\n  iterations: number,\n  resetBeforeIteration?: boolean,\n  ...\n};\n\nconst loopImpl = function (\n  animation: CompositeAnimation,\n  // $FlowFixMe[prop-missing]\n  {iterations = -1, resetBeforeIteration = true}: LoopAnimationConfig = {},\n): CompositeAnimation {\n  let isFinished = false;\n  let iterationsSoFar = 0;\n  return {\n    start: function (callback?: ?EndCallback) {\n      const restart = function (result: EndResult = {finished: true}): void {\n        if (\n          isFinished ||\n          iterationsSoFar === iterations ||\n          result.finished === false\n        ) {\n          callback && callback(result);\n        } else {\n          iterationsSoFar++;\n          resetBeforeIteration && animation.reset();\n          animation.start(restart, iterations === -1);\n        }\n      };\n      if (!animation || iterations === 0) {\n        callback && callback({finished: true});\n      } else {\n        if (animation._isUsingNativeDriver()) {\n          animation._startNativeLoop(iterations);\n        } else {\n          restart(); // Start looping recursively on the js thread\n        }\n      }\n    },\n\n    stop: function (): void {\n      isFinished = true;\n      animation.stop();\n    },\n\n    reset: function (): void {\n      iterationsSoFar = 0;\n      isFinished = false;\n      animation.reset();\n    },\n\n    _startNativeLoop: function () {\n      throw new Error(\n        'Loops run using the native driver cannot contain Animated.loop animations',\n      );\n    },\n\n    _isUsingNativeDriver: function (): boolean {\n      return animation._isUsingNativeDriver();\n    },\n  };\n};\n\nfunction forkEventImpl(\n  event: ?AnimatedEvent | ?Function,\n  listener: Function,\n): AnimatedEvent | Function {\n  if (!event) {\n    return listener;\n  } else if (event instanceof AnimatedEvent) {\n    event.__addListener(listener);\n    return event;\n  } else {\n    return (...args) => {\n      typeof event === 'function' && event(...args);\n      listener(...args);\n    };\n  }\n}\n\nfunction unforkEventImpl(\n  event: ?AnimatedEvent | ?Function,\n  listener: Function,\n): void {\n  if (event && event instanceof AnimatedEvent) {\n    event.__removeListener(listener);\n  }\n}\n\nconst eventImpl = function <T>(\n  argMapping: $ReadOnlyArray<?Mapping>,\n  config: EventConfig<T>,\n): any {\n  const animatedEvent = new AnimatedEvent(argMapping, config);\n  if (animatedEvent.__isNative) {\n    return animatedEvent;\n  } else {\n    return animatedEvent.__getHandler();\n  }\n};\n\n// All types of animated nodes that represent scalar numbers and can be interpolated (etc)\ntype AnimatedNumeric =\n  | AnimatedAddition\n  | AnimatedDiffClamp\n  | AnimatedDivision\n  | AnimatedInterpolation<number>\n  | AnimatedModulo\n  | AnimatedMultiplication\n  | AnimatedSubtraction\n  | AnimatedValue;\n\nexport type {AnimatedNumeric as Numeric};\n\n/**\n * The `Animated` library is designed to make animations fluid, powerful, and\n * easy to build and maintain. `Animated` focuses on declarative relationships\n * between inputs and outputs, with configurable transforms in between, and\n * simple `start`/`stop` methods to control time-based animation execution.\n * If additional transforms are added, be sure to include them in\n * AnimatedMock.js as well.\n *\n * See https://reactnative.dev/docs/animated\n */\nexport default {\n  /**\n   * Standard value class for driving animations.  Typically initialized with\n   * `new Animated.Value(0);`\n   *\n   * See https://reactnative.dev/docs/animated#value\n   */\n  Value: AnimatedValue,\n  /**\n   * 2D value class for driving 2D animations, such as pan gestures.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy\n   */\n  ValueXY: AnimatedValueXY,\n  /**\n   * Value class for driving color animations.\n   */\n  Color: AnimatedColor,\n  /**\n   * Exported to use the Interpolation type in flow.\n   *\n   * See https://reactnative.dev/docs/animated#interpolation\n   */\n  Interpolation: AnimatedInterpolation,\n  /**\n   * Exported for ease of type checking. All animated values derive from this\n   * class.\n   *\n   * See https://reactnative.dev/docs/animated#node\n   */\n  Node: AnimatedNode,\n  decay: decayImpl,\n  timing: timingImpl,\n  spring: springImpl,\n  add: addImpl,\n  subtract: subtractImpl,\n  divide: divideImpl,\n  multiply: multiplyImpl,\n  modulo: moduloImpl,\n  diffClamp: diffClampImpl,\n  delay: delayImpl,\n  sequence: sequenceImpl,\n  parallel: parallelImpl,\n  stagger: staggerImpl,\n  loop: loopImpl,\n  event: eventImpl,\n  createAnimatedComponent,\n  attachNativeEvent: attachNativeEventImpl,\n  forkEvent: forkEventImpl,\n  unforkEvent: unforkEventImpl,\n\n  /**\n   * Expose Event class, so it can be used as a type for type checkers.\n   */\n  Event: AnimatedEvent,\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {NativeSyntheticEvent} from '../Types/CoreEventTypes';\nimport type {PlatformConfig} from './AnimatedPlatformConfig';\nimport type {EventMapping} from './NativeAnimatedModule';\n\nimport NativeAnimatedHelper from '../../src/private/animated/NativeAnimatedHelper';\nimport {findNodeHandle} from '../ReactNative/RendererProxy';\nimport AnimatedValue from './nodes/AnimatedValue';\nimport AnimatedValueXY from './nodes/AnimatedValueXY';\nimport invariant from 'invariant';\n\nexport type Mapping =\n  | {[key: string]: Mapping, ...}\n  | AnimatedValue\n  | AnimatedValueXY;\nexport type EventConfig<T> = {\n  listener?: ?(NativeSyntheticEvent<T>) => mixed,\n  useNativeDriver: boolean,\n  platformConfig?: PlatformConfig,\n};\n\nexport function attachNativeEventImpl(\n  viewRef: any,\n  eventName: string,\n  argMapping: $ReadOnlyArray<?Mapping>,\n  platformConfig: ?PlatformConfig,\n): {detach: () => void} {\n  // Find animated values in `argMapping` and create an array representing their\n  // key path inside the `nativeEvent` object. Ex.: ['contentOffset', 'x'].\n  const eventMappings: Array<EventMapping> = [];\n\n  const traverse = (value: mixed, path: Array<string>) => {\n    if (value instanceof AnimatedValue) {\n      value.__makeNative(platformConfig);\n\n      eventMappings.push({\n        nativeEventPath: path,\n        animatedValueTag: value.__getNativeTag(),\n      });\n    } else if (value instanceof AnimatedValueXY) {\n      traverse(value.x, path.concat('x'));\n      traverse(value.y, path.concat('y'));\n    } else if (typeof value === 'object') {\n      for (const key in value) {\n        traverse(value[key], path.concat(key));\n      }\n    }\n  };\n\n  invariant(\n    argMapping[0] && argMapping[0].nativeEvent,\n    'Native driven events only support animated values contained inside `nativeEvent`.',\n  );\n\n  // Assume that the event containing `nativeEvent` is always the first argument.\n  traverse(argMapping[0].nativeEvent, []);\n\n  const viewTag = findNodeHandle(viewRef);\n  if (viewTag != null) {\n    eventMappings.forEach(mapping => {\n      NativeAnimatedHelper.API.addAnimatedEventToView(\n        viewTag,\n        eventName,\n        mapping,\n      );\n    });\n  }\n\n  return {\n    detach() {\n      if (viewTag != null) {\n        eventMappings.forEach(mapping => {\n          NativeAnimatedHelper.API.removeAnimatedEventFromView(\n            viewTag,\n            eventName,\n            // $FlowFixMe[incompatible-call]\n            mapping.animatedValueTag,\n          );\n        });\n      }\n    },\n  };\n}\n\nfunction validateMapping(argMapping: $ReadOnlyArray<?Mapping>, args: any) {\n  const validate = (recMapping: ?Mapping, recEvt: any, key: string) => {\n    if (recMapping instanceof AnimatedValue) {\n      invariant(\n        typeof recEvt === 'number',\n        'Bad mapping of event key ' +\n          key +\n          ', should be number but got ' +\n          typeof recEvt,\n      );\n      return;\n    }\n    if (recMapping instanceof AnimatedValueXY) {\n      invariant(\n        typeof recEvt.x === 'number' && typeof recEvt.y === 'number',\n        'Bad mapping of event key ' + key + ', should be XY but got ' + recEvt,\n      );\n      return;\n    }\n    if (typeof recEvt === 'number') {\n      invariant(\n        recMapping instanceof AnimatedValue,\n        'Bad mapping of type ' +\n          typeof recMapping +\n          ' for key ' +\n          key +\n          ', event value must map to AnimatedValue',\n      );\n      return;\n    }\n    invariant(\n      typeof recMapping === 'object',\n      'Bad mapping of type ' + typeof recMapping + ' for key ' + key,\n    );\n    invariant(\n      typeof recEvt === 'object',\n      'Bad event of type ' + typeof recEvt + ' for key ' + key,\n    );\n    for (const mappingKey in recMapping) {\n      validate(recMapping[mappingKey], recEvt[mappingKey], mappingKey);\n    }\n  };\n\n  invariant(\n    args.length >= argMapping.length,\n    'Event has less arguments than mapping',\n  );\n  argMapping.forEach((mapping, idx) => {\n    validate(mapping, args[idx], 'arg' + idx);\n  });\n}\n\nexport class AnimatedEvent {\n  _argMapping: $ReadOnlyArray<?Mapping>;\n  _listeners: Array<Function> = [];\n  _attachedEvent: ?{detach: () => void, ...};\n  __isNative: boolean;\n  __platformConfig: ?PlatformConfig;\n\n  constructor(argMapping: $ReadOnlyArray<?Mapping>, config: EventConfig<any>) {\n    this._argMapping = argMapping;\n\n    if (config == null) {\n      console.warn('Animated.event now requires a second argument for options');\n      config = {useNativeDriver: false};\n    }\n\n    if (config.listener) {\n      this.__addListener(config.listener);\n    }\n    this._attachedEvent = null;\n    this.__isNative = NativeAnimatedHelper.shouldUseNativeDriver(config);\n    this.__platformConfig = config.platformConfig;\n  }\n\n  __addListener(callback: Function): void {\n    this._listeners.push(callback);\n  }\n\n  __removeListener(callback: Function): void {\n    this._listeners = this._listeners.filter(listener => listener !== callback);\n  }\n\n  __attach(viewRef: any, eventName: string): void {\n    invariant(\n      this.__isNative,\n      'Only native driven events need to be attached.',\n    );\n\n    this._attachedEvent = attachNativeEventImpl(\n      viewRef,\n      eventName,\n      this._argMapping,\n      this.__platformConfig,\n    );\n  }\n\n  __detach(viewTag: any, eventName: string): void {\n    invariant(\n      this.__isNative,\n      'Only native driven events need to be detached.',\n    );\n\n    this._attachedEvent && this._attachedEvent.detach();\n  }\n\n  __getHandler(): any | ((...args: any) => void) {\n    if (this.__isNative) {\n      if (__DEV__) {\n        let validatedMapping = false;\n        return (...args: any) => {\n          if (!validatedMapping) {\n            validateMapping(this._argMapping, args);\n            validatedMapping = true;\n          }\n          this._callListeners(...args);\n        };\n      } else {\n        return this._callListeners;\n      }\n    }\n\n    let validatedMapping = false;\n    return (...args: any) => {\n      if (__DEV__ && !validatedMapping) {\n        validateMapping(this._argMapping, args);\n        validatedMapping = true;\n      }\n\n      const traverse = (\n        recMapping: ?(Mapping | AnimatedValue),\n        recEvt: any,\n      ) => {\n        if (recMapping instanceof AnimatedValue) {\n          if (typeof recEvt === 'number') {\n            recMapping.setValue(recEvt);\n          }\n        } else if (recMapping instanceof AnimatedValueXY) {\n          if (typeof recEvt === 'object') {\n            traverse(recMapping.x, recEvt.x);\n            traverse(recMapping.y, recEvt.y);\n          }\n        } else if (typeof recMapping === 'object') {\n          for (const mappingKey in recMapping) {\n            /* $FlowFixMe[prop-missing] (>=0.120.0) This comment suppresses an\n             * error found when Flow v0.120 was deployed. To see the error,\n             * delete this comment and run Flow. */\n            traverse(recMapping[mappingKey], recEvt[mappingKey]);\n          }\n        }\n      };\n      this._argMapping.forEach((mapping, idx) => {\n        traverse(mapping, args[idx]);\n      });\n\n      this._callListeners(...args);\n    };\n  }\n\n  _callListeners = (...args: any) => {\n    this._listeners.forEach(listener => listener(...args));\n  };\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {EventConfig} from '../../../Libraries/Animated/AnimatedEvent';\nimport type {\n  AnimationConfig,\n  EndCallback,\n} from '../../../Libraries/Animated/animations/Animation';\nimport type {\n  AnimatedNodeConfig,\n  EventMapping,\n} from '../../../Libraries/Animated/NativeAnimatedModule';\nimport type {EventSubscription} from '../../../Libraries/vendor/emitter/EventEmitter';\n\nimport NativeAnimatedNonTurboModule from '../../../Libraries/Animated/NativeAnimatedModule';\nimport NativeAnimatedTurboModule from '../../../Libraries/Animated/NativeAnimatedTurboModule';\nimport NativeEventEmitter from '../../../Libraries/EventEmitter/NativeEventEmitter';\nimport RCTDeviceEventEmitter from '../../../Libraries/EventEmitter/RCTDeviceEventEmitter';\nimport Platform from '../../../Libraries/Utilities/Platform';\nimport * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlags';\nimport invariant from 'invariant';\nimport nullthrows from 'nullthrows';\n\n// TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%.\nconst NativeAnimatedModule: typeof NativeAnimatedTurboModule =\n  NativeAnimatedNonTurboModule ?? NativeAnimatedTurboModule;\n\nlet __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */\nlet __nativeAnimationIdCount = 1; /* used for started animations */\n\nlet nativeEventEmitter;\n\nlet waitingForQueuedOperations = new Set<string>();\nlet queueOperations = false;\nlet queue: Array<() => void> = [];\nlet singleOpQueue: Array<mixed> = [];\n\nconst isSingleOpBatching =\n  Platform.OS === 'android' &&\n  NativeAnimatedModule?.queueAndExecuteBatchedOperations != null &&\n  ReactNativeFeatureFlags.animatedShouldUseSingleOp();\nlet flushQueueImmediate = null;\n\nconst eventListenerGetValueCallbacks: {\n  [number]: (value: number) => void,\n} = {};\nconst eventListenerAnimationFinishedCallbacks: {\n  [number]: EndCallback,\n} = {};\nlet globalEventEmitterGetValueListener: ?EventSubscription = null;\nlet globalEventEmitterAnimationFinishedListener: ?EventSubscription = null;\n\nconst shouldSignalBatch: boolean =\n  ReactNativeFeatureFlags.animatedShouldSignalBatch() ||\n  ReactNativeFeatureFlags.cxxNativeAnimatedEnabled();\n\nfunction createNativeOperations(): $NonMaybeType<typeof NativeAnimatedModule> {\n  const methodNames = [\n    'createAnimatedNode', // 1\n    'updateAnimatedNodeConfig', // 2\n    'getValue', // 3\n    'startListeningToAnimatedNodeValue', // 4\n    'stopListeningToAnimatedNodeValue', // 5\n    'connectAnimatedNodes', // 6\n    'disconnectAnimatedNodes', // 7\n    'startAnimatingNode', // 8\n    'stopAnimation', // 9\n    'setAnimatedNodeValue', // 10\n    'setAnimatedNodeOffset', // 11\n    'flattenAnimatedNodeOffset', // 12\n    'extractAnimatedNodeOffset', // 13\n    'connectAnimatedNodeToView', // 14\n    'disconnectAnimatedNodeFromView', // 15\n    'restoreDefaultValues', // 16\n    'dropAnimatedNode', // 17\n    'addAnimatedEventToView', // 18\n    'removeAnimatedEventFromView', // 19\n    'addListener', // 20\n    'removeListener', // 21\n  ];\n  const nativeOperations: {\n    [$Values<typeof methodNames>]: (...$ReadOnlyArray<mixed>) => void,\n  } = {};\n  if (isSingleOpBatching) {\n    for (let ii = 0, length = methodNames.length; ii < length; ii++) {\n      const methodName = methodNames[ii];\n      const operationID = ii + 1;\n      nativeOperations[methodName] = (...args) => {\n        // `singleOpQueue` is a flat array of operation IDs and arguments, which\n        // is possible because # arguments is fixed for each operation. For more\n        // details, see `NativeAnimatedModule.queueAndExecuteBatchedOperations`.\n        singleOpQueue.push(operationID, ...args);\n        if (shouldSignalBatch) {\n          clearImmediate(flushQueueImmediate);\n          flushQueueImmediate = setImmediate(API.flushQueue);\n        }\n      };\n    }\n  } else {\n    for (let ii = 0, length = methodNames.length; ii < length; ii++) {\n      const methodName = methodNames[ii];\n      nativeOperations[methodName] = (...args) => {\n        /* $FlowFixMe[prop-missing] Natural Inference rollout. See\n         * https://fburl.com/workplace/6291gfvu */\n        const method = nullthrows(NativeAnimatedModule)[methodName];\n        // If queueing is explicitly on, *or* the queue has not yet\n        // been flushed, use the queue. This is to prevent operations\n        // from being executed out of order.\n        if (queueOperations || queue.length !== 0) {\n          // $FlowExpectedError[incompatible-call] - Dynamism.\n          queue.push(() => method(...args));\n        } else if (shouldSignalBatch) {\n          // $FlowExpectedError[incompatible-call] - Dynamism.\n          queue.push(() => method(...args));\n          clearImmediate(flushQueueImmediate);\n          flushQueueImmediate = setImmediate(API.flushQueue);\n        } else {\n          // $FlowExpectedError[incompatible-call] - Dynamism.\n          method(...args);\n        }\n      };\n    }\n  }\n  // $FlowExpectedError[incompatible-return] - Dynamism.\n  return nativeOperations;\n}\n\nconst NativeOperations = createNativeOperations();\n\n/**\n * Wrappers around NativeAnimatedModule to provide flow and autocomplete support for\n * the native module methods, and automatic queue management on Android\n */\nconst API = {\n  getValue: (isSingleOpBatching\n    ? (tag, saveValueCallback) => {\n        if (saveValueCallback) {\n          eventListenerGetValueCallbacks[tag] = saveValueCallback;\n        }\n        /* $FlowExpectedError[incompatible-call] - `saveValueCallback` is handled\n            differently when `isSingleOpBatching` is enabled. */\n        NativeOperations.getValue(tag);\n      }\n    : (tag, saveValueCallback) => {\n        NativeOperations.getValue(tag, saveValueCallback);\n      }) as $NonMaybeType<typeof NativeAnimatedModule>['getValue'],\n\n  setWaitingForIdentifier(id: string): void {\n    if (shouldSignalBatch) {\n      return;\n    }\n\n    waitingForQueuedOperations.add(id);\n    queueOperations = true;\n    if (\n      ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() &&\n      flushQueueImmediate\n    ) {\n      clearImmediate(flushQueueImmediate);\n    }\n  },\n\n  unsetWaitingForIdentifier(id: string): void {\n    if (shouldSignalBatch) {\n      return;\n    }\n\n    waitingForQueuedOperations.delete(id);\n\n    if (waitingForQueuedOperations.size === 0) {\n      queueOperations = false;\n      API.disableQueue();\n    }\n  },\n\n  disableQueue(): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n    if (ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush()) {\n      const prevImmediate = flushQueueImmediate;\n      clearImmediate(prevImmediate);\n      flushQueueImmediate = setImmediate(API.flushQueue);\n    } else {\n      API.flushQueue();\n    }\n  },\n\n  flushQueue: (isSingleOpBatching\n    ? (): void => {\n        invariant(\n          NativeAnimatedModule,\n          'Native animated module is not available',\n        );\n        flushQueueImmediate = null;\n\n        if (singleOpQueue.length === 0) {\n          return;\n        }\n\n        // Set up event listener for callbacks if it's not set up\n        ensureGlobalEventEmitterListeners();\n\n        // Single op batching doesn't use callback functions, instead we\n        // use RCTDeviceEventEmitter. This reduces overhead of sending lots of\n        // JSI functions across to native code; but also, TM infrastructure currently\n        // does not support packing a function into native arrays.\n        NativeAnimatedModule?.queueAndExecuteBatchedOperations?.(singleOpQueue);\n        singleOpQueue.length = 0;\n      }\n    : (): void => {\n        invariant(\n          NativeAnimatedModule,\n          'Native animated module is not available',\n        );\n        flushQueueImmediate = null;\n\n        if (queue.length === 0) {\n          return;\n        }\n\n        if (Platform.OS === 'android' || shouldSignalBatch) {\n          NativeAnimatedModule?.startOperationBatch?.();\n        }\n\n        for (let q = 0, l = queue.length; q < l; q++) {\n          queue[q]();\n        }\n        queue.length = 0;\n\n        if (Platform.OS === 'android' || shouldSignalBatch) {\n          NativeAnimatedModule?.finishOperationBatch?.();\n        }\n      }) as () => void,\n\n  createAnimatedNode(tag: number, config: AnimatedNodeConfig): void {\n    NativeOperations.createAnimatedNode(tag, config);\n  },\n\n  updateAnimatedNodeConfig(tag: number, config: AnimatedNodeConfig): void {\n    NativeOperations.updateAnimatedNodeConfig?.(tag, config);\n  },\n\n  startListeningToAnimatedNodeValue(tag: number): void {\n    NativeOperations.startListeningToAnimatedNodeValue(tag);\n  },\n\n  stopListeningToAnimatedNodeValue(tag: number): void {\n    NativeOperations.stopListeningToAnimatedNodeValue(tag);\n  },\n\n  connectAnimatedNodes(parentTag: number, childTag: number): void {\n    NativeOperations.connectAnimatedNodes(parentTag, childTag);\n  },\n\n  disconnectAnimatedNodes(parentTag: number, childTag: number): void {\n    NativeOperations.disconnectAnimatedNodes(parentTag, childTag);\n  },\n\n  startAnimatingNode: (isSingleOpBatching\n    ? (animationId, nodeTag, config, endCallback) => {\n        if (endCallback) {\n          eventListenerAnimationFinishedCallbacks[animationId] = endCallback;\n        }\n        /* $FlowExpectedError[incompatible-call] - `endCallback` is handled\n            differently when `isSingleOpBatching` is enabled. */\n        NativeOperations.startAnimatingNode(animationId, nodeTag, config);\n      }\n    : (animationId, nodeTag, config, endCallback) => {\n        NativeOperations.startAnimatingNode(\n          animationId,\n          nodeTag,\n          config,\n          endCallback,\n        );\n      }) as $NonMaybeType<typeof NativeAnimatedModule>['startAnimatingNode'],\n\n  stopAnimation(animationId: number) {\n    NativeOperations.stopAnimation(animationId);\n  },\n\n  setAnimatedNodeValue(nodeTag: number, value: number): void {\n    NativeOperations.setAnimatedNodeValue(nodeTag, value);\n  },\n\n  setAnimatedNodeOffset(nodeTag: number, offset: number): void {\n    NativeOperations.setAnimatedNodeOffset(nodeTag, offset);\n  },\n\n  flattenAnimatedNodeOffset(nodeTag: number): void {\n    NativeOperations.flattenAnimatedNodeOffset(nodeTag);\n  },\n\n  extractAnimatedNodeOffset(nodeTag: number): void {\n    NativeOperations.extractAnimatedNodeOffset(nodeTag);\n  },\n\n  connectAnimatedNodeToView(nodeTag: number, viewTag: number): void {\n    NativeOperations.connectAnimatedNodeToView(nodeTag, viewTag);\n  },\n\n  disconnectAnimatedNodeFromView(nodeTag: number, viewTag: number): void {\n    NativeOperations.disconnectAnimatedNodeFromView(nodeTag, viewTag);\n  },\n\n  restoreDefaultValues(nodeTag: number): void {\n    NativeOperations.restoreDefaultValues?.(nodeTag);\n  },\n\n  dropAnimatedNode(tag: number): void {\n    NativeOperations.dropAnimatedNode(tag);\n  },\n\n  addAnimatedEventToView(\n    viewTag: number,\n    eventName: string,\n    eventMapping: EventMapping,\n  ) {\n    NativeOperations.addAnimatedEventToView(viewTag, eventName, eventMapping);\n  },\n\n  removeAnimatedEventFromView(\n    viewTag: number,\n    eventName: string,\n    animatedNodeTag: number,\n  ) {\n    NativeOperations.removeAnimatedEventFromView(\n      viewTag,\n      eventName,\n      animatedNodeTag,\n    );\n  },\n};\n\nfunction ensureGlobalEventEmitterListeners() {\n  if (\n    globalEventEmitterGetValueListener &&\n    globalEventEmitterAnimationFinishedListener\n  ) {\n    return;\n  }\n  globalEventEmitterGetValueListener = RCTDeviceEventEmitter.addListener(\n    'onNativeAnimatedModuleGetValue',\n    params => {\n      const {tag} = params;\n      const callback = eventListenerGetValueCallbacks[tag];\n      if (!callback) {\n        return;\n      }\n      callback(params.value);\n      delete eventListenerGetValueCallbacks[tag];\n    },\n  );\n  globalEventEmitterAnimationFinishedListener =\n    RCTDeviceEventEmitter.addListener(\n      'onNativeAnimatedModuleAnimationFinished',\n      params => {\n        // TODO: remove Array.isArray once native changes have propagated\n        const animations = Array.isArray(params) ? params : [params];\n        for (const animation of animations) {\n          const {animationId} = animation;\n          const callback = eventListenerAnimationFinishedCallbacks[animationId];\n          if (callback) {\n            callback(animation);\n            delete eventListenerAnimationFinishedCallbacks[animationId];\n          }\n        }\n      },\n    );\n}\n\nfunction generateNewNodeTag(): number {\n  return __nativeAnimatedNodeTagCount++;\n}\n\nfunction generateNewAnimationId(): number {\n  return __nativeAnimationIdCount++;\n}\n\nfunction assertNativeAnimatedModule(): void {\n  invariant(NativeAnimatedModule, 'Native animated module is not available');\n}\n\nlet _warnedMissingNativeAnimated = false;\n\nfunction shouldUseNativeDriver(\n  config: $ReadOnly<{...AnimationConfig, ...}> | EventConfig<mixed>,\n): boolean {\n  if (config.useNativeDriver == null) {\n    console.warn(\n      'Animated: `useNativeDriver` was not specified. This is a required ' +\n        'option and must be explicitly set to `true` or `false`',\n    );\n  }\n\n  if (config.useNativeDriver === true && !NativeAnimatedModule) {\n    if (process.env.NODE_ENV !== 'test') {\n      if (!_warnedMissingNativeAnimated) {\n        console.warn(\n          'Animated: `useNativeDriver` is not supported because the native ' +\n            'animated module is missing. Falling back to JS-based animation. To ' +\n            'resolve this, add `RCTAnimation` module to this app, or remove ' +\n            '`useNativeDriver`. ' +\n            'Make sure to run `bundle exec pod install` first. Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md',\n        );\n        _warnedMissingNativeAnimated = true;\n      }\n    }\n    return false;\n  }\n\n  return config.useNativeDriver || false;\n}\n\nfunction transformDataType(value: number | string): number | string {\n  // Change the string type to number type so we can reuse the same logic in\n  // iOS and Android platform\n  if (typeof value !== 'string') {\n    return value;\n  }\n\n  // Normalize degrees and radians to a number expressed in radians\n  if (value.endsWith('deg')) {\n    const degrees = parseFloat(value) || 0;\n    return (degrees * Math.PI) / 180.0;\n  } else if (value.endsWith('rad')) {\n    return parseFloat(value) || 0;\n  } else {\n    return value;\n  }\n}\n\nexport default {\n  API,\n  generateNewNodeTag,\n  generateNewAnimationId,\n  assertNativeAnimatedModule,\n  shouldUseNativeDriver,\n  shouldSignalBatch,\n  transformDataType,\n  // $FlowExpectedError[unsafe-getters-setters] - unsafe getter lint suppression\n  // $FlowExpectedError[missing-type-arg] - unsafe getter lint suppression\n  get nativeEventEmitter(): NativeEventEmitter {\n    if (!nativeEventEmitter) {\n      // $FlowFixMe[underconstrained-implicit-instantiation]\n      nativeEventEmitter = new NativeEventEmitter(\n        // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior\n        // If you want to use the native module on other platforms, please remove this condition and test its behavior\n        Platform.OS !== 'ios' ? null : NativeAnimatedModule,\n      );\n    }\n    return nativeEventEmitter;\n  },\n};\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeAnimatedModule';\nimport NativeAnimatedModule from '../../src/private/specs_DEPRECATED/modules/NativeAnimatedModule';\n\nexport default NativeAnimatedModule;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport shouldUseTurboAnimatedModule from '../../../../Libraries/Animated/shouldUseTurboAnimatedModule';\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\ntype EndResult = {finished: boolean, value?: number, offset?: number, ...};\ntype EndCallback = (result: EndResult) => void;\ntype SaveValueCallback = (value: number) => void;\n\nexport type EventMapping = {\n  nativeEventPath: Array<string>,\n  animatedValueTag: ?number,\n};\n\n// The config has different keys depending on the type of the Node\n// TODO(T54896888): Make these types strict\nexport type AnimatedNodeConfig = Object;\nexport type AnimatingNodeConfig = Object;\n\nexport interface Spec extends TurboModule {\n  +startOperationBatch: () => void;\n  +finishOperationBatch: () => void;\n  +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void;\n  +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void;\n  +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void;\n  +startListeningToAnimatedNodeValue: (tag: number) => void;\n  +stopListeningToAnimatedNodeValue: (tag: number) => void;\n  +connectAnimatedNodes: (parentTag: number, childTag: number) => void;\n  +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void;\n  +startAnimatingNode: (\n    animationId: number,\n    nodeTag: number,\n    config: AnimatingNodeConfig,\n    endCallback: EndCallback,\n  ) => void;\n  +stopAnimation: (animationId: number) => void;\n  +setAnimatedNodeValue: (nodeTag: number, value: number) => void;\n  +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void;\n  +flattenAnimatedNodeOffset: (nodeTag: number) => void;\n  +extractAnimatedNodeOffset: (nodeTag: number) => void;\n  +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void;\n  +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void;\n  +restoreDefaultValues: (nodeTag: number) => void;\n  +dropAnimatedNode: (tag: number) => void;\n  +addAnimatedEventToView: (\n    viewTag: number,\n    eventName: string,\n    eventMapping: EventMapping,\n  ) => void;\n  +removeAnimatedEventFromView: (\n    viewTag: number,\n    eventName: string,\n    animatedNodeTag: number,\n  ) => void;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n\n  // All of the above in a batched mode\n  +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array<any>) => void;\n}\n\nconst NativeModule: ?Spec = !shouldUseTurboAnimatedModule()\n  ? TurboModuleRegistry.get<Spec>('NativeAnimatedModule')\n  : null;\nexport default NativeModule;\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 * @flow strict-local\n * @format\n */\n\nimport * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';\nimport Platform from '../Utilities/Platform';\n\nfunction shouldUseTurboAnimatedModule(): boolean {\n  if (ReactNativeFeatureFlags.cxxNativeAnimatedEnabled()) {\n    return false;\n  } else {\n    return Platform.OS === 'ios' && global.RN$Bridgeless === true;\n  }\n}\n\nexport default shouldUseTurboAnimatedModule;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule';\nimport NativeAnimatedTurboModule from '../../src/private/specs_DEPRECATED/modules/NativeAnimatedTurboModule';\n\nexport default NativeAnimatedTurboModule;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport shouldUseTurboAnimatedModule from '../../../../Libraries/Animated/shouldUseTurboAnimatedModule';\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\ntype EndResult = {finished: boolean, value?: number, offset?: number, ...};\ntype EndCallback = (result: EndResult) => void;\ntype SaveValueCallback = (value: number) => void;\n\nexport type EventMapping = {\n  nativeEventPath: Array<string>,\n  animatedValueTag: ?number,\n};\n\n// The config has different keys depending on the type of the Node\n// TODO(T54896888): Make these types strict\nexport type AnimatedNodeConfig = Object;\nexport type AnimatingNodeConfig = Object;\n\nexport interface Spec extends TurboModule {\n  +startOperationBatch: () => void;\n  +finishOperationBatch: () => void;\n  +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void;\n  +updateAnimatedNodeConfig?: (tag: number, config: AnimatedNodeConfig) => void;\n  +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void;\n  +startListeningToAnimatedNodeValue: (tag: number) => void;\n  +stopListeningToAnimatedNodeValue: (tag: number) => void;\n  +connectAnimatedNodes: (parentTag: number, childTag: number) => void;\n  +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void;\n  +startAnimatingNode: (\n    animationId: number,\n    nodeTag: number,\n    config: AnimatingNodeConfig,\n    endCallback: EndCallback,\n  ) => void;\n  +stopAnimation: (animationId: number) => void;\n  +setAnimatedNodeValue: (nodeTag: number, value: number) => void;\n  +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void;\n  +flattenAnimatedNodeOffset: (nodeTag: number) => void;\n  +extractAnimatedNodeOffset: (nodeTag: number) => void;\n  +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void;\n  +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void;\n  +restoreDefaultValues: (nodeTag: number) => void;\n  +dropAnimatedNode: (tag: number) => void;\n  +addAnimatedEventToView: (\n    viewTag: number,\n    eventName: string,\n    eventMapping: EventMapping,\n  ) => void;\n  +removeAnimatedEventFromView: (\n    viewTag: number,\n    eventName: string,\n    animatedNodeTag: number,\n  ) => void;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n\n  // All of the above in a batched mode\n  +queueAndExecuteBatchedOperations?: (operationsAndArgs: Array<any>) => void;\n}\n\nconst NativeModule: ?Spec = shouldUseTurboAnimatedModule()\n  ? TurboModuleRegistry.get<Spec>('NativeAnimatedTurboModule')\n  : null;\n\nexport default NativeModule;\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 * @flow\n * @format\n */\n\nimport type {EventSubscription} from '../../vendor/emitter/EventEmitter';\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type Animation from '../animations/Animation';\nimport type {EndCallback} from '../animations/Animation';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type AnimatedNode from './AnimatedNode';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\nimport type AnimatedTracking from './AnimatedTracking';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport InteractionManager from '../../Interaction/InteractionManager';\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport type AnimatedValueConfig = $ReadOnly<{\n  ...AnimatedNodeConfig,\n  useNativeDriver: boolean,\n}>;\n\nconst NativeAnimatedAPI = NativeAnimatedHelper.API;\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n *               new Animated.Value(0)\n *     .interpolate()        .interpolate()    new Animated.Value(1)\n *         opacity               translateY      scale\n *          style                         transform\n *         View#234                         style\n *                                         View#123\n *\n * A) Top Down phase\n * When an Animated.Value is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\nexport function flushValue(rootNode: AnimatedNode): void {\n  const leaves = new Set<{update: () => void, ...}>();\n  function findAnimatedStyles(node: AnimatedNode) {\n    // $FlowFixMe[prop-missing]\n    if (typeof node.update === 'function') {\n      leaves.add((node: any));\n    } else {\n      node.__getChildren().forEach(findAnimatedStyles);\n    }\n  }\n  findAnimatedStyles(rootNode);\n  leaves.forEach(leaf => leaf.update());\n}\n\n/**\n * Some operations are executed only on batch end, which is _mostly_ scheduled when\n * Animated component props change. For some of the changes which require immediate execution\n * (e.g. setValue), we create a separate batch in case none is scheduled.\n */\nfunction _executeAsAnimatedBatch(id: string, operation: () => void) {\n  NativeAnimatedAPI.setWaitingForIdentifier(id);\n  operation();\n  NativeAnimatedAPI.unsetWaitingForIdentifier(id);\n}\n\n/**\n * Standard value for driving animations.  One `Animated.Value` can drive\n * multiple properties in a synchronized fashion, but can only be driven by one\n * mechanism at a time.  Using a new mechanism (e.g. starting a new animation,\n * or calling `setValue`) will stop any previous ones.\n *\n * See https://reactnative.dev/docs/animatedvalue\n */\nexport default class AnimatedValue extends AnimatedWithChildren {\n  #listenerCount: number;\n  #updateSubscription: ?EventSubscription;\n\n  _value: number;\n  _startingValue: number;\n  _offset: number;\n  _animation: ?Animation;\n  _tracking: ?AnimatedTracking;\n\n  constructor(value: number, config?: ?AnimatedValueConfig) {\n    super(config);\n    if (typeof value !== 'number') {\n      throw new Error('AnimatedValue: Attempting to set value to undefined');\n    }\n\n    this.#listenerCount = 0;\n    this.#updateSubscription = null;\n\n    this._startingValue = this._value = value;\n    this._offset = 0;\n    this._animation = null;\n    if (config && config.useNativeDriver) {\n      this.__makeNative();\n    }\n  }\n\n  __detach() {\n    if (this.__isNative) {\n      NativeAnimatedAPI.getValue(this.__getNativeTag(), value => {\n        this._value = value - this._offset;\n      });\n    }\n    this.stopAnimation();\n    super.__detach();\n  }\n\n  __getValue(): number {\n    return this._value + this._offset;\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig): void {\n    super.__makeNative(platformConfig);\n    if (this.#listenerCount > 0) {\n      this.#ensureUpdateSubscriptionExists();\n    }\n  }\n\n  addListener(callback: (value: any) => mixed): string {\n    const id = super.addListener(callback);\n    this.#listenerCount++;\n    if (this.__isNative) {\n      this.#ensureUpdateSubscriptionExists();\n    }\n    return id;\n  }\n\n  removeListener(id: string): void {\n    super.removeListener(id);\n    this.#listenerCount--;\n    if (this.__isNative && this.#listenerCount === 0) {\n      this.#updateSubscription?.remove();\n    }\n  }\n\n  removeAllListeners(): void {\n    super.removeAllListeners();\n    this.#listenerCount = 0;\n    if (this.__isNative) {\n      this.#updateSubscription?.remove();\n    }\n  }\n\n  #ensureUpdateSubscriptionExists(): void {\n    if (this.#updateSubscription != null) {\n      return;\n    }\n    const nativeTag = this.__getNativeTag();\n    NativeAnimatedAPI.startListeningToAnimatedNodeValue(nativeTag);\n    const subscription: EventSubscription =\n      NativeAnimatedHelper.nativeEventEmitter.addListener(\n        'onAnimatedValueUpdate',\n        data => {\n          if (data.tag === nativeTag) {\n            this.__onAnimatedValueUpdateReceived(data.value, data.offset);\n          }\n        },\n      );\n\n    this.#updateSubscription = {\n      remove: () => {\n        // Only this function assigns to `this.#updateSubscription`.\n        if (this.#updateSubscription == null) {\n          return;\n        }\n        this.#updateSubscription = null;\n        subscription.remove();\n        NativeAnimatedAPI.stopListeningToAnimatedNodeValue(nativeTag);\n      },\n    };\n  }\n\n  /**\n   * Directly set the value.  This will stop any animations running on the value\n   * and update all the bound properties.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#setvalue\n   */\n  setValue(value: number): void {\n    if (this._animation) {\n      this._animation.stop();\n      this._animation = null;\n    }\n    this._updateValue(\n      value,\n      !this.__isNative /* don't perform a flush for natively driven values */,\n    );\n    if (this.__isNative) {\n      _executeAsAnimatedBatch(this.__getNativeTag().toString(), () =>\n        NativeAnimatedAPI.setAnimatedNodeValue(this.__getNativeTag(), value),\n      );\n    }\n  }\n\n  /**\n   * Sets an offset that is applied on top of whatever value is set, whether via\n   * `setValue`, an animation, or `Animated.event`.  Useful for compensating\n   * things like the start of a pan gesture.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#setoffset\n   */\n  setOffset(offset: number): void {\n    this._offset = offset;\n    if (this.__isNative) {\n      NativeAnimatedAPI.setAnimatedNodeOffset(this.__getNativeTag(), offset);\n    }\n  }\n\n  /**\n   * Merges the offset value into the base value and resets the offset to zero.\n   * The final output of the value is unchanged.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#flattenoffset\n   */\n  flattenOffset(): void {\n    this._value += this._offset;\n    this._offset = 0;\n    if (this.__isNative) {\n      NativeAnimatedAPI.flattenAnimatedNodeOffset(this.__getNativeTag());\n    }\n  }\n\n  /**\n   * Sets the offset value to the base value, and resets the base value to zero.\n   * The final output of the value is unchanged.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#extractoffset\n   */\n  extractOffset(): void {\n    this._offset += this._value;\n    this._value = 0;\n    if (this.__isNative) {\n      _executeAsAnimatedBatch(this.__getNativeTag().toString(), () =>\n        NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag()),\n      );\n    }\n  }\n\n  /**\n   * Stops any running animation or tracking. `callback` is invoked with the\n   * final value after stopping the animation, which is useful for updating\n   * state to match the animation position with layout.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#stopanimation\n   */\n  stopAnimation(callback?: ?(value: number) => void): void {\n    this.stopTracking();\n    this._animation && this._animation.stop();\n    this._animation = null;\n    if (callback) {\n      if (this.__isNative) {\n        NativeAnimatedAPI.getValue(this.__getNativeTag(), callback);\n      } else {\n        callback(this.__getValue());\n      }\n    }\n  }\n\n  /**\n   * Stops any animation and resets the value to its original.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#resetanimation\n   */\n  resetAnimation(callback?: ?(value: number) => void): void {\n    this.stopAnimation(callback);\n    this._value = this._startingValue;\n    if (this.__isNative) {\n      NativeAnimatedAPI.setAnimatedNodeValue(\n        this.__getNativeTag(),\n        this._startingValue,\n      );\n    }\n  }\n\n  __onAnimatedValueUpdateReceived(value: number, offset?: number): void {\n    this._updateValue(value, false /*flush*/);\n    if (offset != null) {\n      this._offset = offset;\n    }\n  }\n\n  /**\n   * Interpolates the value before updating the property, e.g. mapping 0-1 to\n   * 0-10.\n   */\n  interpolate<OutputT: number | string>(\n    config: InterpolationConfigType<OutputT>,\n  ): AnimatedInterpolation<OutputT> {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  /**\n   * Typically only used internally, but could be used by a custom Animation\n   * class.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#animate\n   */\n  animate(animation: Animation, callback: ?EndCallback): void {\n    let handle = null;\n    if (animation.__isInteraction) {\n      handle = InteractionManager.createInteractionHandle();\n    }\n    const previousAnimation = this._animation;\n    this._animation && this._animation.stop();\n    this._animation = animation;\n    animation.start(\n      this._value,\n      value => {\n        // Natively driven animations will never call into that callback, therefore we can always\n        // pass flush = true to allow the updated value to propagate to native with setNativeProps\n        this._updateValue(value, true /* flush */);\n      },\n      result => {\n        this._animation = null;\n        if (handle !== null) {\n          InteractionManager.clearInteractionHandle(handle);\n        }\n        callback && callback(result);\n      },\n      previousAnimation,\n      this,\n    );\n  }\n\n  /**\n   * Typically only used internally.\n   */\n  stopTracking(): void {\n    this._tracking && this._tracking.__detach();\n    this._tracking = null;\n  }\n\n  /**\n   * Typically only used internally.\n   */\n  track(tracking: AnimatedTracking): void {\n    this.stopTracking();\n    this._tracking = tracking;\n    // Make sure that the tracking animation starts executing\n    this._tracking && this._tracking.update();\n  }\n\n  _updateValue(value: number, flush: boolean): void {\n    if (value === undefined) {\n      throw new Error('AnimatedValue: Attempting to set value to undefined');\n    }\n\n    this._value = value;\n    if (flush) {\n      flushValue(this);\n    }\n    this.__callListeners(this.__getValue());\n  }\n\n  __getNativeConfig(): Object {\n    return {\n      type: 'value',\n      value: this._value,\n      offset: this._offset,\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {EventSubscription} from '../vendor/emitter/EventEmitter';\nimport type {Task} from './TaskQueue';\n\nimport * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';\nimport EventEmitter from '../vendor/emitter/EventEmitter';\n\nconst BatchedBridge = require('../BatchedBridge/BatchedBridge').default;\nconst TaskQueue = require('./TaskQueue').default;\nconst invariant = require('invariant');\n\nexport type {Task, SimpleTask, PromiseTask} from './TaskQueue';\n\nexport type Handle = number;\n\nconst _emitter = new EventEmitter<{\n  interactionComplete: [],\n  interactionStart: [],\n}>();\n\nconst DEBUG_DELAY: 0 = 0;\nconst DEBUG: false = false;\n\nconst InteractionManagerImpl = {\n  Events: {\n    interactionStart: 'interactionStart',\n    interactionComplete: 'interactionComplete',\n  },\n\n  /**\n   * Schedule a function to run after all interactions have completed. Returns a cancellable\n   * \"promise\".\n   */\n  runAfterInteractions(task: ?Task): {\n    then: <U>(\n      onFulfill?: ?(void) => ?(Promise<U> | U),\n      onReject?: ?(error: mixed) => ?(Promise<U> | U),\n    ) => Promise<U>,\n    cancel: () => void,\n    ...\n  } {\n    const tasks: Array<Task> = [];\n    const promise = new Promise((resolve: () => void) => {\n      _scheduleUpdate();\n      if (task) {\n        tasks.push(task);\n      }\n      tasks.push({\n        run: resolve,\n        name: 'resolve ' + ((task && task.name) || '?'),\n      });\n      _taskQueue.enqueueTasks(tasks);\n    });\n    return {\n      // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n      then: promise.then.bind(promise),\n      cancel: function () {\n        _taskQueue.cancelTasks(tasks);\n      },\n    };\n  },\n\n  /**\n   * Notify manager that an interaction has started.\n   */\n  createInteractionHandle(): Handle {\n    DEBUG && console.log('InteractionManager: create interaction handle');\n    _scheduleUpdate();\n    const handle = ++_inc;\n    _addInteractionSet.add(handle);\n    return handle;\n  },\n\n  /**\n   * Notify manager that an interaction has completed.\n   */\n  clearInteractionHandle(handle: Handle) {\n    DEBUG && console.log('InteractionManager: clear interaction handle');\n    invariant(!!handle, 'InteractionManager: Must provide a handle to clear.');\n    _scheduleUpdate();\n    _addInteractionSet.delete(handle);\n    _deleteInteractionSet.add(handle);\n  },\n\n  // $FlowFixMe[unclear-type] unclear type of _emitter\n  // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n  addListener: _emitter.addListener.bind(_emitter) as (\n    eventType: string,\n    // $FlowFixMe[unclear-type] unclear type of arguments\n    listener: (...args: any) => mixed,\n    context: mixed,\n  ) => EventSubscription,\n\n  /**\n   * A positive number will use setTimeout to schedule any tasks after the\n   * eventLoopRunningTime hits the deadline value, otherwise all tasks will be\n   * executed in one setImmediate batch (default).\n   */\n  setDeadline(deadline: number) {\n    _deadline = deadline;\n  },\n};\n\nconst _interactionSet = new Set<number | Handle>();\nconst _addInteractionSet = new Set<number | Handle>();\nconst _deleteInteractionSet = new Set<Handle>();\nconst _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate});\nlet _nextUpdateHandle: $FlowFixMe | TimeoutID = 0;\nlet _inc = 0;\nlet _deadline = -1;\n\n/**\n * Schedule an asynchronous update to the interaction state.\n */\nfunction _scheduleUpdate() {\n  if (!_nextUpdateHandle) {\n    if (_deadline > 0) {\n      _nextUpdateHandle = setTimeout(_processUpdate, 0 + DEBUG_DELAY);\n    } else {\n      _nextUpdateHandle = setImmediate(_processUpdate);\n    }\n  }\n}\n\n/**\n * Notify listeners, process queue, etc\n */\nfunction _processUpdate() {\n  _nextUpdateHandle = 0;\n\n  const interactionCount = _interactionSet.size;\n  _addInteractionSet.forEach(handle => _interactionSet.add(handle));\n  _deleteInteractionSet.forEach(handle => _interactionSet.delete(handle));\n  const nextInteractionCount = _interactionSet.size;\n\n  if (interactionCount !== 0 && nextInteractionCount === 0) {\n    // transition from 1+ --> 0 interactions\n    /* $FlowFixMe[prop-missing] Natural Inference rollout. See\n     * https://fburl.com/workplace/6291gfvu */\n    /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See\n     * https://fburl.com/workplace/6291gfvu */\n    _emitter.emit(InteractionManager.Events.interactionComplete);\n  } else if (interactionCount === 0 && nextInteractionCount !== 0) {\n    // transition from 0 --> 1+ interactions\n    /* $FlowFixMe[prop-missing] Natural Inference rollout. See\n     * https://fburl.com/workplace/6291gfvu */\n    /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See\n     * https://fburl.com/workplace/6291gfvu */\n    _emitter.emit(InteractionManager.Events.interactionStart);\n  }\n\n  // process the queue regardless of a transition\n  if (nextInteractionCount === 0) {\n    while (_taskQueue.hasTasksToProcess()) {\n      _taskQueue.processNext();\n      if (\n        _deadline > 0 &&\n        BatchedBridge.getEventLoopRunningTime() >= _deadline\n      ) {\n        // Hit deadline before processing all tasks, so process more later.\n        _scheduleUpdate();\n        break;\n      }\n    }\n  }\n  _addInteractionSet.clear();\n  _deleteInteractionSet.clear();\n}\n\n/**\n * InteractionManager allows long-running work to be scheduled after any\n * interactions/animations have completed. In particular, this allows JavaScript\n * animations to run smoothly.\n *\n * Applications can schedule tasks to run after interactions with the following:\n *\n * ```\n * InteractionManager.runAfterInteractions(() => {\n *   // ...long-running synchronous task...\n * });\n * ```\n *\n * Compare this to other scheduling alternatives:\n *\n * - requestAnimationFrame(): for code that animates a view over time.\n * - setImmediate/setTimeout(): run code later, note this may delay animations.\n * - runAfterInteractions(): run code later, without delaying active animations.\n *\n * The touch handling system considers one or more active touches to be an\n * 'interaction' and will delay `runAfterInteractions()` callbacks until all\n * touches have ended or been cancelled.\n *\n * InteractionManager also allows applications to register animations by\n * creating an interaction 'handle' on animation start, and clearing it upon\n * completion:\n *\n * ```\n * var handle = InteractionManager.createInteractionHandle();\n * // run animation... (`runAfterInteractions` tasks are queued)\n * // later, on animation completion:\n * InteractionManager.clearInteractionHandle(handle);\n * // queued tasks run if all handles were cleared\n * ```\n *\n * `runAfterInteractions` takes either a plain callback function, or a\n * `PromiseTask` object with a `gen` method that returns a `Promise`.  If a\n * `PromiseTask` is supplied, then it is fully resolved (including asynchronous\n * dependencies that also schedule more tasks via `runAfterInteractions`) before\n * starting on the next task that might have been queued up synchronously\n * earlier.\n *\n * By default, queued tasks are executed together in a loop in one\n * `setImmediate` batch. If `setDeadline` is called with a positive number, then\n * tasks will only be executed until the deadline (in terms of js event loop run\n * time) approaches, at which point execution will yield via setTimeout,\n * allowing events such as touches to start interactions and block queued tasks\n * from executing, making apps more responsive.\n *\n * @deprecated\n */\nconst InteractionManager = (\n  ReactNativeFeatureFlags.disableInteractionManager()\n    ? // $FlowFixMe[incompatible-variance]\n      require('./InteractionManagerStub').default\n    : InteractionManagerImpl\n) as typeof InteractionManagerImpl;\n\nexport default InteractionManager;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nexport type SimpleTask = {\n  name: string,\n  run: () => void,\n};\nexport type PromiseTask = {\n  name: string,\n  gen: () => Promise<void>,\n};\nexport type Task = SimpleTask | PromiseTask | (() => void);\n\nconst DEBUG: false = false;\n\n/**\n * TaskQueue - A system for queueing and executing a mix of simple callbacks and\n * trees of dependent tasks based on Promises. No tasks are executed unless\n * `processNext` is called.\n *\n * `enqueue` takes a Task object with either a simple `run` callback, or a\n * `gen` function that returns a `Promise` and puts it in the queue.  If a gen\n * function is supplied, then the promise it returns will block execution of\n * tasks already in the queue until it resolves. This can be used to make sure\n * the first task is fully resolved (including asynchronous dependencies that\n * also schedule more tasks via `enqueue`) before starting on the next task.\n * The `onMoreTasks` constructor argument is used to inform the owner that an\n * async task has resolved and that the queue should be processed again.\n *\n * Note: Tasks are only actually executed with explicit calls to `processNext`.\n */\nclass TaskQueue {\n  /**\n   * TaskQueue instances are self contained and independent, so multiple tasks\n   * of varying semantics and priority can operate together.\n   *\n   * `onMoreTasks` is invoked when `PromiseTask`s resolve if there are more\n   * tasks to process.\n   */\n  constructor({onMoreTasks}: {onMoreTasks: () => void, ...}) {\n    this._onMoreTasks = onMoreTasks;\n    this._queueStack = [{tasks: [], popable: false}];\n  }\n\n  /**\n   * Add a task to the queue.  It is recommended to name your tasks for easier\n   * async debugging. Tasks will not be executed until `processNext` is called\n   * explicitly.\n   */\n  enqueue(task: Task): void {\n    this._getCurrentQueue().push(task);\n  }\n\n  enqueueTasks(tasks: Array<Task>): void {\n    tasks.forEach(task => this.enqueue(task));\n  }\n\n  cancelTasks(tasksToCancel: Array<Task>): void {\n    // search through all tasks and remove them.\n    this._queueStack = this._queueStack\n      .map(queue => ({\n        ...queue,\n        tasks: queue.tasks.filter(task => tasksToCancel.indexOf(task) === -1),\n      }))\n      .filter((queue, idx) => queue.tasks.length > 0 || idx === 0);\n  }\n\n  /**\n   * Check to see if `processNext` should be called.\n   *\n   * @returns {boolean} Returns true if there are tasks that are ready to be\n   * processed with `processNext`, or returns false if there are no more tasks\n   * to be processed right now, although there may be tasks in the queue that\n   * are blocked by earlier `PromiseTask`s that haven't resolved yet.\n   * `onMoreTasks` will be called after each `PromiseTask` resolves if there are\n   * tasks ready to run at that point.\n   */\n  hasTasksToProcess(): boolean {\n    return this._getCurrentQueue().length > 0;\n  }\n\n  /**\n   * Executes the next task in the queue.\n   */\n  processNext(): void {\n    const queue = this._getCurrentQueue();\n    if (queue.length) {\n      const task = queue.shift();\n      try {\n        if (typeof task === 'object' && task.gen) {\n          DEBUG && console.log('TaskQueue: genPromise for task ' + task.name);\n          this._genPromise(task);\n        } else if (typeof task === 'object' && task.run) {\n          DEBUG && console.log('TaskQueue: run task ' + task.name);\n          task.run();\n        } else {\n          invariant(\n            typeof task === 'function',\n            'Expected Function, SimpleTask, or PromiseTask, but got:\\n' +\n              JSON.stringify(task, null, 2),\n          );\n          DEBUG && console.log('TaskQueue: run anonymous task');\n          task();\n        }\n      } catch (e) {\n        e.message =\n          // $FlowFixMe[incompatible-type]\n          // $FlowFixMe[incompatible-use]\n          'TaskQueue: Error with task ' + (task.name || '') + ': ' + e.message;\n        throw e;\n      }\n    }\n  }\n\n  _queueStack: Array<{\n    tasks: Array<Task>,\n    popable: boolean,\n    ...\n  }>;\n  _onMoreTasks: () => void;\n\n  _getCurrentQueue(): Array<Task> {\n    const stackIdx = this._queueStack.length - 1;\n    const queue = this._queueStack[stackIdx];\n    if (\n      queue.popable &&\n      queue.tasks.length === 0 &&\n      this._queueStack.length > 1\n    ) {\n      this._queueStack.pop();\n      DEBUG &&\n        console.log('TaskQueue: popped queue: ', {\n          stackIdx,\n          queueStackSize: this._queueStack.length,\n        });\n      return this._getCurrentQueue();\n    } else {\n      return queue.tasks;\n    }\n  }\n\n  _genPromise(task: PromiseTask) {\n    // Each async task pushes it's own queue onto the queue stack. This\n    // effectively defers execution of previously queued tasks until the promise\n    // resolves, at which point we allow the new queue to be popped, which\n    // happens once it is fully processed.\n    this._queueStack.push({tasks: [], popable: false});\n    const stackIdx = this._queueStack.length - 1;\n    const stackItem = this._queueStack[stackIdx];\n    DEBUG && console.log('TaskQueue: push new queue: ', {stackIdx});\n    DEBUG && console.log('TaskQueue: exec gen task ' + task.name);\n    task\n      .gen()\n      .then(() => {\n        DEBUG &&\n          console.log('TaskQueue: onThen for gen task ' + task.name, {\n            stackIdx,\n            queueStackSize: this._queueStack.length,\n          });\n        stackItem.popable = true;\n        this.hasTasksToProcess() && this._onMoreTasks();\n      })\n      .catch(ex => {\n        setTimeout(() => {\n          ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`;\n          throw ex;\n        }, 0);\n      });\n  }\n}\n\nexport default TaskQueue;\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 * @flow strict\n * @format\n */\n\nimport type {EventSubscription} from '../vendor/emitter/EventEmitter';\n\nconst invariant = require('invariant');\n\nexport type Handle = number;\n\ntype Task =\n  | {\n      name: string,\n      run: () => void,\n    }\n  | {\n      name: string,\n      gen: () => Promise<void>,\n    }\n  | (() => void);\n\n// NOTE: The original implementation of `InteractionManager` never rejected\n// the returned promise. This preserves that behavior in the stub.\nfunction reject(error: Error): void {\n  setTimeout(() => {\n    throw error;\n  }, 0);\n}\n\n/**\n * InteractionManager allows long-running work to be scheduled after any\n * interactions/animations have completed. In particular, this allows JavaScript\n * animations to run smoothly.\n *\n * Applications can schedule tasks to run after interactions with the following:\n *\n * ```\n * InteractionManager.runAfterInteractions(() => {\n *   // ...long-running synchronous task...\n * });\n * ```\n *\n * Compare this to other scheduling alternatives:\n *\n * - requestAnimationFrame(): for code that animates a view over time.\n * - setImmediate/setTimeout(): run code later, note this may delay animations.\n * - runAfterInteractions(): run code later, without delaying active animations.\n *\n * The touch handling system considers one or more active touches to be an\n * 'interaction' and will delay `runAfterInteractions()` callbacks until all\n * touches have ended or been cancelled.\n *\n * InteractionManager also allows applications to register animations by\n * creating an interaction 'handle' on animation start, and clearing it upon\n * completion:\n *\n * ```\n * var handle = InteractionManager.createInteractionHandle();\n * // run animation... (`runAfterInteractions` tasks are queued)\n * // later, on animation completion:\n * InteractionManager.clearInteractionHandle(handle);\n * // queued tasks run if all handles were cleared\n * ```\n *\n * `runAfterInteractions` takes either a plain callback function, or a\n * `PromiseTask` object with a `gen` method that returns a `Promise`.  If a\n * `PromiseTask` is supplied, then it is fully resolved (including asynchronous\n * dependencies that also schedule more tasks via `runAfterInteractions`) before\n * starting on the next task that might have been queued up synchronously\n * earlier.\n *\n * By default, queued tasks are executed together in a loop in one\n * `setImmediate` batch. If `setDeadline` is called with a positive number, then\n * tasks will only be executed until the deadline (in terms of js event loop run\n * time) approaches, at which point execution will yield via setTimeout,\n * allowing events such as touches to start interactions and block queued tasks\n * from executing, making apps more responsive.\n *\n * @deprecated\n */\nconst InteractionManagerStub = {\n  Events: {\n    interactionStart: 'interactionStart',\n    interactionComplete: 'interactionComplete',\n  },\n\n  /**\n   * Schedule a function to run after all interactions have completed. Returns a cancellable\n   * \"promise\".\n   *\n   * @deprecated\n   */\n  runAfterInteractions(task: ?Task): {\n    then: <U>(\n      onFulfill?: ?(void) => ?(Promise<U> | U),\n      onReject?: ?(error: mixed) => ?(Promise<U> | U),\n    ) => Promise<U>,\n    cancel: () => void,\n    ...\n  } {\n    let immediateID: ?$FlowIssue;\n    const promise = new Promise(resolve => {\n      immediateID = setImmediate(() => {\n        if (typeof task === 'object' && task !== null) {\n          if (typeof task.gen === 'function') {\n            task.gen().then(resolve, reject);\n          } else if (typeof task.run === 'function') {\n            try {\n              task.run();\n              resolve();\n            } catch (error) {\n              reject(error);\n            }\n          } else {\n            reject(new TypeError(`Task \"${task.name}\" missing gen or run.`));\n          }\n        } else if (typeof task === 'function') {\n          try {\n            task();\n            resolve();\n          } catch (error) {\n            reject(error);\n          }\n        } else {\n          reject(new TypeError('Invalid task of type: ' + typeof task));\n        }\n      });\n    });\n\n    return {\n      // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n      then: promise.then.bind(promise),\n      cancel() {\n        clearImmediate(immediateID);\n      },\n    };\n  },\n\n  /**\n   * Notify manager that an interaction has started.\n   *\n   * @deprecated\n   */\n  createInteractionHandle(): Handle {\n    return -1;\n  },\n\n  /**\n   * Notify manager that an interaction has completed.\n   *\n   * @deprecated\n   */\n  clearInteractionHandle(handle: Handle) {\n    invariant(!!handle, 'InteractionManager: Must provide a handle to clear.');\n  },\n\n  /**\n   * @deprecated\n   */\n  addListener(): EventSubscription {\n    return {\n      remove() {},\n    };\n  },\n\n  /**\n   * A positive number will use setTimeout to schedule any tasks after the\n   * eventLoopRunningTime hits the deadline value, otherwise all tasks will be\n   * executed in one setImmediate batch (default).\n   *\n   * @deprecated\n   */\n  setDeadline(deadline: number) {\n    // Do nothing.\n  },\n};\n\nexport default InteractionManagerStub;\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 * @flow\n * @format\n */\n\n/* eslint no-bitwise: 0 */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type AnimatedNode from './AnimatedNode';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport {validateInterpolation} from '../../../src/private/animated/NativeAnimatedValidation';\nimport normalizeColor from '../../StyleSheet/normalizeColor';\nimport processColor from '../../StyleSheet/processColor';\nimport Easing from '../Easing';\nimport AnimatedWithChildren from './AnimatedWithChildren';\nimport invariant from 'invariant';\n\ntype ExtrapolateType = 'extend' | 'identity' | 'clamp';\n\nexport type InterpolationConfigType<OutputT: number | string> = $ReadOnly<{\n  ...AnimatedNodeConfig,\n  inputRange: $ReadOnlyArray<number>,\n  outputRange: $ReadOnlyArray<OutputT>,\n  easing?: (input: number) => number,\n  extrapolate?: ExtrapolateType,\n  extrapolateLeft?: ExtrapolateType,\n  extrapolateRight?: ExtrapolateType,\n}>;\n\n/**\n * Very handy helper to map input ranges to output ranges with an easing\n * function and custom behavior outside of the ranges.\n */\nfunction createNumericInterpolation(\n  config: InterpolationConfigType<number>,\n): (input: number) => number {\n  const outputRange: $ReadOnlyArray<number> = (config.outputRange: any);\n  const inputRange = config.inputRange;\n\n  const easing = config.easing || Easing.linear;\n\n  let extrapolateLeft: ExtrapolateType = 'extend';\n  if (config.extrapolateLeft !== undefined) {\n    extrapolateLeft = config.extrapolateLeft;\n  } else if (config.extrapolate !== undefined) {\n    extrapolateLeft = config.extrapolate;\n  }\n\n  let extrapolateRight: ExtrapolateType = 'extend';\n  if (config.extrapolateRight !== undefined) {\n    extrapolateRight = config.extrapolateRight;\n  } else if (config.extrapolate !== undefined) {\n    extrapolateRight = config.extrapolate;\n  }\n\n  return input => {\n    invariant(\n      typeof input === 'number',\n      'Cannot interpolation an input which is not a number',\n    );\n\n    const range = findRange(input, inputRange);\n    return (interpolate(\n      input,\n      inputRange[range],\n      inputRange[range + 1],\n      outputRange[range],\n      outputRange[range + 1],\n      easing,\n      extrapolateLeft,\n      extrapolateRight,\n    ): any);\n  };\n}\n\nfunction interpolate(\n  input: number,\n  inputMin: number,\n  inputMax: number,\n  outputMin: number,\n  outputMax: number,\n  easing: (input: number) => number,\n  extrapolateLeft: ExtrapolateType,\n  extrapolateRight: ExtrapolateType,\n) {\n  let result = input;\n\n  // Extrapolate\n  if (result < inputMin) {\n    if (extrapolateLeft === 'identity') {\n      return result;\n    } else if (extrapolateLeft === 'clamp') {\n      result = inputMin;\n    } else if (extrapolateLeft === 'extend') {\n      // noop\n    }\n  }\n\n  if (result > inputMax) {\n    if (extrapolateRight === 'identity') {\n      return result;\n    } else if (extrapolateRight === 'clamp') {\n      result = inputMax;\n    } else if (extrapolateRight === 'extend') {\n      // noop\n    }\n  }\n\n  if (outputMin === outputMax) {\n    return outputMin;\n  }\n\n  if (inputMin === inputMax) {\n    if (input <= inputMin) {\n      return outputMin;\n    }\n    return outputMax;\n  }\n\n  // Input Range\n  if (inputMin === -Infinity) {\n    result = -result;\n  } else if (inputMax === Infinity) {\n    result = result - inputMin;\n  } else {\n    result = (result - inputMin) / (inputMax - inputMin);\n  }\n\n  // Easing\n  result = easing(result);\n\n  // Output Range\n  if (outputMin === -Infinity) {\n    result = -result;\n  } else if (outputMax === Infinity) {\n    result = result + outputMin;\n  } else {\n    result = result * (outputMax - outputMin) + outputMin;\n  }\n\n  return result;\n}\n\nconst numericComponentRegex = /[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:[eE][+-]?\\d+)?/g;\n\n// Maps string inputs an RGBA color or an array of numeric components\nfunction mapStringToNumericComponents(\n  input: string,\n):\n  | {isColor: true, components: [number, number, number, number]}\n  | {isColor: false, components: $ReadOnlyArray<number | string>} {\n  let normalizedColor = normalizeColor(input);\n  invariant(\n    normalizedColor == null || typeof normalizedColor !== 'object',\n    'PlatformColors are not supported',\n  );\n\n  if (typeof normalizedColor === 'number') {\n    normalizedColor = normalizedColor || 0;\n    const r = (normalizedColor & 0xff000000) >>> 24;\n    const g = (normalizedColor & 0x00ff0000) >>> 16;\n    const b = (normalizedColor & 0x0000ff00) >>> 8;\n    const a = (normalizedColor & 0x000000ff) / 255;\n    return {isColor: true, components: [r, g, b, a]};\n  } else {\n    const components: Array<string | number> = [];\n    let lastMatchEnd = 0;\n    let match: RegExp$matchResult;\n    while ((match = (numericComponentRegex.exec(input): any)) != null) {\n      if (match.index > lastMatchEnd) {\n        components.push(input.substring(lastMatchEnd, match.index));\n      }\n      components.push(parseFloat(match[0]));\n      lastMatchEnd = match.index + match[0].length;\n    }\n    invariant(\n      components.length > 0,\n      'outputRange must contain color or value with numeric component',\n    );\n    if (lastMatchEnd < input.length) {\n      components.push(input.substring(lastMatchEnd, input.length));\n    }\n    return {isColor: false, components};\n  }\n}\n\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape.  Supports\n * things like:\n *\n *   rgba(123, 42, 99, 0.36) // colors\n *   -45deg                  // values with units\n */\nfunction createStringInterpolation(\n  config: InterpolationConfigType<string>,\n): (input: number) => string {\n  invariant(config.outputRange.length >= 2, 'Bad output range');\n  const outputRange = config.outputRange.map(mapStringToNumericComponents);\n\n  const isColor = outputRange[0].isColor;\n  if (__DEV__) {\n    invariant(\n      outputRange.every(output => output.isColor === isColor),\n      'All elements of output range should either be a color or a string with numeric components',\n    );\n    const firstOutput = outputRange[0].components;\n    invariant(\n      outputRange.every(\n        output => output.components.length === firstOutput.length,\n      ),\n      'All elements of output range should have the same number of components',\n    );\n    invariant(\n      outputRange.every(output =>\n        output.components.every(\n          (component, i) =>\n            // $FlowIgnoreMe[invalid-compare]\n            typeof component === 'number' || component === firstOutput[i],\n        ),\n      ),\n      'All elements of output range should have the same non-numeric components',\n    );\n  }\n\n  const numericComponents: $ReadOnlyArray<$ReadOnlyArray<number>> =\n    outputRange.map(output =>\n      isColor\n        ? // $FlowIgnoreMe[incompatible-call]\n          output.components\n        : // $FlowIgnoreMe[incompatible-call]\n          output.components.filter(c => typeof c === 'number'),\n    );\n  const interpolations = numericComponents[0].map((_, i) =>\n    createNumericInterpolation({\n      ...config,\n      outputRange: numericComponents.map(components => components[i]),\n    }),\n  );\n  if (!isColor) {\n    return input => {\n      const values = interpolations.map(interpolation => interpolation(input));\n      let i = 0;\n      return outputRange[0].components\n        .map(c => (typeof c === 'number' ? values[i++] : c))\n        .join('');\n    };\n  } else {\n    return input => {\n      const result = interpolations.map((interpolation, i) => {\n        const value = interpolation(input);\n        // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to\n        // round the opacity (4th column).\n        return i < 3 ? Math.round(value) : Math.round(value * 1000) / 1000;\n      });\n      return `rgba(${result[0]}, ${result[1]}, ${result[2]}, ${result[3]})`;\n    };\n  }\n}\n\nfunction findRange(input: number, inputRange: $ReadOnlyArray<number>) {\n  let i;\n  for (i = 1; i < inputRange.length - 1; ++i) {\n    if (inputRange[i] >= input) {\n      break;\n    }\n  }\n  return i - 1;\n}\n\nfunction checkValidRanges<OutputT: number | string>(\n  inputRange: $ReadOnlyArray<number>,\n  outputRange: $ReadOnlyArray<OutputT>,\n) {\n  checkInfiniteRange('outputRange', outputRange);\n  checkInfiniteRange('inputRange', inputRange);\n  checkValidInputRange(inputRange);\n\n  invariant(\n    inputRange.length === outputRange.length,\n    'inputRange (' +\n      inputRange.length +\n      ') and outputRange (' +\n      outputRange.length +\n      ') must have the same length',\n  );\n}\n\nfunction checkValidInputRange(arr: $ReadOnlyArray<number>) {\n  invariant(arr.length >= 2, 'inputRange must have at least 2 elements');\n  const message =\n    'inputRange must be monotonically non-decreasing ' + String(arr);\n  for (let i = 1; i < arr.length; ++i) {\n    invariant(arr[i] >= arr[i - 1], message);\n  }\n}\n\nfunction checkInfiniteRange<OutputT: number | string>(\n  name: string,\n  arr: $ReadOnlyArray<OutputT>,\n) {\n  invariant(arr.length >= 2, name + ' must have at least 2 elements');\n  invariant(\n    arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n    /* $FlowFixMe[incompatible-type] (>=0.13.0) - In the addition expression\n     * below this comment, one or both of the operands may be something that\n     * doesn't cleanly convert to a string, like undefined, null, and object,\n     * etc. If you really mean this implicit string conversion, you can do\n     * something like String(myThing) */\n    // $FlowFixMe[unsafe-addition]\n    name + 'cannot be ]-infinity;+infinity[ ' + arr,\n  );\n}\n\nexport default class AnimatedInterpolation<\n  OutputT: number | string,\n> extends AnimatedWithChildren {\n  _parent: AnimatedNode;\n  _config: InterpolationConfigType<OutputT>;\n  _interpolation: ?(input: number) => OutputT;\n\n  constructor(parent: AnimatedNode, config: InterpolationConfigType<OutputT>) {\n    super(config);\n    this._parent = parent;\n    this._config = config;\n\n    if (__DEV__) {\n      checkValidRanges(config.inputRange, config.outputRange);\n\n      // Create interpolation eagerly in dev, so we can signal errors faster\n      // even when using the native driver\n      this._getInterpolation();\n    }\n  }\n\n  _getInterpolation(): number => OutputT {\n    if (!this._interpolation) {\n      const config = this._config;\n      if (config.outputRange && typeof config.outputRange[0] === 'string') {\n        this._interpolation = (createStringInterpolation((config: any)): any);\n      } else {\n        this._interpolation = (createNumericInterpolation((config: any)): any);\n      }\n    }\n    return this._interpolation;\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this._parent.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n\n  __getValue(): OutputT {\n    const parentValue: number = this._parent.__getValue();\n    invariant(\n      typeof parentValue === 'number',\n      'Cannot interpolate an input which is not a number.',\n    );\n    return this._getInterpolation()(parentValue);\n  }\n\n  interpolate<NewOutputT: number | string>(\n    config: InterpolationConfigType<NewOutputT>,\n  ): AnimatedInterpolation<NewOutputT> {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._parent.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this._parent.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    if (__DEV__) {\n      validateInterpolation(this._config);\n    }\n\n    // Only the `outputRange` can contain strings so we don't need to transform `inputRange` here\n    let outputRange = this._config.outputRange;\n    let outputType = null;\n    if (typeof outputRange[0] === 'string') {\n      // $FlowIgnoreMe[incompatible-cast]\n      outputRange = ((outputRange: $ReadOnlyArray<string>).map(value => {\n        const processedColor = processColor(value);\n        if (typeof processedColor === 'number') {\n          outputType = 'color';\n          return processedColor;\n        } else {\n          return NativeAnimatedHelper.transformDataType(value);\n        }\n      }): any);\n    }\n\n    return {\n      inputRange: this._config.inputRange,\n      outputRange,\n      outputType,\n      extrapolateLeft:\n        this._config.extrapolateLeft || this._config.extrapolate || 'extend',\n      extrapolateRight:\n        this._config.extrapolateRight || this._config.extrapolate || 'extend',\n      type: 'interpolation',\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {InterpolationConfigType} from '../../../Libraries/Animated/nodes/AnimatedInterpolation';\n\nimport {\n  isSupportedInterpolationParam,\n  isSupportedStyleProp,\n  isSupportedTransformProp,\n} from '../../../Libraries/Animated/NativeAnimatedAllowlist';\n\nexport function validateInterpolation<OutputT: number | string>(\n  config: InterpolationConfigType<OutputT>,\n): void {\n  for (const key in config) {\n    if (key !== 'debugID' && !isSupportedInterpolationParam(key)) {\n      console.error(\n        `Interpolation property '${key}' is not supported by native animated module`,\n      );\n    }\n  }\n}\n\nexport function validateStyles(styles: {[key: string]: ?number, ...}): void {\n  for (const key in styles) {\n    if (!isSupportedStyleProp(key)) {\n      console.error(\n        `Style property '${key}' is not supported by native animated module`,\n      );\n    }\n  }\n}\n\nexport function validateTransform(\n  configs: Array<\n    | {\n        type: 'animated',\n        property: string,\n        nodeTag: ?number,\n        ...\n      }\n    | {\n        type: 'static',\n        property: string,\n        value: number | string,\n        ...\n      },\n  >,\n): void {\n  configs.forEach(config => {\n    if (!isSupportedTransformProp(config.property)) {\n      console.error(\n        `Property '${config.property}' is not supported by native animated module`,\n      );\n    }\n  });\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {AnimatedPropsAllowlist} from './nodes/AnimatedProps';\n\nimport * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';\n\n/**\n * Styles allowed by the native animated implementation.\n *\n * In general native animated implementation should support any numeric or color property that\n * doesn't need to be updated through the shadow view hierarchy (all non-layout properties).\n */\nconst SUPPORTED_COLOR_STYLES: {[string]: true} = {\n  backgroundColor: true,\n  borderBottomColor: true,\n  borderColor: true,\n  borderEndColor: true,\n  borderLeftColor: true,\n  borderRightColor: true,\n  borderStartColor: true,\n  borderTopColor: true,\n  color: true,\n  tintColor: true,\n};\n\nconst SUPPORTED_STYLES: {[string]: true} = {\n  ...SUPPORTED_COLOR_STYLES,\n  borderBottomEndRadius: true,\n  borderBottomLeftRadius: true,\n  borderBottomRightRadius: true,\n  borderBottomStartRadius: true,\n  borderEndEndRadius: true,\n  borderEndStartRadius: true,\n  borderRadius: true,\n  borderTopEndRadius: true,\n  borderTopLeftRadius: true,\n  borderTopRightRadius: true,\n  borderTopStartRadius: true,\n  borderStartEndRadius: true,\n  borderStartStartRadius: true,\n  elevation: true,\n  opacity: true,\n  transform: true,\n  zIndex: true,\n  /* ios styles */\n  shadowOpacity: true,\n  shadowRadius: true,\n  /* legacy android transform properties */\n  scaleX: true,\n  scaleY: true,\n  translateX: true,\n  translateY: true,\n};\n\nconst SUPPORTED_TRANSFORMS: {[string]: true} = {\n  translateX: true,\n  translateY: true,\n  scale: true,\n  scaleX: true,\n  scaleY: true,\n  rotate: true,\n  rotateX: true,\n  rotateY: true,\n  rotateZ: true,\n  perspective: true,\n  skewX: true,\n  skewY: true,\n  ...(ReactNativeFeatureFlags.shouldUseAnimatedObjectForTransform()\n    ? {matrix: true}\n    : {}),\n};\n\nconst SUPPORTED_INTERPOLATION_PARAMS: {[string]: true} = {\n  inputRange: true,\n  outputRange: true,\n  extrapolate: true,\n  extrapolateRight: true,\n  extrapolateLeft: true,\n};\n\n/**\n * Default allowlist for component props that support native animated values.\n */\nexport default {\n  style: SUPPORTED_STYLES,\n} as AnimatedPropsAllowlist;\n\nexport function allowInterpolationParam(param: string): void {\n  SUPPORTED_INTERPOLATION_PARAMS[param] = true;\n}\n\nexport function allowStyleProp(prop: string): void {\n  SUPPORTED_STYLES[prop] = true;\n}\n\nexport function allowTransformProp(prop: string): void {\n  SUPPORTED_TRANSFORMS[prop] = true;\n}\n\nexport function isSupportedColorStyleProp(prop: string): boolean {\n  return SUPPORTED_COLOR_STYLES.hasOwnProperty(prop);\n}\n\nexport function isSupportedInterpolationParam(param: string): boolean {\n  return SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(param);\n}\n\nexport function isSupportedStyleProp(prop: string): boolean {\n  return SUPPORTED_STYLES.hasOwnProperty(prop);\n}\n\nexport function isSupportedTransformProp(prop: string): boolean {\n  return SUPPORTED_TRANSFORMS.hasOwnProperty(prop);\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nlet ease;\n\nexport type EasingFunction = (t: number) => number;\n\n/**\n * The `Easing` module implements common easing functions. This module is used\n * by [Animate.timing()](docs/animate.html#timing) to convey physically\n * believable motion in animations.\n *\n * You can find a visualization of some common easing functions at\n * http://easings.net/\n *\n * ### Predefined animations\n *\n * The `Easing` module provides several predefined animations through the\n * following methods:\n *\n * - [`back`](docs/easing.html#back) provides a simple animation where the\n *   object goes slightly back before moving forward\n * - [`bounce`](docs/easing.html#bounce) provides a bouncing animation\n * - [`ease`](docs/easing.html#ease) provides a simple inertial animation\n * - [`elastic`](docs/easing.html#elastic) provides a simple spring interaction\n *\n * ### Standard functions\n *\n * Three standard easing functions are provided:\n *\n * - [`linear`](docs/easing.html#linear)\n * - [`quad`](docs/easing.html#quad)\n * - [`cubic`](docs/easing.html#cubic)\n *\n * The [`poly`](docs/easing.html#poly) function can be used to implement\n * quartic, quintic, and other higher power functions.\n *\n * ### Additional functions\n *\n * Additional mathematical functions are provided by the following methods:\n *\n * - [`bezier`](docs/easing.html#bezier) provides a cubic bezier curve\n * - [`circle`](docs/easing.html#circle) provides a circular function\n * - [`sin`](docs/easing.html#sin) provides a sinusoidal function\n * - [`exp`](docs/easing.html#exp) provides an exponential function\n *\n * The following helpers are used to modify other easing functions.\n *\n * - [`in`](docs/easing.html#in) runs an easing function forwards\n * - [`inOut`](docs/easing.html#inout) makes any easing function symmetrical\n * - [`out`](docs/easing.html#out) runs an easing function backwards\n */\nconst EasingStatic = {\n  /**\n   * A stepping function, returns 1 for any positive value of `n`.\n   */\n  step0(n: number): number {\n    return n > 0 ? 1 : 0;\n  },\n\n  /**\n   * A stepping function, returns 1 if `n` is greater than or equal to 1.\n   */\n  step1(n: number): number {\n    return n >= 1 ? 1 : 0;\n  },\n\n  /**\n   * A linear function, `f(t) = t`. Position correlates to elapsed time one to\n   * one.\n   *\n   * http://cubic-bezier.com/#0,0,1,1\n   */\n  linear(t: number): number {\n    return t;\n  },\n\n  /**\n   * A simple inertial interaction, similar to an object slowly accelerating to\n   * speed.\n   *\n   * http://cubic-bezier.com/#.42,0,1,1\n   */\n  ease(t: number): number {\n    if (!ease) {\n      ease = EasingStatic.bezier(0.42, 0, 1, 1);\n    }\n    return ease(t);\n  },\n\n  /**\n   * A quadratic function, `f(t) = t * t`. Position equals the square of elapsed\n   * time.\n   *\n   * http://easings.net/#easeInQuad\n   */\n  quad(t: number): number {\n    return t * t;\n  },\n\n  /**\n   * A cubic function, `f(t) = t * t * t`. Position equals the cube of elapsed\n   * time.\n   *\n   * http://easings.net/#easeInCubic\n   */\n  cubic(t: number): number {\n    return t * t * t;\n  },\n\n  /**\n   * A power function. Position is equal to the Nth power of elapsed time.\n   *\n   * n = 4: http://easings.net/#easeInQuart\n   * n = 5: http://easings.net/#easeInQuint\n   */\n  poly(n: number): EasingFunction {\n    return (t: number) => Math.pow(t, n);\n  },\n\n  /**\n   * A sinusoidal function.\n   *\n   * http://easings.net/#easeInSine\n   */\n  sin(t: number): number {\n    return 1 - Math.cos((t * Math.PI) / 2);\n  },\n\n  /**\n   * A circular function.\n   *\n   * http://easings.net/#easeInCirc\n   */\n  circle(t: number): number {\n    return 1 - Math.sqrt(1 - t * t);\n  },\n\n  /**\n   * An exponential function.\n   *\n   * http://easings.net/#easeInExpo\n   */\n  exp(t: number): number {\n    return Math.pow(2, 10 * (t - 1));\n  },\n\n  /**\n   * A simple elastic interaction, similar to a spring oscillating back and\n   * forth.\n   *\n   * Default bounciness is 1, which overshoots a little bit once. 0 bounciness\n   * doesn't overshoot at all, and bounciness of N > 1 will overshoot about N\n   * times.\n   *\n   * http://easings.net/#easeInElastic\n   */\n  elastic(bounciness: number = 1): EasingFunction {\n    const p = bounciness * Math.PI;\n    return t => 1 - Math.pow(Math.cos((t * Math.PI) / 2), 3) * Math.cos(t * p);\n  },\n\n  /**\n   * Use with `Animated.parallel()` to create a simple effect where the object\n   * animates back slightly as the animation starts.\n   *\n   * https://easings.net/#easeInBack\n   */\n  back(s: number = 1.70158): EasingFunction {\n    return t => t * t * ((s + 1) * t - s);\n  },\n\n  /**\n   * Provides a simple bouncing effect.\n   *\n   * http://easings.net/#easeInBounce\n   */\n  bounce(t: number): number {\n    if (t < 1 / 2.75) {\n      return 7.5625 * t * t;\n    }\n\n    if (t < 2 / 2.75) {\n      const t2 = t - 1.5 / 2.75;\n      return 7.5625 * t2 * t2 + 0.75;\n    }\n\n    if (t < 2.5 / 2.75) {\n      const t2 = t - 2.25 / 2.75;\n      return 7.5625 * t2 * t2 + 0.9375;\n    }\n\n    const t2 = t - 2.625 / 2.75;\n    return 7.5625 * t2 * t2 + 0.984375;\n  },\n\n  /**\n   * Provides a cubic bezier curve, equivalent to CSS Transitions'\n   * `transition-timing-function`.\n   *\n   * A useful tool to visualize cubic bezier curves can be found at\n   * http://cubic-bezier.com/\n   */\n  bezier(x1: number, y1: number, x2: number, y2: number): EasingFunction {\n    const _bezier = require('./bezier').default;\n    return _bezier(x1, y1, x2, y2);\n  },\n\n  /**\n   * Runs an easing function forwards.\n   */\n  in(easing: EasingFunction): EasingFunction {\n    return easing;\n  },\n\n  /**\n   * Runs an easing function backwards.\n   */\n  out(easing: EasingFunction): EasingFunction {\n    return t => 1 - easing(1 - t);\n  },\n\n  /**\n   * Makes any easing function symmetrical. The easing function will run\n   * forwards for half of the duration, then backwards for the rest of the\n   * duration.\n   */\n  inOut(easing: EasingFunction): EasingFunction {\n    return t => {\n      if (t < 0.5) {\n        return easing(t * 2) / 2;\n      }\n      return 1 - easing((1 - t) * 2) / 2;\n    };\n  },\n};\n\nexport type Easing = typeof EasingStatic;\nexport default EasingStatic;\n","/**\n * Portions 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 * @flow strict\n * @format\n */\n\n/**\n * BezierEasing - use bezier curve for transition easing function\n * https://github.com/gre/bezier-easing\n * @copyright 2014-2015 Gaëtan Renaudeau. MIT License.\n */\n\n'use strict';\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nconst NEWTON_ITERATIONS = 4;\nconst NEWTON_MIN_SLOPE = 0.001;\nconst SUBDIVISION_PRECISION = 0.0000001;\nconst SUBDIVISION_MAX_ITERATIONS = 10;\n\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nconst float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A(aA1: number, aA2: number) {\n  return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\nfunction B(aA1: number, aA2: number) {\n  return 3.0 * aA2 - 6.0 * aA1;\n}\nfunction C(aA1: number) {\n  return 3.0 * aA1;\n}\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier(aT: number, aA1: number, aA2: number) {\n  return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope(aT: number, aA1: number, aA2: number) {\n  return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\n\nfunction binarySubdivide(\n  aX: number,\n  _aA: number,\n  _aB: number,\n  mX1: number,\n  mX2: number,\n) {\n  let currentX,\n    currentT,\n    i = 0,\n    aA = _aA,\n    aB = _aB;\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (\n    Math.abs(currentX) > SUBDIVISION_PRECISION &&\n    ++i < SUBDIVISION_MAX_ITERATIONS\n  );\n  return currentT;\n}\n\nfunction newtonRaphsonIterate(\n  aX: number,\n  _aGuessT: number,\n  mX1: number,\n  mX2: number,\n) {\n  let aGuessT = _aGuessT;\n  for (let i = 0; i < NEWTON_ITERATIONS; ++i) {\n    const currentSlope = getSlope(aGuessT, mX1, mX2);\n    if (currentSlope === 0.0) {\n      return aGuessT;\n    }\n    const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n    aGuessT -= currentX / currentSlope;\n  }\n  return aGuessT;\n}\n\nexport default function bezier(\n  mX1: number,\n  mY1: number,\n  mX2: number,\n  mY2: number,\n): (x: number) => number {\n  if (!(mX1 >= 0 && mX1 <= 1 && mX2 >= 0 && mX2 <= 1)) {\n    throw new Error('bezier x values must be in [0, 1] range');\n  }\n\n  // Precompute samples table\n  const sampleValues = float32ArraySupported\n    ? new Float32Array(kSplineTableSize)\n    : new Array<number>(kSplineTableSize);\n  if (mX1 !== mY1 || mX2 !== mY2) {\n    for (let i = 0; i < kSplineTableSize; ++i) {\n      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n    }\n  }\n\n  function getTForX(aX: number) {\n    let intervalStart = 0.0;\n    let currentSample = 1;\n    const lastSample = kSplineTableSize - 1;\n\n    for (\n      ;\n      currentSample !== lastSample && sampleValues[currentSample] <= aX;\n      ++currentSample\n    ) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    const dist =\n      (aX - sampleValues[currentSample]) /\n      (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n    const guessForT = intervalStart + dist * kSampleStepSize;\n\n    const initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(\n        aX,\n        intervalStart,\n        intervalStart + kSampleStepSize,\n        mX1,\n        mX2,\n      );\n    }\n  }\n\n  return function BezierEasing(x: number): number {\n    if (mX1 === mY1 && mX2 === mY2) {\n      return x; // linear\n    }\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n    if (x === 0) {\n      return 0;\n    }\n    if (x === 1) {\n      return 1;\n    }\n    return calcBezier(getTForX(x), mY1, mY2);\n  };\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport AnimatedNode from './AnimatedNode';\n\nconst {connectAnimatedNodes, disconnectAnimatedNodes} =\n  NativeAnimatedHelper.API;\n\nexport default class AnimatedWithChildren extends AnimatedNode {\n  _children: Array<AnimatedNode> = [];\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    if (!this.__isNative) {\n      this.__isNative = true;\n\n      const children = this._children;\n      let length = children.length;\n      if (length > 0) {\n        for (let ii = 0; ii < length; ii++) {\n          const child = children[ii];\n          child.__makeNative(platformConfig);\n          connectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\n        }\n      }\n    }\n    super.__makeNative(platformConfig);\n  }\n\n  __addChild(child: AnimatedNode): void {\n    if (this._children.length === 0) {\n      this.__attach();\n    }\n    this._children.push(child);\n    if (this.__isNative) {\n      // Only accept \"native\" animated nodes as children\n      child.__makeNative(this.__getPlatformConfig());\n      connectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\n    }\n  }\n\n  __removeChild(child: AnimatedNode): void {\n    const index = this._children.indexOf(child);\n    if (index === -1) {\n      console.warn(\"Trying to remove a child that doesn't exist\");\n      return;\n    }\n    if (this.__isNative && child.__isNative) {\n      disconnectAnimatedNodes(this.__getNativeTag(), child.__getNativeTag());\n    }\n    this._children.splice(index, 1);\n    if (this._children.length === 0) {\n      this.__detach();\n    }\n  }\n\n  __getChildren(): $ReadOnlyArray<AnimatedNode> {\n    return this._children;\n  }\n\n  __callListeners(value: number): void {\n    super.__callListeners(value);\n    if (!this.__isNative) {\n      const children = this._children;\n      for (let ii = 0, length = children.length; ii < length; ii++) {\n        const child = children[ii];\n        // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n        if (child.__getValue) {\n          child.__callListeners(child.__getValue());\n        }\n      }\n    }\n  }\n}\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 * @flow\n * @format\n */\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport invariant from 'invariant';\n\ntype ValueListenerCallback = (state: {value: number, ...}) => mixed;\n\nexport type AnimatedNodeConfig = $ReadOnly<{\n  debugID?: string,\n}>;\n\nlet _uniqueId = 1;\nlet _assertNativeAnimatedModule: ?() => void = () => {\n  NativeAnimatedHelper.assertNativeAnimatedModule();\n  // We only have to assert that the module exists once. After we've asserted\n  // this, clear out the function so we know to skip it in the future.\n  _assertNativeAnimatedModule = null;\n};\n\nexport default class AnimatedNode {\n  #listeners: Map<string, ValueListenerCallback>;\n\n  _platformConfig: ?PlatformConfig = undefined;\n\n  constructor(\n    config?: ?$ReadOnly<{\n      ...AnimatedNodeConfig,\n      ...\n    }>,\n  ) {\n    this.#listeners = new Map();\n    if (__DEV__) {\n      this.__debugID = config?.debugID;\n    }\n  }\n\n  __attach(): void {}\n  __detach(): void {\n    this.removeAllListeners();\n    if (this.__isNative && this.__nativeTag != null) {\n      NativeAnimatedHelper.API.dropAnimatedNode(this.__nativeTag);\n      this.__nativeTag = undefined;\n    }\n  }\n  __getValue(): any {}\n  __getAnimatedValue(): any {\n    return this.__getValue();\n  }\n  __addChild(child: AnimatedNode) {}\n  __removeChild(child: AnimatedNode) {}\n  __getChildren(): $ReadOnlyArray<AnimatedNode> {\n    return [];\n  }\n\n  /* Methods and props used by native Animated impl */\n  __isNative: boolean = false;\n  __nativeTag: ?number = undefined;\n\n  __makeNative(platformConfig: ?PlatformConfig): void {\n    // Subclasses are expected to set `__isNative` to true before this.\n    invariant(\n      this.__isNative,\n      'This node cannot be made a \"native\" animated node',\n    );\n\n    this._platformConfig = platformConfig;\n  }\n\n  /**\n   * Adds an asynchronous listener to the value so you can observe updates from\n   * animations.  This is useful because there is no way to\n   * synchronously read the value because it might be driven natively.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#addlistener\n   */\n  addListener(callback: (value: any) => mixed): string {\n    const id = String(_uniqueId++);\n    this.#listeners.set(id, callback);\n    return id;\n  }\n\n  /**\n   * Unregister a listener. The `id` param shall match the identifier\n   * previously returned by `addListener()`.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#removelistener\n   */\n  removeListener(id: string): void {\n    this.#listeners.delete(id);\n  }\n\n  /**\n   * Remove all registered listeners.\n   *\n   * See https://reactnative.dev/docs/animatedvalue#removealllisteners\n   */\n  removeAllListeners(): void {\n    this.#listeners.clear();\n  }\n\n  hasListeners(): boolean {\n    return this.#listeners.size > 0;\n  }\n\n  __onAnimatedValueUpdateReceived(value: number, offset: number): void {\n    this.__callListeners(value + offset);\n  }\n\n  __callListeners(value: number): void {\n    const event = {value};\n    this.#listeners.forEach(listener => {\n      listener(event);\n    });\n  }\n\n  __getNativeTag(): number {\n    let nativeTag = this.__nativeTag;\n    if (nativeTag == null) {\n      _assertNativeAnimatedModule?.();\n\n      // `__isNative` is initialized as false and only ever set to true. So we\n      // only need to check it once here when initializing `__nativeTag`.\n      invariant(\n        this.__isNative,\n        'Attempt to get native tag from node not marked as \"native\"',\n      );\n\n      nativeTag = NativeAnimatedHelper.generateNewNodeTag();\n      this.__nativeTag = nativeTag;\n\n      const config = this.__getNativeConfig();\n      if (this._platformConfig) {\n        config.platformConfig = this._platformConfig;\n      }\n      NativeAnimatedHelper.API.createAnimatedNode(nativeTag, config);\n    }\n    return nativeTag;\n  }\n\n  __getNativeConfig(): Object {\n    throw new Error(\n      'This JS animated node type cannot be used as native animated node',\n    );\n  }\n\n  __getPlatformConfig(): ?PlatformConfig {\n    return this._platformConfig;\n  }\n\n  __setPlatformConfig(platformConfig: ?PlatformConfig) {\n    this._platformConfig = platformConfig;\n  }\n\n  /**\n   * NOTE: This is intended to prevent `JSON.stringify` from throwing \"cyclic\n   * structure\" errors in React DevTools. Avoid depending on this!\n   */\n  toJSON(): mixed {\n    return this.__getValue();\n  }\n\n  __debugID: ?string = undefined;\n\n  __getDebugID(): ?string {\n    if (__DEV__) {\n      return this.__debugID;\n    }\n    return undefined;\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\nimport invariant from 'invariant';\n\nexport type AnimatedValueXYConfig = $ReadOnly<{\n  ...AnimatedNodeConfig,\n  useNativeDriver: boolean,\n}>;\ntype ValueXYListenerCallback = (value: {x: number, y: number, ...}) => mixed;\n\nlet _uniqueId = 1;\n\n/**\n * 2D Value for driving 2D animations, such as pan gestures. Almost identical\n * API to normal `Animated.Value`, but multiplexed.\n *\n * See https://reactnative.dev/docs/animatedvaluexy\n */\nexport default class AnimatedValueXY extends AnimatedWithChildren {\n  x: AnimatedValue;\n  y: AnimatedValue;\n  _listeners: {\n    [key: string]: {\n      x: string,\n      y: string,\n      ...\n    },\n    ...\n  };\n\n  constructor(\n    valueIn?: ?{\n      +x: number | AnimatedValue,\n      +y: number | AnimatedValue,\n      ...\n    },\n    config?: ?AnimatedValueXYConfig,\n  ) {\n    super(config);\n    const value: any = valueIn || {x: 0, y: 0}; // @flowfixme: shouldn't need `: any`\n    if (typeof value.x === 'number' && typeof value.y === 'number') {\n      this.x = new AnimatedValue(value.x);\n      this.y = new AnimatedValue(value.y);\n    } else {\n      invariant(\n        value.x instanceof AnimatedValue && value.y instanceof AnimatedValue,\n        'AnimatedValueXY must be initialized with an object of numbers or ' +\n          'AnimatedValues.',\n      );\n      this.x = value.x;\n      this.y = value.y;\n    }\n    this._listeners = {};\n    if (config && config.useNativeDriver) {\n      this.__makeNative();\n    }\n  }\n\n  /**\n   * Directly set the value. This will stop any animations running on the value\n   * and update all the bound properties.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#setvalue\n   */\n  setValue(value: {x: number, y: number, ...}) {\n    this.x.setValue(value.x);\n    this.y.setValue(value.y);\n  }\n\n  /**\n   * Sets an offset that is applied on top of whatever value is set, whether\n   * via `setValue`, an animation, or `Animated.event`. Useful for compensating\n   * things like the start of a pan gesture.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#setoffset\n   */\n  setOffset(offset: {x: number, y: number, ...}) {\n    this.x.setOffset(offset.x);\n    this.y.setOffset(offset.y);\n  }\n\n  /**\n   * Merges the offset value into the base value and resets the offset to zero.\n   * The final output of the value is unchanged.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#flattenoffset\n   */\n  flattenOffset(): void {\n    this.x.flattenOffset();\n    this.y.flattenOffset();\n  }\n\n  /**\n   * Sets the offset value to the base value, and resets the base value to\n   * zero. The final output of the value is unchanged.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#extractoffset\n   */\n  extractOffset(): void {\n    this.x.extractOffset();\n    this.y.extractOffset();\n  }\n\n  __getValue(): {\n    x: number,\n    y: number,\n    ...\n  } {\n    return {\n      x: this.x.__getValue(),\n      y: this.y.__getValue(),\n    };\n  }\n\n  /**\n   * Stops any animation and resets the value to its original.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#resetanimation\n   */\n  resetAnimation(\n    callback?: (value: {x: number, y: number, ...}) => void,\n  ): void {\n    this.x.resetAnimation();\n    this.y.resetAnimation();\n    callback && callback(this.__getValue());\n  }\n\n  /**\n   * Stops any running animation or tracking. `callback` is invoked with the\n   * final value after stopping the animation, which is useful for updating\n   * state to match the animation position with layout.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#stopanimation\n   */\n  stopAnimation(callback?: (value: {x: number, y: number, ...}) => void): void {\n    this.x.stopAnimation();\n    this.y.stopAnimation();\n    callback && callback(this.__getValue());\n  }\n\n  /**\n   * Adds an asynchronous listener to the value so you can observe updates from\n   * animations.  This is useful because there is no way to synchronously read\n   * the value because it might be driven natively.\n   *\n   * Returns a string that serves as an identifier for the listener.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#addlistener\n   */\n  addListener(callback: ValueXYListenerCallback): string {\n    const id = String(_uniqueId++);\n    const jointCallback = ({value: number}: any) => {\n      callback(this.__getValue());\n    };\n    this._listeners[id] = {\n      x: this.x.addListener(jointCallback),\n      y: this.y.addListener(jointCallback),\n    };\n    return id;\n  }\n\n  /**\n   * Unregister a listener. The `id` param shall match the identifier\n   * previously returned by `addListener()`.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#removelistener\n   */\n  removeListener(id: string): void {\n    this.x.removeListener(this._listeners[id].x);\n    this.y.removeListener(this._listeners[id].y);\n    delete this._listeners[id];\n  }\n\n  /**\n   * Remove all registered listeners.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#removealllisteners\n   */\n  removeAllListeners(): void {\n    this.x.removeAllListeners();\n    this.y.removeAllListeners();\n    this._listeners = {};\n  }\n\n  /**\n   * Converts `{x, y}` into `{left, top}` for use in style.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#getlayout\n   */\n  getLayout(): {[key: string]: AnimatedValue, ...} {\n    return {\n      left: this.x,\n      top: this.y,\n    };\n  }\n\n  /**\n   * Converts `{x, y}` into a useable translation transform.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy#gettranslatetransform\n   */\n  getTranslateTransform(): Array<\n    {translateX: AnimatedValue} | {translateY: AnimatedValue},\n  > {\n    return [{translateX: this.x}, {translateY: this.y}];\n  }\n\n  __attach(): void {\n    this.x.__addChild(this);\n    this.y.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this.x.__removeChild(this);\n    this.y.__removeChild(this);\n    super.__detach();\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this.x.__makeNative(platformConfig);\n    this.y.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type AnimatedValue from '../nodes/AnimatedValue';\nimport type {AnimationConfig, EndCallback} from './Animation';\n\nimport Animation from './Animation';\n\nexport type DecayAnimationConfig = $ReadOnly<{\n  ...AnimationConfig,\n  velocity:\n    | number\n    | $ReadOnly<{\n        x: number,\n        y: number,\n        ...\n      }>,\n  deceleration?: number,\n  ...\n}>;\n\nexport type DecayAnimationConfigSingle = $ReadOnly<{\n  ...AnimationConfig,\n  velocity: number,\n  deceleration?: number,\n  ...\n}>;\n\nexport default class DecayAnimation extends Animation {\n  _startTime: number;\n  _lastValue: number;\n  _fromValue: number;\n  _deceleration: number;\n  _velocity: number;\n  _onUpdate: (value: number) => void;\n  _animationFrame: ?AnimationFrameID;\n  _platformConfig: ?PlatformConfig;\n\n  constructor(config: DecayAnimationConfigSingle) {\n    super(config);\n\n    this._deceleration = config.deceleration ?? 0.998;\n    this._velocity = config.velocity;\n    this._platformConfig = config.platformConfig;\n  }\n\n  __getNativeAnimationConfig(): $ReadOnly<{\n    deceleration: number,\n    iterations: number,\n    platformConfig: ?PlatformConfig,\n    type: 'decay',\n    velocity: number,\n    ...\n  }> {\n    return {\n      type: 'decay',\n      deceleration: this._deceleration,\n      velocity: this._velocity,\n      iterations: this.__iterations,\n      platformConfig: this._platformConfig,\n      debugID: this.__getDebugID(),\n    };\n  }\n\n  start(\n    fromValue: number,\n    onUpdate: (value: number) => void,\n    onEnd: ?EndCallback,\n    previousAnimation: ?Animation,\n    animatedValue: AnimatedValue,\n  ): void {\n    super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue);\n\n    this._lastValue = fromValue;\n    this._fromValue = fromValue;\n    this._onUpdate = onUpdate;\n    this._startTime = Date.now();\n\n    const useNativeDriver = this.__startAnimationIfNative(animatedValue);\n    if (!useNativeDriver) {\n      this._animationFrame = requestAnimationFrame(() => this.onUpdate());\n    }\n  }\n\n  onUpdate(): void {\n    const now = Date.now();\n\n    const value =\n      this._fromValue +\n      (this._velocity / (1 - this._deceleration)) *\n        (1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\n    this._onUpdate(value);\n\n    if (Math.abs(this._lastValue - value) < 0.1) {\n      this.__notifyAnimationEnd({finished: true});\n      return;\n    }\n\n    this._lastValue = value;\n    if (this.__active) {\n      // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n      this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n    }\n  }\n\n  stop(): void {\n    super.stop();\n    if (this._animationFrame != null) {\n      global.cancelAnimationFrame(this._animationFrame);\n    }\n    this.__notifyAnimationEnd({finished: false});\n  }\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type AnimatedNode from '../nodes/AnimatedNode';\nimport type AnimatedValue from '../nodes/AnimatedValue';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';\nimport AnimatedProps from '../nodes/AnimatedProps';\n\nexport type EndResult = {\n  finished: boolean,\n  value?: number,\n  offset?: number,\n  ...\n};\nexport type EndCallback = (result: EndResult) => void;\n\nexport type AnimationConfig = $ReadOnly<{\n  isInteraction?: boolean,\n  useNativeDriver: boolean,\n  platformConfig?: PlatformConfig,\n  onComplete?: ?EndCallback,\n  iterations?: number,\n  isLooping?: boolean,\n  debugID?: ?string,\n  ...\n}>;\n\nlet startNativeAnimationNextId = 1;\n\n// Important note: start() and stop() will only be called at most once.\n// Once an animation has been stopped or finished its course, it will\n// not be reused.\nexport default class Animation {\n  #nativeID: ?number;\n  #onEnd: ?EndCallback;\n  #useNativeDriver: boolean;\n\n  __active: boolean;\n  __isInteraction: boolean;\n  __isLooping: ?boolean;\n  __iterations: number;\n  __debugID: ?string;\n\n  constructor(config: AnimationConfig) {\n    this.#useNativeDriver = NativeAnimatedHelper.shouldUseNativeDriver(config);\n\n    this.__active = false;\n    this.__isInteraction = config.isInteraction ?? !this.#useNativeDriver;\n    this.__isLooping = config.isLooping;\n    this.__iterations = config.iterations ?? 1;\n    if (__DEV__) {\n      this.__debugID = config.debugID;\n    }\n  }\n\n  start(\n    fromValue: number,\n    onUpdate: (value: number) => void,\n    onEnd: ?EndCallback,\n    previousAnimation: ?Animation,\n    animatedValue: AnimatedValue,\n  ): void {\n    if (!this.#useNativeDriver && animatedValue.__isNative === true) {\n      throw new Error(\n        'Attempting to run JS driven animation on animated node ' +\n          'that has been moved to \"native\" earlier by starting an ' +\n          'animation with `useNativeDriver: true`',\n      );\n    }\n\n    this.#onEnd = onEnd;\n    this.__active = true;\n  }\n\n  stop(): void {\n    if (this.#nativeID != null) {\n      const nativeID = this.#nativeID;\n      const identifier = `${nativeID}:stopAnimation`;\n      try {\n        // This is only required when singleOpBatching is used, as otherwise\n        // we flush calls immediately when there's no pending queue.\n        NativeAnimatedHelper.API.setWaitingForIdentifier(identifier);\n        NativeAnimatedHelper.API.stopAnimation(nativeID);\n      } finally {\n        NativeAnimatedHelper.API.unsetWaitingForIdentifier(identifier);\n      }\n    }\n    this.__active = false;\n  }\n\n  __getNativeAnimationConfig(): $ReadOnly<{\n    platformConfig: ?PlatformConfig,\n    ...\n  }> {\n    // Subclasses that have corresponding animation implementation done in native\n    // should override this method\n    throw new Error('This animation type cannot be offloaded to native');\n  }\n\n  __findAnimatedPropsNodes(node: AnimatedNode): Array<AnimatedProps> {\n    const result = [];\n\n    if (node instanceof AnimatedProps) {\n      result.push(node);\n      return result;\n    }\n\n    for (const child of node.__getChildren()) {\n      result.push(...this.__findAnimatedPropsNodes(child));\n    }\n\n    return result;\n  }\n\n  __startAnimationIfNative(animatedValue: AnimatedValue): boolean {\n    if (!this.#useNativeDriver) {\n      return false;\n    }\n\n    const startNativeAnimationWaitId = `${startNativeAnimationNextId}:startAnimation`;\n    startNativeAnimationNextId += 1;\n    NativeAnimatedHelper.API.setWaitingForIdentifier(\n      startNativeAnimationWaitId,\n    );\n    try {\n      const config = this.__getNativeAnimationConfig();\n      animatedValue.__makeNative(config.platformConfig);\n      this.#nativeID = NativeAnimatedHelper.generateNewAnimationId();\n      NativeAnimatedHelper.API.startAnimatingNode(\n        this.#nativeID,\n        animatedValue.__getNativeTag(),\n        config,\n        result => {\n          this.__notifyAnimationEnd(result);\n\n          // When using natively driven animations, once the animation completes,\n          // we need to ensure that the JS side nodes are synced with the updated\n          // values.\n          const {value, offset} = result;\n          if (value != null) {\n            animatedValue.__onAnimatedValueUpdateReceived(value, offset);\n\n            if (\n              !(\n                ReactNativeFeatureFlags.cxxNativeAnimatedEnabled() &&\n                ReactNativeFeatureFlags.cxxNativeAnimatedRemoveJsSync()\n              )\n            ) {\n              if (this.__isLooping === true) {\n                return;\n              }\n            }\n\n            // Once the JS side node is synced with the updated values, trigger an\n            // update on the AnimatedProps nodes to call any registered callbacks.\n            this.__findAnimatedPropsNodes(animatedValue).forEach(node =>\n              node.update(),\n            );\n          }\n        },\n      );\n\n      return true;\n    } catch (e) {\n      throw e;\n    } finally {\n      NativeAnimatedHelper.API.unsetWaitingForIdentifier(\n        startNativeAnimationWaitId,\n      );\n    }\n  }\n\n  /**\n   * Notify the completion callback that the animation has ended. The completion\n   * callback will never be called more than once.\n   */\n  __notifyAnimationEnd(result: EndResult): void {\n    const callback = this.#onEnd;\n    if (callback != null) {\n      this.#onEnd = null;\n      callback(result);\n    }\n  }\n\n  __getDebugID(): ?string {\n    if (__DEV__) {\n      return this.__debugID;\n    }\n    return undefined;\n  }\n}\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 * @flow\n * @format\n */\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\nimport type {AnimatedStyleAllowlist} from './AnimatedStyle';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport {findNodeHandle} from '../../ReactNative/RendererProxy';\nimport flattenStyle from '../../StyleSheet/flattenStyle';\nimport {AnimatedEvent} from '../AnimatedEvent';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedObject from './AnimatedObject';\nimport AnimatedStyle from './AnimatedStyle';\nimport invariant from 'invariant';\n\nexport type AnimatedPropsAllowlist = $ReadOnly<{\n  style?: ?AnimatedStyleAllowlist,\n  [key: string]: true | AnimatedStyleAllowlist,\n}>;\n\ntype TargetView = {\n  +instance: TargetViewInstance,\n  connectedViewTag: ?number,\n};\ntype TargetViewInstance = React.ElementRef<React.ElementType>;\n\nfunction createAnimatedProps(\n  inputProps: {[string]: mixed},\n  allowlist: ?AnimatedPropsAllowlist,\n): [$ReadOnlyArray<string>, $ReadOnlyArray<AnimatedNode>, {[string]: mixed}] {\n  const nodeKeys: Array<string> = [];\n  const nodes: Array<AnimatedNode> = [];\n  const props: {[string]: mixed} = {};\n\n  const keys = Object.keys(inputProps);\n  for (let ii = 0, length = keys.length; ii < length; ii++) {\n    const key = keys[ii];\n    const value = inputProps[key];\n    let staticValue = value;\n\n    if (allowlist == null || hasOwn(allowlist, key)) {\n      let node;\n      if (key === 'style') {\n        // Ignore `style` if it is not an object (or array).\n        if (typeof value === 'object' && value != null) {\n          // Even if we do not find any `AnimatedNode` values in `style`, we\n          // still need to use the flattened `style` object because static\n          // values can shadow `AnimatedNode` values. We need to make sure that\n          // we propagate the flattened `style` object to the `props` object.\n          const flatStyle = flattenStyle(value as $FlowFixMe);\n          node = AnimatedStyle.from(flatStyle, allowlist?.style, value);\n          staticValue = flatStyle;\n        }\n      } else if (value instanceof AnimatedNode) {\n        node = value;\n      } else {\n        node = AnimatedObject.from(value);\n      }\n      if (node == null) {\n        props[key] = staticValue;\n      } else {\n        nodeKeys.push(key);\n        nodes.push(node);\n        props[key] = node;\n      }\n    } else {\n      if (__DEV__) {\n        // WARNING: This is a potentially expensive check that we should only\n        // do in development. Without this check in development, it might be\n        // difficult to identify which props need to be allowlisted.\n        if (AnimatedObject.from(inputProps[key]) != null) {\n          console.error(\n            `AnimatedProps: ${key} is not allowlisted for animation, but it ` +\n              'contains AnimatedNode values; props allowing animation: ',\n            allowlist,\n          );\n        }\n      }\n      props[key] = value;\n    }\n  }\n\n  return [nodeKeys, nodes, props];\n}\n\nexport default class AnimatedProps extends AnimatedNode {\n  #callback: () => void;\n  #nodeKeys: $ReadOnlyArray<string>;\n  #nodes: $ReadOnlyArray<AnimatedNode>;\n  #props: {[string]: mixed};\n  #target: ?TargetView = null;\n\n  constructor(\n    inputProps: {[string]: mixed},\n    callback: () => void,\n    allowlist?: ?AnimatedPropsAllowlist,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    const [nodeKeys, nodes, props] = createAnimatedProps(inputProps, allowlist);\n    this.#nodeKeys = nodeKeys;\n    this.#nodes = nodes;\n    this.#props = props;\n    this.#callback = callback;\n  }\n\n  __getValue(): Object {\n    const props: {[string]: mixed} = {};\n\n    const keys = Object.keys(this.#props);\n    for (let ii = 0, length = keys.length; ii < length; ii++) {\n      const key = keys[ii];\n      const value = this.#props[key];\n\n      if (value instanceof AnimatedNode) {\n        props[key] = value.__getValue();\n      } else if (value instanceof AnimatedEvent) {\n        props[key] = value.__getHandler();\n      } else {\n        props[key] = value;\n      }\n    }\n\n    return props;\n  }\n\n  /**\n   * Creates a new `props` object that contains the same props as the supplied\n   * `staticProps` object, except with animated nodes for any props that were\n   * created by this `AnimatedProps` instance.\n   */\n  __getValueWithStaticProps(staticProps: Object): Object {\n    const props: {[string]: mixed} = {...staticProps};\n\n    const keys = Object.keys(staticProps);\n    for (let ii = 0, length = keys.length; ii < length; ii++) {\n      const key = keys[ii];\n      const maybeNode = this.#props[key];\n\n      if (key === 'style') {\n        const staticStyle = staticProps.style;\n        const flatStaticStyle = flattenStyle(staticStyle);\n        if (maybeNode instanceof AnimatedStyle) {\n          const mutableStyle: {[string]: mixed} =\n            flatStaticStyle == null\n              ? {}\n              : flatStaticStyle === staticStyle\n                ? // Copy the input style, since we'll mutate it below.\n                  {...flatStaticStyle}\n                : // Reuse `flatStaticStyle` if it is a newly created object.\n                  flatStaticStyle;\n\n          maybeNode.__replaceAnimatedNodeWithValues(mutableStyle);\n          props[key] = maybeNode.__getValueForStyle(mutableStyle);\n        } else {\n          props[key] = flatStaticStyle;\n        }\n      } else if (maybeNode instanceof AnimatedNode) {\n        props[key] = maybeNode.__getValue();\n      } else if (maybeNode instanceof AnimatedEvent) {\n        props[key] = maybeNode.__getHandler();\n      }\n    }\n\n    return props;\n  }\n\n  __getNativeAnimatedEventTuples(): $ReadOnlyArray<[string, AnimatedEvent]> {\n    const tuples = [];\n\n    const keys = Object.keys(this.#props);\n    for (let ii = 0, length = keys.length; ii < length; ii++) {\n      const key = keys[ii];\n      const value = this.#props[key];\n\n      if (value instanceof AnimatedEvent && value.__isNative) {\n        tuples.push([key, value]);\n      }\n    }\n\n    return tuples;\n  }\n\n  __getAnimatedValue(): Object {\n    const props: {[string]: mixed} = {};\n\n    const nodeKeys = this.#nodeKeys;\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const key = nodeKeys[ii];\n      const node = nodes[ii];\n      props[key] = node.__getAnimatedValue();\n    }\n\n    return props;\n  }\n\n  __attach(): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__addChild(this);\n    }\n    super.__attach();\n  }\n\n  __detach(): void {\n    if (this.__isNative && this.#target != null) {\n      this.#disconnectAnimatedView(this.#target);\n    }\n    this.#target = null;\n\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__removeChild(this);\n    }\n\n    super.__detach();\n  }\n\n  update(): void {\n    this.#callback();\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__makeNative(platformConfig);\n    }\n\n    if (!this.__isNative) {\n      this.__isNative = true;\n\n      // Since this does not call the super.__makeNative, we need to store the\n      // supplied platformConfig here, before calling #connectAnimatedView\n      // where it will be needed to traverse the graph of attached values.\n      super.__setPlatformConfig(platformConfig);\n\n      if (this.#target != null) {\n        this.#connectAnimatedView(this.#target);\n      }\n    }\n  }\n\n  setNativeView(instance: TargetViewInstance): void {\n    if (this.#target?.instance === instance) {\n      return;\n    }\n    this.#target = {instance, connectedViewTag: null};\n    if (this.__isNative) {\n      this.#connectAnimatedView(this.#target);\n    }\n  }\n\n  #connectAnimatedView(target: TargetView): void {\n    invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n    let viewTag: ?number = findNodeHandle(target.instance);\n    if (viewTag == null) {\n      if (process.env.NODE_ENV === 'test') {\n        viewTag = -1;\n      } else {\n        throw new Error('Unable to locate attached view in the native tree');\n      }\n    }\n    NativeAnimatedHelper.API.connectAnimatedNodeToView(\n      this.__getNativeTag(),\n      viewTag,\n    );\n    target.connectedViewTag = viewTag;\n  }\n\n  #disconnectAnimatedView(target: TargetView): void {\n    invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n    const viewTag = target.connectedViewTag;\n    if (viewTag == null) {\n      return;\n    }\n    NativeAnimatedHelper.API.disconnectAnimatedNodeFromView(\n      this.__getNativeTag(),\n      viewTag,\n    );\n    target.connectedViewTag = null;\n  }\n\n  __restoreDefaultValues(): void {\n    // When using the native driver, view properties need to be restored to\n    // their default values manually since react no longer tracks them. This\n    // is needed to handle cases where a prop driven by native animated is removed\n    // after having been changed natively by an animation.\n    if (this.__isNative) {\n      NativeAnimatedHelper.API.restoreDefaultValues(this.__getNativeTag());\n    }\n  }\n\n  __getNativeConfig(): Object {\n    const platformConfig = this.__getPlatformConfig();\n    const propsConfig: {[string]: number} = {};\n\n    const nodeKeys = this.#nodeKeys;\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const key = nodeKeys[ii];\n      const node = nodes[ii];\n      node.__makeNative(platformConfig);\n      propsConfig[key] = node.__getNativeTag();\n    }\n\n    return {\n      type: 'props',\n      props: propsConfig,\n      debugID: this.__getDebugID(),\n    };\n  }\n}\n\n// Supported versions of JSC do not implement the newer Object.hasOwn. Remove\n// this shim when they do.\n// $FlowIgnore[method-unbinding]\nconst _hasOwnProp = Object.prototype.hasOwnProperty;\nconst hasOwn: (obj: $ReadOnly<{...}>, prop: string) => boolean =\n  // $FlowIgnore[method-unbinding]\n  Object.hasOwn ?? ((obj, prop) => _hasOwnProp.call(obj, prop));\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedWithChildren from './AnimatedWithChildren';\nimport {isValidElement} from 'react';\n\nconst MAX_DEPTH = 5;\n\nexport function isPlainObject(\n  value: mixed,\n  /* $FlowIssue[incompatible-type-guard] - Flow does not know that the prototype\n     and ReactElement checks preserve the type refinement of `value`. */\n): value is $ReadOnly<{[string]: mixed}> {\n  return (\n    // $FlowFixMe[incompatible-type-guard]\n    value !== null &&\n    typeof value === 'object' &&\n    Object.getPrototypeOf(value).isPrototypeOf(Object) &&\n    !isValidElement(value)\n  );\n}\n\nfunction flatAnimatedNodes(\n  value: mixed,\n  nodes: Array<AnimatedNode> = [],\n  depth: number = 0,\n): Array<AnimatedNode> {\n  if (depth >= MAX_DEPTH) {\n    return nodes;\n  }\n  if (value instanceof AnimatedNode) {\n    nodes.push(value);\n  } else if (Array.isArray(value)) {\n    for (let ii = 0, length = value.length; ii < length; ii++) {\n      const element = value[ii];\n      flatAnimatedNodes(element, nodes, depth + 1);\n    }\n  } else if (isPlainObject(value)) {\n    const keys = Object.keys(value);\n    for (let ii = 0, length = keys.length; ii < length; ii++) {\n      const key = keys[ii];\n      flatAnimatedNodes(value[key], nodes, depth + 1);\n    }\n  }\n  return nodes;\n}\n\n// Returns a copy of value with a transformation fn applied to any AnimatedNodes\nfunction mapAnimatedNodes(value: any, fn: any => any, depth: number = 0): any {\n  if (depth >= MAX_DEPTH) {\n    return value;\n  }\n\n  if (value instanceof AnimatedNode) {\n    return fn(value);\n  } else if (Array.isArray(value)) {\n    return value.map(element => mapAnimatedNodes(element, fn, depth + 1));\n  } else if (isPlainObject(value)) {\n    const result: {[string]: any} = {};\n    const keys = Object.keys(value);\n    for (let ii = 0, length = keys.length; ii < length; ii++) {\n      const key = keys[ii];\n      result[key] = mapAnimatedNodes(value[key], fn, depth + 1);\n    }\n    return result;\n  } else {\n    return value;\n  }\n}\n\nexport default class AnimatedObject extends AnimatedWithChildren {\n  #nodes: $ReadOnlyArray<AnimatedNode>;\n  _value: mixed;\n\n  /**\n   * Creates an `AnimatedObject` if `value` contains `AnimatedNode` instances.\n   * Otherwise, returns `null`.\n   */\n  static from(value: mixed): ?AnimatedObject {\n    const nodes = flatAnimatedNodes(value);\n    if (nodes.length === 0) {\n      return null;\n    }\n    return new AnimatedObject(nodes, value);\n  }\n\n  /**\n   * Should only be called by `AnimatedObject.from`.\n   */\n  constructor(\n    nodes: $ReadOnlyArray<AnimatedNode>,\n    value: mixed,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    this.#nodes = nodes;\n    this._value = value;\n  }\n\n  __getValue(): any {\n    return mapAnimatedNodes(this._value, node => {\n      return node.__getValue();\n    });\n  }\n\n  __getValueWithStaticObject(staticObject: mixed): any {\n    const nodes = this.#nodes;\n    let index = 0;\n    // NOTE: We can depend on `this._value` and `staticObject` sharing a\n    // structure because of `useAnimatedPropsMemo`.\n    return mapAnimatedNodes(staticObject, () => nodes[index++].__getValue());\n  }\n\n  __getAnimatedValue(): any {\n    return mapAnimatedNodes(this._value, node => {\n      return node.__getAnimatedValue();\n    });\n  }\n\n  __attach(): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__addChild(this);\n    }\n    super.__attach();\n  }\n\n  __detach(): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__removeChild(this);\n    }\n    super.__detach();\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__makeNative(platformConfig);\n    }\n    super.__makeNative(platformConfig);\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'object',\n      value: mapAnimatedNodes(this._value, node => {\n        return {nodeTag: node.__getNativeTag()};\n      }),\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow\n * @format\n */\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport {validateStyles} from '../../../src/private/animated/NativeAnimatedValidation';\nimport * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags';\nimport Platform from '../../Utilities/Platform';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedObject from './AnimatedObject';\nimport AnimatedTransform from './AnimatedTransform';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport type AnimatedStyleAllowlist = $ReadOnly<{[string]: true}>;\n\ntype FlatStyle = {[string]: mixed};\ntype FlatStyleForWeb<TStyle: FlatStyle> = [mixed, TStyle];\n\nfunction createAnimatedStyle(\n  flatStyle: FlatStyle,\n  allowlist: ?AnimatedStyleAllowlist,\n  keepUnanimatedValues: boolean,\n): [$ReadOnlyArray<string>, $ReadOnlyArray<AnimatedNode>, {[string]: mixed}] {\n  const nodeKeys: Array<string> = [];\n  const nodes: Array<AnimatedNode> = [];\n  const style: {[string]: mixed} = {};\n\n  const keys = Object.keys(flatStyle);\n  for (let ii = 0, length = keys.length; ii < length; ii++) {\n    const key = keys[ii];\n    const value = flatStyle[key];\n\n    if (allowlist == null || hasOwn(allowlist, key)) {\n      let node;\n      if (value != null && key === 'transform') {\n        node = ReactNativeFeatureFlags.shouldUseAnimatedObjectForTransform()\n          ? AnimatedObject.from(value)\n          : // $FlowFixMe[incompatible-call] - `value` is mixed.\n            AnimatedTransform.from(value);\n      } else if (value instanceof AnimatedNode) {\n        node = value;\n      } else {\n        node = AnimatedObject.from(value);\n      }\n      if (node == null) {\n        if (keepUnanimatedValues) {\n          style[key] = value;\n        }\n      } else {\n        nodeKeys.push(key);\n        nodes.push(node);\n        style[key] = node;\n      }\n    } else {\n      if (__DEV__) {\n        // WARNING: This is a potentially expensive check that we should only\n        // do in development. Without this check in development, it might be\n        // difficult to identify which styles need to be allowlisted.\n        if (AnimatedObject.from(flatStyle[key]) != null) {\n          console.error(\n            `AnimatedStyle: ${key} is not allowlisted for animation, but ` +\n              'it contains AnimatedNode values; styles allowing animation: ',\n            allowlist,\n          );\n        }\n      }\n      if (keepUnanimatedValues) {\n        style[key] = value;\n      }\n    }\n  }\n\n  return [nodeKeys, nodes, style];\n}\n\nexport default class AnimatedStyle extends AnimatedWithChildren {\n  #originalStyleForWeb: ?mixed;\n  #nodeKeys: $ReadOnlyArray<string>;\n  #nodes: $ReadOnlyArray<AnimatedNode>;\n  #style: {[string]: mixed};\n\n  /**\n   * Creates an `AnimatedStyle` if `value` contains `AnimatedNode` instances.\n   * Otherwise, returns `null`.\n   */\n  static from(\n    flatStyle: ?FlatStyle,\n    allowlist: ?AnimatedStyleAllowlist,\n    originalStyleForWeb: ?mixed,\n  ): ?AnimatedStyle {\n    if (flatStyle == null) {\n      return null;\n    }\n    const [nodeKeys, nodes, style] = createAnimatedStyle(\n      flatStyle,\n      allowlist,\n      Platform.OS !== 'web',\n    );\n    if (nodes.length === 0) {\n      return null;\n    }\n    return new AnimatedStyle(nodeKeys, nodes, style, originalStyleForWeb);\n  }\n\n  constructor(\n    nodeKeys: $ReadOnlyArray<string>,\n    nodes: $ReadOnlyArray<AnimatedNode>,\n    style: {[string]: mixed},\n    originalStyleForWeb: ?mixed,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    this.#nodeKeys = nodeKeys;\n    this.#nodes = nodes;\n    this.#style = style;\n\n    if ((Platform.OS as string) === 'web') {\n      // $FlowIgnore[cannot-write] - Intentional shadowing.\n      this.__getValueForStyle = resultStyle => [\n        originalStyleForWeb,\n        resultStyle,\n      ];\n    }\n  }\n\n  __getValue(): FlatStyleForWeb<FlatStyle> | FlatStyle {\n    const style: {[string]: mixed} = {};\n\n    const keys = Object.keys(this.#style);\n    for (let ii = 0, length = keys.length; ii < length; ii++) {\n      const key = keys[ii];\n      const value = this.#style[key];\n\n      if (value instanceof AnimatedNode) {\n        style[key] = value.__getValue();\n      } else {\n        style[key] = value;\n      }\n    }\n\n    return this.__getValueForStyle(style);\n  }\n\n  /**\n   * See the constructor, where this is shadowed on web platforms.\n   */\n  __getValueForStyle<TStyle: FlatStyle>(\n    style: TStyle,\n  ): FlatStyleForWeb<TStyle> | TStyle {\n    return style;\n  }\n\n  /**\n   * Mutates the supplied `style` object such that animated nodes are replaced\n   * with rasterized values.\n   */\n  __replaceAnimatedNodeWithValues(style: {[string]: mixed}): void {\n    const keys = Object.keys(style);\n    for (let ii = 0, length = keys.length; ii < length; ii++) {\n      const key = keys[ii];\n      const maybeNode = this.#style[key];\n\n      if (key === 'transform' && maybeNode instanceof AnimatedTransform) {\n        style[key] = maybeNode.__getValueWithStaticTransforms(\n          // NOTE: This check should not be necessary, but the types are not\n          // enforced as of this writing.\n          Array.isArray(style[key]) ? style[key] : [],\n        );\n      } else if (maybeNode instanceof AnimatedObject) {\n        style[key] = maybeNode.__getValueWithStaticObject(style[key]);\n      } else if (maybeNode instanceof AnimatedNode) {\n        style[key] = maybeNode.__getValue();\n      }\n    }\n  }\n\n  __getAnimatedValue(): Object {\n    const style: {[string]: mixed} = {};\n\n    const nodeKeys = this.#nodeKeys;\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const key = nodeKeys[ii];\n      const node = nodes[ii];\n      style[key] = node.__getAnimatedValue();\n    }\n\n    return style;\n  }\n\n  __attach(): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__addChild(this);\n    }\n    super.__attach();\n  }\n\n  __detach(): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__removeChild(this);\n    }\n    super.__detach();\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__makeNative(platformConfig);\n    }\n    super.__makeNative(platformConfig);\n  }\n\n  __getNativeConfig(): Object {\n    const platformConfig = this.__getPlatformConfig();\n    const styleConfig: {[string]: ?number} = {};\n\n    const nodeKeys = this.#nodeKeys;\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const key = nodeKeys[ii];\n      const node = nodes[ii];\n      node.__makeNative(platformConfig);\n      styleConfig[key] = node.__getNativeTag();\n    }\n\n    if (__DEV__) {\n      validateStyles(styleConfig);\n    }\n    return {\n      type: 'style',\n      style: styleConfig,\n      debugID: this.__getDebugID(),\n    };\n  }\n}\n\n// Supported versions of JSC do not implement the newer Object.hasOwn. Remove\n// this shim when they do.\n// $FlowIgnore[method-unbinding]\nconst _hasOwnProp = Object.prototype.hasOwnProperty;\nconst hasOwn: (obj: $ReadOnly<{...}>, prop: string) => boolean =\n  // $FlowIgnore[method-unbinding]\n  Object.hasOwn ?? ((obj, prop) => _hasOwnProp.call(obj, prop));\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport {validateTransform} from '../../../src/private/animated/NativeAnimatedValidation';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\ntype Transform<T = AnimatedNode> = {\n  [string]:\n    | number\n    | string\n    | T\n    | $ReadOnlyArray<number | string | T>\n    | {[string]: number | string | T},\n};\n\nfunction flatAnimatedNodes(\n  transforms: $ReadOnlyArray<Transform<>>,\n): Array<AnimatedNode> {\n  const nodes = [];\n  for (let ii = 0, length = transforms.length; ii < length; ii++) {\n    const transform = transforms[ii];\n    // There should be exactly one property in `transform`.\n    for (const key in transform) {\n      const value = transform[key];\n      if (value instanceof AnimatedNode) {\n        nodes.push(value);\n      }\n    }\n  }\n  return nodes;\n}\n\nexport default class AnimatedTransform extends AnimatedWithChildren {\n  // NOTE: For potentially historical reasons, some operations only operate on\n  // the first level of AnimatedNode instances. This optimizes that bevavior.\n  #nodes: $ReadOnlyArray<AnimatedNode>;\n\n  _transforms: $ReadOnlyArray<Transform<>>;\n\n  /**\n   * Creates an `AnimatedTransform` if `transforms` contains `AnimatedNode`\n   * instances. Otherwise, returns `null`.\n   */\n  static from(transforms: $ReadOnlyArray<Transform<>>): ?AnimatedTransform {\n    const nodes = flatAnimatedNodes(\n      // NOTE: This check should not be necessary, but the types are not\n      // enforced as of this writing. This check should be hoisted to\n      // instantiation sites.\n      Array.isArray(transforms) ? transforms : [],\n    );\n    if (nodes.length === 0) {\n      return null;\n    }\n    return new AnimatedTransform(nodes, transforms);\n  }\n\n  constructor(\n    nodes: $ReadOnlyArray<AnimatedNode>,\n    transforms: $ReadOnlyArray<Transform<>>,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    this.#nodes = nodes;\n    this._transforms = transforms;\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__makeNative(platformConfig);\n    }\n    super.__makeNative(platformConfig);\n  }\n\n  __getValue(): $ReadOnlyArray<Transform<any>> {\n    return mapTransforms(this._transforms, animatedNode =>\n      animatedNode.__getValue(),\n    );\n  }\n\n  __getValueWithStaticTransforms(\n    staticTransforms: $ReadOnlyArray<Object>,\n  ): $ReadOnlyArray<Object> {\n    const values = [];\n    mapTransforms(this._transforms, node => {\n      values.push(node.__getValue());\n    });\n    // NOTE: We can depend on `this._transforms` and `staticTransforms` sharing\n    // a structure because of `useAnimatedPropsMemo`.\n    return mapTransforms(staticTransforms, () => values.shift());\n  }\n\n  __getAnimatedValue(): $ReadOnlyArray<Transform<any>> {\n    return mapTransforms(this._transforms, animatedNode =>\n      animatedNode.__getAnimatedValue(),\n    );\n  }\n\n  __attach(): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__addChild(this);\n    }\n    super.__attach();\n  }\n\n  __detach(): void {\n    const nodes = this.#nodes;\n    for (let ii = 0, length = nodes.length; ii < length; ii++) {\n      const node = nodes[ii];\n      node.__removeChild(this);\n    }\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    const transformsConfig: Array<any> = [];\n\n    const transforms = this._transforms;\n    for (let ii = 0, length = transforms.length; ii < length; ii++) {\n      const transform = transforms[ii];\n      // There should be exactly one property in `transform`.\n      for (const key in transform) {\n        const value = transform[key];\n        if (value instanceof AnimatedNode) {\n          transformsConfig.push({\n            type: 'animated',\n            property: key,\n            nodeTag: value.__getNativeTag(),\n          });\n        } else {\n          transformsConfig.push({\n            type: 'static',\n            property: key,\n            /* $FlowFixMe[incompatible-call] - `value` can be an array or an\n               object. This is not currently handled by `transformDataType`.\n               Migrating to `TransformObject` might solve this. */\n            value: NativeAnimatedHelper.transformDataType(value),\n          });\n        }\n      }\n    }\n\n    if (__DEV__) {\n      validateTransform(transformsConfig);\n    }\n    return {\n      type: 'transform',\n      transforms: transformsConfig,\n      debugID: this.__getDebugID(),\n    };\n  }\n}\n\nfunction mapTransforms<T>(\n  transforms: $ReadOnlyArray<Transform<>>,\n  mapFunction: AnimatedNode => T,\n): $ReadOnlyArray<Transform<T>> {\n  return transforms.map(transform => {\n    const result: Transform<T> = {};\n    // There should be exactly one property in `transform`.\n    for (const key in transform) {\n      const value = transform[key];\n      if (value instanceof AnimatedNode) {\n        result[key] = mapFunction(value);\n      } else if (Array.isArray(value)) {\n        result[key] = value.map(element =>\n          element instanceof AnimatedNode ? mapFunction(element) : element,\n        );\n      } else if (typeof value === 'object') {\n        const object: {[string]: number | string | T} = {};\n        for (const propertyName in value) {\n          const propertyValue = value[propertyName];\n          object[propertyName] =\n            propertyValue instanceof AnimatedNode\n              ? mapFunction(propertyValue)\n              : propertyValue;\n        }\n        result[key] = object;\n      } else {\n        result[key] = value;\n      }\n    }\n    return result;\n  });\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type AnimatedInterpolation from '../nodes/AnimatedInterpolation';\nimport type AnimatedValue from '../nodes/AnimatedValue';\nimport type AnimatedValueXY from '../nodes/AnimatedValueXY';\nimport type {AnimationConfig, EndCallback} from './Animation';\n\nimport AnimatedColor from '../nodes/AnimatedColor';\nimport * as SpringConfig from '../SpringConfig';\nimport Animation from './Animation';\nimport invariant from 'invariant';\n\nexport type SpringAnimationConfig = $ReadOnly<{\n  ...AnimationConfig,\n  toValue:\n    | number\n    | AnimatedValue\n    | {\n        x: number,\n        y: number,\n        ...\n      }\n    | AnimatedValueXY\n    | {\n        r: number,\n        g: number,\n        b: number,\n        a: number,\n        ...\n      }\n    | AnimatedColor\n    | AnimatedInterpolation<number>,\n  overshootClamping?: boolean,\n  restDisplacementThreshold?: number,\n  restSpeedThreshold?: number,\n  velocity?:\n    | number\n    | $ReadOnly<{\n        x: number,\n        y: number,\n        ...\n      }>,\n  bounciness?: number,\n  speed?: number,\n  tension?: number,\n  friction?: number,\n  stiffness?: number,\n  damping?: number,\n  mass?: number,\n  delay?: number,\n  ...\n}>;\n\nexport type SpringAnimationConfigSingle = $ReadOnly<{\n  ...AnimationConfig,\n  toValue: number,\n  overshootClamping?: boolean,\n  restDisplacementThreshold?: number,\n  restSpeedThreshold?: number,\n  velocity?: number,\n  bounciness?: number,\n  speed?: number,\n  tension?: number,\n  friction?: number,\n  stiffness?: number,\n  damping?: number,\n  mass?: number,\n  delay?: number,\n  ...\n}>;\n\nopaque type SpringAnimationInternalState = $ReadOnly<{\n  lastPosition: number,\n  lastVelocity: number,\n  lastTime: number,\n}>;\n\nexport default class SpringAnimation extends Animation {\n  _overshootClamping: boolean;\n  _restDisplacementThreshold: number;\n  _restSpeedThreshold: number;\n  _lastVelocity: number;\n  _startPosition: number;\n  _lastPosition: number;\n  _fromValue: number;\n  _toValue: number;\n  _stiffness: number;\n  _damping: number;\n  _mass: number;\n  _initialVelocity: number;\n  _delay: number;\n  _timeout: ?TimeoutID;\n  _startTime: number;\n  _lastTime: number;\n  _frameTime: number;\n  _onUpdate: (value: number) => void;\n  _animationFrame: ?AnimationFrameID;\n  _platformConfig: ?PlatformConfig;\n\n  constructor(config: SpringAnimationConfigSingle) {\n    super(config);\n\n    this._overshootClamping = config.overshootClamping ?? false;\n    this._restDisplacementThreshold = config.restDisplacementThreshold ?? 0.001;\n    this._restSpeedThreshold = config.restSpeedThreshold ?? 0.001;\n    this._initialVelocity = config.velocity ?? 0;\n    this._lastVelocity = config.velocity ?? 0;\n    this._toValue = config.toValue;\n    this._delay = config.delay ?? 0;\n    this._platformConfig = config.platformConfig;\n\n    if (\n      config.stiffness !== undefined ||\n      config.damping !== undefined ||\n      config.mass !== undefined\n    ) {\n      invariant(\n        config.bounciness === undefined &&\n          config.speed === undefined &&\n          config.tension === undefined &&\n          config.friction === undefined,\n        'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one',\n      );\n      this._stiffness = config.stiffness ?? 100;\n      this._damping = config.damping ?? 10;\n      this._mass = config.mass ?? 1;\n    } else if (config.bounciness !== undefined || config.speed !== undefined) {\n      // Convert the origami bounciness/speed values to stiffness/damping\n      // We assume mass is 1.\n      invariant(\n        config.tension === undefined &&\n          config.friction === undefined &&\n          config.stiffness === undefined &&\n          config.damping === undefined &&\n          config.mass === undefined,\n        'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one',\n      );\n      const springConfig = SpringConfig.fromBouncinessAndSpeed(\n        config.bounciness ?? 8,\n        config.speed ?? 12,\n      );\n      this._stiffness = springConfig.stiffness;\n      this._damping = springConfig.damping;\n      this._mass = 1;\n    } else {\n      // Convert the origami tension/friction values to stiffness/damping\n      // We assume mass is 1.\n      const springConfig = SpringConfig.fromOrigamiTensionAndFriction(\n        config.tension ?? 40,\n        config.friction ?? 7,\n      );\n      this._stiffness = springConfig.stiffness;\n      this._damping = springConfig.damping;\n      this._mass = 1;\n    }\n\n    invariant(this._stiffness > 0, 'Stiffness value must be greater than 0');\n    invariant(this._damping > 0, 'Damping value must be greater than 0');\n    invariant(this._mass > 0, 'Mass value must be greater than 0');\n  }\n\n  __getNativeAnimationConfig(): $ReadOnly<{\n    damping: number,\n    initialVelocity: number,\n    iterations: number,\n    mass: number,\n    platformConfig: ?PlatformConfig,\n    overshootClamping: boolean,\n    restDisplacementThreshold: number,\n    restSpeedThreshold: number,\n    stiffness: number,\n    toValue: number,\n    type: 'spring',\n    ...\n  }> {\n    return {\n      type: 'spring',\n      overshootClamping: this._overshootClamping,\n      restDisplacementThreshold: this._restDisplacementThreshold,\n      restSpeedThreshold: this._restSpeedThreshold,\n      stiffness: this._stiffness,\n      damping: this._damping,\n      mass: this._mass,\n      initialVelocity: this._initialVelocity ?? this._lastVelocity,\n      toValue: this._toValue,\n      iterations: this.__iterations,\n      platformConfig: this._platformConfig,\n      debugID: this.__getDebugID(),\n    };\n  }\n\n  start(\n    fromValue: number,\n    onUpdate: (value: number) => void,\n    onEnd: ?EndCallback,\n    previousAnimation: ?Animation,\n    animatedValue: AnimatedValue,\n  ): void {\n    super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue);\n\n    this._startPosition = fromValue;\n    this._lastPosition = this._startPosition;\n\n    this._onUpdate = onUpdate;\n    this._lastTime = Date.now();\n    this._frameTime = 0.0;\n\n    if (previousAnimation instanceof SpringAnimation) {\n      const internalState = previousAnimation.getInternalState();\n      this._lastPosition = internalState.lastPosition;\n      this._lastVelocity = internalState.lastVelocity;\n      // Set the initial velocity to the last velocity\n      this._initialVelocity = this._lastVelocity;\n      this._lastTime = internalState.lastTime;\n    }\n\n    const start = () => {\n      const useNativeDriver = this.__startAnimationIfNative(animatedValue);\n      if (!useNativeDriver) {\n        this.onUpdate();\n      }\n    };\n\n    //  If this._delay is more than 0, we start after the timeout.\n    if (this._delay) {\n      this._timeout = setTimeout(start, this._delay);\n    } else {\n      start();\n    }\n  }\n\n  getInternalState(): SpringAnimationInternalState {\n    return {\n      lastPosition: this._lastPosition,\n      lastVelocity: this._lastVelocity,\n      lastTime: this._lastTime,\n    };\n  }\n\n  /**\n   * This spring model is based off of a damped harmonic oscillator\n   * (https://en.wikipedia.org/wiki/Harmonic_oscillator#Damped_harmonic_oscillator).\n   *\n   * We use the closed form of the second order differential equation:\n   *\n   * x'' + (2ζ⍵_0)x' + ⍵^2x = 0\n   *\n   * where\n   *    ⍵_0 = √(k / m) (undamped angular frequency of the oscillator),\n   *    ζ = c / 2√mk (damping ratio),\n   *    c = damping constant\n   *    k = stiffness\n   *    m = mass\n   *\n   * The derivation of the closed form is described in detail here:\n   * http://planetmath.org/sites/default/files/texpdf/39745.pdf\n   *\n   * This algorithm happens to match the algorithm used by CASpringAnimation,\n   * a QuartzCore (iOS) API that creates spring animations.\n   */\n  onUpdate(): void {\n    // If for some reason we lost a lot of frames (e.g. process large payload or\n    // stopped in the debugger), we only advance by 4 frames worth of\n    // computation and will continue on the next frame. It's better to have it\n    // running at faster speed than jumping to the end.\n    const MAX_STEPS = 64;\n    let now = Date.now();\n    if (now > this._lastTime + MAX_STEPS) {\n      now = this._lastTime + MAX_STEPS;\n    }\n\n    const deltaTime = (now - this._lastTime) / 1000;\n    this._frameTime += deltaTime;\n\n    const c: number = this._damping;\n    const m: number = this._mass;\n    const k: number = this._stiffness;\n    const v0: number = -this._initialVelocity;\n\n    const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n    const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n    const omega1 = omega0 * Math.sqrt(1.0 - zeta * zeta); // exponential decay\n    const x0 = this._toValue - this._startPosition; // calculate the oscillation from x0 = 1 to x = 0\n\n    let position = 0.0;\n    let velocity = 0.0;\n    const t = this._frameTime;\n    if (zeta < 1) {\n      // Under damped\n      const envelope = Math.exp(-zeta * omega0 * t);\n      position =\n        this._toValue -\n        envelope *\n          (((v0 + zeta * omega0 * x0) / omega1) * Math.sin(omega1 * t) +\n            x0 * Math.cos(omega1 * t));\n      // This looks crazy -- it's actually just the derivative of the\n      // oscillation function\n      velocity =\n        zeta *\n          omega0 *\n          envelope *\n          ((Math.sin(omega1 * t) * (v0 + zeta * omega0 * x0)) / omega1 +\n            x0 * Math.cos(omega1 * t)) -\n        envelope *\n          (Math.cos(omega1 * t) * (v0 + zeta * omega0 * x0) -\n            omega1 * x0 * Math.sin(omega1 * t));\n    } else {\n      // Critically damped\n      const envelope = Math.exp(-omega0 * t);\n      position = this._toValue - envelope * (x0 + (v0 + omega0 * x0) * t);\n      velocity =\n        envelope * (v0 * (t * omega0 - 1) + t * x0 * (omega0 * omega0));\n    }\n\n    this._lastTime = now;\n    this._lastPosition = position;\n    this._lastVelocity = velocity;\n\n    this._onUpdate(position);\n    if (!this.__active) {\n      // a listener might have stopped us in _onUpdate\n      return;\n    }\n\n    // Conditions for stopping the spring animation\n    let isOvershooting = false;\n    if (this._overshootClamping && this._stiffness !== 0) {\n      if (this._startPosition < this._toValue) {\n        isOvershooting = position > this._toValue;\n      } else {\n        isOvershooting = position < this._toValue;\n      }\n    }\n    const isVelocity = Math.abs(velocity) <= this._restSpeedThreshold;\n    let isDisplacement = true;\n    if (this._stiffness !== 0) {\n      isDisplacement =\n        Math.abs(this._toValue - position) <= this._restDisplacementThreshold;\n    }\n\n    if (isOvershooting || (isVelocity && isDisplacement)) {\n      if (this._stiffness !== 0) {\n        // Ensure that we end up with a round value\n        this._lastPosition = this._toValue;\n        this._lastVelocity = 0;\n        this._onUpdate(this._toValue);\n      }\n\n      this.__notifyAnimationEnd({finished: true});\n      return;\n    }\n    // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n    this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n  }\n\n  stop(): void {\n    super.stop();\n    clearTimeout(this._timeout);\n    if (this._animationFrame != null) {\n      global.cancelAnimationFrame(this._animationFrame);\n    }\n    this.__notifyAnimationEnd({finished: false});\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {ProcessedColorValue} from '../../StyleSheet/processColor';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {NativeColorValue} from '../../StyleSheet/StyleSheetTypes';\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport normalizeColor from '../../StyleSheet/normalizeColor';\nimport {processColorObject} from '../../StyleSheet/PlatformColorValueTypes';\nimport AnimatedValue, {flushValue} from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport type AnimatedColorConfig = $ReadOnly<{\n  ...AnimatedNodeConfig,\n  useNativeDriver: boolean,\n}>;\n\ntype ColorListenerCallback = (value: ColorValue) => mixed;\n\nexport type RgbaValue = {\n  +r: number,\n  +g: number,\n  +b: number,\n  +a: number,\n  ...\n};\n\ntype RgbaAnimatedValue = {\n  +r: AnimatedValue,\n  +g: AnimatedValue,\n  +b: AnimatedValue,\n  +a: AnimatedValue,\n  ...\n};\n\nexport type InputValue = ?(RgbaValue | RgbaAnimatedValue | ColorValue);\n\nconst NativeAnimatedAPI = NativeAnimatedHelper.API;\n\nconst defaultColor: RgbaValue = {r: 0, g: 0, b: 0, a: 1.0};\n\n/* eslint no-bitwise: 0 */\nfunction processColor(\n  color?: ?(ColorValue | RgbaValue),\n): ?(RgbaValue | NativeColorValue) {\n  if (color === undefined || color === null) {\n    return null;\n  }\n\n  if (isRgbaValue(color)) {\n    // $FlowIgnore[incompatible-cast] - Type is verified above\n    return (color: RgbaValue);\n  }\n\n  let normalizedColor: ?ProcessedColorValue = normalizeColor(\n    // $FlowIgnore[incompatible-cast] - Type is verified above\n    (color: ColorValue),\n  );\n  if (normalizedColor === undefined || normalizedColor === null) {\n    return null;\n  }\n\n  if (typeof normalizedColor === 'object') {\n    const processedColorObj: ?NativeColorValue =\n      processColorObject(normalizedColor);\n    if (processedColorObj != null) {\n      return processedColorObj;\n    }\n  } else if (typeof normalizedColor === 'number') {\n    const r: number = (normalizedColor & 0xff000000) >>> 24;\n    const g: number = (normalizedColor & 0x00ff0000) >>> 16;\n    const b: number = (normalizedColor & 0x0000ff00) >>> 8;\n    const a: number = (normalizedColor & 0x000000ff) / 255;\n\n    return {r, g, b, a};\n  }\n\n  return null;\n}\n\nfunction isRgbaValue(value: any): boolean {\n  return (\n    value &&\n    typeof value.r === 'number' &&\n    typeof value.g === 'number' &&\n    typeof value.b === 'number' &&\n    typeof value.a === 'number'\n  );\n}\n\nfunction isRgbaAnimatedValue(value: any): boolean {\n  return (\n    value &&\n    value.r instanceof AnimatedValue &&\n    value.g instanceof AnimatedValue &&\n    value.b instanceof AnimatedValue &&\n    value.a instanceof AnimatedValue\n  );\n}\n\nexport default class AnimatedColor extends AnimatedWithChildren {\n  r: AnimatedValue;\n  g: AnimatedValue;\n  b: AnimatedValue;\n  a: AnimatedValue;\n  nativeColor: ?NativeColorValue;\n\n  _suspendCallbacks: number = 0;\n\n  constructor(valueIn?: InputValue, config?: ?AnimatedColorConfig) {\n    super(config);\n\n    let value: RgbaValue | RgbaAnimatedValue | ColorValue =\n      valueIn ?? defaultColor;\n    if (isRgbaAnimatedValue(value)) {\n      // $FlowIgnore[incompatible-cast] - Type is verified above\n      const rgbaAnimatedValue: RgbaAnimatedValue = (value: RgbaAnimatedValue);\n      this.r = rgbaAnimatedValue.r;\n      this.g = rgbaAnimatedValue.g;\n      this.b = rgbaAnimatedValue.b;\n      this.a = rgbaAnimatedValue.a;\n    } else {\n      const processedColor: RgbaValue | NativeColorValue =\n        // $FlowIgnore[incompatible-cast] - Type is verified above\n        processColor((value: ColorValue | RgbaValue)) ?? defaultColor;\n      let initColor: RgbaValue = defaultColor;\n      if (isRgbaValue(processedColor)) {\n        // $FlowIgnore[incompatible-cast] - Type is verified above\n        initColor = (processedColor: RgbaValue);\n      } else {\n        // $FlowIgnore[incompatible-cast] - Type is verified above\n        this.nativeColor = (processedColor: NativeColorValue);\n      }\n\n      this.r = new AnimatedValue(initColor.r);\n      this.g = new AnimatedValue(initColor.g);\n      this.b = new AnimatedValue(initColor.b);\n      this.a = new AnimatedValue(initColor.a);\n    }\n\n    if (config?.useNativeDriver) {\n      this.__makeNative();\n    }\n  }\n\n  /**\n   * Directly set the value. This will stop any animations running on the value\n   * and update all the bound properties.\n   */\n  setValue(value: RgbaValue | ColorValue): void {\n    let shouldUpdateNodeConfig = false;\n    if (this.__isNative) {\n      const nativeTag = this.__getNativeTag();\n      NativeAnimatedAPI.setWaitingForIdentifier(nativeTag.toString());\n    }\n\n    const processedColor: RgbaValue | NativeColorValue =\n      processColor(value) ?? defaultColor;\n    this._withSuspendedCallbacks(() => {\n      if (isRgbaValue(processedColor)) {\n        // $FlowIgnore[incompatible-type] - Type is verified above\n        const rgbaValue: RgbaValue = processedColor;\n        this.r.setValue(rgbaValue.r);\n        this.g.setValue(rgbaValue.g);\n        this.b.setValue(rgbaValue.b);\n        this.a.setValue(rgbaValue.a);\n        if (this.nativeColor != null) {\n          this.nativeColor = null;\n          shouldUpdateNodeConfig = true;\n        }\n      } else {\n        // $FlowIgnore[incompatible-type] - Type is verified above\n        const nativeColor: NativeColorValue = processedColor;\n        if (this.nativeColor !== nativeColor) {\n          this.nativeColor = nativeColor;\n          shouldUpdateNodeConfig = true;\n        }\n      }\n    });\n\n    if (this.__isNative) {\n      const nativeTag = this.__getNativeTag();\n      if (shouldUpdateNodeConfig) {\n        NativeAnimatedAPI.updateAnimatedNodeConfig(\n          nativeTag,\n          this.__getNativeConfig(),\n        );\n      }\n      NativeAnimatedAPI.unsetWaitingForIdentifier(nativeTag.toString());\n    } else {\n      flushValue(this);\n    }\n\n    // $FlowFixMe[incompatible-call]\n    this.__callListeners(this.__getValue());\n  }\n\n  /**\n   * Sets an offset that is applied on top of whatever value is set, whether\n   * via `setValue`, an animation, or `Animated.event`. Useful for compensating\n   * things like the start of a pan gesture.\n   */\n  setOffset(offset: RgbaValue): void {\n    this.r.setOffset(offset.r);\n    this.g.setOffset(offset.g);\n    this.b.setOffset(offset.b);\n    this.a.setOffset(offset.a);\n  }\n\n  /**\n   * Merges the offset value into the base value and resets the offset to zero.\n   * The final output of the value is unchanged.\n   */\n  flattenOffset(): void {\n    this.r.flattenOffset();\n    this.g.flattenOffset();\n    this.b.flattenOffset();\n    this.a.flattenOffset();\n  }\n\n  /**\n   * Sets the offset value to the base value, and resets the base value to\n   * zero. The final output of the value is unchanged.\n   */\n  extractOffset(): void {\n    this.r.extractOffset();\n    this.g.extractOffset();\n    this.b.extractOffset();\n    this.a.extractOffset();\n  }\n\n  /**\n   * Stops any running animation or tracking. `callback` is invoked with the\n   * final value after stopping the animation, which is useful for updating\n   * state to match the animation position with layout.\n   */\n  stopAnimation(callback?: ColorListenerCallback): void {\n    this.r.stopAnimation();\n    this.g.stopAnimation();\n    this.b.stopAnimation();\n    this.a.stopAnimation();\n    callback && callback(this.__getValue());\n  }\n\n  /**\n   * Stops any animation and resets the value to its original.\n   */\n  resetAnimation(callback?: ColorListenerCallback): void {\n    this.r.resetAnimation();\n    this.g.resetAnimation();\n    this.b.resetAnimation();\n    this.a.resetAnimation();\n    callback && callback(this.__getValue());\n  }\n\n  __getValue(): ColorValue {\n    if (this.nativeColor != null) {\n      return this.nativeColor;\n    } else {\n      return `rgba(${this.r.__getValue()}, ${this.g.__getValue()}, ${this.b.__getValue()}, ${this.a.__getValue()})`;\n    }\n  }\n\n  __attach(): void {\n    this.r.__addChild(this);\n    this.g.__addChild(this);\n    this.b.__addChild(this);\n    this.a.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this.r.__removeChild(this);\n    this.g.__removeChild(this);\n    this.b.__removeChild(this);\n    this.a.__removeChild(this);\n    super.__detach();\n  }\n\n  _withSuspendedCallbacks(callback: () => void) {\n    this._suspendCallbacks++;\n    callback();\n    this._suspendCallbacks--;\n  }\n\n  __callListeners(value: number): void {\n    if (this._suspendCallbacks === 0) {\n      super.__callListeners(value);\n    }\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this.r.__makeNative(platformConfig);\n    this.g.__makeNative(platformConfig);\n    this.b.__makeNative(platformConfig);\n    this.a.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n\n  __getNativeConfig(): {...} {\n    return {\n      type: 'color',\n      r: this.r.__getNativeTag(),\n      g: this.g.__getNativeTag(),\n      b: this.b.__getNativeTag(),\n      a: this.a.__getNativeTag(),\n      nativeColor: this.nativeColor,\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\ntype SpringConfigType = {\n  stiffness: number,\n  damping: number,\n  ...\n};\n\nfunction stiffnessFromOrigamiValue(oValue: number) {\n  return (oValue - 30) * 3.62 + 194;\n}\n\nfunction dampingFromOrigamiValue(oValue: number) {\n  return (oValue - 8) * 3 + 25;\n}\n\nexport function fromOrigamiTensionAndFriction(\n  tension: number,\n  friction: number,\n): SpringConfigType {\n  return {\n    stiffness: stiffnessFromOrigamiValue(tension),\n    damping: dampingFromOrigamiValue(friction),\n  };\n}\n\nexport function fromBouncinessAndSpeed(\n  bounciness: number,\n  speed: number,\n): SpringConfigType {\n  function normalize(value: number, startValue: number, endValue: number) {\n    return (value - startValue) / (endValue - startValue);\n  }\n\n  function projectNormal(n: number, start: number, end: number) {\n    return start + n * (end - start);\n  }\n\n  function linearInterpolation(t: number, start: number, end: number) {\n    return t * end + (1 - t) * start;\n  }\n\n  function quadraticOutInterpolation(t: number, start: number, end: number) {\n    return linearInterpolation(2 * t - t * t, start, end);\n  }\n\n  function b3Friction1(x: number) {\n    return 0.0007 * Math.pow(x, 3) - 0.031 * Math.pow(x, 2) + 0.64 * x + 1.28;\n  }\n\n  function b3Friction2(x: number) {\n    return 0.000044 * Math.pow(x, 3) - 0.006 * Math.pow(x, 2) + 0.36 * x + 2;\n  }\n\n  function b3Friction3(x: number) {\n    return (\n      0.00000045 * Math.pow(x, 3) -\n      0.000332 * Math.pow(x, 2) +\n      0.1078 * x +\n      5.84\n    );\n  }\n\n  function b3Nobounce(tension: number) {\n    if (tension <= 18) {\n      return b3Friction1(tension);\n    } else if (tension > 18 && tension <= 44) {\n      return b3Friction2(tension);\n    } else {\n      return b3Friction3(tension);\n    }\n  }\n\n  let b = normalize(bounciness / 1.7, 0, 20);\n  b = projectNormal(b, 0, 0.8);\n  const s = normalize(speed / 1.7, 0, 20);\n  const bouncyTension = projectNormal(s, 0.5, 200);\n  const bouncyFriction = quadraticOutInterpolation(\n    b,\n    b3Nobounce(bouncyTension),\n    0.01,\n  );\n\n  return {\n    stiffness: stiffnessFromOrigamiValue(bouncyTension),\n    damping: dampingFromOrigamiValue(bouncyFriction),\n  };\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {RgbaValue} from '../nodes/AnimatedColor';\nimport type AnimatedInterpolation from '../nodes/AnimatedInterpolation';\nimport type AnimatedValue from '../nodes/AnimatedValue';\nimport type AnimatedValueXY from '../nodes/AnimatedValueXY';\nimport type {AnimationConfig, EndCallback} from './Animation';\n\nimport AnimatedColor from '../nodes/AnimatedColor';\nimport Animation from './Animation';\n\nexport type TimingAnimationConfig = $ReadOnly<{\n  ...AnimationConfig,\n  toValue:\n    | number\n    | AnimatedValue\n    | $ReadOnly<{\n        x: number,\n        y: number,\n        ...\n      }>\n    | AnimatedValueXY\n    | RgbaValue\n    | AnimatedColor\n    | AnimatedInterpolation<number>,\n  easing?: (value: number) => number,\n  duration?: number,\n  delay?: number,\n  ...\n}>;\n\nexport type TimingAnimationConfigSingle = $ReadOnly<{\n  ...AnimationConfig,\n  toValue: number,\n  easing?: (value: number) => number,\n  duration?: number,\n  delay?: number,\n  ...\n}>;\n\nlet _easeInOut;\nfunction easeInOut() {\n  if (!_easeInOut) {\n    const Easing = require('../Easing').default;\n    _easeInOut = Easing.inOut(Easing.ease);\n  }\n  return _easeInOut;\n}\n\nexport default class TimingAnimation extends Animation {\n  _startTime: number;\n  _fromValue: number;\n  _toValue: number;\n  _duration: number;\n  _delay: number;\n  _easing: (value: number) => number;\n  _onUpdate: (value: number) => void;\n  _animationFrame: ?AnimationFrameID;\n  _timeout: ?TimeoutID;\n  _platformConfig: ?PlatformConfig;\n\n  constructor(config: TimingAnimationConfigSingle) {\n    super(config);\n\n    this._toValue = config.toValue;\n    this._easing = config.easing ?? easeInOut();\n    this._duration = config.duration ?? 500;\n    this._delay = config.delay ?? 0;\n    this._platformConfig = config.platformConfig;\n  }\n\n  __getNativeAnimationConfig(): $ReadOnly<{\n    type: 'frames',\n    frames: $ReadOnlyArray<number>,\n    toValue: number,\n    iterations: number,\n    platformConfig: ?PlatformConfig,\n    ...\n  }> {\n    const frameDuration = 1000.0 / 60.0;\n    const frames = [];\n    const numFrames = Math.round(this._duration / frameDuration);\n    for (let frame = 0; frame < numFrames; frame++) {\n      frames.push(this._easing(frame / numFrames));\n    }\n    frames.push(this._easing(1));\n    return {\n      type: 'frames',\n      frames,\n      toValue: this._toValue,\n      iterations: this.__iterations,\n      platformConfig: this._platformConfig,\n      debugID: this.__getDebugID(),\n    };\n  }\n\n  start(\n    fromValue: number,\n    onUpdate: (value: number) => void,\n    onEnd: ?EndCallback,\n    previousAnimation: ?Animation,\n    animatedValue: AnimatedValue,\n  ): void {\n    super.start(fromValue, onUpdate, onEnd, previousAnimation, animatedValue);\n\n    this._fromValue = fromValue;\n    this._onUpdate = onUpdate;\n\n    const start = () => {\n      this._startTime = Date.now();\n\n      const useNativeDriver = this.__startAnimationIfNative(animatedValue);\n      if (!useNativeDriver) {\n        // Animations that sometimes have 0 duration and sometimes do not\n        // still need to use the native driver when duration is 0 so as to\n        // not cause intermixed JS and native animations.\n        if (this._duration === 0) {\n          this._onUpdate(this._toValue);\n          this.__notifyAnimationEnd({finished: true});\n        } else {\n          this._animationFrame = requestAnimationFrame(() => this.onUpdate());\n        }\n      }\n    };\n    if (this._delay) {\n      this._timeout = setTimeout(start, this._delay);\n    } else {\n      start();\n    }\n  }\n\n  onUpdate(): void {\n    const now = Date.now();\n    if (now >= this._startTime + this._duration) {\n      if (this._duration === 0) {\n        this._onUpdate(this._toValue);\n      } else {\n        this._onUpdate(\n          this._fromValue + this._easing(1) * (this._toValue - this._fromValue),\n        );\n      }\n      this.__notifyAnimationEnd({finished: true});\n      return;\n    }\n\n    this._onUpdate(\n      this._fromValue +\n        this._easing((now - this._startTime) / this._duration) *\n          (this._toValue - this._fromValue),\n    );\n    if (this.__active) {\n      // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n      this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n    }\n  }\n\n  stop(): void {\n    super.stop();\n    clearTimeout(this._timeout);\n    if (this._animationFrame != null) {\n      global.cancelAnimationFrame(this._animationFrame);\n    }\n    this.__notifyAnimationEnd({finished: false});\n  }\n}\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 * @flow\n * @format\n */\n\nimport type AnimatedAddition from './nodes/AnimatedAddition';\nimport type AnimatedDiffClamp from './nodes/AnimatedDiffClamp';\nimport type AnimatedDivision from './nodes/AnimatedDivision';\nimport type AnimatedInterpolation from './nodes/AnimatedInterpolation';\nimport type AnimatedModulo from './nodes/AnimatedModulo';\nimport type AnimatedMultiplication from './nodes/AnimatedMultiplication';\nimport type AnimatedNode from './nodes/AnimatedNode';\nimport type {AnimatedPropsAllowlist} from './nodes/AnimatedProps';\nimport type AnimatedSubtraction from './nodes/AnimatedSubtraction';\nimport type AnimatedValue from './nodes/AnimatedValue';\n\nimport createAnimatedPropsHook from '../../src/private/animated/createAnimatedPropsHook';\nimport composeStyles from '../../src/private/styles/composeStyles';\nimport {type ViewProps} from '../Components/View/ViewPropTypes';\nimport useMergeRefs from '../Utilities/useMergeRefs';\nimport * as React from 'react';\nimport {useMemo} from 'react';\n\ntype Nullable = void | null;\ntype Primitive = string | number | boolean | symbol | void;\ntype Builtin = (...$ReadOnlyArray<empty>) => mixed | Date | Error | RegExp;\n\nexport type WithAnimatedValue<+T> = T extends Builtin | Nullable\n  ? T\n  : T extends Primitive\n    ?\n        | T\n        | AnimatedNode\n        | AnimatedAddition\n        | AnimatedSubtraction\n        | AnimatedDivision\n        | AnimatedMultiplication\n        | AnimatedModulo\n        | AnimatedDiffClamp\n        | AnimatedValue\n        | AnimatedInterpolation<number | string>\n        | AnimatedInterpolation<number>\n        | AnimatedInterpolation<string>\n    : T extends $ReadOnlyArray<infer P>\n      ? $ReadOnlyArray<WithAnimatedValue<P>>\n      : T extends {...}\n        ? {+[K in keyof T]: WithAnimatedValue<T[K]>}\n        : T;\n\ntype NonAnimatedProps =\n  | 'ref'\n  | 'innerViewRef'\n  | 'scrollViewRef'\n  | 'testID'\n  | 'disabled'\n  | 'accessibilityLabel';\ntype PassThroughProps = $ReadOnly<{\n  passthroughAnimatedPropExplicitValues?: ViewProps | null,\n}>;\n\nexport type AnimatedProps<Props: {...}> = {\n  [K in keyof Props]: K extends NonAnimatedProps\n    ? Props[K]\n    : WithAnimatedValue<Props[K]>,\n} & PassThroughProps;\n\nexport type AnimatedBaseProps<Props: {...}> = {\n  [K in keyof Props]: K extends NonAnimatedProps\n    ? Props[K]\n    : WithAnimatedValue<Props[K]>,\n};\n\nexport type AnimatedComponentType<Props: {...}, +Instance = mixed> = component(\n  ref?: React.RefSetter<Instance>,\n  ...AnimatedProps<Props>\n);\n\nexport default function createAnimatedComponent<\n  TInstance: React.ComponentType<any>,\n>(\n  Component: TInstance,\n): AnimatedComponentType<\n  $ReadOnly<React.ElementProps<TInstance>>,\n  React.ElementRef<TInstance>,\n> {\n  return unstable_createAnimatedComponentWithAllowlist(Component, null);\n}\n\nexport function unstable_createAnimatedComponentWithAllowlist<\n  TProps: {...},\n  TInstance: React.ComponentType<TProps>,\n>(\n  Component: TInstance,\n  allowlist: ?AnimatedPropsAllowlist,\n): AnimatedComponentType<TProps, React.ElementRef<TInstance>> {\n  const useAnimatedProps = createAnimatedPropsHook(allowlist);\n\n  const AnimatedComponent: AnimatedComponentType<\n    TProps,\n    React.ElementRef<TInstance>,\n  > = ({\n    ref: forwardedRef,\n    ...props\n  }: {\n    ref?: React.RefSetter<React.ElementRef<TInstance>>,\n    ...AnimatedProps<TProps>,\n  }) => {\n    const [reducedProps, callbackRef] = useAnimatedProps<\n      TProps,\n      React.ElementRef<TInstance>,\n    >(props);\n    const ref = useMergeRefs<React.ElementRef<TInstance>>(\n      callbackRef,\n      forwardedRef,\n    );\n\n    // Some components require explicit passthrough values for animation\n    // to work properly. For example, if an animated component is\n    // transformed and Pressable, onPress will not work after transform\n    // without these passthrough values.\n    // $FlowFixMe[prop-missing]\n    const {passthroughAnimatedPropExplicitValues, style} = reducedProps;\n    const passthroughStyle = passthroughAnimatedPropExplicitValues?.style;\n    const mergedStyle = useMemo(\n      () => composeStyles(style, passthroughStyle),\n      [passthroughStyle, style],\n    );\n\n    // NOTE: It is important that `passthroughAnimatedPropExplicitValues` is\n    // spread after `reducedProps` but before `style`.\n    return (\n      <Component\n        {...reducedProps}\n        {...passthroughAnimatedPropExplicitValues}\n        style={mergedStyle}\n        ref={ref}\n      />\n    );\n  };\n\n  AnimatedComponent.displayName = `Animated(${\n    Component.displayName || 'Anonymous'\n  })`;\n\n  return AnimatedComponent;\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {AnimatedPropsAllowlist} from '../../../Libraries/Animated/nodes/AnimatedProps';\nimport type {EventSubscription} from '../../../Libraries/EventEmitter/NativeEventEmitter';\n\nimport AnimatedNode from '../../../Libraries/Animated/nodes/AnimatedNode';\nimport AnimatedProps from '../../../Libraries/Animated/nodes/AnimatedProps';\nimport AnimatedValue from '../../../Libraries/Animated/nodes/AnimatedValue';\nimport {isPublicInstance as isFabricPublicInstance} from '../../../Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils';\nimport useRefEffect from '../../../Libraries/Utilities/useRefEffect';\nimport * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlags';\nimport {createAnimatedPropsMemoHook} from './createAnimatedPropsMemoHook';\nimport NativeAnimatedHelper from './NativeAnimatedHelper';\nimport {\n  useCallback,\n  useEffect,\n  useInsertionEffect,\n  useReducer,\n  useRef,\n} from 'react';\n\ntype ReducedProps<TProps> = {\n  ...TProps,\n  collapsable: boolean,\n  ...\n};\ntype CallbackRef<T> = T => mixed;\n\nexport type AnimatedPropsHook = <TProps: {...}, TInstance>(\n  props: TProps,\n) => [ReducedProps<TProps>, CallbackRef<TInstance | null>];\n\ntype UpdateCallback = () => void;\n\ntype AnimatedValueListeners = Array<{\n  propValue: AnimatedValue,\n  listenerId: string,\n}>;\n\nexport default function createAnimatedPropsHook(\n  allowlist: ?AnimatedPropsAllowlist,\n): AnimatedPropsHook {\n  const useAnimatedPropsMemo = createAnimatedPropsMemoHook(allowlist);\n\n  const useNativePropsInFabric =\n    ReactNativeFeatureFlags.shouldUseSetNativePropsInFabric();\n\n  return function useAnimatedProps<TProps: {...}, TInstance>(\n    props: TProps,\n  ): [ReducedProps<TProps>, CallbackRef<TInstance | null>] {\n    const [, scheduleUpdate] = useReducer<number, void>(count => count + 1, 0);\n    const onUpdateRef = useRef<UpdateCallback | null>(null);\n    const timerRef = useRef<TimeoutID | null>(null);\n\n    const node = useAnimatedPropsMemo(\n      () => new AnimatedProps(props, () => onUpdateRef.current?.(), allowlist),\n      props,\n    );\n\n    useEffect(() => {\n      // Animated queue flush is handled deterministically in setImmediate for the following feature flags:\n      // animatedShouldSignalBatch, cxxNativeAnimatedEnabled\n      if (!NativeAnimatedHelper.shouldSignalBatch) {\n        // If multiple components call `flushQueue`, the first one will flush the\n        // queue and subsequent ones will do nothing.\n        NativeAnimatedHelper.API.flushQueue();\n      }\n      let drivenAnimationEndedListener: ?EventSubscription = null;\n      if (node.__isNative) {\n        drivenAnimationEndedListener =\n          NativeAnimatedHelper.nativeEventEmitter.addListener(\n            'onUserDrivenAnimationEnded',\n            data => {\n              node.update();\n            },\n          );\n      }\n\n      return () => {\n        drivenAnimationEndedListener?.remove();\n      };\n    });\n\n    // NOTE: This feature flag must be evaluated inside the hook because this\n    // module factory can be evaluated much sooner, before overrides are set.\n    const useAnimatedPropsLifecycle =\n      ReactNativeFeatureFlags.scheduleAnimatedCleanupInMicrotask()\n        ? useAnimatedPropsLifecycleWithCleanupInMicrotask\n        : useAnimatedPropsLifecycleWithPrevNodeRef;\n\n    useAnimatedPropsLifecycle(node);\n\n    // TODO: This \"effect\" does three things:\n    //\n    //   1) Call `setNativeView`.\n    //   2) Update `onUpdateRef`.\n    //   3) Update listeners for `AnimatedEvent` props.\n    //\n    // Ideally, each of these would be separate \"effects\" so that they are not\n    // unnecessarily re-run when irrelevant dependencies change. For example, we\n    // should be able to hoist all `AnimatedEvent` props and only do #3 if either\n    // the `AnimatedEvent` props change or `instance` changes.\n    //\n    // But there is no way to transparently compose three separate callback refs,\n    // so we just combine them all into one for now.\n    const refEffect = useCallback(\n      (instance: TInstance) => {\n        // NOTE: This may be called more often than necessary (e.g. when `props`\n        // changes), but `setNativeView` already optimizes for that.\n        // $FlowFixMe[incompatible-call]\n        node.setNativeView(instance);\n\n        // NOTE: When using the JS animation driver, this callback is called on\n        // every animation frame. When using the native driver, this callback is\n        // called when the animation completes.\n        onUpdateRef.current = () => {\n          if (process.env.NODE_ENV === 'test') {\n            // Check 1: this is a test.\n            // call `scheduleUpdate` to bypass use of setNativeProps.\n            return scheduleUpdate();\n          }\n\n          const isFabricNode = isFabricInstance(instance);\n          if (node.__isNative) {\n            // Check 2: this is an animation driven by native.\n            // In native driven animations, this callback is only called once the animation completes.\n            if (\n              isFabricNode &&\n              !(\n                ReactNativeFeatureFlags.cxxNativeAnimatedEnabled() &&\n                ReactNativeFeatureFlags.cxxNativeAnimatedRemoveJsSync()\n              )\n            ) {\n              // Call `scheduleUpdate` to synchronise Fiber and Shadow tree.\n              // Must not be called in Paper.\n              scheduleUpdate();\n            }\n            return;\n          }\n\n          if (\n            typeof instance !== 'object' ||\n            typeof instance?.setNativeProps !== 'function'\n          ) {\n            // Check 3: the instance does not support setNativeProps. Call `scheduleUpdate`.\n            return scheduleUpdate();\n          }\n\n          if (!isFabricNode) {\n            // Check 4: this is a paper instance, call setNativeProps.\n            // $FlowIgnore[not-a-function] - Assume it's still a function.\n            // $FlowFixMe[incompatible-use]\n            return instance.setNativeProps(node.__getAnimatedValue());\n          }\n\n          if (!useNativePropsInFabric) {\n            // Check 5: setNativeProps are disabled.\n            return scheduleUpdate();\n          }\n\n          // This is a Fabric instance and setNativeProps is supported.\n\n          // $FlowIgnore[not-a-function] - Assume it's still a function.\n          // $FlowFixMe[incompatible-use]\n          instance.setNativeProps(node.__getAnimatedValue());\n\n          // Keeping state of Fiber tree and Shadow tree in sync.\n          //\n          // This is done by calling `scheduleUpdate` which will trigger a commit.\n          // However, React commit is not fast enough to drive animations.\n          // This is where setNativeProps comes in handy but the state between\n          // Fiber tree and Shadow tree needs to be kept in sync.\n          // The goal is to call `scheduleUpdate` as little as possible to maintain\n          // performance but frequently enough to keep state in sync.\n          // Debounce is set to 48ms, which is 3 * the duration of a frame.\n          // 3 frames was the highest value where flickering state was not observed.\n          if (timerRef.current != null) {\n            clearTimeout(timerRef.current);\n          }\n          timerRef.current = setTimeout(() => {\n            timerRef.current = null;\n            scheduleUpdate();\n          }, 48);\n        };\n\n        const target = getEventTarget(instance);\n        const animatedValueListeners: AnimatedValueListeners = [];\n        const eventTuples = node.__getNativeAnimatedEventTuples();\n\n        for (const [propName, propValue] of eventTuples) {\n          propValue.__attach(target, propName);\n          // $FlowFixMe[incompatible-call] - the `addListenersToPropsValue` drills down the propValue.\n          addListenersToPropsValue(propValue, animatedValueListeners);\n        }\n\n        return () => {\n          onUpdateRef.current = null;\n\n          for (const [propName, propValue] of eventTuples) {\n            propValue.__detach(target, propName);\n          }\n\n          for (const {propValue, listenerId} of animatedValueListeners) {\n            propValue.removeListener(listenerId);\n          }\n        };\n      },\n      [node],\n    );\n    const callbackRef = useRefEffect<TInstance>(refEffect);\n\n    return [reduceAnimatedProps<TProps>(node, props), callbackRef];\n  };\n}\n\nfunction reduceAnimatedProps<TProps>(\n  node: AnimatedProps,\n  props: TProps,\n): ReducedProps<TProps> {\n  // Force `collapsable` to be false so that the native view is not flattened.\n  // Flattened views cannot be accurately referenced by the native driver.\n  return {\n    ...node.__getValueWithStaticProps(props),\n    collapsable: false,\n  };\n}\n\nfunction addListenersToPropsValue(\n  propValue: AnimatedValue,\n  accumulator: AnimatedValueListeners,\n) {\n  // propValue can be a scalar value, an array or an object.\n  if (propValue instanceof AnimatedValue) {\n    const listenerId = propValue.addListener(() => {});\n    accumulator.push({propValue, listenerId});\n  } else if (Array.isArray(propValue)) {\n    // An array can be an array of scalar values, arrays of arrays, or arrays of objects\n    for (const prop of propValue) {\n      addListenersToPropsValue(prop, accumulator);\n    }\n  } else if (propValue instanceof Object) {\n    addAnimatedValuesListenersToProps(propValue, accumulator);\n  }\n}\n\nfunction addAnimatedValuesListenersToProps(\n  props: AnimatedNode,\n  accumulator: AnimatedValueListeners,\n) {\n  for (const propName in props) {\n    // $FlowFixMe[prop-missing] - This is an object contained in a prop, but we don't know the exact type.\n    const propValue = props[propName];\n    addListenersToPropsValue(propValue, accumulator);\n  }\n}\n\n/**\n * Manages the lifecycle of the supplied `AnimatedProps` by invoking `__attach`\n * and `__detach`. However, this is more complicated because `AnimatedProps`\n * uses reference counting to determine when to recursively detach its children\n * nodes. So in order to optimize this, we avoid detaching until the next attach\n * unless we are unmounting.\n */\nfunction useAnimatedPropsLifecycleWithPrevNodeRef(node: AnimatedProps): void {\n  const prevNodeRef = useRef<?AnimatedProps>(null);\n  const isUnmountingRef = useRef<boolean>(false);\n\n  useInsertionEffect(() => {\n    isUnmountingRef.current = false;\n    return () => {\n      isUnmountingRef.current = true;\n    };\n  }, []);\n\n  useInsertionEffect(() => {\n    node.__attach();\n    if (prevNodeRef.current != null) {\n      const prevNode = prevNodeRef.current;\n      // TODO: Stop restoring default values (unless `reset` is called).\n      prevNode.__restoreDefaultValues();\n      prevNode.__detach();\n      prevNodeRef.current = null;\n    }\n    return () => {\n      if (isUnmountingRef.current) {\n        // NOTE: Do not restore default values on unmount, see D18197735.\n        node.__detach();\n      } else {\n        prevNodeRef.current = node;\n      }\n    };\n  }, [node]);\n}\n\n/**\n * Manages the lifecycle of the supplied `AnimatedProps` by invoking `__attach`\n * and `__detach`. However, `__detach` occurs in a microtask for these reasons:\n *\n *   1. Optimizes detaching and attaching `AnimatedNode` instances that rely on\n *      reference counting to cleanup state, by causing detach to be scheduled\n *      after any subsequent attach.\n *   2. Avoids calling `detach` during the insertion effect phase (which\n *      occurs during the commit phase), which may invoke completion callbacks.\n *\n * We should avoid invoking completion callbacks during the commit phase because\n * callbacks may update state, which is unsupported and will force synchronous\n * updates.\n */\nfunction useAnimatedPropsLifecycleWithCleanupInMicrotask(\n  node: AnimatedProps,\n): void {\n  const isMounted = useRef<boolean>(false);\n\n  useInsertionEffect(() => {\n    isMounted.current = true;\n    node.__attach();\n\n    return () => {\n      isMounted.current = false;\n      queueMicrotask(() => {\n        // NOTE: Do not restore default values on unmount, see D18197735.\n        if (isMounted.current) {\n          // TODO: Stop restoring default values (unless `reset` is called).\n          node.__restoreDefaultValues();\n        }\n        node.__detach();\n      });\n    };\n  }, [node]);\n}\n\nfunction getEventTarget<TInstance>(instance: TInstance): TInstance {\n  return typeof instance === 'object' &&\n    typeof instance?.getScrollableNode === 'function'\n    ? // $FlowFixMe[incompatible-use] - Legacy instance assumptions.\n      instance.getScrollableNode()\n    : instance;\n}\n\n// $FlowFixMe[unclear-type] - Legacy instance assumptions.\nfunction isFabricInstance(instance: any): boolean {\n  return (\n    isFabricPublicInstance(instance) ||\n    // Some components have a setNativeProps function but aren't a host component\n    // such as lists like FlatList and SectionList. These should also use\n    // forceUpdate in Fabric since setNativeProps doesn't exist on the underlying\n    // host component. This crazy hack is essentially special casing those lists and\n    // ScrollView itself to use forceUpdate in Fabric.\n    // If these components end up using forwardRef then these hacks can go away\n    // as instance would actually be the underlying host component and the above check\n    // would be sufficient.\n    isFabricPublicInstance(instance?.getNativeScrollRef?.()) ||\n    isFabricPublicInstance(\n      instance?.getScrollResponder?.()?.getNativeScrollRef?.(),\n    )\n  );\n}\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 * @flow strict\n * @format\n */\n\n/**\n * IMPORTANT!!\n *\n * This module cannot import `ReactFabric` (directly or indirectly)\n * because it can be used by apps only using the legacy renderer.\n * In that case `nativeFabricUIManager` isn't defined and `ReactFabric` throws.\n */\n\nexport function isPublicInstance(maybeInstance: mixed): boolean {\n  return (\n    maybeInstance != null &&\n    // TODO: implement a better check when the instance is defined in the React Native repository.\n    (maybeInstance.__nativeTag != null ||\n      // TODO: remove this check when syncing the new version of the renderer from React to React Native.\n      isLegacyFabricInstance(maybeInstance))\n  );\n}\n\nfunction isLegacyFabricInstance(maybeInstance: mixed): boolean {\n  /* eslint-disable dot-notation */\n  return (\n    maybeInstance != null &&\n    // $FlowExpectedError[incompatible-use]\n    maybeInstance['_internalInstanceHandle'] != null &&\n    maybeInstance['_internalInstanceHandle'].stateNode != null &&\n    maybeInstance['_internalInstanceHandle'].stateNode.canonical != null\n  );\n}\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 * @flow strict\n * @format\n */\n\nimport {useCallback, useRef} from 'react';\n\ntype CallbackRef<T> = T => mixed;\n\n/**\n * Constructs a callback ref that provides similar semantics as `useEffect`. The\n * supplied `effect` callback will be called with non-null component instances.\n * The `effect` callback can also optionally return a cleanup function.\n *\n * When a component is updated or unmounted, the cleanup function is called. The\n * `effect` callback will then be called again, if applicable.\n *\n * When a new `effect` callback is supplied, the previously returned cleanup\n * function will be called before the new `effect` callback is called with the\n * same instance.\n *\n * WARNING: The `effect` callback should be stable (e.g. using `useCallback`).\n */\nexport default function useRefEffect<TInstance>(\n  effect: TInstance => (() => void) | void,\n): CallbackRef<TInstance | null> {\n  const cleanupRef = useRef<(() => void) | void>(undefined);\n  return useCallback(\n    (instance: null | TInstance) => {\n      if (cleanupRef.current) {\n        cleanupRef.current();\n        cleanupRef.current = undefined;\n      }\n      if (instance != null) {\n        cleanupRef.current = effect(instance);\n      }\n    },\n    [effect],\n  );\n}\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 * @flow strict-local\n * @format\n */\n\nimport type AnimatedProps from '../../../Libraries/Animated/nodes/AnimatedProps';\nimport type {AnimatedPropsAllowlist} from '../../../Libraries/Animated/nodes/AnimatedProps';\nimport type {AnimatedStyleAllowlist} from '../../../Libraries/Animated/nodes/AnimatedStyle';\n\nimport {AnimatedEvent} from '../../../Libraries/Animated/AnimatedEvent';\nimport AnimatedNode from '../../../Libraries/Animated/nodes/AnimatedNode';\nimport {isPlainObject} from '../../../Libraries/Animated/nodes/AnimatedObject';\nimport flattenStyle from '../../../Libraries/StyleSheet/flattenStyle';\nimport * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlags';\nimport nullthrows from 'nullthrows';\nimport {useInsertionEffect, useMemo, useRef, useState} from 'react';\n\ntype CompositeKey = {\n  style?: {[string]: CompositeKeyComponent},\n  [string]:\n    | CompositeKeyComponent\n    | AnimatedEvent\n    | $ReadOnlyArray<mixed>\n    | $ReadOnly<{[string]: mixed}>,\n};\n\ntype CompositeKeyComponent =\n  | AnimatedNode\n  | $ReadOnlyArray<CompositeKeyComponent | null>\n  | $ReadOnly<{[string]: CompositeKeyComponent}>;\n\ntype $ReadOnlyCompositeKey = $ReadOnly<{\n  style?: $ReadOnly<{[string]: CompositeKeyComponent}>,\n  [string]:\n    | $ReadOnlyCompositeKeyComponent\n    | AnimatedEvent\n    | $ReadOnlyArray<mixed>\n    | $ReadOnly<{[string]: mixed}>,\n}>;\n\ntype $ReadOnlyCompositeKeyComponent =\n  | AnimatedNode\n  | $ReadOnlyArray<$ReadOnlyCompositeKeyComponent | null>\n  | $ReadOnly<{[string]: $ReadOnlyCompositeKeyComponent}>;\n\ntype AnimatedPropsMemoHook = (\n  () => AnimatedProps,\n  props: $ReadOnly<{[string]: mixed}>,\n) => AnimatedProps;\n\n/**\n * Creates a hook that returns an `AnimatedProps` object that is memoized based\n * on the subset of `props` that are instances of `AnimatedNode` or\n * `AnimatedEvent`.\n */\nexport function createAnimatedPropsMemoHook(\n  allowlist: ?AnimatedPropsAllowlist,\n): AnimatedPropsMemoHook {\n  return function useAnimatedPropsMemo(\n    create: () => AnimatedProps,\n    props: $ReadOnly<{[string]: mixed}>,\n  ): AnimatedProps {\n    // NOTE: This feature flag must be evaluated inside the hook because this\n    // module factory can be evaluated much sooner, before overrides are set.\n    const useAnimatedPropsImpl =\n      ReactNativeFeatureFlags.avoidStateUpdateInAnimatedPropsMemo()\n        ? useAnimatedPropsMemo_ref\n        : useAnimatedPropsMemo_state;\n    return useAnimatedPropsImpl(create, props);\n  };\n\n  function useAnimatedPropsMemo_ref(\n    create: () => AnimatedProps,\n    props: $ReadOnly<{[string]: mixed}>,\n  ): AnimatedProps {\n    const compositeKey = useMemo(\n      () => createCompositeKeyForProps(props, allowlist),\n      [props],\n    );\n\n    const prevRef = useRef<?$ReadOnly<{\n      compositeKey: typeof compositeKey,\n      node: AnimatedProps,\n    }>>();\n    const prev = prevRef.current;\n\n    const next =\n      prev != null && areCompositeKeysEqual(prev.compositeKey, compositeKey)\n        ? prev\n        : {\n            compositeKey,\n            node: create(),\n          };\n\n    useInsertionEffect(() => {\n      prevRef.current = next;\n    }, [next]);\n\n    return next.node;\n  }\n\n  function useAnimatedPropsMemo_state(\n    create: () => AnimatedProps,\n    props: $ReadOnly<{[string]: mixed}>,\n  ): AnimatedProps {\n    const compositeKey = useMemo(\n      () => createCompositeKeyForProps(props, allowlist),\n      [props],\n    );\n\n    const [state, setState] = useState<{\n      allowlist: ?AnimatedPropsAllowlist,\n      compositeKey: $ReadOnlyCompositeKey | null,\n      value: AnimatedProps,\n    }>(() => ({\n      allowlist,\n      compositeKey,\n      value: create(),\n    }));\n\n    if (\n      state.allowlist !== allowlist ||\n      !areCompositeKeysEqual(state.compositeKey, compositeKey)\n    ) {\n      setState({\n        allowlist,\n        compositeKey,\n        value: create(),\n      });\n    }\n    return state.value;\n  }\n}\n\n/**\n * Creates a new composite key for a `props` object that can be used to detect\n * whether a new `AnimatedProps` instance must be created.\n *\n * - With an allowlist, those props are searched for `AnimatedNode` instances.\n * - Without an allowlist, `style` is searched for `AnimatedNode` instances,\n *   but all other objects and arrays are included (not searched). We do not\n *   search objects and arrays without an allowlist in case they are very large\n *   data structures. We safely traverse `style` becuase it is bounded.\n *\n * Any `AnimatedEvent` instances at the first depth are always included.\n *\n * If `props` contains no `AnimatedNode` or `AnimatedEvent` instances, this\n * returns null.\n */\nexport function createCompositeKeyForProps(\n  props: $ReadOnly<{[string]: mixed}>,\n  allowlist: ?AnimatedPropsAllowlist,\n): $ReadOnlyCompositeKey | null {\n  let compositeKey: CompositeKey | null = null;\n\n  const keys = Object.keys(props);\n  for (let ii = 0, length = keys.length; ii < length; ii++) {\n    const key = keys[ii];\n    const value = props[key];\n\n    if (allowlist == null || hasOwn(allowlist, key)) {\n      let compositeKeyComponent;\n      if (key === 'style') {\n        // $FlowFixMe[incompatible-call] - `style` is a valid argument.\n        // $FlowFixMe[incompatible-type] - `flattenStyle` returns an object.\n        const flatStyle: ?{[string]: mixed} = flattenStyle(value);\n        if (flatStyle != null) {\n          compositeKeyComponent = createCompositeKeyForObject(\n            flatStyle,\n            allowlist?.style,\n          );\n        }\n      } else if (\n        value instanceof AnimatedNode ||\n        value instanceof AnimatedEvent\n      ) {\n        compositeKeyComponent = value;\n      } else if (Array.isArray(value)) {\n        compositeKeyComponent =\n          allowlist == null ? value : createCompositeKeyForArray(value);\n      } else if (isPlainObject(value)) {\n        compositeKeyComponent =\n          allowlist == null ? value : createCompositeKeyForObject(value);\n      }\n      if (compositeKeyComponent != null) {\n        if (compositeKey == null) {\n          compositeKey = {} as CompositeKey;\n        }\n        compositeKey[key] = compositeKeyComponent;\n      }\n    }\n  }\n\n  return compositeKey;\n}\n\n/**\n * Creates a new composite key for an array that retains all values that are or\n * contain `AnimatedNode` instances, and `null` for the rest.\n *\n * If `array` contains no `AnimatedNode` instances, this returns null.\n */\nfunction createCompositeKeyForArray(\n  array: $ReadOnlyArray<mixed>,\n): $ReadOnlyArray<$ReadOnlyCompositeKeyComponent | null> | null {\n  let compositeKey: Array<$ReadOnlyCompositeKeyComponent | null> | null = null;\n\n  for (let ii = 0, length = array.length; ii < length; ii++) {\n    const value = array[ii];\n\n    let compositeKeyComponent;\n    if (value instanceof AnimatedNode) {\n      compositeKeyComponent = value;\n    } else if (Array.isArray(value)) {\n      compositeKeyComponent = createCompositeKeyForArray(value);\n    } else if (isPlainObject(value)) {\n      compositeKeyComponent = createCompositeKeyForObject(value);\n    }\n    if (compositeKeyComponent != null) {\n      if (compositeKey == null) {\n        compositeKey = new Array<$ReadOnlyCompositeKeyComponent | null>(\n          array.length,\n        ).fill(null);\n      }\n      compositeKey[ii] = compositeKeyComponent;\n    }\n  }\n\n  return compositeKey;\n}\n\n/**\n * Creates a new composite key for an object that retains only properties that\n * are or contain `AnimatedNode` instances.\n *\n * When used to create composite keys for `style` props:\n *\n * - With an allowlist, those properties are searched.\n * - Without an allowlist, every property is searched.\n *\n * If `object` contains no `AnimatedNode` instances, this returns null.\n */\nfunction createCompositeKeyForObject(\n  object: $ReadOnly<{[string]: mixed}>,\n  allowlist?: ?AnimatedStyleAllowlist,\n): $ReadOnly<{[string]: $ReadOnlyCompositeKeyComponent}> | null {\n  let compositeKey: {[string]: $ReadOnlyCompositeKeyComponent} | null = null;\n\n  const keys = Object.keys(object);\n  for (let ii = 0, length = keys.length; ii < length; ii++) {\n    const key = keys[ii];\n\n    if (allowlist == null || hasOwn(allowlist, key)) {\n      const value = object[key];\n\n      let compositeKeyComponent;\n      if (value instanceof AnimatedNode) {\n        compositeKeyComponent = value;\n      } else if (Array.isArray(value)) {\n        compositeKeyComponent = createCompositeKeyForArray(value);\n      } else if (isPlainObject(value)) {\n        compositeKeyComponent = createCompositeKeyForObject(value);\n      }\n      if (compositeKeyComponent != null) {\n        if (compositeKey == null) {\n          compositeKey = {} as {[string]: $ReadOnlyCompositeKeyComponent};\n        }\n        compositeKey[key] = compositeKeyComponent;\n      }\n    }\n  }\n\n  return compositeKey;\n}\n\nexport function areCompositeKeysEqual(\n  maybePrev: $ReadOnlyCompositeKey | null,\n  maybeNext: $ReadOnlyCompositeKey | null,\n  allowlist: ?AnimatedPropsAllowlist,\n): boolean {\n  if (maybePrev === maybeNext) {\n    return true;\n  }\n  if (maybePrev === null || maybeNext === null) {\n    return false;\n  }\n  // Help Flow retain the type refinements of these.\n  const prev = maybePrev;\n  const next = maybeNext;\n\n  const keys = Object.keys(prev);\n  const length = keys.length;\n  if (length !== Object.keys(next).length) {\n    return false;\n  }\n  for (let ii = 0; ii < length; ii++) {\n    const key = keys[ii];\n    if (!hasOwn(next, key)) {\n      return false;\n    }\n    const prevComponent = prev[key];\n    const nextComponent = next[key];\n\n    if (key === 'style') {\n      // We know style components are objects with non-mixed values.\n      if (\n        !areCompositeKeyComponentsEqual(\n          // $FlowIgnore[incompatible-cast]\n          prevComponent as $ReadOnlyCompositeKeyComponent,\n          // $FlowIgnore[incompatible-cast]\n          nextComponent as $ReadOnlyCompositeKeyComponent,\n        )\n      ) {\n        return false;\n      }\n    } else if (\n      prevComponent instanceof AnimatedNode ||\n      prevComponent instanceof AnimatedEvent\n    ) {\n      if (prevComponent !== nextComponent) {\n        return false;\n      }\n    } else {\n      // When `allowlist` is null, the components must be the same. Otherwise,\n      // we created the components using deep traversal, so deep compare them.\n      if (allowlist == null) {\n        if (prevComponent !== nextComponent) {\n          return false;\n        }\n      } else {\n        if (\n          !areCompositeKeyComponentsEqual(\n            // $FlowIgnore[incompatible-cast]\n            prevComponent as $ReadOnlyCompositeKeyComponent,\n            // $FlowIgnore[incompatible-cast]\n            nextComponent as $ReadOnlyCompositeKeyComponent,\n          )\n        ) {\n          return false;\n        }\n      }\n    }\n  }\n  return true;\n}\n\nfunction areCompositeKeyComponentsEqual(\n  prev: $ReadOnlyCompositeKeyComponent | null,\n  next: $ReadOnlyCompositeKeyComponent | null,\n): boolean {\n  if (prev === next) {\n    return true;\n  }\n  if (prev instanceof AnimatedNode) {\n    return prev === next;\n  }\n  if (Array.isArray(prev)) {\n    if (!Array.isArray(next)) {\n      return false;\n    }\n    const length = prev.length;\n    if (length !== next.length) {\n      return false;\n    }\n    for (let ii = 0; ii < length; ii++) {\n      if (!areCompositeKeyComponentsEqual(prev[ii], next[ii])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  if (isPlainObject(prev)) {\n    if (!isPlainObject(next)) {\n      return false;\n    }\n    const keys = Object.keys(prev);\n    const length = keys.length;\n    if (length !== Object.keys(next).length) {\n      return false;\n    }\n    for (let ii = 0; ii < length; ii++) {\n      const key = keys[ii];\n      if (\n        !hasOwn(nullthrows(next), key) ||\n        !areCompositeKeyComponentsEqual(prev[key], next[key])\n      ) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return false;\n}\n\n// Supported versions of JSC do not implement the newer Object.hasOwn. Remove\n// this shim when they do.\n// $FlowIgnore[method-unbinding]\nconst _hasOwnProp = Object.prototype.hasOwnProperty;\nconst hasOwn: (obj: $ReadOnly<{...}>, prop: string) => boolean =\n  // $FlowIgnore[method-unbinding]\n  Object.hasOwn ?? ((obj, prop) => _hasOwnProp.call(obj, prop));\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 * @flow strict\n * @format\n */\n\nimport useRefEffect from './useRefEffect';\nimport * as React from 'react';\nimport {useCallback} from 'react';\n\n/**\n * Constructs a new ref that forwards new values to each of the given refs. The\n * given refs will always be invoked in the order that they are supplied.\n *\n * WARNING: A known problem of merging refs using this approach is that if any\n * of the given refs change, the returned callback ref will also be changed. If\n * the returned callback ref is supplied as a `ref` to a React element, this may\n * lead to problems with the given refs being invoked more times than desired.\n */\nexport default function useMergeRefs<Instance>(\n  ...refs: $ReadOnlyArray<?React.RefSetter<Instance>>\n): React.RefSetter<Instance> {\n  const refEffect = useCallback(\n    (current: Instance) => {\n      const cleanups: $ReadOnlyArray<void | (() => void)> = refs.map(ref => {\n        if (ref == null) {\n          return undefined;\n        } else {\n          if (typeof ref === 'function') {\n            // $FlowIssue[incompatible-type] - Flow does not understand ref cleanup.\n            const cleanup: void | (() => void) = ref(current);\n            return typeof cleanup === 'function'\n              ? cleanup\n              : () => {\n                  ref(null);\n                };\n          } else {\n            ref.current = current;\n            return () => {\n              ref.current = null;\n            };\n          }\n        }\n      });\n\n      return () => {\n        for (const cleanup of cleanups) {\n          cleanup?.();\n        }\n      };\n    },\n    [...refs], // eslint-disable-line react-hooks/exhaustive-deps\n  );\n  return useRefEffect(refEffect);\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type AnimatedNode from './AnimatedNode';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport default class AnimatedAddition extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _b: AnimatedNode;\n\n  constructor(\n    a: AnimatedNode | number,\n    b: AnimatedNode | number,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n    this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this._a.__makeNative(platformConfig);\n    this._b.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n\n  __getValue(): number {\n    return this._a.__getValue() + this._b.__getValue();\n  }\n\n  interpolate<OutputT: number | string>(\n    config: InterpolationConfigType<OutputT>,\n  ): AnimatedInterpolation<OutputT> {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    this._b.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    this._b.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'addition',\n      input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type AnimatedNode from './AnimatedNode';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport default class AnimatedDiffClamp extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _min: number;\n  _max: number;\n  _value: number;\n  _lastValue: number;\n\n  constructor(\n    a: AnimatedNode,\n    min: number,\n    max: number,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n\n    this._a = a;\n    this._min = min;\n    this._max = max;\n    this._value = this._lastValue = this._a.__getValue();\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this._a.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n\n  interpolate<OutputT: number | string>(\n    config: InterpolationConfigType<OutputT>,\n  ): AnimatedInterpolation<OutputT> {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __getValue(): number {\n    const value = this._a.__getValue();\n    const diff = value - this._lastValue;\n    this._lastValue = value;\n    this._value = Math.min(Math.max(this._value + diff, this._min), this._max);\n    return this._value;\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'diffclamp',\n      input: this._a.__getNativeTag(),\n      min: this._min,\n      max: this._max,\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedNode from './AnimatedNode';\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport default class AnimatedDivision extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _b: AnimatedNode;\n  _warnedAboutDivideByZero: boolean = false;\n\n  constructor(\n    a: AnimatedNode | number,\n    b: AnimatedNode | number,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    if (b === 0 || (b instanceof AnimatedNode && b.__getValue() === 0)) {\n      console.error('Detected potential division by zero in AnimatedDivision');\n    }\n    this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n    this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this._a.__makeNative(platformConfig);\n    this._b.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n\n  __getValue(): number {\n    const a = this._a.__getValue();\n    const b = this._b.__getValue();\n    if (b === 0) {\n      // Prevent spamming the console/LogBox\n      if (!this._warnedAboutDivideByZero) {\n        console.error('Detected division by zero in AnimatedDivision');\n        this._warnedAboutDivideByZero = true;\n      }\n      // Passing infinity/NaN to Fabric will cause a native crash\n      return 0;\n    }\n    this._warnedAboutDivideByZero = false;\n    return a / b;\n  }\n\n  interpolate<OutputT: number | string>(\n    config: InterpolationConfigType<OutputT>,\n  ): AnimatedInterpolation<OutputT> {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    this._b.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    this._b.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'division',\n      input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type AnimatedNode from './AnimatedNode';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport default class AnimatedModulo extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _modulus: number;\n\n  constructor(a: AnimatedNode, modulus: number, config?: ?AnimatedNodeConfig) {\n    super(config);\n    this._a = a;\n    this._modulus = modulus;\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this._a.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n\n  __getValue(): number {\n    return (\n      ((this._a.__getValue() % this._modulus) + this._modulus) % this._modulus\n    );\n  }\n\n  interpolate<OutputT: number | string>(\n    config: InterpolationConfigType<OutputT>,\n  ): AnimatedInterpolation<OutputT> {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'modulus',\n      input: this._a.__getNativeTag(),\n      modulus: this._modulus,\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type AnimatedNode from './AnimatedNode';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport default class AnimatedMultiplication extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _b: AnimatedNode;\n\n  constructor(\n    a: AnimatedNode | number,\n    b: AnimatedNode | number,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n    this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this._a.__makeNative(platformConfig);\n    this._b.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n\n  __getValue(): number {\n    return this._a.__getValue() * this._b.__getValue();\n  }\n\n  interpolate<OutputT: number | string>(\n    config: InterpolationConfigType<OutputT>,\n  ): AnimatedInterpolation<OutputT> {\n    return new AnimatedInterpolation(this, config);\n  }\n  __attach(): void {\n    this._a.__addChild(this);\n    this._b.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    this._b.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'multiplication',\n      input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type AnimatedNode from './AnimatedNode';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\n\nimport AnimatedInterpolation from './AnimatedInterpolation';\nimport AnimatedValue from './AnimatedValue';\nimport AnimatedWithChildren from './AnimatedWithChildren';\n\nexport default class AnimatedSubtraction extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _b: AnimatedNode;\n\n  constructor(\n    a: AnimatedNode | number,\n    b: AnimatedNode | number,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n    this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this._a.__makeNative(platformConfig);\n    this._b.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n  }\n\n  __getValue(): number {\n    return this._a.__getValue() - this._b.__getValue();\n  }\n\n  interpolate<OutputT: number | string>(\n    config: InterpolationConfigType<OutputT>,\n  ): AnimatedInterpolation<OutputT> {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    this._b.__addChild(this);\n    super.__attach();\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    this._b.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'subtraction',\n      input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {PlatformConfig} from '../AnimatedPlatformConfig';\nimport type {EndCallback} from '../animations/Animation';\nimport type {AnimatedNodeConfig} from './AnimatedNode';\nimport type AnimatedValue from './AnimatedValue';\n\nimport NativeAnimatedHelper from '../../../src/private/animated/NativeAnimatedHelper';\nimport AnimatedNode from './AnimatedNode';\n\nexport default class AnimatedTracking extends AnimatedNode {\n  _value: AnimatedValue;\n  _parent: AnimatedNode;\n  _callback: ?EndCallback;\n  _animationConfig: Object;\n  _animationClass: any;\n  _useNativeDriver: boolean;\n\n  constructor(\n    value: AnimatedValue,\n    parent: AnimatedNode,\n    animationClass: any,\n    animationConfig: Object,\n    callback?: ?EndCallback,\n    config?: ?AnimatedNodeConfig,\n  ) {\n    super(config);\n    this._value = value;\n    this._parent = parent;\n    this._animationClass = animationClass;\n    this._animationConfig = animationConfig;\n    this._useNativeDriver =\n      NativeAnimatedHelper.shouldUseNativeDriver(animationConfig);\n    this._callback = callback;\n    this.__attach();\n  }\n\n  __makeNative(platformConfig: ?PlatformConfig) {\n    this.__isNative = true;\n    this._parent.__makeNative(platformConfig);\n    super.__makeNative(platformConfig);\n    this._value.__makeNative(platformConfig);\n  }\n\n  __getValue(): Object {\n    return this._parent.__getValue();\n  }\n\n  __attach(): void {\n    this._parent.__addChild(this);\n    if (this._useNativeDriver) {\n      // when the tracking starts we need to convert this node to a \"native node\"\n      // so that the parent node will be made \"native\" too. This is necessary as\n      // if we don't do this `update` method will get called. At that point it\n      // may be too late as it would mean the JS driver has already started\n      // updating node values\n      let {platformConfig} = this._animationConfig;\n      this.__makeNative(platformConfig);\n    }\n    super.__attach();\n  }\n\n  __detach(): void {\n    this._parent.__removeChild(this);\n    super.__detach();\n  }\n\n  update(): void {\n    this._value.animate(\n      new this._animationClass({\n        ...this._animationConfig,\n        toValue: (this._animationConfig.toValue: any).__getValue(),\n      }),\n      this._callback,\n    );\n  }\n\n  __getNativeConfig(): any {\n    const animation = new this._animationClass({\n      ...this._animationConfig,\n      // remove toValue from the config as it's a ref to Animated.Value\n      toValue: undefined,\n    });\n    const animationConfig = animation.__getNativeAnimationConfig();\n    return {\n      type: 'tracking',\n      animationId: NativeAnimatedHelper.generateNewAnimationId(),\n      animationConfig,\n      toValue: this._parent.__getNativeTag(),\n      value: this._value.__getNativeTag(),\n      debugID: this.__getDebugID(),\n    };\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {Numeric as AnimatedNumeric} from './AnimatedImplementation';\nimport type {EndResult} from './animations/Animation';\nimport type {EndCallback} from './animations/Animation';\nimport type {DecayAnimationConfig} from './animations/DecayAnimation';\nimport type {SpringAnimationConfig} from './animations/SpringAnimation';\nimport type {TimingAnimationConfig} from './animations/TimingAnimation';\n\nimport {AnimatedEvent, attachNativeEventImpl} from './AnimatedEvent';\nimport AnimatedImplementation from './AnimatedImplementation';\nimport createAnimatedComponent from './createAnimatedComponent';\nimport AnimatedColor from './nodes/AnimatedColor';\nimport AnimatedInterpolation from './nodes/AnimatedInterpolation';\nimport AnimatedNode from './nodes/AnimatedNode';\nimport AnimatedValue from './nodes/AnimatedValue';\nimport AnimatedValueXY from './nodes/AnimatedValueXY';\n\n/**\n * Animations are a source of flakiness in snapshot testing. This mock replaces\n * animation functions from AnimatedImplementation with empty animations for\n * predictability in tests. When possible the animation will run immediately\n * to the final state.\n */\n\n// Prevent any callback invocation from recursively triggering another\n// callback, which may trigger another animation\nlet inAnimationCallback = false;\nfunction mockAnimationStart(\n  start: (callback?: ?EndCallback) => void,\n): (callback?: ?EndCallback) => void {\n  return callback => {\n    const guardedCallback =\n      callback == null\n        ? callback\n        : (...args: Array<EndResult>) => {\n            if (inAnimationCallback) {\n              console.warn(\n                'Ignoring recursive animation callback when running mock animations',\n              );\n              return;\n            }\n            inAnimationCallback = true;\n            try {\n              callback(...args);\n            } finally {\n              inAnimationCallback = false;\n            }\n          };\n    start(guardedCallback);\n  };\n}\n\nexport type CompositeAnimation = {\n  start: (callback?: ?EndCallback) => void,\n  stop: () => void,\n  reset: () => void,\n  _startNativeLoop: (iterations?: number) => void,\n  _isUsingNativeDriver: () => boolean,\n  ...\n};\n\nconst emptyAnimation = {\n  start: () => {},\n  stop: () => {},\n  reset: () => {},\n  _startNativeLoop: () => {},\n  _isUsingNativeDriver: () => {\n    return false;\n  },\n};\n\nconst mockCompositeAnimation = (\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation => ({\n  ...emptyAnimation,\n  start: mockAnimationStart((callback?: ?EndCallback): void => {\n    animations.forEach(animation => animation.start());\n    callback?.({finished: true});\n  }),\n});\n\nconst spring = function (\n  value: AnimatedValue | AnimatedValueXY | AnimatedColor,\n  config: SpringAnimationConfig,\n): CompositeAnimation {\n  const anyValue: any = value;\n  return {\n    ...emptyAnimation,\n    start: mockAnimationStart((callback?: ?EndCallback): void => {\n      anyValue.setValue(config.toValue);\n      callback?.({finished: true});\n    }),\n  };\n};\n\nconst timing = function (\n  value: AnimatedValue | AnimatedValueXY | AnimatedColor,\n  config: TimingAnimationConfig,\n): CompositeAnimation {\n  const anyValue: any = value;\n  return {\n    ...emptyAnimation,\n    start: mockAnimationStart((callback?: ?EndCallback): void => {\n      anyValue.setValue(config.toValue);\n      callback?.({finished: true});\n    }),\n  };\n};\n\nconst decay = function (\n  value: AnimatedValue | AnimatedValueXY | AnimatedColor,\n  config: DecayAnimationConfig,\n): CompositeAnimation {\n  return emptyAnimation;\n};\n\nconst sequence = function (\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n  return mockCompositeAnimation(animations);\n};\n\ntype ParallelConfig = {stopTogether?: boolean, ...};\nconst parallel = function (\n  animations: Array<CompositeAnimation>,\n  config?: ?ParallelConfig,\n): CompositeAnimation {\n  return mockCompositeAnimation(animations);\n};\n\nconst delay = function (time: number): CompositeAnimation {\n  return emptyAnimation;\n};\n\nconst stagger = function (\n  time: number,\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n  return mockCompositeAnimation(animations);\n};\n\ntype LoopAnimationConfig = {\n  iterations: number,\n  resetBeforeIteration?: boolean,\n  ...\n};\n\nconst loop = function (\n  animation: CompositeAnimation,\n  // $FlowFixMe[prop-missing]\n  {iterations = -1}: LoopAnimationConfig = {},\n): CompositeAnimation {\n  return emptyAnimation;\n};\n\nexport type {AnimatedNumeric as Numeric};\n\nexport default {\n  Value: AnimatedValue,\n  ValueXY: AnimatedValueXY,\n  Color: AnimatedColor,\n  Interpolation: AnimatedInterpolation,\n  Node: AnimatedNode,\n  decay,\n  timing,\n  spring,\n  add: AnimatedImplementation.add,\n  subtract: AnimatedImplementation.subtract,\n  divide: AnimatedImplementation.divide,\n  multiply: AnimatedImplementation.multiply,\n  modulo: AnimatedImplementation.modulo,\n  diffClamp: AnimatedImplementation.diffClamp,\n  delay,\n  sequence,\n  parallel,\n  stagger,\n  loop,\n  event: AnimatedImplementation.event,\n  createAnimatedComponent,\n  attachNativeEvent: attachNativeEventImpl,\n  forkEvent: AnimatedImplementation.forkEvent,\n  unforkEvent: AnimatedImplementation.unforkEvent,\n  Event: AnimatedEvent,\n} as typeof AnimatedImplementation;\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 * @flow strict-local\n * @format\n */\n\nimport type {AnimatedProps} from '../createAnimatedComponent';\n\nimport FlatList, {type FlatListProps} from '../../Lists/FlatList';\nimport createAnimatedComponent from '../createAnimatedComponent';\nimport * as React from 'react';\n\n// $FlowExpectedError[unclear-type]\nexport default (createAnimatedComponent(FlatList): component<ItemT = any>(\n  ref?: React.RefSetter<FlatList<ItemT>>,\n  ...props: AnimatedProps<FlatListProps<ItemT>>\n));\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 * @flow\n * @format\n */\n\nimport typeof ScrollViewNativeComponent from '../Components/ScrollView/ScrollViewNativeComponent';\nimport type {ViewStyleProp} from '../StyleSheet/StyleSheet';\nimport type {\n  ListRenderItem,\n  ListRenderItemInfo,\n  ViewabilityConfigCallbackPair,\n  ViewToken,\n  VirtualizedListProps,\n} from '@react-native/virtualized-lists';\n\nimport * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';\nimport {type ScrollResponderType} from '../Components/ScrollView/ScrollView';\nimport View from '../Components/View/View';\nimport VirtualizedLists from '@react-native/virtualized-lists';\nimport memoizeOne from 'memoize-one';\nimport * as React from 'react';\n\nconst StyleSheet = require('../StyleSheet/StyleSheet').default;\nconst deepDiffer = require('../Utilities/differ/deepDiffer').default;\nconst Platform = require('../Utilities/Platform').default;\nconst invariant = require('invariant');\n\nconst VirtualizedList = VirtualizedLists.VirtualizedList;\nconst defaultKeyExtractor = VirtualizedLists.keyExtractor;\n\ntype RequiredFlatListProps<ItemT> = {\n  /**\n   * An array (or array-like list) of items to render. Other data types can be\n   * used by targeting VirtualizedList directly.\n   */\n  data: ?$ReadOnly<$ArrayLike<ItemT>>,\n};\ntype OptionalFlatListProps<ItemT> = {\n  /**\n   * Takes an item from `data` and renders it into the list. Example usage:\n   *\n   *     <FlatList\n   *       ItemSeparatorComponent={Platform.OS !== 'android' && ({highlighted}) => (\n   *         <View style={[style.separator, highlighted && {marginLeft: 0}]} />\n   *       )}\n   *       data={[{title: 'Title Text', key: 'item1'}]}\n   *       renderItem={({item, separators}) => (\n   *         <TouchableHighlight\n   *           onPress={() => this._onPress(item)}\n   *           onShowUnderlay={separators.highlight}\n   *           onHideUnderlay={separators.unhighlight}>\n   *           <View style={{backgroundColor: 'white'}}>\n   *             <Text>{item.title}</Text>\n   *           </View>\n   *         </TouchableHighlight>\n   *       )}\n   *     />\n   *\n   * Provides additional metadata like `index` if you need it, as well as a more generic\n   * `separators.updateProps` function which let's you set whatever props you want to change the\n   * rendering of either the leading separator or trailing separator in case the more common\n   * `highlight` and `unhighlight` (which set the `highlighted: boolean` prop) are insufficient for\n   * your use-case.\n   */\n  renderItem?: ?ListRenderItem<ItemT>,\n\n  /**\n   * Optional custom style for multi-item rows generated when numColumns > 1.\n   */\n  columnWrapperStyle?: ViewStyleProp,\n  /**\n   * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n   * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n   * `data` prop, stick it here and treat it immutably.\n   */\n  extraData?: any,\n  /**\n   * `getItemLayout` is an optional optimizations that let us skip measurement of dynamic content if\n   * you know the height of items a priori. `getItemLayout` is the most efficient, and is easy to\n   * use if you have fixed height items, for example:\n   *\n   *     getItemLayout={(data, index) => (\n   *       {length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index}\n   *     )}\n   *\n   * Adding `getItemLayout` can be a great performance boost for lists of several hundred items.\n   * Remember to include separator length (height or width) in your offset calculation if you\n   * specify `ItemSeparatorComponent`.\n   */\n  getItemLayout?: (\n    data: ?$ReadOnly<$ArrayLike<ItemT>>,\n    index: number,\n  ) => {\n    length: number,\n    offset: number,\n    index: number,\n    ...\n  },\n  /**\n   * If true, renders items next to each other horizontally instead of stacked vertically.\n   */\n  horizontal?: ?boolean,\n  /**\n   * How many items to render in the initial batch. This should be enough to fill the screen but not\n   * much more. Note these items will never be unmounted as part of the windowed rendering in order\n   * to improve perceived performance of scroll-to-top actions.\n   */\n  initialNumToRender?: ?number,\n  /**\n   * Instead of starting at the top with the first item, start at `initialScrollIndex`. This\n   * disables the \"scroll to top\" optimization that keeps the first `initialNumToRender` items\n   * always rendered and immediately renders the items starting at this initial index. Requires\n   * `getItemLayout` to be implemented.\n   */\n  initialScrollIndex?: ?number,\n  /**\n   * Reverses the direction of scroll. Uses scale transforms of -1.\n   */\n  inverted?: ?boolean,\n  /**\n   * Used to extract a unique key for a given item at the specified index. Key is used for caching\n   * and as the react key to track item re-ordering. The default extractor checks `item.key`, then\n   * falls back to using the index, like React does.\n   */\n  keyExtractor?: ?(item: ItemT, index: number) => string,\n  /**\n   * Multiple columns can only be rendered with `horizontal={false}` and will zig-zag like a\n   * `flexWrap` layout. Items should all be the same height - masonry layouts are not supported.\n   *\n   * The default value is 1.\n   */\n  numColumns?: number,\n  /**\n   * Note: may have bugs (missing content) in some circumstances - use at your own risk.\n   *\n   * This may improve scroll performance for large lists.\n   *\n   * The default value is true for Android.\n   */\n  removeClippedSubviews?: boolean,\n  /**\n   * See `ScrollView` for flow type and further documentation.\n   */\n  fadingEdgeLength?: ?number | {start: number, end: number},\n  /**\n   * Enable an optimization to memoize the item renderer to prevent unnecessary rerenders.\n   */\n  strictMode?: boolean,\n};\n\n/**\n * Default Props Helper Functions\n * Use the following helper functions for default values\n */\n\n// removeClippedSubviewsOrDefault(this.props.removeClippedSubviews)\nfunction removeClippedSubviewsOrDefault(removeClippedSubviews: ?boolean) {\n  if (ReactNativeFeatureFlags.shouldUseRemoveClippedSubviewsAsDefaultOnIOS()) {\n    return removeClippedSubviews ?? true;\n  } else {\n    return removeClippedSubviews ?? Platform.OS === 'android';\n  }\n}\n\n// numColumnsOrDefault(this.props.numColumns)\nfunction numColumnsOrDefault(numColumns: ?number) {\n  return numColumns ?? 1;\n}\n\nfunction isArrayLike(data: mixed): boolean {\n  // $FlowExpectedError[incompatible-use]\n  return typeof Object(data).length === 'number';\n}\n\ntype FlatListBaseProps<ItemT> = {\n  ...RequiredFlatListProps<ItemT>,\n  ...OptionalFlatListProps<ItemT>,\n};\n\nexport type FlatListProps<ItemT> = {\n  ...Omit<\n    VirtualizedListProps,\n    | 'data'\n    | 'getItem'\n    | 'getItemCount'\n    | 'getItemLayout'\n    | 'renderItem'\n    | 'keyExtractor',\n  >,\n  ...FlatListBaseProps<ItemT>,\n  ...\n};\n\n/**\n * A performant interface for rendering simple, flat lists, supporting the most handy features:\n *\n *  - Fully cross-platform.\n *  - Optional horizontal mode.\n *  - Configurable viewability callbacks.\n *  - Header support.\n *  - Footer support.\n *  - Separator support.\n *  - Pull to Refresh.\n *  - Scroll loading.\n *  - ScrollToIndex support.\n *\n * If you need section support, use [`<SectionList>`](docs/sectionlist.html).\n *\n * Minimal Example:\n *\n *     <FlatList\n *       data={[{key: 'a'}, {key: 'b'}]}\n *       renderItem={({item}) => <Text>{item.key}</Text>}\n *     />\n *\n * More complex, multi-select example demonstrating `PureComponent` usage for perf optimization and avoiding bugs.\n *\n * - By binding the `onPressItem` handler, the props will remain `===` and `PureComponent` will\n *   prevent wasteful re-renders unless the actual `id`, `selected`, or `title` props change, even\n *   if the components rendered in `MyListItem` did not have such optimizations.\n * - By passing `extraData={this.state}` to `FlatList` we make sure `FlatList` itself will re-render\n *   when the `state.selected` changes. Without setting this prop, `FlatList` would not know it\n *   needs to re-render any items because it is also a `PureComponent` and the prop comparison will\n *   not show any changes.\n * - `keyExtractor` tells the list to use the `id`s for the react keys instead of the default `key` property.\n *\n *\n *     class MyListItem extends React.PureComponent {\n *       _onPress = () => {\n *         this.props.onPressItem(this.props.id);\n *       };\n *\n *       render() {\n *         const textColor = this.props.selected ? \"red\" : \"black\";\n *         return (\n *           <TouchableOpacity onPress={this._onPress}>\n *             <View>\n *               <Text style={{ color: textColor }}>\n *                 {this.props.title}\n *               </Text>\n *             </View>\n *           </TouchableOpacity>\n *         );\n *       }\n *     }\n *\n *     class MultiSelectList extends React.PureComponent {\n *       state = {selected: (new Map(): Map<string, boolean>)};\n *\n *       _keyExtractor = (item, index) => item.id;\n *\n *       _onPressItem = (id: string) => {\n *         // updater functions are preferred for transactional updates\n *         this.setState((state) => {\n *           // copy the map rather than modifying state.\n *           const selected = new Map(state.selected);\n *           selected.set(id, !selected.get(id)); // toggle\n *           return {selected};\n *         });\n *       };\n *\n *       _renderItem = ({item}) => (\n *         <MyListItem\n *           id={item.id}\n *           onPressItem={this._onPressItem}\n *           selected={!!this.state.selected.get(item.id)}\n *           title={item.title}\n *         />\n *       );\n *\n *       render() {\n *         return (\n *           <FlatList\n *             data={this.props.data}\n *             extraData={this.state}\n *             keyExtractor={this._keyExtractor}\n *             renderItem={this._renderItem}\n *           />\n *         );\n *       }\n *     }\n *\n * This is a convenience wrapper around [`<VirtualizedList>`](docs/virtualizedlist.html),\n * and thus inherits its props (as well as those of `ScrollView`) that aren't explicitly listed\n * here, along with the following caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n *   your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n *   equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n *   (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n *   changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n *   offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n *   blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n *   and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n *   Alternatively, you can provide a custom `keyExtractor` prop.\n *\n * Also inherits [ScrollView Props](docs/scrollview.html#props), unless it is nested in another FlatList of same orientation.\n */\nclass FlatList<ItemT = any> extends React.PureComponent<FlatListProps<ItemT>> {\n  /**\n   * Scrolls to the end of the content. May be janky without `getItemLayout` prop.\n   */\n  scrollToEnd(params?: ?{animated?: ?boolean, ...}) {\n    if (this._listRef) {\n      this._listRef.scrollToEnd(params);\n    }\n  }\n\n  /**\n   * Scrolls to the item at the specified index such that it is positioned in the viewable area\n   * such that `viewPosition` 0 places it at the top, 1 at the bottom, and 0.5 centered in the\n   * middle. `viewOffset` is a fixed number of pixels to offset the final target position.\n   *\n   * Note: cannot scroll to locations outside the render window without specifying the\n   * `getItemLayout` prop.\n   */\n  scrollToIndex(params: {\n    animated?: ?boolean,\n    index: number,\n    viewOffset?: number,\n    viewPosition?: number,\n    ...\n  }) {\n    if (this._listRef) {\n      this._listRef.scrollToIndex(params);\n    }\n  }\n\n  /**\n   * Requires linear scan through data - use `scrollToIndex` instead if possible.\n   *\n   * Note: cannot scroll to locations outside the render window without specifying the\n   * `getItemLayout` prop.\n   */\n  scrollToItem(params: {\n    animated?: ?boolean,\n    item: ItemT,\n    viewOffset?: number,\n    viewPosition?: number,\n    ...\n  }) {\n    if (this._listRef) {\n      this._listRef.scrollToItem(params);\n    }\n  }\n\n  /**\n   * Scroll to a specific content pixel offset in the list.\n   *\n   * Check out [scrollToOffset](docs/virtualizedlist.html#scrolltooffset) of VirtualizedList\n   */\n  scrollToOffset(params: {animated?: ?boolean, offset: number, ...}) {\n    if (this._listRef) {\n      this._listRef.scrollToOffset(params);\n    }\n  }\n\n  /**\n   * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.\n   * if `waitForInteractions` is true and the user has not scrolled. This is typically called by\n   * taps on items or by navigation actions.\n   */\n  recordInteraction() {\n    if (this._listRef) {\n      this._listRef.recordInteraction();\n    }\n  }\n\n  /**\n   * Displays the scroll indicators momentarily.\n   *\n   * @platform ios\n   */\n  flashScrollIndicators() {\n    if (this._listRef) {\n      this._listRef.flashScrollIndicators();\n    }\n  }\n\n  /**\n   * Provides a handle to the underlying scroll responder.\n   */\n  getScrollResponder(): ?ScrollResponderType {\n    if (this._listRef) {\n      return this._listRef.getScrollResponder();\n    }\n  }\n\n  /**\n   * Provides a reference to the underlying host component\n   */\n  getNativeScrollRef():\n    | ?React.ElementRef<typeof View>\n    | ?React.ElementRef<ScrollViewNativeComponent> {\n    if (this._listRef) {\n      /* $FlowFixMe[incompatible-return] Suppresses errors found when fixing\n       * TextInput typing */\n      return this._listRef.getScrollRef();\n    }\n  }\n\n  getScrollableNode(): any {\n    if (this._listRef) {\n      return this._listRef.getScrollableNode();\n    }\n  }\n\n  setNativeProps(props: {[string]: mixed, ...}) {\n    if (this._listRef) {\n      this._listRef.setNativeProps(props);\n    }\n  }\n\n  constructor(props: FlatListProps<ItemT>) {\n    super(props);\n    this._checkProps(this.props);\n    if (this.props.viewabilityConfigCallbackPairs) {\n      this._virtualizedListPairs =\n        this.props.viewabilityConfigCallbackPairs.map(pair => ({\n          viewabilityConfig: pair.viewabilityConfig,\n          onViewableItemsChanged: this._createOnViewableItemsChanged(\n            pair.onViewableItemsChanged,\n          ),\n        }));\n    } else if (this.props.onViewableItemsChanged) {\n      this._virtualizedListPairs.push({\n        /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This\n         * comment suppresses an error found when Flow v0.63 was deployed. To\n         * see the error delete this comment and run Flow. */\n        viewabilityConfig: this.props.viewabilityConfig,\n        onViewableItemsChanged: this._createOnViewableItemsChanged(\n          // NOTE: we use a wrapper function to allow the actual callback to change\n          // while still keeping the function provided to native to be stable\n          (...args) => {\n            invariant(\n              this.props.onViewableItemsChanged,\n              'Changing the nullability of onViewableItemsChanged is not supported. ' +\n                'Once a function or null is supplied that cannot be changed.',\n            );\n            return this.props.onViewableItemsChanged(...args);\n          },\n        ),\n      });\n    }\n  }\n\n  // $FlowFixMe[missing-local-annot]\n  componentDidUpdate(prevProps: FlatListProps<ItemT>) {\n    invariant(\n      prevProps.numColumns === this.props.numColumns,\n      'Changing numColumns on the fly is not supported. Change the key prop on FlatList when ' +\n        'changing the number of columns to force a fresh render of the component.',\n    );\n    invariant(\n      (prevProps.onViewableItemsChanged == null) ===\n        (this.props.onViewableItemsChanged == null),\n      'Changing onViewableItemsChanged nullability on the fly is not supported',\n    );\n    invariant(\n      !deepDiffer(prevProps.viewabilityConfig, this.props.viewabilityConfig),\n      'Changing viewabilityConfig on the fly is not supported',\n    );\n    invariant(\n      prevProps.viewabilityConfigCallbackPairs ===\n        this.props.viewabilityConfigCallbackPairs,\n      'Changing viewabilityConfigCallbackPairs on the fly is not supported',\n    );\n\n    this._checkProps(this.props);\n  }\n\n  _listRef: ?VirtualizedList;\n  _virtualizedListPairs: Array<ViewabilityConfigCallbackPair> = [];\n\n  _captureRef = (ref: ?VirtualizedList) => {\n    this._listRef = ref;\n  };\n\n  // $FlowFixMe[missing-local-annot]\n  _checkProps(props: FlatListProps<ItemT>) {\n    const {\n      // $FlowFixMe[prop-missing] this prop doesn't exist, is only used for an invariant\n      getItem,\n      // $FlowFixMe[prop-missing] this prop doesn't exist, is only used for an invariant\n      getItemCount,\n      horizontal,\n      columnWrapperStyle,\n      onViewableItemsChanged,\n      viewabilityConfigCallbackPairs,\n    } = props;\n    const numColumns = numColumnsOrDefault(this.props.numColumns);\n    invariant(\n      !getItem && !getItemCount,\n      'FlatList does not support custom data formats.',\n    );\n    if (numColumns > 1) {\n      invariant(!horizontal, 'numColumns does not support horizontal.');\n    } else {\n      invariant(\n        !columnWrapperStyle,\n        'columnWrapperStyle not supported for single column lists',\n      );\n    }\n    invariant(\n      !(onViewableItemsChanged && viewabilityConfigCallbackPairs),\n      'FlatList does not support setting both onViewableItemsChanged and ' +\n        'viewabilityConfigCallbackPairs.',\n    );\n  }\n\n  _getItem = (\n    data: $ArrayLike<ItemT>,\n    index: number,\n  ): ?(ItemT | $ReadOnlyArray<ItemT>) => {\n    const numColumns = numColumnsOrDefault(this.props.numColumns);\n    if (numColumns > 1) {\n      const ret = [];\n      for (let kk = 0; kk < numColumns; kk++) {\n        const itemIndex = index * numColumns + kk;\n        if (itemIndex < data.length) {\n          const item = data[itemIndex];\n          ret.push(item);\n        }\n      }\n      return ret;\n    } else {\n      return data[index];\n    }\n  };\n\n  _getItemCount = (data: ?$ArrayLike<ItemT>): number => {\n    // Legacy behavior of FlatList was to forward \"undefined\" length if invalid\n    // data like a non-arraylike object is passed. VirtualizedList would then\n    // coerce this, and the math would work out to no-op. For compatibility, if\n    // invalid data is passed, we tell VirtualizedList there are zero items\n    // available to prevent it from trying to read from the invalid data\n    // (without propagating invalidly typed data).\n    if (data != null && isArrayLike(data)) {\n      const numColumns = numColumnsOrDefault(this.props.numColumns);\n      return numColumns > 1 ? Math.ceil(data.length / numColumns) : data.length;\n    } else {\n      return 0;\n    }\n  };\n\n  _keyExtractor = (items: ItemT | Array<ItemT>, index: number): string => {\n    const numColumns = numColumnsOrDefault(this.props.numColumns);\n    const keyExtractor = this.props.keyExtractor ?? defaultKeyExtractor;\n\n    if (numColumns > 1) {\n      invariant(\n        Array.isArray(items),\n        'FlatList: Encountered internal consistency error, expected each item to consist of an ' +\n          'array with 1-%s columns; instead, received a single item.',\n        numColumns,\n      );\n      return items\n        .map((item, kk) =>\n          keyExtractor(((item: $FlowFixMe): ItemT), index * numColumns + kk),\n        )\n        .join(':');\n    }\n\n    // $FlowFixMe[incompatible-call] Can't call keyExtractor with an array\n    return keyExtractor(items, index);\n  };\n\n  _pushMultiColumnViewable(arr: Array<ViewToken>, v: ViewToken): void {\n    const numColumns = numColumnsOrDefault(this.props.numColumns);\n    const keyExtractor = this.props.keyExtractor ?? defaultKeyExtractor;\n    v.item.forEach((item, ii) => {\n      invariant(v.index != null, 'Missing index!');\n      const index = v.index * numColumns + ii;\n      arr.push({...v, item, key: keyExtractor(item, index), index});\n    });\n  }\n\n  _createOnViewableItemsChanged(\n    onViewableItemsChanged: ?(info: {\n      viewableItems: Array<ViewToken>,\n      changed: Array<ViewToken>,\n      ...\n    }) => void,\n    // $FlowFixMe[missing-local-annot]\n  ) {\n    return (info: {\n      viewableItems: Array<ViewToken>,\n      changed: Array<ViewToken>,\n      ...\n    }) => {\n      const numColumns = numColumnsOrDefault(this.props.numColumns);\n      if (onViewableItemsChanged) {\n        if (numColumns > 1) {\n          const changed: Array<ViewToken> = [];\n          const viewableItems: Array<ViewToken> = [];\n          info.viewableItems.forEach(v =>\n            this._pushMultiColumnViewable(viewableItems, v),\n          );\n          info.changed.forEach(v => this._pushMultiColumnViewable(changed, v));\n          onViewableItemsChanged({viewableItems, changed});\n        } else {\n          onViewableItemsChanged(info);\n        }\n      }\n    };\n  }\n\n  _renderer = (\n    ListItemComponent: ?(React.ComponentType<any> | React.MixedElement),\n    renderItem: ?ListRenderItem<ItemT>,\n    columnWrapperStyle: ?ViewStyleProp,\n    numColumns: ?number,\n    extraData: ?any,\n    // $FlowFixMe[missing-local-annot]\n  ) => {\n    const cols = numColumnsOrDefault(numColumns);\n\n    const render = (props: ListRenderItemInfo<ItemT>): React.Node => {\n      if (ListItemComponent) {\n        // $FlowFixMe[not-a-component] Component isn't valid\n        // $FlowFixMe[incompatible-type-arg] Component isn't valid\n        // $FlowFixMe[incompatible-return] Component isn't valid\n        return <ListItemComponent {...props} />;\n      } else if (renderItem) {\n        // $FlowFixMe[incompatible-call]\n        return renderItem(props);\n      } else {\n        return null;\n      }\n    };\n\n    const renderProp = (info: ListRenderItemInfo<ItemT>) => {\n      if (cols > 1) {\n        const {item, index} = info;\n        invariant(\n          Array.isArray(item),\n          'Expected array of items with numColumns > 1',\n        );\n        return (\n          <View style={StyleSheet.compose(styles.row, columnWrapperStyle)}>\n            {item.map((it, kk) => {\n              const element = render({\n                // $FlowFixMe[incompatible-call]\n                item: it,\n                index: index * cols + kk,\n                separators: info.separators,\n              });\n              return element != null ? (\n                <React.Fragment key={kk}>{element}</React.Fragment>\n              ) : null;\n            })}\n          </View>\n        );\n      } else {\n        return render(info);\n      }\n    };\n\n    return ListItemComponent\n      ? {ListItemComponent: renderProp}\n      : {renderItem: renderProp};\n  };\n\n  _memoizedRenderer: ReturnType<typeof memoizeOne> = memoizeOne(this._renderer);\n\n  render(): React.Node {\n    const {\n      numColumns,\n      columnWrapperStyle,\n      removeClippedSubviews: _removeClippedSubviews,\n      strictMode = false,\n      ...restProps\n    } = this.props;\n\n    const renderer = strictMode ? this._memoizedRenderer : this._renderer;\n\n    return (\n      // $FlowFixMe[incompatible-exact] - `restProps` (`Props`) is inexact.\n      <VirtualizedList\n        {...restProps}\n        getItem={this._getItem}\n        getItemCount={this._getItemCount}\n        keyExtractor={this._keyExtractor}\n        ref={this._captureRef}\n        viewabilityConfigCallbackPairs={this._virtualizedListPairs}\n        removeClippedSubviews={removeClippedSubviewsOrDefault(\n          _removeClippedSubviews,\n        )}\n        {...renderer(\n          this.props.ListItemComponent,\n          this.props.renderItem,\n          columnWrapperStyle,\n          numColumns,\n          this.props.extraData,\n        )}\n      />\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  row: {flexDirection: 'row'},\n});\n\nexport default FlatList;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport typeof FillRateHelperT from './Lists/FillRateHelper';\nimport typeof ViewabilityHelperT from './Lists/ViewabilityHelper';\nimport typeof VirtualizedListT from './Lists/VirtualizedList';\nimport type {AnyVirtualizedSectionList as AnyVirtualizedSectionListT} from './Lists/VirtualizedSectionList';\n\nimport {typeof VirtualizedListContextResetter as VirtualizedListContextResetterT} from './Lists/VirtualizedListContext';\nimport {keyExtractor} from './Lists/VirtualizeUtils';\n\nexport type {\n  ViewToken,\n  ViewabilityConfig,\n  ViewabilityConfigCallbackPair,\n  ViewabilityConfigCallbackPairs,\n} from './Lists/ViewabilityHelper';\nexport type {\n  CellRendererProps,\n  ListRenderItemInfo,\n  ListRenderItem,\n  Separators,\n  VirtualizedListProps,\n} from './Lists/VirtualizedListProps';\nexport type {\n  VirtualizedSectionListProps,\n  ScrollToLocationParamsType,\n  SectionBase,\n  SectionData,\n} from './Lists/VirtualizedSectionList';\nexport type {FillRateInfo} from './Lists/FillRateHelper';\n\nexport default {\n  keyExtractor,\n\n  get VirtualizedList(): VirtualizedListT {\n    return require('./Lists/VirtualizedList').default;\n  },\n  get VirtualizedSectionList(): AnyVirtualizedSectionListT {\n    return require('./Lists/VirtualizedSectionList').default;\n  },\n  get VirtualizedListContextResetter(): VirtualizedListContextResetterT {\n    const VirtualizedListContext = require('./Lists/VirtualizedListContext');\n    return VirtualizedListContext.VirtualizedListContextResetter;\n  },\n  get ViewabilityHelper(): ViewabilityHelperT {\n    return require('./Lists/ViewabilityHelper').default;\n  },\n  get FillRateHelper(): FillRateHelperT {\n    return require('./Lists/FillRateHelper').default;\n  },\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type ListMetricsAggregator from './ListMetricsAggregator';\nimport type {CellMetricProps} from './ListMetricsAggregator';\n\nimport * as ReactNativeFeatureFlags from 'react-native/src/private/featureflags/ReactNativeFeatureFlags';\n\n/**\n * Used to find the indices of the frames that overlap the given offsets. Useful for finding the\n * items that bound different windows of content, such as the visible area or the buffered overscan\n * area.\n */\nexport function elementsThatOverlapOffsets(\n  offsets: Array<number>,\n  props: CellMetricProps,\n  listMetrics: ListMetricsAggregator,\n  zoomScale: number = 1,\n): Array<number> {\n  const itemCount = props.getItemCount(props.data);\n  const result = [];\n  for (let offsetIndex = 0; offsetIndex < offsets.length; offsetIndex++) {\n    const currentOffset = offsets[offsetIndex];\n    let left = 0;\n    let right = itemCount - 1;\n\n    while (left <= right) {\n      const mid = left + Math.floor((right - left) / 2);\n      const frame = listMetrics.getCellMetricsApprox(mid, props);\n      const scaledOffsetStart = frame.offset * zoomScale;\n      const scaledOffsetEnd = (frame.offset + frame.length) * zoomScale;\n\n      // We want the first frame that contains the offset, with inclusive bounds. Thus, for the\n      // first frame the scaledOffsetStart is inclusive, while for other frames it is exclusive.\n      if (\n        (mid === 0 && currentOffset < scaledOffsetStart) ||\n        (mid !== 0 && currentOffset <= scaledOffsetStart)\n      ) {\n        right = mid - 1;\n      } else if (currentOffset > scaledOffsetEnd) {\n        left = mid + 1;\n      } else {\n        result[offsetIndex] = mid;\n        break;\n      }\n    }\n  }\n\n  return result;\n}\n\n/**\n * Computes the number of elements in the `next` range that are new compared to the `prev` range.\n * Handy for calculating how many new items will be rendered when the render window changes so we\n * can restrict the number of new items render at once so that content can appear on the screen\n * faster.\n */\nexport function newRangeCount(\n  prev: {\n    first: number,\n    last: number,\n    ...\n  },\n  next: {\n    first: number,\n    last: number,\n    ...\n  },\n): number {\n  return (\n    next.last -\n    next.first +\n    1 -\n    Math.max(\n      0,\n      1 + Math.min(next.last, prev.last) - Math.max(next.first, prev.first),\n    )\n  );\n}\n\n/**\n * Custom logic for determining which items should be rendered given the current frame and scroll\n * metrics, as well as the previous render state. The algorithm may evolve over time, but generally\n * prioritizes the visible area first, then expands that with overscan regions ahead and behind,\n * biased in the direction of scroll.\n */\nexport function computeWindowedRenderLimits(\n  props: CellMetricProps,\n  maxToRenderPerBatch: number,\n  windowSize: number,\n  prev: {\n    first: number,\n    last: number,\n  },\n  listMetrics: ListMetricsAggregator,\n  scrollMetrics: {\n    dt: number,\n    offset: number,\n    velocity: number,\n    visibleLength: number,\n    zoomScale: number,\n    ...\n  },\n): {\n  first: number,\n  last: number,\n} {\n  const itemCount = props.getItemCount(props.data);\n  if (itemCount === 0) {\n    return {first: 0, last: -1};\n  }\n  const {offset, velocity, visibleLength, zoomScale = 1} = scrollMetrics;\n\n  // Start with visible area, then compute maximum overscan region by expanding from there, biased\n  // in the direction of scroll. Total overscan area is capped, which should cap memory consumption\n  // too.\n  const visibleBegin = Math.max(0, offset);\n  const visibleEnd = visibleBegin + visibleLength;\n  const overscanLength = (windowSize - 1) * visibleLength;\n\n  // Considering velocity seems to introduce more churn than it's worth.\n  const leadFactor = 0.5; // Math.max(0, Math.min(1, velocity / 25 + 0.5));\n\n  const fillPreference =\n    velocity > 1 ? 'after' : velocity < -1 ? 'before' : 'none';\n\n  const overscanBegin = Math.max(\n    0,\n    visibleBegin - (1 - leadFactor) * overscanLength,\n  );\n  const overscanEnd = Math.max(0, visibleEnd + leadFactor * overscanLength);\n\n  const lastItemOffset =\n    listMetrics.getCellMetricsApprox(itemCount - 1, props).offset * zoomScale;\n  if (lastItemOffset < overscanBegin) {\n    // Entire list is before our overscan window\n    return {\n      first: Math.max(0, itemCount - 1 - maxToRenderPerBatch),\n      last: itemCount - 1,\n    };\n  }\n\n  // Find the indices that correspond to the items at the render boundaries we're targeting.\n  let [overscanFirst, first, last, overscanLast] = elementsThatOverlapOffsets(\n    [overscanBegin, visibleBegin, visibleEnd, overscanEnd],\n    props,\n    listMetrics,\n    zoomScale,\n  );\n  overscanFirst = overscanFirst == null ? 0 : overscanFirst;\n  first = first == null ? Math.max(0, overscanFirst) : first;\n  overscanLast = overscanLast == null ? itemCount - 1 : overscanLast;\n  last =\n    last == null\n      ? Math.min(overscanLast, first + maxToRenderPerBatch - 1)\n      : last;\n  const visible = {first, last};\n\n  // We want to limit the number of new cells we're rendering per batch so that we can fill the\n  // content on the screen quickly. If we rendered the entire overscan window at once, the user\n  // could be staring at white space for a long time waiting for a bunch of offscreen content to\n  // render.\n  let newCellCount = newRangeCount(prev, visible);\n\n  while (true) {\n    if (first <= overscanFirst && last >= overscanLast) {\n      // If we fill the entire overscan range, we're done.\n      break;\n    }\n    const maxNewCells = newCellCount >= maxToRenderPerBatch;\n\n    let firstWillAddMore;\n    let lastWillAddMore;\n\n    if (ReactNativeFeatureFlags.fixVirtualizeListCollapseWindowSize()) {\n      firstWillAddMore = first <= prev.first;\n      lastWillAddMore = last >= prev.last;\n    } else {\n      firstWillAddMore = first <= prev.first || first > prev.last;\n      lastWillAddMore = last >= prev.last || last < prev.first;\n    }\n\n    const firstShouldIncrement =\n      first > overscanFirst && (!maxNewCells || !firstWillAddMore);\n    const lastShouldIncrement =\n      last < overscanLast && (!maxNewCells || !lastWillAddMore);\n    if (maxNewCells && !firstShouldIncrement && !lastShouldIncrement) {\n      // We only want to stop if we've hit maxNewCells AND we cannot increment first or last\n      // without rendering new items. This let's us preserve as many already rendered items as\n      // possible, reducing render churn and keeping the rendered overscan range as large as\n      // possible.\n      break;\n    }\n    if (\n      firstShouldIncrement &&\n      !(fillPreference === 'after' && lastShouldIncrement && lastWillAddMore)\n    ) {\n      if (firstWillAddMore) {\n        newCellCount++;\n      }\n      first--;\n    }\n    if (\n      lastShouldIncrement &&\n      !(fillPreference === 'before' && firstShouldIncrement && firstWillAddMore)\n    ) {\n      if (lastWillAddMore) {\n        newCellCount++;\n      }\n      last++;\n    }\n  }\n  if (\n    !(\n      last >= first &&\n      first >= 0 &&\n      last < itemCount &&\n      first >= overscanFirst &&\n      last <= overscanLast &&\n      first <= visible.first &&\n      last >= visible.last\n    )\n  ) {\n    throw new Error(\n      'Bad window calculation ' +\n        JSON.stringify({\n          first,\n          last,\n          itemCount,\n          overscanFirst,\n          overscanLast,\n          visible,\n        }),\n    );\n  }\n  return {first, last};\n}\n\nexport function keyExtractor(item: any, index: number): string {\n  if (typeof item === 'object' && item?.key != null) {\n    return item.key;\n  }\n  if (typeof item === 'object' && item?.id != null) {\n    return item.id;\n  }\n  return String(index);\n}\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 * @flow\n * @format\n */\n\nimport type {CellMetricProps, ListOrientation} from './ListMetricsAggregator';\nimport type {ViewToken} from './ViewabilityHelper';\nimport type {\n  Item,\n  ListRenderItem,\n  ListRenderItemInfo,\n  Separators,\n  VirtualizedListProps,\n} from './VirtualizedListProps';\nimport type {\n  LayoutChangeEvent,\n  ScrollEvent,\n  ScrollResponderType,\n  StyleProp,\n  ViewStyle,\n} from 'react-native';\n\nimport clamp from '../Utilities/clamp';\nimport infoLog from '../Utilities/infoLog';\nimport {CellRenderMask} from './CellRenderMask';\nimport ChildListCollection from './ChildListCollection';\nimport FillRateHelper from './FillRateHelper';\nimport ListMetricsAggregator from './ListMetricsAggregator';\nimport StateSafePureComponent from './StateSafePureComponent';\nimport ViewabilityHelper from './ViewabilityHelper';\nimport CellRenderer from './VirtualizedListCellRenderer';\nimport {\n  VirtualizedListCellContextProvider,\n  VirtualizedListContext,\n  VirtualizedListContextProvider,\n} from './VirtualizedListContext.js';\nimport {\n  horizontalOrDefault,\n  initialNumToRenderOrDefault,\n  maxToRenderPerBatchOrDefault,\n  onEndReachedThresholdOrDefault,\n  onStartReachedThresholdOrDefault,\n  windowSizeOrDefault,\n} from './VirtualizedListProps';\nimport {\n  computeWindowedRenderLimits,\n  keyExtractor as defaultKeyExtractor,\n} from './VirtualizeUtils';\nimport invariant from 'invariant';\nimport nullthrows from 'nullthrows';\nimport * as React from 'react';\nimport {cloneElement, isValidElement} from 'react';\nimport {\n  I18nManager,\n  Platform,\n  RefreshControl,\n  ScrollView,\n  StyleSheet,\n  View,\n  findNodeHandle,\n} from 'react-native';\nimport * as ReactNativeFeatureFlags from 'react-native/src/private/featureflags/ReactNativeFeatureFlags';\n\nexport type {ListRenderItemInfo, ListRenderItem, Separators};\n\nconst ON_EDGE_REACHED_EPSILON = 0.001;\n\nlet _usedIndexForKey = false;\nlet _keylessItemComponentName: string = '';\n\ntype ViewabilityHelperCallbackTuple = {\n  viewabilityHelper: ViewabilityHelper,\n  onViewableItemsChanged: (info: {\n    viewableItems: Array<ViewToken>,\n    changed: Array<ViewToken>,\n    ...\n  }) => void,\n  ...\n};\n\ntype State = {\n  renderMask: CellRenderMask,\n  cellsAroundViewport: {first: number, last: number},\n  // Used to track items added at the start of the list for maintainVisibleContentPosition.\n  firstVisibleItemKey: ?string,\n  // When > 0 the scroll position available in JS is considered stale and should not be used.\n  pendingScrollUpdateCount: number,\n};\n\nfunction getScrollingThreshold(threshold: number, visibleLength: number) {\n  return (threshold * visibleLength) / 2;\n}\n\n/**\n * Base implementation for the more convenient [`<FlatList>`](https://reactnative.dev/docs/flatlist)\n * and [`<SectionList>`](https://reactnative.dev/docs/sectionlist) components, which are also better\n * documented. In general, this should only really be used if you need more flexibility than\n * `FlatList` provides, e.g. for use with immutable data instead of plain arrays.\n *\n * Virtualization massively improves memory consumption and performance of large lists by\n * maintaining a finite render window of active items and replacing all items outside of the render\n * window with appropriately sized blank space. The window adapts to scrolling behavior, and items\n * are rendered incrementally with low-pri (after any running interactions) if they are far from the\n * visible area, or with hi-pri otherwise to minimize the potential of seeing blank space.\n *\n * Some caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n *   your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n *   equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n *   (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n *   changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n *   offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n *   blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n *   and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` or `id` prop on each item and uses that for the React key.\n *   Alternatively, you can provide a custom `keyExtractor` prop.\n * - As an effort to remove defaultProps, use helper functions when referencing certain props\n *\n */\nclass VirtualizedList extends StateSafePureComponent<\n  VirtualizedListProps,\n  State,\n> {\n  static contextType: typeof VirtualizedListContext = VirtualizedListContext;\n\n  // scrollToEnd may be janky without getItemLayout prop\n  scrollToEnd(params?: ?{animated?: ?boolean, ...}) {\n    const animated = params ? params.animated : true;\n    const veryLast = this.props.getItemCount(this.props.data) - 1;\n    if (veryLast < 0) {\n      return;\n    }\n    const frame = this._listMetrics.getCellMetricsApprox(veryLast, this.props);\n    const offset = Math.max(\n      0,\n      frame.offset +\n        frame.length +\n        this._footerLength -\n        this._scrollMetrics.visibleLength,\n    );\n\n    // TODO: consider using `ref.scrollToEnd` directly\n    this.scrollToOffset({animated, offset});\n  }\n\n  // scrollToIndex may be janky without getItemLayout prop\n  scrollToIndex(params: {\n    animated?: ?boolean,\n    index: number,\n    viewOffset?: number,\n    viewPosition?: number,\n    ...\n  }): $FlowFixMe {\n    const {data, getItemCount, getItemLayout, onScrollToIndexFailed} =\n      this.props;\n    const {animated, index, viewOffset, viewPosition} = params;\n    invariant(\n      index >= 0,\n      `scrollToIndex out of range: requested index ${index} but minimum is 0`,\n    );\n    invariant(\n      getItemCount(data) >= 1,\n      `scrollToIndex out of range: item length ${getItemCount(\n        data,\n      )} but minimum is 1`,\n    );\n    invariant(\n      index < getItemCount(data),\n      `scrollToIndex out of range: requested index ${index} is out of 0 to ${\n        getItemCount(data) - 1\n      }`,\n    );\n    if (\n      !getItemLayout &&\n      index > this._listMetrics.getHighestMeasuredCellIndex()\n    ) {\n      invariant(\n        !!onScrollToIndexFailed,\n        'scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, ' +\n          'otherwise there is no way to know the location of offscreen indices or handle failures.',\n      );\n      onScrollToIndexFailed({\n        averageItemLength: this._listMetrics.getAverageCellLength(),\n        highestMeasuredFrameIndex:\n          this._listMetrics.getHighestMeasuredCellIndex(),\n        index,\n      });\n      return;\n    }\n    const frame = this._listMetrics.getCellMetricsApprox(\n      Math.floor(index),\n      this.props,\n    );\n    const offset =\n      Math.max(\n        0,\n        this._listMetrics.getCellOffsetApprox(index, this.props) -\n          (viewPosition || 0) *\n            (this._scrollMetrics.visibleLength - frame.length),\n      ) - (viewOffset || 0);\n\n    this.scrollToOffset({offset, animated});\n  }\n\n  // scrollToItem may be janky without getItemLayout prop. Required linear scan through items -\n  // use scrollToIndex instead if possible.\n  scrollToItem(params: {\n    animated?: ?boolean,\n    item: Item,\n    viewOffset?: number,\n    viewPosition?: number,\n    ...\n  }) {\n    const {item} = params;\n    const {data, getItem, getItemCount} = this.props;\n    const itemCount = getItemCount(data);\n    for (let index = 0; index < itemCount; index++) {\n      if (getItem(data, index) === item) {\n        this.scrollToIndex({...params, index});\n        break;\n      }\n    }\n  }\n\n  /**\n   * Scroll to a specific content pixel offset in the list.\n   *\n   * Param `offset` expects the offset to scroll to.\n   * In case of `horizontal` is true, the offset is the x-value,\n   * in any other case the offset is the y-value.\n   *\n   * Param `animated` (`true` by default) defines whether the list\n   * should do an animation while scrolling.\n   */\n  scrollToOffset(params: {animated?: ?boolean, offset: number, ...}) {\n    const {animated, offset} = params;\n    const scrollRef = this._scrollRef;\n\n    if (scrollRef == null) {\n      return;\n    }\n\n    if (scrollRef.scrollTo == null) {\n      console.warn(\n        'No scrollTo method provided. This may be because you have two nested ' +\n          'VirtualizedLists with the same orientation, or because you are ' +\n          'using a custom component that does not implement scrollTo.',\n      );\n      return;\n    }\n\n    const {horizontal, rtl} = this._orientation();\n    if (horizontal && rtl && !this._listMetrics.hasContentLength()) {\n      console.warn(\n        'scrollToOffset may not be called in RTL before content is laid out',\n      );\n      return;\n    }\n\n    // $FlowFixMe[incompatible-call]\n    scrollRef.scrollTo({\n      animated,\n      ...this._scrollToParamsFromOffset(offset),\n    });\n  }\n\n  _scrollToParamsFromOffset(offset: number): {x?: number, y?: number} {\n    const {horizontal, rtl} = this._orientation();\n    if (horizontal && rtl) {\n      // Add the visible length of the scrollview so that the offset is right-aligned\n      const cartOffset = this._listMetrics.cartesianOffset(\n        offset + this._scrollMetrics.visibleLength,\n      );\n      return horizontal ? {x: cartOffset} : {y: cartOffset};\n    } else {\n      return horizontal ? {x: offset} : {y: offset};\n    }\n  }\n\n  recordInteraction() {\n    this._nestedChildLists.forEach(childList => {\n      childList.recordInteraction();\n    });\n    this._viewabilityTuples.forEach(t => {\n      t.viewabilityHelper.recordInteraction();\n    });\n    this._updateViewableItems(this.props, this.state.cellsAroundViewport);\n  }\n\n  flashScrollIndicators() {\n    if (this._scrollRef == null) {\n      return;\n    }\n\n    this._scrollRef.flashScrollIndicators();\n  }\n\n  /**\n   * Provides a handle to the underlying scroll responder.\n   * Note that `this._scrollRef` might not be a `ScrollView`, so we\n   * need to check that it responds to `getScrollResponder` before calling it.\n   */\n  getScrollResponder(): ?ScrollResponderType {\n    if (this._scrollRef && this._scrollRef.getScrollResponder) {\n      return this._scrollRef.getScrollResponder();\n    }\n  }\n\n  getScrollableNode(): ?number {\n    if (this._scrollRef && this._scrollRef.getScrollableNode) {\n      return this._scrollRef.getScrollableNode();\n    } else {\n      return findNodeHandle<$FlowFixMe>(this._scrollRef);\n    }\n  }\n\n  getScrollRef(): ?React.ElementRef<typeof ScrollView> {\n    // $FlowFixMe[prop-missing]\n    if (this._scrollRef && this._scrollRef.getScrollRef) {\n      // $FlowFixMe[not-a-function]\n      return this._scrollRef.getScrollRef();\n    } else {\n      return this._scrollRef;\n    }\n  }\n\n  setNativeProps(props: Object) {\n    if (this._scrollRef) {\n      this._scrollRef.setNativeProps(props);\n    }\n  }\n\n  _getCellKey(): string {\n    return this.context?.cellKey || 'rootList';\n  }\n\n  // $FlowFixMe[missing-local-annot]\n  _getScrollMetrics = () => {\n    return this._scrollMetrics;\n  };\n\n  hasMore(): boolean {\n    return this._hasMore;\n  }\n\n  // $FlowFixMe[missing-local-annot]\n  _getOutermostParentListRef = () => {\n    if (this._isNestedWithSameOrientation()) {\n      return this.context.getOutermostParentListRef();\n    } else {\n      return this;\n    }\n  };\n\n  _registerAsNestedChild = (childList: {\n    cellKey: string,\n    ref: VirtualizedList,\n  }): void => {\n    this._nestedChildLists.add(childList.ref, childList.cellKey);\n    if (this._hasInteracted) {\n      childList.ref.recordInteraction();\n    }\n  };\n\n  _unregisterAsNestedChild = (childList: {ref: VirtualizedList}): void => {\n    this._nestedChildLists.remove(childList.ref);\n  };\n\n  state: State;\n\n  constructor(props: VirtualizedListProps) {\n    super(props);\n    this._checkProps(props);\n\n    this._fillRateHelper = new FillRateHelper(this._listMetrics);\n\n    if (this.props.viewabilityConfigCallbackPairs) {\n      this._viewabilityTuples = this.props.viewabilityConfigCallbackPairs.map(\n        pair => ({\n          viewabilityHelper: new ViewabilityHelper(pair.viewabilityConfig),\n          onViewableItemsChanged: pair.onViewableItemsChanged,\n        }),\n      );\n    } else {\n      const {onViewableItemsChanged, viewabilityConfig} = this.props;\n      if (onViewableItemsChanged) {\n        this._viewabilityTuples.push({\n          viewabilityHelper: new ViewabilityHelper(viewabilityConfig),\n          onViewableItemsChanged: onViewableItemsChanged,\n        });\n      }\n    }\n\n    const initialRenderRegion = VirtualizedList._initialRenderRegion(props);\n\n    const minIndexForVisible =\n      this.props.maintainVisibleContentPosition?.minIndexForVisible ?? 0;\n\n    this.state = {\n      cellsAroundViewport: initialRenderRegion,\n      renderMask: VirtualizedList._createRenderMask(props, initialRenderRegion),\n      firstVisibleItemKey:\n        this.props.getItemCount(this.props.data) > minIndexForVisible\n          ? VirtualizedList._getItemKey(this.props, minIndexForVisible)\n          : null,\n      // When we have a non-zero initialScrollIndex, we will receive a\n      // scroll event later so this will prevent the window from updating\n      // until we get a valid offset.\n      pendingScrollUpdateCount:\n        this.props.initialScrollIndex != null &&\n        this.props.initialScrollIndex > 0\n          ? 1\n          : 0,\n    };\n  }\n\n  _checkProps(props: VirtualizedListProps) {\n    const {onScroll, windowSize, getItemCount, data, initialScrollIndex} =\n      props;\n\n    invariant(\n      // $FlowFixMe[prop-missing]\n      !onScroll || !onScroll.__isNative,\n      'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' +\n        'to support native onScroll events with useNativeDriver',\n    );\n    invariant(\n      windowSizeOrDefault(windowSize) > 0,\n      'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.',\n    );\n\n    invariant(\n      getItemCount,\n      'VirtualizedList: The \"getItemCount\" prop must be provided',\n    );\n\n    const itemCount = getItemCount(data);\n\n    if (\n      initialScrollIndex != null &&\n      !this._hasTriggeredInitialScrollToIndex &&\n      (initialScrollIndex < 0 ||\n        (itemCount > 0 && initialScrollIndex >= itemCount)) &&\n      !this._hasWarned.initialScrollIndex\n    ) {\n      console.warn(\n        `initialScrollIndex \"${initialScrollIndex}\" is not valid (list has ${itemCount} items)`,\n      );\n      this._hasWarned.initialScrollIndex = true;\n    }\n\n    if (__DEV__ && !this._hasWarned.flexWrap) {\n      // $FlowFixMe[underconstrained-implicit-instantiation]\n      const flatStyles = StyleSheet.flatten(this.props.contentContainerStyle);\n      if (flatStyles != null && flatStyles.flexWrap === 'wrap') {\n        console.warn(\n          '`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' +\n            'Consider using `numColumns` with `FlatList` instead.',\n        );\n        this._hasWarned.flexWrap = true;\n      }\n    }\n  }\n\n  static _findItemIndexWithKey(\n    props: VirtualizedListProps,\n    key: string,\n    hint: ?number,\n  ): ?number {\n    const itemCount = props.getItemCount(props.data);\n    if (hint != null && hint >= 0 && hint < itemCount) {\n      const curKey = VirtualizedList._getItemKey(props, hint);\n      if (curKey === key) {\n        return hint;\n      }\n    }\n    for (let ii = 0; ii < itemCount; ii++) {\n      const curKey = VirtualizedList._getItemKey(props, ii);\n      if (curKey === key) {\n        return ii;\n      }\n    }\n    return null;\n  }\n\n  static _getItemKey(\n    props: {\n      data: VirtualizedListProps['data'],\n      getItem: VirtualizedListProps['getItem'],\n      keyExtractor: VirtualizedListProps['keyExtractor'],\n      ...\n    },\n    index: number,\n  ): string {\n    const item = props.getItem(props.data, index);\n    return VirtualizedList._keyExtractor(item, index, props);\n  }\n\n  static _createRenderMask(\n    props: VirtualizedListProps,\n    cellsAroundViewport: {first: number, last: number},\n    additionalRegions?: ?$ReadOnlyArray<{first: number, last: number}>,\n  ): CellRenderMask {\n    const itemCount = props.getItemCount(props.data);\n\n    invariant(\n      cellsAroundViewport.first >= 0 &&\n        cellsAroundViewport.last >= cellsAroundViewport.first - 1 &&\n        cellsAroundViewport.last < itemCount,\n      `Invalid cells around viewport \"[${cellsAroundViewport.first}, ${cellsAroundViewport.last}]\" was passed to VirtualizedList._createRenderMask`,\n    );\n\n    const renderMask = new CellRenderMask(itemCount);\n\n    if (itemCount > 0) {\n      const allRegions = [cellsAroundViewport, ...(additionalRegions ?? [])];\n      for (const region of allRegions) {\n        renderMask.addCells(region);\n      }\n\n      // The initially rendered cells are retained as part of the\n      // \"scroll-to-top\" optimization\n      if (props.initialScrollIndex == null || props.initialScrollIndex <= 0) {\n        const initialRegion = VirtualizedList._initialRenderRegion(props);\n        renderMask.addCells(initialRegion);\n      }\n\n      // The layout coordinates of sticker headers may be off-screen while the\n      // actual header is on-screen. Keep the most recent before the viewport\n      // rendered, even if its layout coordinates are not in viewport.\n      const stickyIndicesSet = new Set(props.stickyHeaderIndices);\n      VirtualizedList._ensureClosestStickyHeader(\n        props,\n        stickyIndicesSet,\n        renderMask,\n        cellsAroundViewport.first,\n      );\n    }\n\n    return renderMask;\n  }\n\n  static _initialRenderRegion(props: VirtualizedListProps): {\n    first: number,\n    last: number,\n  } {\n    const itemCount = props.getItemCount(props.data);\n\n    const firstCellIndex = Math.max(\n      0,\n      Math.min(itemCount - 1, Math.floor(props.initialScrollIndex ?? 0)),\n    );\n\n    const lastCellIndex =\n      Math.min(\n        itemCount,\n        firstCellIndex + initialNumToRenderOrDefault(props.initialNumToRender),\n      ) - 1;\n\n    return {\n      first: firstCellIndex,\n      last: lastCellIndex,\n    };\n  }\n\n  static _ensureClosestStickyHeader(\n    props: VirtualizedListProps,\n    stickyIndicesSet: Set<number>,\n    renderMask: CellRenderMask,\n    cellIdx: number,\n  ) {\n    const stickyOffset = props.ListHeaderComponent ? 1 : 0;\n\n    for (let itemIdx = cellIdx - 1; itemIdx >= 0; itemIdx--) {\n      if (stickyIndicesSet.has(itemIdx + stickyOffset)) {\n        renderMask.addCells({first: itemIdx, last: itemIdx});\n        break;\n      }\n    }\n  }\n\n  _adjustCellsAroundViewport(\n    props: VirtualizedListProps,\n    cellsAroundViewport: {first: number, last: number},\n    pendingScrollUpdateCount: number,\n  ): {first: number, last: number} {\n    const {data, getItemCount} = props;\n    const onEndReachedThreshold = onEndReachedThresholdOrDefault(\n      props.onEndReachedThreshold,\n    );\n    const {offset, visibleLength} = this._scrollMetrics;\n    const contentLength = this._listMetrics.getContentLength();\n    const distanceFromEnd = contentLength - visibleLength - offset;\n\n    // Wait until the scroll view metrics have been set up. And until then,\n    // we will trust the initialNumToRender suggestion\n    if (visibleLength <= 0 || contentLength <= 0) {\n      return cellsAroundViewport.last >= getItemCount(data)\n        ? VirtualizedList._constrainToItemCount(cellsAroundViewport, props)\n        : cellsAroundViewport;\n    }\n\n    let newCellsAroundViewport: {first: number, last: number};\n    if (props.disableVirtualization) {\n      const renderAhead =\n        distanceFromEnd < onEndReachedThreshold * visibleLength\n          ? maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch)\n          : 0;\n\n      newCellsAroundViewport = {\n        first: 0,\n        last: Math.min(\n          cellsAroundViewport.last + renderAhead,\n          getItemCount(data) - 1,\n        ),\n      };\n    } else {\n      // If we have a pending scroll update, we should not adjust the render window as it\n      // might override the correct window.\n      if (pendingScrollUpdateCount > 0) {\n        return cellsAroundViewport.last >= getItemCount(data)\n          ? VirtualizedList._constrainToItemCount(cellsAroundViewport, props)\n          : cellsAroundViewport;\n      }\n\n      newCellsAroundViewport = computeWindowedRenderLimits(\n        props,\n        maxToRenderPerBatchOrDefault(props.maxToRenderPerBatch),\n        windowSizeOrDefault(props.windowSize),\n        cellsAroundViewport,\n        this._listMetrics,\n        this._scrollMetrics,\n      );\n      invariant(\n        newCellsAroundViewport.last < getItemCount(data),\n        'computeWindowedRenderLimits() should return range in-bounds',\n      );\n    }\n\n    if (this._nestedChildLists.size() > 0) {\n      // If some cell in the new state has a child list in it, we should only render\n      // up through that item, so that we give that list a chance to render.\n      // Otherwise there's churn from multiple child lists mounting and un-mounting\n      // their items.\n\n      // Will this prevent rendering if the nested list doesn't realize the end?\n      const childIdx = this._findFirstChildWithMore(\n        newCellsAroundViewport.first,\n        newCellsAroundViewport.last,\n      );\n\n      newCellsAroundViewport.last = childIdx ?? newCellsAroundViewport.last;\n    }\n\n    return newCellsAroundViewport;\n  }\n\n  _findFirstChildWithMore(first: number, last: number): number | null {\n    for (let ii = first; ii <= last; ii++) {\n      const cellKeyForIndex = this._indicesToKeys.get(ii);\n      if (\n        cellKeyForIndex != null &&\n        this._nestedChildLists.anyInCell(cellKeyForIndex, childList =>\n          childList.hasMore(),\n        )\n      ) {\n        return ii;\n      }\n    }\n\n    return null;\n  }\n\n  componentDidMount() {\n    if (this._isNestedWithSameOrientation()) {\n      this.context.registerAsNestedChild({\n        ref: this,\n        cellKey: this.context.cellKey,\n      });\n    }\n  }\n\n  componentWillUnmount() {\n    if (this._isNestedWithSameOrientation()) {\n      this.context.unregisterAsNestedChild({ref: this});\n    }\n    clearTimeout(this._updateCellsToRenderTimeoutID);\n    this._viewabilityTuples.forEach(tuple => {\n      tuple.viewabilityHelper.dispose();\n    });\n    this._fillRateHelper.deactivateAndFlush();\n  }\n\n  static getDerivedStateFromProps(\n    newProps: VirtualizedListProps,\n    prevState: State,\n  ): State {\n    // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make\n    // sure we're rendering a reasonable range here.\n    const itemCount = newProps.getItemCount(newProps.data);\n    if (itemCount === prevState.renderMask.numCells()) {\n      return prevState;\n    }\n\n    let maintainVisibleContentPositionAdjustment: ?number = null;\n    const prevFirstVisibleItemKey = prevState.firstVisibleItemKey;\n    const minIndexForVisible =\n      newProps.maintainVisibleContentPosition?.minIndexForVisible ?? 0;\n    const newFirstVisibleItemKey =\n      newProps.getItemCount(newProps.data) > minIndexForVisible\n        ? VirtualizedList._getItemKey(newProps, minIndexForVisible)\n        : null;\n    if (\n      newProps.maintainVisibleContentPosition != null &&\n      prevFirstVisibleItemKey != null &&\n      newFirstVisibleItemKey != null\n    ) {\n      if (newFirstVisibleItemKey !== prevFirstVisibleItemKey) {\n        // Fast path if items were added at the start of the list.\n        const hint =\n          itemCount - prevState.renderMask.numCells() + minIndexForVisible;\n        const firstVisibleItemIndex = VirtualizedList._findItemIndexWithKey(\n          newProps,\n          prevFirstVisibleItemKey,\n          hint,\n        );\n        maintainVisibleContentPositionAdjustment =\n          firstVisibleItemIndex != null\n            ? firstVisibleItemIndex - minIndexForVisible\n            : null;\n      } else {\n        maintainVisibleContentPositionAdjustment = null;\n      }\n    }\n\n    const constrainedCells = VirtualizedList._constrainToItemCount(\n      maintainVisibleContentPositionAdjustment != null\n        ? {\n            first:\n              prevState.cellsAroundViewport.first +\n              maintainVisibleContentPositionAdjustment,\n            last:\n              prevState.cellsAroundViewport.last +\n              maintainVisibleContentPositionAdjustment,\n          }\n        : prevState.cellsAroundViewport,\n      newProps,\n    );\n\n    return {\n      cellsAroundViewport: constrainedCells,\n      renderMask: VirtualizedList._createRenderMask(newProps, constrainedCells),\n      firstVisibleItemKey: newFirstVisibleItemKey,\n      pendingScrollUpdateCount:\n        maintainVisibleContentPositionAdjustment != null\n          ? prevState.pendingScrollUpdateCount + 1\n          : prevState.pendingScrollUpdateCount,\n    };\n  }\n\n  _pushCells(\n    cells: Array<Object>,\n    stickyHeaderIndices: Array<number>,\n    stickyIndicesFromProps: Set<number>,\n    first: number,\n    last: number,\n    inversionStyle: StyleProp<ViewStyle>,\n  ) {\n    const {\n      CellRendererComponent,\n      ItemSeparatorComponent,\n      ListHeaderComponent,\n      ListItemComponent,\n      data,\n      debug,\n      getItem,\n      getItemCount,\n      getItemLayout,\n      horizontal,\n      renderItem,\n    } = this.props;\n    const stickyOffset = ListHeaderComponent ? 1 : 0;\n    const end = getItemCount(data) - 1;\n    let prevCellKey;\n    last = Math.min(end, last);\n\n    for (let ii = first; ii <= last; ii++) {\n      const item = getItem(data, ii);\n      const key = VirtualizedList._keyExtractor(item, ii, this.props);\n\n      this._indicesToKeys.set(ii, key);\n      if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n        stickyHeaderIndices.push(cells.length);\n      }\n\n      const shouldListenForLayout =\n        getItemLayout == null || debug || this._fillRateHelper.enabled();\n\n      cells.push(\n        <CellRenderer\n          CellRendererComponent={CellRendererComponent}\n          ItemSeparatorComponent={ii < end ? ItemSeparatorComponent : undefined}\n          ListItemComponent={ListItemComponent}\n          cellKey={key}\n          horizontal={horizontal}\n          index={ii}\n          inversionStyle={inversionStyle}\n          item={item}\n          key={key}\n          prevCellKey={prevCellKey}\n          onUpdateSeparators={this._onUpdateSeparators}\n          onCellFocusCapture={this._onCellFocusCapture}\n          onUnmount={this._onCellUnmount}\n          ref={ref => {\n            this._cellRefs[key] = ref;\n          }}\n          renderItem={renderItem}\n          {...(shouldListenForLayout && {\n            onCellLayout: this._onCellLayout,\n          })}\n        />,\n      );\n      prevCellKey = key;\n    }\n  }\n\n  static _constrainToItemCount(\n    cells: {first: number, last: number},\n    props: VirtualizedListProps,\n  ): {first: number, last: number} {\n    const itemCount = props.getItemCount(props.data);\n    const lastPossibleCellIndex = itemCount - 1;\n\n    // Constraining `last` may significantly shrink the window. Adjust `first`\n    // to expand the window if the new `last` results in a new window smaller\n    // than the number of cells rendered per batch.\n    const maxToRenderPerBatch = maxToRenderPerBatchOrDefault(\n      props.maxToRenderPerBatch,\n    );\n    const maxFirst = Math.max(0, lastPossibleCellIndex - maxToRenderPerBatch);\n\n    return {\n      first: clamp(0, cells.first, maxFirst),\n      last: Math.min(lastPossibleCellIndex, cells.last),\n    };\n  }\n\n  _onUpdateSeparators = (keys: Array<?string>, newProps: Object) => {\n    keys.forEach(key => {\n      const ref = key != null && this._cellRefs[key];\n      ref && ref.updateSeparatorProps(newProps);\n    });\n  };\n\n  _isNestedWithSameOrientation(): boolean {\n    const nestedContext = this.context;\n    return !!(\n      nestedContext &&\n      !!nestedContext.horizontal === horizontalOrDefault(this.props.horizontal)\n    );\n  }\n\n  _getSpacerKey = (isVertical: boolean): string =>\n    isVertical ? 'height' : 'width';\n\n  static _keyExtractor(\n    item: Item,\n    index: number,\n    props: {\n      keyExtractor?: ?(item: Item, index: number) => string,\n      ...\n    },\n  ): string {\n    if (props.keyExtractor != null) {\n      return props.keyExtractor(item, index);\n    }\n\n    const key = defaultKeyExtractor(item, index);\n    if (key === String(index)) {\n      _usedIndexForKey = true;\n      if (item.type && item.type.displayName) {\n        _keylessItemComponentName = item.type.displayName;\n      }\n    }\n    return key;\n  }\n\n  _renderEmptyComponent(\n    element: ExactReactElement_DEPRECATED<any>,\n    inversionStyle: StyleProp<ViewStyle>,\n  ): React.Node {\n    // $FlowFixMe[prop-missing] React.Element internal inspection\n    const isFragment = element.type === React.Fragment;\n\n    if (isFragment) {\n      return element;\n    }\n\n    return cloneElement(element, {\n      onLayout: (event: LayoutChangeEvent) => {\n        this._onLayoutEmpty(event);\n        // $FlowFixMe[prop-missing] React.Element internal inspection\n        if (element.props.onLayout) {\n          element.props.onLayout(event);\n        }\n      },\n      // $FlowFixMe[prop-missing] React.Element internal inspection\n      style: StyleSheet.compose(inversionStyle, element.props.style),\n    });\n  }\n\n  render(): React.Node {\n    this._checkProps(this.props);\n    const {ListEmptyComponent, ListFooterComponent, ListHeaderComponent} =\n      this.props;\n    const {data, horizontal} = this.props;\n    const inversionStyle = this.props.inverted\n      ? horizontalOrDefault(this.props.horizontal)\n        ? styles.horizontallyInverted\n        : styles.verticallyInverted\n      : null;\n    const cells: Array<any | React.Node> = [];\n    const stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices);\n    const stickyHeaderIndices = [];\n\n    // 1. Add cell for ListHeaderComponent\n    if (ListHeaderComponent) {\n      if (stickyIndicesFromProps.has(0)) {\n        stickyHeaderIndices.push(0);\n      }\n      const element = isValidElement(ListHeaderComponent) ? (\n        ListHeaderComponent\n      ) : (\n        // $FlowFixMe[not-a-component]\n        // $FlowFixMe[incompatible-type-arg]\n        <ListHeaderComponent />\n      );\n      cells.push(\n        <VirtualizedListCellContextProvider\n          cellKey={this._getCellKey() + '-header'}\n          key=\"$header\">\n          <View\n            // We expect that header component will be a single native view so make it\n            // not collapsable to avoid this view being flattened and make this assumption\n            // no longer true.\n            collapsable={false}\n            onLayout={this._onLayoutHeader}\n            style={StyleSheet.compose(\n              inversionStyle,\n              this.props.ListHeaderComponentStyle,\n            )}>\n            {\n              // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors\n              element\n            }\n          </View>\n        </VirtualizedListCellContextProvider>,\n      );\n    }\n\n    // 2a. Add a cell for ListEmptyComponent if applicable\n    const itemCount = this.props.getItemCount(data);\n    if (itemCount === 0 && ListEmptyComponent) {\n      const element: ExactReactElement_DEPRECATED<any> = ((isValidElement(\n        ListEmptyComponent,\n      ) ? (\n        ListEmptyComponent\n      ) : (\n        // $FlowFixMe[not-a-component]\n        // $FlowFixMe[incompatible-type-arg]\n        <ListEmptyComponent />\n      )): any);\n      cells.push(\n        <VirtualizedListCellContextProvider\n          cellKey={this._getCellKey() + '-empty'}\n          key=\"$empty\">\n          {this._renderEmptyComponent(element, inversionStyle)}\n        </VirtualizedListCellContextProvider>,\n      );\n    }\n\n    // 2b. Add cells and spacers for each item\n    if (itemCount > 0) {\n      _usedIndexForKey = false;\n      _keylessItemComponentName = '';\n      const spacerKey = this._getSpacerKey(!horizontal);\n\n      const renderRegions = this.state.renderMask.enumerateRegions();\n      const lastRegion = renderRegions[renderRegions.length - 1];\n      const lastSpacer = lastRegion?.isSpacer ? lastRegion : null;\n\n      for (const section of renderRegions) {\n        if (section.isSpacer) {\n          // Legacy behavior is to avoid spacers when virtualization is\n          // disabled (including head spacers on initial render).\n          if (this.props.disableVirtualization) {\n            continue;\n          }\n\n          // Without getItemLayout, we limit our tail spacer to the _highestMeasuredFrameIndex to\n          // prevent the user for hyperscrolling into un-measured area because otherwise content will\n          // likely jump around as it renders in above the viewport.\n          const isLastSpacer = section === lastSpacer;\n          const constrainToMeasured = isLastSpacer && !this.props.getItemLayout;\n          const last = constrainToMeasured\n            ? clamp(\n                section.first - 1,\n                section.last,\n                this._listMetrics.getHighestMeasuredCellIndex(),\n              )\n            : section.last;\n\n          const firstMetrics = this._listMetrics.getCellMetricsApprox(\n            section.first,\n            this.props,\n          );\n          const lastMetrics = this._listMetrics.getCellMetricsApprox(\n            last,\n            this.props,\n          );\n          const spacerSize =\n            lastMetrics.offset + lastMetrics.length - firstMetrics.offset;\n          cells.push(\n            <View\n              key={`$spacer-${section.first}`}\n              // $FlowFixMe[incompatible-type]\n              style={{[spacerKey]: spacerSize}}\n            />,\n          );\n        } else {\n          this._pushCells(\n            cells,\n            stickyHeaderIndices,\n            stickyIndicesFromProps,\n            section.first,\n            section.last,\n            inversionStyle,\n          );\n        }\n      }\n\n      if (!this._hasWarned.keys && _usedIndexForKey) {\n        console.warn(\n          'VirtualizedList: missing keys for items, make sure to specify a key or id property on each ' +\n            'item or provide a custom keyExtractor.',\n          _keylessItemComponentName,\n        );\n        this._hasWarned.keys = true;\n      }\n    }\n\n    // 3. Add cell for ListFooterComponent\n    if (ListFooterComponent) {\n      const element = isValidElement(ListFooterComponent) ? (\n        ListFooterComponent\n      ) : (\n        // $FlowFixMe[not-a-component]\n        // $FlowFixMe[incompatible-type-arg]\n        <ListFooterComponent />\n      );\n      cells.push(\n        <VirtualizedListCellContextProvider\n          cellKey={this._getFooterCellKey()}\n          key=\"$footer\">\n          <View\n            onLayout={this._onLayoutFooter}\n            style={StyleSheet.compose(\n              inversionStyle,\n              this.props.ListFooterComponentStyle,\n            )}>\n            {\n              // $FlowFixMe[incompatible-type] - Typing ReactNativeComponent revealed errors\n              element\n            }\n          </View>\n        </VirtualizedListCellContextProvider>,\n      );\n    }\n\n    // 4. Render the ScrollView\n    const scrollProps = {\n      ...this.props,\n      onContentSizeChange: this._onContentSizeChange,\n      onLayout: this._onLayout,\n      onScroll: this._onScroll,\n      onScrollBeginDrag: this._onScrollBeginDrag,\n      onScrollEndDrag: this._onScrollEndDrag,\n      onMomentumScrollBegin: this._onMomentumScrollBegin,\n      onMomentumScrollEnd: this._onMomentumScrollEnd,\n      // iOS/macOS requires a non-zero scrollEventThrottle to fire more than a\n      // single notification while scrolling. This will otherwise no-op.\n      scrollEventThrottle: this.props.scrollEventThrottle ?? 0.0001,\n      invertStickyHeaders:\n        this.props.invertStickyHeaders !== undefined\n          ? this.props.invertStickyHeaders\n          : this.props.inverted,\n      stickyHeaderIndices,\n      style: inversionStyle\n        ? [inversionStyle, this.props.style]\n        : this.props.style,\n      isInvertedVirtualizedList: this.props.inverted,\n      maintainVisibleContentPosition:\n        this.props.maintainVisibleContentPosition != null\n          ? {\n              ...this.props.maintainVisibleContentPosition,\n              // Adjust index to account for ListHeaderComponent.\n              minIndexForVisible:\n                this.props.maintainVisibleContentPosition.minIndexForVisible +\n                (this.props.ListHeaderComponent ? 1 : 0),\n            }\n          : undefined,\n    };\n\n    this._hasMore = this.state.cellsAroundViewport.last < itemCount - 1;\n\n    const innerRet = (\n      <VirtualizedListContextProvider\n        value={{\n          cellKey: null,\n          getScrollMetrics: this._getScrollMetrics,\n          horizontal: horizontalOrDefault(this.props.horizontal),\n          getOutermostParentListRef: this._getOutermostParentListRef,\n          registerAsNestedChild: this._registerAsNestedChild,\n          unregisterAsNestedChild: this._unregisterAsNestedChild,\n        }}>\n        {cloneElement(\n          (\n            this.props.renderScrollComponent ||\n            this._defaultRenderScrollComponent\n          )(\n            // $FlowExpectedError[prop-missing] scrollProps is a superset of ScrollViewProps\n            scrollProps,\n          ) as ExactReactElement_DEPRECATED<any>,\n          {\n            ref: this._captureScrollRef,\n          },\n          cells,\n        )}\n      </VirtualizedListContextProvider>\n    );\n    let ret: React.Node = innerRet;\n    if (__DEV__) {\n      ret = (\n        <ScrollView.Context.Consumer>\n          {scrollContext => {\n            if (\n              scrollContext != null &&\n              !scrollContext.horizontal ===\n                !horizontalOrDefault(this.props.horizontal) &&\n              !this._hasWarned.nesting &&\n              this.context == null &&\n              this.props.scrollEnabled !== false\n            ) {\n              console.error(\n                'VirtualizedLists should never be nested inside plain ScrollViews with the same ' +\n                  'orientation because it can break windowing and other functionality - use another ' +\n                  'VirtualizedList-backed container instead.',\n              );\n              this._hasWarned.nesting = true;\n            }\n            return innerRet;\n          }}\n        </ScrollView.Context.Consumer>\n      );\n    }\n    if (this.props.debug) {\n      return (\n        <View style={styles.debug}>\n          {ret}\n          {this._renderDebugOverlay()}\n        </View>\n      );\n    } else {\n      return ret;\n    }\n  }\n\n  componentDidUpdate(prevProps: VirtualizedListProps) {\n    const {data, extraData, getItemLayout} = this.props;\n    if (data !== prevProps.data || extraData !== prevProps.extraData) {\n      // clear the viewableIndices cache to also trigger\n      // the onViewableItemsChanged callback with the new data\n      this._viewabilityTuples.forEach(tuple => {\n        tuple.viewabilityHelper.resetViewableIndices();\n      });\n    }\n    // The `this._hiPriInProgress` is guaranteeing a hiPri cell update will only happen\n    // once per fiber update. The `_scheduleCellsToRenderUpdate` will set it to true\n    // if a hiPri update needs to perform. If `componentDidUpdate` is triggered with\n    // `this._hiPriInProgress=true`, means it's triggered by the hiPri update. The\n    // `_scheduleCellsToRenderUpdate` will check this condition and not perform\n    // another hiPri update.\n    const hiPriInProgress = this._hiPriInProgress;\n    this._scheduleCellsToRenderUpdate();\n    // Make sure setting `this._hiPriInProgress` back to false after `componentDidUpdate`\n    // is triggered with `this._hiPriInProgress = true`\n    if (hiPriInProgress) {\n      this._hiPriInProgress = false;\n    }\n\n    // We only call `onEndReached` after we render the last cell, but when\n    // getItemLayout is present, we can scroll past the last rendered cell, and\n    // never trigger a new layout or bounds change, so we need to check again\n    // after rendering more cells.\n    if (getItemLayout != null) {\n      this._maybeCallOnEdgeReached();\n    }\n  }\n\n  _cellRefs: {[string]: null | CellRenderer<any>} = {};\n  _fillRateHelper: FillRateHelper;\n  _listMetrics: ListMetricsAggregator = new ListMetricsAggregator();\n  _footerLength = 0;\n  // Used for preventing scrollToIndex from being called multiple times for initialScrollIndex\n  _hasTriggeredInitialScrollToIndex = false;\n  _hasInteracted = false;\n  _hasMore = false;\n  _hasWarned: {[string]: boolean} = {};\n  _headerLength = 0;\n  _hiPriInProgress: boolean = false; // flag to prevent infinite hiPri cell limit update\n  _indicesToKeys: Map<number, string> = new Map();\n  _lastFocusedCellKey: ?string = null;\n  _nestedChildLists: ChildListCollection<VirtualizedList> =\n    new ChildListCollection();\n  _offsetFromParentVirtualizedList: number = 0;\n  _pendingViewabilityUpdate: boolean = false;\n  _prevParentOffset: number = 0;\n  _scrollMetrics: {\n    dOffset: number,\n    dt: number,\n    offset: number,\n    timestamp: number,\n    velocity: number,\n    visibleLength: number,\n    zoomScale: number,\n  } = {\n    dOffset: 0,\n    dt: 10,\n    offset: 0,\n    timestamp: 0,\n    velocity: 0,\n    visibleLength: 0,\n    zoomScale: 1,\n  };\n  _scrollRef: ?React.ElementRef<typeof ScrollView> = null;\n  _sentStartForContentLength = 0;\n  _sentEndForContentLength = 0;\n  _updateCellsToRenderTimeoutID: ?TimeoutID = null;\n  _viewabilityTuples: Array<ViewabilityHelperCallbackTuple> = [];\n\n  _captureScrollRef = (ref: ?React.ElementRef<typeof ScrollView>) => {\n    this._scrollRef = ref;\n  };\n\n  _computeBlankness() {\n    this._fillRateHelper.computeBlankness(\n      this.props,\n      this.state.cellsAroundViewport,\n      this._scrollMetrics,\n    );\n  }\n\n  /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's\n   * LTI update could not be added via codemod */\n  _defaultRenderScrollComponent = props => {\n    const onRefresh = props.onRefresh;\n    if (this._isNestedWithSameOrientation()) {\n      // Prevent VirtualizedList._onContentSizeChange from being triggered by a bubbling onContentSizeChange event.\n      // This could lead to internal inconsistencies within VirtualizedList.\n      const {onContentSizeChange, ...otherProps} = props;\n      return <View {...otherProps} />;\n    } else if (onRefresh) {\n      invariant(\n        typeof props.refreshing === 'boolean',\n        '`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `' +\n          JSON.stringify(props.refreshing ?? 'undefined') +\n          '`',\n      );\n      return (\n        // $FlowFixMe[prop-missing] Invalid prop usage\n        // $FlowFixMe[incompatible-use]\n        <ScrollView\n          {...props}\n          refreshControl={\n            props.refreshControl == null ? (\n              <RefreshControl\n                // $FlowFixMe[incompatible-type]\n                refreshing={props.refreshing}\n                onRefresh={onRefresh}\n                progressViewOffset={props.progressViewOffset}\n              />\n            ) : (\n              props.refreshControl\n            )\n          }\n        />\n      );\n    } else {\n      // $FlowFixMe[prop-missing] Invalid prop usage\n      // $FlowFixMe[incompatible-use]\n      return <ScrollView {...props} />;\n    }\n  };\n\n  _onCellLayout = (\n    e: LayoutChangeEvent,\n    cellKey: string,\n    cellIndex: number,\n  ): void => {\n    const layoutHasChanged = this._listMetrics.notifyCellLayout({\n      cellIndex,\n      cellKey,\n      layout: e.nativeEvent.layout,\n      orientation: this._orientation(),\n    });\n\n    if (layoutHasChanged) {\n      this._scheduleCellsToRenderUpdate();\n    }\n\n    this._triggerRemeasureForChildListsInCell(cellKey);\n    this._computeBlankness();\n    this._updateViewableItems(this.props, this.state.cellsAroundViewport);\n  };\n\n  _onCellFocusCapture = (cellKey: string) => {\n    this._lastFocusedCellKey = cellKey;\n    if (ReactNativeFeatureFlags.deferFlatListFocusChangeRenderUpdate()) {\n      // Schedule the cells to render update the same way we handle scroll or layout events.\n      this._scheduleCellsToRenderUpdate();\n    } else {\n      this._updateCellsToRender();\n    }\n  };\n\n  _onCellUnmount = (cellKey: string) => {\n    delete this._cellRefs[cellKey];\n    this._listMetrics.notifyCellUnmounted(cellKey);\n  };\n\n  _triggerRemeasureForChildListsInCell(cellKey: string): void {\n    this._nestedChildLists.forEachInCell(cellKey, childList => {\n      childList.measureLayoutRelativeToContainingList();\n    });\n  }\n\n  measureLayoutRelativeToContainingList(): void {\n    // TODO (T35574538): findNodeHandle sometimes crashes with \"Unable to find\n    // node on an unmounted component\" during scrolling\n    try {\n      if (!this._scrollRef) {\n        return;\n      }\n      // We are assuming that getOutermostParentListRef().getScrollRef()\n      // is a non-null reference to a ScrollView\n      this._scrollRef.measureLayout(\n        this.context.getOutermostParentListRef().getScrollRef(),\n        (x, y, width, height) => {\n          this._offsetFromParentVirtualizedList = this._selectOffset({x, y});\n          this._listMetrics.notifyListContentLayout({\n            layout: {width, height},\n            orientation: this._orientation(),\n          });\n          const scrollMetrics = this._convertParentScrollMetrics(\n            this.context.getScrollMetrics(),\n          );\n\n          const metricsChanged =\n            this._scrollMetrics.visibleLength !== scrollMetrics.visibleLength ||\n            this._scrollMetrics.offset !== scrollMetrics.offset;\n\n          if (metricsChanged) {\n            this._scrollMetrics.visibleLength = scrollMetrics.visibleLength;\n            this._scrollMetrics.offset = scrollMetrics.offset;\n\n            // If metrics of the scrollView changed, then we triggered remeasure for child list\n            // to ensure VirtualizedList has the right information.\n            this._nestedChildLists.forEach(childList => {\n              childList.measureLayoutRelativeToContainingList();\n            });\n          }\n        },\n        error => {\n          console.warn(\n            \"VirtualizedList: Encountered an error while measuring a list's\" +\n              ' offset from its containing VirtualizedList.',\n          );\n        },\n      );\n    } catch (error) {\n      console.warn(\n        'measureLayoutRelativeToContainingList threw an error',\n        error.stack,\n      );\n    }\n  }\n\n  _onLayout = (e: LayoutChangeEvent) => {\n    if (this._isNestedWithSameOrientation()) {\n      // Need to adjust our scroll metrics to be relative to our containing\n      // VirtualizedList before we can make claims about list item viewability\n      this.measureLayoutRelativeToContainingList();\n    } else {\n      this._scrollMetrics.visibleLength = this._selectLength(\n        e.nativeEvent.layout,\n      );\n    }\n    this.props.onLayout && this.props.onLayout(e);\n    this._scheduleCellsToRenderUpdate();\n    this._maybeCallOnEdgeReached();\n  };\n\n  _onLayoutEmpty = (e: LayoutChangeEvent) => {\n    this.props.onLayout && this.props.onLayout(e);\n  };\n\n  _getFooterCellKey(): string {\n    return this._getCellKey() + '-footer';\n  }\n\n  _onLayoutFooter = (e: LayoutChangeEvent) => {\n    this._triggerRemeasureForChildListsInCell(this._getFooterCellKey());\n    this._footerLength = this._selectLength(e.nativeEvent.layout);\n  };\n\n  _onLayoutHeader = (e: LayoutChangeEvent) => {\n    this._headerLength = this._selectLength(e.nativeEvent.layout);\n  };\n\n  // $FlowFixMe[missing-local-annot]\n  _renderDebugOverlay() {\n    const normalize =\n      this._scrollMetrics.visibleLength /\n      (this._listMetrics.getContentLength() || 1);\n    const framesInLayout = [];\n    const itemCount = this.props.getItemCount(this.props.data);\n    for (let ii = 0; ii < itemCount; ii++) {\n      const frame = this._listMetrics.getCellMetricsApprox(ii, this.props);\n      if (frame.isMounted) {\n        framesInLayout.push(frame);\n      }\n    }\n    const windowTop = this._listMetrics.getCellMetricsApprox(\n      this.state.cellsAroundViewport.first,\n      this.props,\n    ).offset;\n    const frameLast = this._listMetrics.getCellMetricsApprox(\n      this.state.cellsAroundViewport.last,\n      this.props,\n    );\n    const windowLen = frameLast.offset + frameLast.length - windowTop;\n    const visTop = this._scrollMetrics.offset;\n    const visLen = this._scrollMetrics.visibleLength;\n\n    return (\n      <View style={[styles.debugOverlayBase, styles.debugOverlay]}>\n        {framesInLayout.map((f, ii) => (\n          <View\n            key={'f' + ii}\n            style={[\n              styles.debugOverlayBase,\n              styles.debugOverlayFrame,\n              {\n                top: f.offset * normalize,\n                height: f.length * normalize,\n              },\n            ]}\n          />\n        ))}\n        <View\n          style={[\n            styles.debugOverlayBase,\n            styles.debugOverlayFrameLast,\n            {\n              top: windowTop * normalize,\n              height: windowLen * normalize,\n            },\n          ]}\n        />\n        <View\n          style={[\n            styles.debugOverlayBase,\n            styles.debugOverlayFrameVis,\n            {\n              top: visTop * normalize,\n              height: visLen * normalize,\n            },\n          ]}\n        />\n      </View>\n    );\n  }\n\n  _selectLength(\n    metrics: $ReadOnly<{\n      height: number,\n      width: number,\n      ...\n    }>,\n  ): number {\n    return !horizontalOrDefault(this.props.horizontal)\n      ? metrics.height\n      : metrics.width;\n  }\n\n  _selectOffset({x, y}: $ReadOnly<{x: number, y: number, ...}>): number {\n    return this._orientation().horizontal ? x : y;\n  }\n\n  _orientation(): ListOrientation {\n    return {\n      horizontal: horizontalOrDefault(this.props.horizontal),\n      rtl: I18nManager.isRTL,\n    };\n  }\n\n  _maybeCallOnEdgeReached() {\n    const {\n      data,\n      getItemCount,\n      onStartReached,\n      onStartReachedThreshold,\n      onEndReached,\n      onEndReachedThreshold,\n    } = this.props;\n    // Wait until we have real metrics\n    if (\n      !this._listMetrics.hasContentLength() ||\n      this._scrollMetrics.visibleLength === 0\n    ) {\n      return;\n    }\n\n    // If we have any pending scroll updates it means that the scroll metrics\n    // are out of date and we should not call any of the edge reached callbacks.\n    if (this.state.pendingScrollUpdateCount > 0) {\n      return;\n    }\n\n    const {visibleLength, offset} = this._scrollMetrics;\n    let distanceFromStart = offset;\n    let distanceFromEnd =\n      this._listMetrics.getContentLength() - visibleLength - offset;\n\n    // Especially when oERT is zero it's necessary to 'floor' very small distance values to be 0\n    // since debouncing causes us to not fire this event for every single \"pixel\" we scroll and can thus\n    // be at the edge of the list with a distance approximating 0 but not quite there.\n    if (distanceFromStart < ON_EDGE_REACHED_EPSILON) {\n      distanceFromStart = 0;\n    }\n    if (distanceFromEnd < ON_EDGE_REACHED_EPSILON) {\n      distanceFromEnd = 0;\n    }\n\n    // TODO: T121172172 Look into why we're \"defaulting\" to a threshold of 2px\n    // when oERT is not present (different from 2 viewports used elsewhere)\n    const DEFAULT_THRESHOLD_PX = 2;\n\n    const startThreshold =\n      onStartReachedThreshold != null\n        ? onStartReachedThreshold * visibleLength\n        : DEFAULT_THRESHOLD_PX;\n    const endThreshold =\n      onEndReachedThreshold != null\n        ? onEndReachedThreshold * visibleLength\n        : DEFAULT_THRESHOLD_PX;\n    const isWithinStartThreshold = distanceFromStart <= startThreshold;\n    const isWithinEndThreshold = distanceFromEnd <= endThreshold;\n\n    // First check if the user just scrolled within the end threshold\n    // and call onEndReached only once for a given content length,\n    // and only if onStartReached is not being executed\n    if (\n      onEndReached &&\n      this.state.cellsAroundViewport.last === getItemCount(data) - 1 &&\n      isWithinEndThreshold &&\n      this._listMetrics.getContentLength() !== this._sentEndForContentLength\n    ) {\n      this._sentEndForContentLength = this._listMetrics.getContentLength();\n      onEndReached({distanceFromEnd});\n    }\n\n    // Next check if the user just scrolled within the start threshold\n    // and call onStartReached only once for a given content length,\n    // and only if onEndReached is not being executed\n    if (\n      onStartReached != null &&\n      this.state.cellsAroundViewport.first === 0 &&\n      isWithinStartThreshold &&\n      this._listMetrics.getContentLength() !== this._sentStartForContentLength\n    ) {\n      this._sentStartForContentLength = this._listMetrics.getContentLength();\n      onStartReached({distanceFromStart});\n    }\n\n    // If the user scrolls away from the start or end and back again,\n    // cause onStartReached or onEndReached to be triggered again\n    if (!isWithinStartThreshold) {\n      this._sentStartForContentLength = 0;\n    }\n    if (!isWithinEndThreshold) {\n      this._sentEndForContentLength = 0;\n    }\n  }\n\n  _onContentSizeChange = (width: number, height: number) => {\n    this._listMetrics.notifyListContentLayout({\n      layout: {width, height},\n      orientation: this._orientation(),\n    });\n\n    this._maybeScrollToInitialScrollIndex(width, height);\n\n    if (this.props.onContentSizeChange) {\n      this.props.onContentSizeChange(width, height);\n    }\n    this._scheduleCellsToRenderUpdate();\n    this._maybeCallOnEdgeReached();\n  };\n\n  /**\n   * Scroll to a specified `initialScrollIndex` prop after the ScrollView\n   * content has been laid out, if it is still valid. Only a single scroll is\n   * triggered throughout the lifetime of the list.\n   */\n  _maybeScrollToInitialScrollIndex(\n    contentWidth: number,\n    contentHeight: number,\n  ) {\n    if (\n      contentWidth > 0 &&\n      contentHeight > 0 &&\n      this.props.initialScrollIndex != null &&\n      this.props.initialScrollIndex > 0 &&\n      !this._hasTriggeredInitialScrollToIndex\n    ) {\n      if (this.props.contentOffset == null) {\n        if (\n          this.props.initialScrollIndex <\n          this.props.getItemCount(this.props.data)\n        ) {\n          this.scrollToIndex({\n            animated: false,\n            index: nullthrows(this.props.initialScrollIndex),\n          });\n        } else {\n          this.scrollToEnd({animated: false});\n        }\n      }\n      this._hasTriggeredInitialScrollToIndex = true;\n    }\n  }\n\n  /* Translates metrics from a scroll event in a parent VirtualizedList into\n   * coordinates relative to the child list.\n   */\n  _convertParentScrollMetrics = (metrics: {\n    visibleLength: number,\n    offset: number,\n    ...\n  }): $FlowFixMe => {\n    // Offset of the top of the nested list relative to the top of its parent's viewport\n    const offset = metrics.offset - this._offsetFromParentVirtualizedList;\n    // Child's visible length is the same as its parent's\n    const visibleLength = metrics.visibleLength;\n    const dOffset = offset - this._scrollMetrics.offset;\n    const contentLength = this._listMetrics.getContentLength();\n\n    return {\n      visibleLength,\n      contentLength,\n      offset,\n      dOffset,\n    };\n  };\n\n  unstable_onScroll(e: Object) {\n    this._onScroll(e);\n  }\n\n  _onScroll = (e: Object) => {\n    this._nestedChildLists.forEach(childList => {\n      childList._onScroll(e);\n    });\n    if (this.props.onScroll) {\n      this.props.onScroll(e);\n    }\n    const timestamp = e.timeStamp;\n    let visibleLength = this._selectLength(e.nativeEvent.layoutMeasurement);\n    let contentLength = this._selectLength(e.nativeEvent.contentSize);\n    let offset = this._offsetFromScrollEvent(e);\n    let dOffset = offset - this._scrollMetrics.offset;\n\n    if (this._isNestedWithSameOrientation()) {\n      if (this._listMetrics.getContentLength() === 0) {\n        // Ignore scroll events until onLayout has been called and we\n        // know our offset from our offset from our parent\n        return;\n      }\n      ({visibleLength, contentLength, offset, dOffset} =\n        this._convertParentScrollMetrics({\n          visibleLength,\n          offset,\n        }));\n    }\n\n    const dt = this._scrollMetrics.timestamp\n      ? Math.max(1, timestamp - this._scrollMetrics.timestamp)\n      : 1;\n    const velocity = dOffset / dt;\n\n    if (\n      dt > 500 &&\n      this._scrollMetrics.dt > 500 &&\n      contentLength > 5 * visibleLength &&\n      !this._hasWarned.perf\n    ) {\n      infoLog(\n        'VirtualizedList: You have a large list that is slow to update - make sure your ' +\n          'renderItem function renders components that follow React performance best practices ' +\n          'like PureComponent, shouldComponentUpdate, etc.',\n        {dt, prevDt: this._scrollMetrics.dt, contentLength},\n      );\n      this._hasWarned.perf = true;\n    }\n\n    // For invalid negative values (w/ RTL), set this to 1.\n    const zoomScale = e.nativeEvent.zoomScale < 0 ? 1 : e.nativeEvent.zoomScale;\n    this._scrollMetrics = {\n      dt,\n      dOffset,\n      offset,\n      timestamp,\n      velocity,\n      visibleLength,\n      zoomScale,\n    };\n    if (this.state.pendingScrollUpdateCount > 0) {\n      this.setState<'pendingScrollUpdateCount'>(state => ({\n        pendingScrollUpdateCount: state.pendingScrollUpdateCount - 1,\n      }));\n    }\n    this._updateViewableItems(this.props, this.state.cellsAroundViewport);\n    if (!this.props) {\n      return;\n    }\n    this._maybeCallOnEdgeReached();\n    if (velocity !== 0) {\n      this._fillRateHelper.activate();\n    }\n    this._computeBlankness();\n    this._scheduleCellsToRenderUpdate();\n  };\n\n  _offsetFromScrollEvent(e: ScrollEvent): number {\n    const {contentOffset, contentSize, layoutMeasurement} = e.nativeEvent;\n    const {horizontal, rtl} = this._orientation();\n    if (horizontal && rtl) {\n      return (\n        this._selectLength(contentSize) -\n        (this._selectOffset(contentOffset) +\n          this._selectLength(layoutMeasurement))\n      );\n    } else {\n      return this._selectOffset(contentOffset);\n    }\n  }\n\n  _scheduleCellsToRenderUpdate() {\n    // Only trigger high-priority updates if we've actually rendered cells,\n    // and with that size estimate, accurately compute how many cells we should render.\n    // Otherwise, it would just render as many cells as it can (of zero dimension),\n    // each time through attempting to render more (limited by maxToRenderPerBatch),\n    // starving the renderer from actually laying out the objects and computing _averageCellLength.\n    // If this is triggered in an `componentDidUpdate` followed by a hiPri cellToRenderUpdate\n    // We shouldn't do another hipri cellToRenderUpdate\n    if (\n      (this._listMetrics.getAverageCellLength() > 0 ||\n        this.props.getItemLayout != null) &&\n      this._shouldRenderWithPriority() &&\n      !this._hiPriInProgress\n    ) {\n      this._hiPriInProgress = true;\n      // Don't worry about interactions when scrolling quickly; focus on filling content as fast\n      // as possible.\n      if (this._updateCellsToRenderTimeoutID != null) {\n        clearTimeout(this._updateCellsToRenderTimeoutID);\n        this._updateCellsToRenderTimeoutID = null;\n      }\n      this._updateCellsToRender();\n      return;\n    } else {\n      if (this._updateCellsToRenderTimeoutID == null) {\n        this._updateCellsToRenderTimeoutID = setTimeout(() => {\n          this._updateCellsToRenderTimeoutID = null;\n          this._updateCellsToRender();\n        }, this.props.updateCellsBatchingPeriod ?? 50);\n      }\n    }\n  }\n\n  _shouldRenderWithPriority(): boolean {\n    const {first, last} = this.state.cellsAroundViewport;\n    const {offset, visibleLength, velocity} = this._scrollMetrics;\n    const itemCount = this.props.getItemCount(this.props.data);\n    let hiPri = false;\n    const onStartReachedThreshold = onStartReachedThresholdOrDefault(\n      this.props.onStartReachedThreshold,\n    );\n    const onEndReachedThreshold = onEndReachedThresholdOrDefault(\n      this.props.onEndReachedThreshold,\n    );\n    // Mark as high priority if we're close to the start of the first item\n    // But only if there are items before the first rendered item\n    if (first > 0) {\n      const distTop =\n        offset -\n        this._listMetrics.getCellMetricsApprox(first, this.props).offset;\n      hiPri =\n        distTop < 0 ||\n        (velocity < -2 &&\n          distTop <\n            getScrollingThreshold(onStartReachedThreshold, visibleLength));\n    }\n    // Mark as high priority if we're close to the end of the last item\n    // But only if there are items after the last rendered item\n    if (!hiPri && last >= 0 && last < itemCount - 1) {\n      const distBottom =\n        this._listMetrics.getCellMetricsApprox(last, this.props).offset -\n        (offset + visibleLength);\n      hiPri =\n        distBottom < 0 ||\n        (velocity > 2 &&\n          distBottom <\n            getScrollingThreshold(onEndReachedThreshold, visibleLength));\n    }\n\n    return hiPri;\n  }\n\n  unstable_onScrollBeginDrag(e: ScrollEvent) {\n    this._onScrollBeginDrag(e);\n  }\n\n  _onScrollBeginDrag = (e: ScrollEvent): void => {\n    this._nestedChildLists.forEach(childList => {\n      childList._onScrollBeginDrag(e);\n    });\n    this._viewabilityTuples.forEach(tuple => {\n      tuple.viewabilityHelper.recordInteraction();\n    });\n    this._hasInteracted = true;\n    this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n  };\n\n  unstable_onScrollEndDrag(e: ScrollEvent) {\n    this._onScrollEndDrag(e);\n  }\n\n  _onScrollEndDrag = (e: ScrollEvent): void => {\n    this._nestedChildLists.forEach(childList => {\n      childList._onScrollEndDrag(e);\n    });\n    const {velocity} = e.nativeEvent;\n    if (velocity) {\n      this._scrollMetrics.velocity = this._selectOffset(velocity);\n    }\n    this._computeBlankness();\n    this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n  };\n\n  unstable_onMomentumScrollBegin(e: ScrollEvent) {\n    this._onMomentumScrollBegin(e);\n  }\n\n  _onMomentumScrollBegin = (e: ScrollEvent): void => {\n    this._nestedChildLists.forEach(childList => {\n      childList._onMomentumScrollBegin(e);\n    });\n    this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n  };\n\n  unstable_onMomentumScrollEnd(e: ScrollEvent) {\n    this._onMomentumScrollEnd(e);\n  }\n\n  _onMomentumScrollEnd = (e: ScrollEvent): void => {\n    this._nestedChildLists.forEach(childList => {\n      childList._onMomentumScrollEnd(e);\n    });\n    this._scrollMetrics.velocity = 0;\n    this._computeBlankness();\n    this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n  };\n\n  _updateCellsToRender = () => {\n    this._updateViewableItems(this.props, this.state.cellsAroundViewport);\n\n    this.setState<'cellsAroundViewport' | 'renderMask'>((state, props) => {\n      const cellsAroundViewport = this._adjustCellsAroundViewport(\n        props,\n        state.cellsAroundViewport,\n        state.pendingScrollUpdateCount,\n      );\n      const renderMask = VirtualizedList._createRenderMask(\n        props,\n        cellsAroundViewport,\n        this._getNonViewportRenderRegions(props),\n      );\n\n      if (\n        cellsAroundViewport.first === state.cellsAroundViewport.first &&\n        cellsAroundViewport.last === state.cellsAroundViewport.last &&\n        renderMask.equals(state.renderMask)\n      ) {\n        return null;\n      }\n\n      return {cellsAroundViewport, renderMask};\n    });\n  };\n\n  _createViewToken = (\n    index: number,\n    isViewable: boolean,\n    props: CellMetricProps,\n    // $FlowFixMe[missing-local-annot]\n  ) => {\n    const {data, getItem} = props;\n    const item = getItem(data, index);\n    return {\n      index,\n      item,\n      key: VirtualizedList._keyExtractor(item, index, props),\n      isViewable,\n    };\n  };\n\n  __getListMetrics(): ListMetricsAggregator {\n    return this._listMetrics;\n  }\n\n  _getNonViewportRenderRegions = (\n    props: CellMetricProps,\n  ): $ReadOnlyArray<{\n    first: number,\n    last: number,\n  }> => {\n    // Keep a viewport's worth of content around the last focused cell to allow\n    // random navigation around it without any blanking. E.g. tabbing from one\n    // focused item out of viewport to another.\n    if (\n      !(this._lastFocusedCellKey && this._cellRefs[this._lastFocusedCellKey])\n    ) {\n      return [];\n    }\n\n    const lastFocusedCellRenderer = this._cellRefs[this._lastFocusedCellKey];\n    const focusedCellIndex = lastFocusedCellRenderer.props.index;\n    const itemCount = props.getItemCount(props.data);\n\n    // The last cell we rendered may be at a new index. Bail if we don't know\n    // where it is.\n    if (\n      focusedCellIndex >= itemCount ||\n      VirtualizedList._getItemKey(props, focusedCellIndex) !==\n        this._lastFocusedCellKey\n    ) {\n      return [];\n    }\n\n    let first = focusedCellIndex;\n    let heightOfCellsBeforeFocused = 0;\n    for (\n      let i = first - 1;\n      i >= 0 && heightOfCellsBeforeFocused < this._scrollMetrics.visibleLength;\n      i--\n    ) {\n      first--;\n      heightOfCellsBeforeFocused += this._listMetrics.getCellMetricsApprox(\n        i,\n        props,\n      ).length;\n    }\n\n    let last = focusedCellIndex;\n    let heightOfCellsAfterFocused = 0;\n    for (\n      let i = last + 1;\n      i < itemCount &&\n      heightOfCellsAfterFocused < this._scrollMetrics.visibleLength;\n      i++\n    ) {\n      last++;\n      heightOfCellsAfterFocused += this._listMetrics.getCellMetricsApprox(\n        i,\n        props,\n      ).length;\n    }\n\n    return [{first, last}];\n  };\n\n  _updateViewableItems(\n    props: CellMetricProps,\n    cellsAroundViewport: {first: number, last: number},\n  ) {\n    // If we have any pending scroll updates it means that the scroll metrics\n    // are out of date and we should not call any of the visibility callbacks.\n    if (this.state.pendingScrollUpdateCount > 0) {\n      return;\n    }\n    this._viewabilityTuples.forEach(tuple => {\n      tuple.viewabilityHelper.onUpdate(\n        props,\n        this._scrollMetrics.offset,\n        this._scrollMetrics.visibleLength,\n        this._listMetrics,\n        this._createViewToken,\n        tuple.onViewableItemsChanged,\n        cellsAroundViewport,\n      );\n    });\n  }\n}\n\nconst styles = StyleSheet.create({\n  verticallyInverted:\n    Platform.OS === 'android'\n      ? {transform: [{scale: -1}]}\n      : {transform: [{scaleY: -1}]},\n  horizontallyInverted: {\n    transform: [{scaleX: -1}],\n  },\n  debug: {\n    flex: 1,\n  },\n  debugOverlayBase: {\n    position: 'absolute',\n    top: 0,\n    right: 0,\n  },\n  debugOverlay: {\n    bottom: 0,\n    width: 20,\n    borderColor: 'blue',\n    borderWidth: 1,\n  },\n  debugOverlayFrame: {\n    left: 0,\n    backgroundColor: 'orange',\n  },\n  debugOverlayFrameLast: {\n    left: 0,\n    borderColor: 'green',\n    borderWidth: 2,\n  },\n  debugOverlayFrameVis: {\n    left: 0,\n    borderColor: 'red',\n    borderWidth: 2,\n  },\n});\n\nexport default VirtualizedList;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nfunction clamp(min: number, value: number, max: number): number {\n  if (value < min) {\n    return min;\n  }\n  if (value > max) {\n    return max;\n  }\n  return value;\n}\n\nexport default clamp;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * Intentional info-level logging for clear separation from ad-hoc console debug logging.\n */\nfunction infoLog(...args: Array<mixed>): void {\n  return console.log(...args);\n}\n\nexport default infoLog;\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 * @flow strict\n * @format\n */\n\nimport invariant from 'invariant';\n\nexport type CellRegion = {\n  first: number,\n  last: number,\n  isSpacer: boolean,\n};\n\nexport class CellRenderMask {\n  _numCells: number;\n  _regions: Array<CellRegion>;\n\n  constructor(numCells: number) {\n    invariant(\n      numCells >= 0,\n      'CellRenderMask must contain a non-negative number os cells',\n    );\n\n    this._numCells = numCells;\n\n    if (numCells === 0) {\n      this._regions = [];\n    } else {\n      this._regions = [\n        {\n          first: 0,\n          last: numCells - 1,\n          isSpacer: true,\n        },\n      ];\n    }\n  }\n\n  enumerateRegions(): $ReadOnlyArray<CellRegion> {\n    return this._regions;\n  }\n\n  addCells(cells: {first: number, last: number}): void {\n    invariant(\n      cells.first >= 0 &&\n        cells.first < this._numCells &&\n        cells.last >= -1 &&\n        cells.last < this._numCells &&\n        cells.last >= cells.first - 1,\n      'CellRenderMask.addCells called with invalid cell range',\n    );\n\n    // VirtualizedList uses inclusive ranges, where zero-count states are\n    // possible. E.g. [0, -1] for no cells, starting at 0.\n    if (cells.last < cells.first) {\n      return;\n    }\n\n    const [firstIntersect, firstIntersectIdx] = this._findRegion(cells.first);\n    const [lastIntersect, lastIntersectIdx] = this._findRegion(cells.last);\n\n    // Fast-path if the cells to add are already all present in the mask. We\n    // will otherwise need to do some mutation.\n    if (firstIntersectIdx === lastIntersectIdx && !firstIntersect.isSpacer) {\n      return;\n    }\n\n    // We need to replace the existing covered regions with 1-3 new regions\n    // depending whether we need to split spacers out of overlapping regions.\n    const newLeadRegion: Array<CellRegion> = [];\n    const newTailRegion: Array<CellRegion> = [];\n    const newMainRegion: CellRegion = {\n      ...cells,\n      isSpacer: false,\n    };\n\n    if (firstIntersect.first < newMainRegion.first) {\n      if (firstIntersect.isSpacer) {\n        newLeadRegion.push({\n          first: firstIntersect.first,\n          last: newMainRegion.first - 1,\n          isSpacer: true,\n        });\n      } else {\n        newMainRegion.first = firstIntersect.first;\n      }\n    }\n\n    if (lastIntersect.last > newMainRegion.last) {\n      if (lastIntersect.isSpacer) {\n        newTailRegion.push({\n          first: newMainRegion.last + 1,\n          last: lastIntersect.last,\n          isSpacer: true,\n        });\n      } else {\n        newMainRegion.last = lastIntersect.last;\n      }\n    }\n\n    const replacementRegions: Array<CellRegion> = [\n      ...newLeadRegion,\n      newMainRegion,\n      ...newTailRegion,\n    ];\n    const numRegionsToDelete = lastIntersectIdx - firstIntersectIdx + 1;\n    this._regions.splice(\n      firstIntersectIdx,\n      numRegionsToDelete,\n      ...replacementRegions,\n    );\n  }\n\n  numCells(): number {\n    return this._numCells;\n  }\n\n  equals(other: CellRenderMask): boolean {\n    return (\n      this._numCells === other._numCells &&\n      this._regions.length === other._regions.length &&\n      this._regions.every(\n        (region, i) =>\n          region.first === other._regions[i].first &&\n          region.last === other._regions[i].last &&\n          region.isSpacer === other._regions[i].isSpacer,\n      )\n    );\n  }\n\n  _findRegion(cellIdx: number): [CellRegion, number] {\n    let firstIdx = 0;\n    let lastIdx = this._regions.length - 1;\n\n    while (firstIdx <= lastIdx) {\n      const middleIdx = Math.floor((firstIdx + lastIdx) / 2);\n      const middleRegion = this._regions[middleIdx];\n\n      if (cellIdx >= middleRegion.first && cellIdx <= middleRegion.last) {\n        return [middleRegion, middleIdx];\n      } else if (cellIdx < middleRegion.first) {\n        lastIdx = middleIdx - 1;\n      } else if (cellIdx > middleRegion.last) {\n        firstIdx = middleIdx + 1;\n      }\n    }\n\n    invariant(false, `A region was not found containing cellIdx ${cellIdx}`);\n  }\n}\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 * @flow strict\n * @format\n */\n\nimport invariant from 'invariant';\n\nexport default class ChildListCollection<TList> {\n  _cellKeyToChildren: Map<string, Set<TList>> = new Map();\n  _childrenToCellKey: Map<TList, string> = new Map();\n\n  add(list: TList, cellKey: string): void {\n    invariant(\n      !this._childrenToCellKey.has(list),\n      'Trying to add already present child list',\n    );\n\n    const cellLists = this._cellKeyToChildren.get(cellKey) ?? new Set();\n    cellLists.add(list);\n    this._cellKeyToChildren.set(cellKey, cellLists);\n\n    this._childrenToCellKey.set(list, cellKey);\n  }\n\n  remove(list: TList): void {\n    const cellKey = this._childrenToCellKey.get(list);\n    invariant(cellKey != null, 'Trying to remove non-present child list');\n    this._childrenToCellKey.delete(list);\n\n    const cellLists = this._cellKeyToChildren.get(cellKey);\n    invariant(cellLists, '_cellKeyToChildren should contain cellKey');\n    cellLists.delete(list);\n\n    if (cellLists.size === 0) {\n      this._cellKeyToChildren.delete(cellKey);\n    }\n  }\n\n  forEach(fn: TList => void): void {\n    for (const listSet of this._cellKeyToChildren.values()) {\n      for (const list of listSet) {\n        fn(list);\n      }\n    }\n  }\n\n  forEachInCell(cellKey: string, fn: TList => void): void {\n    const listSet = this._cellKeyToChildren.get(cellKey) ?? [];\n    for (const list of listSet) {\n      fn(list);\n    }\n  }\n\n  anyInCell(cellKey: string, fn: TList => boolean): boolean {\n    const listSet = this._cellKeyToChildren.get(cellKey) ?? [];\n    for (const list of listSet) {\n      if (fn(list)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  size(): number {\n    return this._childrenToCellKey.size;\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {CellMetricProps} from './ListMetricsAggregator';\n\nimport ListMetricsAggregator from './ListMetricsAggregator';\n\nexport type FillRateInfo = Info;\n\nclass Info {\n  any_blank_count: number = 0;\n  any_blank_ms: number = 0;\n  any_blank_speed_sum: number = 0;\n  mostly_blank_count: number = 0;\n  mostly_blank_ms: number = 0;\n  pixels_blank: number = 0;\n  pixels_sampled: number = 0;\n  pixels_scrolled: number = 0;\n  total_time_spent: number = 0;\n  sample_count: number = 0;\n}\n\nconst DEBUG = false;\n\nlet _listeners: Array<(Info) => void> = [];\nlet _minSampleCount = 10;\nlet _sampleRate = DEBUG ? 1 : null;\n\n/**\n * A helper class for detecting when the maximem fill rate of `VirtualizedList` is exceeded.\n * By default the sampling rate is set to zero and this will do nothing. If you want to collect\n * samples (e.g. to log them), make sure to call `FillRateHelper.setSampleRate(0.0-1.0)`.\n *\n * Listeners and sample rate are global for all `VirtualizedList`s - typical usage will combine with\n * `SceneTracker.getActiveScene` to determine the context of the events.\n */\nclass FillRateHelper {\n  _anyBlankStartTime: ?number = null;\n  _enabled = false;\n  _listMetrics: ListMetricsAggregator;\n  _info: Info = new Info();\n  _mostlyBlankStartTime: ?number = null;\n  _samplesStartTime: ?number = null;\n\n  static addListener(callback: FillRateInfo => void): {\n    remove: () => void,\n    ...\n  } {\n    if (_sampleRate === null) {\n      console.warn('Call `FillRateHelper.setSampleRate` before `addListener`.');\n    }\n    _listeners.push(callback);\n    return {\n      remove: () => {\n        _listeners = _listeners.filter(listener => callback !== listener);\n      },\n    };\n  }\n\n  static setSampleRate(sampleRate: number) {\n    _sampleRate = sampleRate;\n  }\n\n  static setMinSampleCount(minSampleCount: number) {\n    _minSampleCount = minSampleCount;\n  }\n\n  constructor(listMetrics: ListMetricsAggregator) {\n    this._listMetrics = listMetrics;\n    this._enabled = (_sampleRate || 0) > Math.random();\n    this._resetData();\n  }\n\n  activate() {\n    if (this._enabled && this._samplesStartTime == null) {\n      DEBUG && console.debug('FillRateHelper: activate');\n      this._samplesStartTime = global.performance.now();\n    }\n  }\n\n  deactivateAndFlush() {\n    if (!this._enabled) {\n      return;\n    }\n    const start = this._samplesStartTime; // const for flow\n    if (start == null) {\n      DEBUG &&\n        console.debug('FillRateHelper: bail on deactivate with no start time');\n      return;\n    }\n    if (this._info.sample_count < _minSampleCount) {\n      // Don't bother with under-sampled events.\n      this._resetData();\n      return;\n    }\n    const total_time_spent = global.performance.now() - start;\n    const info: any = {\n      ...this._info,\n      total_time_spent,\n    };\n    if (DEBUG) {\n      const derived = {\n        avg_blankness: this._info.pixels_blank / this._info.pixels_sampled,\n        avg_speed: this._info.pixels_scrolled / (total_time_spent / 1000),\n        avg_speed_when_any_blank:\n          this._info.any_blank_speed_sum / this._info.any_blank_count,\n        any_blank_per_min:\n          this._info.any_blank_count / (total_time_spent / 1000 / 60),\n        any_blank_time_frac: this._info.any_blank_ms / total_time_spent,\n        mostly_blank_per_min:\n          this._info.mostly_blank_count / (total_time_spent / 1000 / 60),\n        mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent,\n      };\n      for (const key in derived) {\n        // $FlowFixMe[prop-missing]\n        // $FlowFixMe[invalid-computed-prop]\n        derived[key] = Math.round(1000 * derived[key]) / 1000;\n      }\n      console.debug('FillRateHelper deactivateAndFlush: ', {derived, info});\n    }\n    _listeners.forEach(listener => listener(info));\n    this._resetData();\n  }\n\n  computeBlankness(\n    props: {\n      ...CellMetricProps,\n      initialNumToRender?: ?number,\n      ...\n    },\n    cellsAroundViewport: {\n      first: number,\n      last: number,\n      ...\n    },\n    scrollMetrics: {\n      dOffset: number,\n      offset: number,\n      velocity: number,\n      visibleLength: number,\n      ...\n    },\n  ): number {\n    if (\n      !this._enabled ||\n      props.getItemCount(props.data) === 0 ||\n      cellsAroundViewport.last < cellsAroundViewport.first ||\n      this._samplesStartTime == null\n    ) {\n      return 0;\n    }\n    const {dOffset, offset, velocity, visibleLength} = scrollMetrics;\n\n    // Denominator metrics that we track for all events - most of the time there is no blankness and\n    // we want to capture that.\n    this._info.sample_count++;\n    this._info.pixels_sampled += Math.round(visibleLength);\n    this._info.pixels_scrolled += Math.round(Math.abs(dOffset));\n    const scrollSpeed = Math.round(Math.abs(velocity) * 1000); // px / sec\n\n    // Whether blank now or not, record the elapsed time blank if we were blank last time.\n    const now = global.performance.now();\n    if (this._anyBlankStartTime != null) {\n      this._info.any_blank_ms += now - this._anyBlankStartTime;\n    }\n    this._anyBlankStartTime = null;\n    if (this._mostlyBlankStartTime != null) {\n      this._info.mostly_blank_ms += now - this._mostlyBlankStartTime;\n    }\n    this._mostlyBlankStartTime = null;\n\n    let blankTop = 0;\n    let first = cellsAroundViewport.first;\n    let firstFrame = this._listMetrics.getCellMetrics(first, props);\n    while (\n      first <= cellsAroundViewport.last &&\n      (!firstFrame || !firstFrame.isMounted)\n    ) {\n      firstFrame = this._listMetrics.getCellMetrics(first, props);\n      first++;\n    }\n    // Only count blankTop if we aren't rendering the first item, otherwise we will count the header\n    // as blank.\n    if (firstFrame && first > 0) {\n      blankTop = Math.min(\n        visibleLength,\n        Math.max(0, firstFrame.offset - offset),\n      );\n    }\n    let blankBottom = 0;\n    let last = cellsAroundViewport.last;\n    let lastFrame = this._listMetrics.getCellMetrics(last, props);\n    while (\n      last >= cellsAroundViewport.first &&\n      (!lastFrame || !lastFrame.isMounted)\n    ) {\n      lastFrame = this._listMetrics.getCellMetrics(last, props);\n      last--;\n    }\n    // Only count blankBottom if we aren't rendering the last item, otherwise we will count the\n    // footer as blank.\n    if (lastFrame && last < props.getItemCount(props.data) - 1) {\n      const bottomEdge = lastFrame.offset + lastFrame.length;\n      blankBottom = Math.min(\n        visibleLength,\n        Math.max(0, offset + visibleLength - bottomEdge),\n      );\n    }\n    const pixels_blank = Math.round(blankTop + blankBottom);\n    const blankness = pixels_blank / visibleLength;\n    if (blankness > 0) {\n      this._anyBlankStartTime = now;\n      this._info.any_blank_speed_sum += scrollSpeed;\n      this._info.any_blank_count++;\n      this._info.pixels_blank += pixels_blank;\n      if (blankness > 0.5) {\n        this._mostlyBlankStartTime = now;\n        this._info.mostly_blank_count++;\n      }\n    } else if (scrollSpeed < 0.01 || Math.abs(dOffset) < 1) {\n      this.deactivateAndFlush();\n    }\n    return blankness;\n  }\n\n  enabled(): boolean {\n    return this._enabled;\n  }\n\n  _resetData() {\n    this._anyBlankStartTime = null;\n    this._info = new Info();\n    this._mostlyBlankStartTime = null;\n    this._samplesStartTime = null;\n  }\n}\n\nexport default FillRateHelper;\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 * @flow strict-local\n * @format\n */\n\nimport type {VirtualizedListProps} from './VirtualizedListProps';\nimport type {LayoutRectangle} from 'react-native';\n\nimport {keyExtractor as defaultKeyExtractor} from './VirtualizeUtils';\nimport invariant from 'invariant';\n\nexport type CellMetrics = {\n  /**\n   * Index of the item in the list\n   */\n  index: number,\n  /**\n   * Length of the cell along the scrolling axis\n   */\n  length: number,\n  /**\n   * Distance between this cell and the start of the list along the scrolling\n   * axis\n   */\n  offset: number,\n  /**\n   * Whether the cell is last known to be mounted\n   */\n  isMounted: boolean,\n};\n\n// TODO: `inverted` can be incorporated here if it is moved to an order\n// based implementation instead of transform.\nexport type ListOrientation = {\n  horizontal: boolean,\n  rtl: boolean,\n};\n\n/**\n * Subset of VirtualizedList props needed to calculate cell metrics\n */\nexport type CellMetricProps = {\n  data: VirtualizedListProps['data'],\n  getItemCount: VirtualizedListProps['getItemCount'],\n  getItem: VirtualizedListProps['getItem'],\n  getItemLayout?: VirtualizedListProps['getItemLayout'],\n  keyExtractor?: VirtualizedListProps['keyExtractor'],\n  ...\n};\n\n/**\n * Provides an interface to query information about the metrics of a list and its cells.\n */\nexport default class ListMetricsAggregator {\n  _averageCellLength = 0;\n  _cellMetrics: Map<string, CellMetrics> = new Map();\n  _contentLength: ?number;\n  _highestMeasuredCellIndex = 0;\n  _measuredCellsLength = 0;\n  _measuredCellsCount = 0;\n  _orientation: ListOrientation = {\n    horizontal: false,\n    rtl: false,\n  };\n\n  /**\n   * Notify the ListMetricsAggregator that a cell has been laid out.\n   *\n   * @returns whether the cell layout has changed since last notification\n   */\n  notifyCellLayout({\n    cellIndex,\n    cellKey,\n    orientation,\n    layout,\n  }: {\n    cellIndex: number,\n    cellKey: string,\n    orientation: ListOrientation,\n    layout: LayoutRectangle,\n  }): boolean {\n    this._invalidateIfOrientationChanged(orientation);\n\n    const next: CellMetrics = {\n      index: cellIndex,\n      length: this._selectLength(layout),\n      isMounted: true,\n      offset: this.flowRelativeOffset(layout),\n    };\n    const curr = this._cellMetrics.get(cellKey);\n\n    if (!curr || next.offset !== curr.offset || next.length !== curr.length) {\n      if (curr) {\n        const dLength = next.length - curr.length;\n        this._measuredCellsLength += dLength;\n      } else {\n        this._measuredCellsLength += next.length;\n        this._measuredCellsCount += 1;\n      }\n\n      this._averageCellLength =\n        this._measuredCellsLength / this._measuredCellsCount;\n      this._cellMetrics.set(cellKey, next);\n      this._highestMeasuredCellIndex = Math.max(\n        this._highestMeasuredCellIndex,\n        cellIndex,\n      );\n      return true;\n    } else {\n      curr.isMounted = true;\n      return false;\n    }\n  }\n\n  /**\n   * Notify ListMetricsAggregator that a cell has been unmounted.\n   */\n  notifyCellUnmounted(cellKey: string): void {\n    const curr = this._cellMetrics.get(cellKey);\n    if (curr) {\n      curr.isMounted = false;\n    }\n  }\n\n  /**\n   * Notify ListMetricsAggregator that the lists content container has been laid out.\n   */\n  notifyListContentLayout({\n    orientation,\n    layout,\n  }: {\n    orientation: ListOrientation,\n    layout: $ReadOnly<{width: number, height: number}>,\n  }): void {\n    this._invalidateIfOrientationChanged(orientation);\n    this._contentLength = this._selectLength(layout);\n  }\n\n  /**\n   * Return the average length of the cells which have been measured\n   */\n  getAverageCellLength(): number {\n    return this._averageCellLength;\n  }\n\n  /**\n   * Return the highest measured cell index (or 0 if nothing has been measured\n   * yet)\n   */\n  getHighestMeasuredCellIndex(): number {\n    return this._highestMeasuredCellIndex;\n  }\n\n  /**\n   * Returns the exact metrics of a cell if it has already been laid out,\n   * otherwise an estimate based on the average length of previously measured\n   * cells\n   */\n  getCellMetricsApprox(index: number, props: CellMetricProps): CellMetrics {\n    const frame = this.getCellMetrics(index, props);\n    if (frame && frame.index === index) {\n      // check for invalid frames due to row re-ordering\n      return frame;\n    } else {\n      let offset;\n\n      const highestMeasuredCellIndex = this.getHighestMeasuredCellIndex();\n      if (highestMeasuredCellIndex < index) {\n        // If any of the cells before this one have been laid out already, we\n        // should use that information in the estimations.\n        // This is important because if the list has a header, the initial cell\n        // will have a larger offset that we should take into account here.\n        const highestMeasuredCellFrame = this.getCellMetrics(\n          highestMeasuredCellIndex,\n          props,\n        );\n        if (highestMeasuredCellFrame) {\n          offset =\n            highestMeasuredCellFrame.offset +\n            highestMeasuredCellFrame.length +\n            this._averageCellLength * (index - highestMeasuredCellIndex - 1);\n        }\n      }\n\n      if (offset == null) {\n        offset = this._averageCellLength * index;\n      }\n\n      const {data, getItemCount} = props;\n      invariant(\n        index >= 0 && index < getItemCount(data),\n        'Tried to get frame for out of range index ' + index,\n      );\n      return {\n        length: this._averageCellLength,\n        offset,\n        index,\n        isMounted: false,\n      };\n    }\n  }\n\n  /**\n   * Returns the exact metrics of a cell if it has already been laid out\n   */\n  getCellMetrics(index: number, props: CellMetricProps): ?CellMetrics {\n    const {data, getItem, getItemCount, getItemLayout} = props;\n    invariant(\n      index >= 0 && index < getItemCount(data),\n      'Tried to get metrics for out of range cell index ' + index,\n    );\n    const keyExtractor = props.keyExtractor ?? defaultKeyExtractor;\n    const frame = this._cellMetrics.get(\n      keyExtractor(getItem(data, index), index),\n    );\n    if (frame && frame.index === index) {\n      return frame;\n    }\n\n    if (getItemLayout) {\n      const {length, offset} = getItemLayout(data, index);\n      // TODO: `isMounted` is used for both \"is exact layout\" and \"has been\n      // unmounted\". Should be refactored.\n      return {index, length, offset, isMounted: true};\n    }\n\n    return null;\n  }\n\n  /**\n   * Gets an approximate offset to an item at a given index. Supports\n   * fractional indices.\n   */\n  getCellOffsetApprox(index: number, props: CellMetricProps): number {\n    if (Number.isInteger(index)) {\n      return this.getCellMetricsApprox(index, props).offset;\n    } else {\n      const frameMetrics = this.getCellMetricsApprox(Math.floor(index), props);\n      const remainder = index - Math.floor(index);\n      return frameMetrics.offset + remainder * frameMetrics.length;\n    }\n  }\n\n  /**\n   * Returns the length of all ScrollView content along the scrolling axis.\n   */\n  getContentLength(): number {\n    return this._contentLength ?? 0;\n  }\n\n  /**\n   * Whether a content length has been observed\n   */\n  hasContentLength(): boolean {\n    return this._contentLength != null;\n  }\n\n  /**\n   * Finds the flow-relative offset (e.g. starting from the left in LTR, but\n   * right in RTL) from a layout box.\n   */\n  flowRelativeOffset(\n    layout: LayoutRectangle,\n    referenceContentLength?: ?number,\n  ): number {\n    const {horizontal, rtl} = this._orientation;\n\n    if (horizontal && rtl) {\n      const contentLength = referenceContentLength ?? this._contentLength;\n      invariant(\n        contentLength != null,\n        'ListMetricsAggregator must be notified of list content layout before resolving offsets',\n      );\n      return (\n        contentLength -\n        (this._selectOffset(layout) + this._selectLength(layout))\n      );\n    } else {\n      return this._selectOffset(layout);\n    }\n  }\n\n  /**\n   * Converts a flow-relative offset to a cartesian offset\n   */\n  cartesianOffset(flowRelativeOffset: number): number {\n    const {horizontal, rtl} = this._orientation;\n\n    if (horizontal && rtl) {\n      invariant(\n        this._contentLength != null,\n        'ListMetricsAggregator must be notified of list content layout before resolving offsets',\n      );\n      return this._contentLength - flowRelativeOffset;\n    } else {\n      return flowRelativeOffset;\n    }\n  }\n\n  _invalidateIfOrientationChanged(orientation: ListOrientation): void {\n    if (orientation.rtl !== this._orientation.rtl) {\n      this._cellMetrics.clear();\n    }\n\n    if (orientation.horizontal !== this._orientation.horizontal) {\n      this._averageCellLength = 0;\n      this._highestMeasuredCellIndex = 0;\n      this._measuredCellsLength = 0;\n      this._measuredCellsCount = 0;\n    }\n\n    this._orientation = orientation;\n  }\n\n  _selectLength({\n    width,\n    height,\n  }: $ReadOnly<{width: number, height: number, ...}>): number {\n    return this._orientation.horizontal ? width : height;\n  }\n\n  _selectOffset({x, y}: $ReadOnly<{x: number, y: number, ...}>): number {\n    return this._orientation.horizontal ? x : y;\n  }\n}\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 * @flow strict\n * @format\n */\n\nimport invariant from 'invariant';\nimport * as React from 'react';\n\n/**\n * `setState` is called asynchronously, and should not rely on the value of\n * `this.props` or `this.state`:\n * https://react.dev/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous\n *\n * SafePureComponent adds runtime enforcement, to catch cases where these\n * variables are read in a state updater function, instead of the ones passed\n * in.\n */\nexport default class StateSafePureComponent<\n  Props,\n  State: interface {},\n> extends React.PureComponent<Props, State> {\n  _inAsyncStateUpdate = false;\n\n  constructor(props: Props) {\n    super(props);\n    this._installSetStateHooks();\n  }\n\n  setState<K: $Keys<State>>(\n    partialState: ?(Pick<State, K> | ((State, Props) => ?Pick<State, K>)),\n    callback?: () => mixed,\n  ): void {\n    if (typeof partialState === 'function') {\n      super.setState((state, props) => {\n        this._inAsyncStateUpdate = true;\n        let ret;\n        try {\n          ret = partialState(state, props);\n        } catch (err) {\n          throw err;\n        } finally {\n          this._inAsyncStateUpdate = false;\n        }\n        return ret;\n      }, callback);\n    } else {\n      super.setState(partialState, callback);\n    }\n  }\n\n  _installSetStateHooks() {\n    const that = this;\n    let {props, state} = this;\n\n    Object.defineProperty(this, 'props', {\n      get() {\n        invariant(\n          !that._inAsyncStateUpdate,\n          '\"this.props\" should not be accessed during state updates',\n        );\n        return props;\n      },\n      set(newProps: Props) {\n        props = newProps;\n      },\n    });\n    Object.defineProperty(this, 'state', {\n      get() {\n        invariant(\n          !that._inAsyncStateUpdate,\n          '\"this.state\" should not be acceessed during state updates',\n        );\n        return state;\n      },\n      set(newState: State) {\n        state = newState;\n      },\n    });\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {CellMetricProps} from './ListMetricsAggregator';\n\nimport ListMetricsAggregator from './ListMetricsAggregator';\n\nconst invariant = require('invariant');\n\nexport type ViewToken = {\n  item: any,\n  key: string,\n  index: ?number,\n  isViewable: boolean,\n  section?: any,\n  ...\n};\n\nexport type ViewabilityConfigCallbackPair = {\n  viewabilityConfig: ViewabilityConfig,\n  onViewableItemsChanged: (info: {\n    viewableItems: Array<ViewToken>,\n    changed: Array<ViewToken>,\n    ...\n  }) => void,\n  ...\n};\n\nexport type ViewabilityConfigCallbackPairs =\n  Array<ViewabilityConfigCallbackPair>;\n\nexport type ViewabilityConfig = $ReadOnly<{\n  /**\n   * Minimum amount of time (in milliseconds) that an item must be physically viewable before the\n   * viewability callback will be fired. A high number means that scrolling through content without\n   * stopping will not mark the content as viewable.\n   */\n  minimumViewTime?: number,\n\n  /**\n   * Percent of viewport that must be covered for a partially occluded item to count as\n   * \"viewable\", 0-100. Fully visible items are always considered viewable. A value of 0 means\n   * that a single pixel in the viewport makes the item viewable, and a value of 100 means that\n   * an item must be either entirely visible or cover the entire viewport to count as viewable.\n   */\n  viewAreaCoveragePercentThreshold?: number,\n\n  /**\n   * Similar to `viewAreaPercentThreshold`, but considers the percent of the item that is visible,\n   * rather than the fraction of the viewable area it covers.\n   */\n  itemVisiblePercentThreshold?: number,\n\n  /**\n   * Nothing is considered viewable until the user scrolls or `recordInteraction` is called after\n   * render.\n   */\n  waitForInteraction?: boolean,\n}>;\n\n/**\n * A Utility class for calculating viewable items based on current metrics like scroll position and\n * layout.\n *\n * An item is said to be in a \"viewable\" state when any of the following\n * is true for longer than `minimumViewTime` milliseconds (after an interaction if `waitForInteraction`\n * is true):\n *\n * - Occupying >= `viewAreaCoveragePercentThreshold` of the view area XOR fraction of the item\n *   visible in the view area >= `itemVisiblePercentThreshold`.\n * - Entirely visible on screen\n */\nclass ViewabilityHelper {\n  _config: ViewabilityConfig;\n  _hasInteracted: boolean = false;\n  _timers: Set<number> = new Set();\n  _viewableIndices: Array<number> = [];\n  _viewableItems: Map<string, ViewToken> = new Map();\n\n  constructor(\n    config: ViewabilityConfig = {viewAreaCoveragePercentThreshold: 0},\n  ) {\n    this._config = config;\n  }\n\n  /**\n   * Cleanup, e.g. on unmount. Clears any pending timers.\n   */\n  dispose() {\n    /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This\n     * comment suppresses an error found when Flow v0.63 was deployed. To see\n     * the error delete this comment and run Flow. */\n    this._timers.forEach(clearTimeout);\n  }\n\n  /**\n   * Determines which items are viewable based on the current metrics and config.\n   */\n  computeViewableItems(\n    props: CellMetricProps,\n    scrollOffset: number,\n    viewportHeight: number,\n    listMetrics: ListMetricsAggregator,\n    // Optional optimization to reduce the scan size\n    renderRange?: {\n      first: number,\n      last: number,\n      ...\n    },\n  ): Array<number> {\n    const itemCount = props.getItemCount(props.data);\n    const {itemVisiblePercentThreshold, viewAreaCoveragePercentThreshold} =\n      this._config;\n    const viewAreaMode = viewAreaCoveragePercentThreshold != null;\n    const viewablePercentThreshold = viewAreaMode\n      ? viewAreaCoveragePercentThreshold\n      : itemVisiblePercentThreshold;\n    invariant(\n      viewablePercentThreshold != null &&\n        (itemVisiblePercentThreshold != null) !==\n          (viewAreaCoveragePercentThreshold != null),\n      'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold',\n    );\n    const viewableIndices = [];\n    if (itemCount === 0) {\n      return viewableIndices;\n    }\n    let firstVisible = -1;\n    const {first, last} = renderRange || {first: 0, last: itemCount - 1};\n    if (last >= itemCount) {\n      console.warn(\n        'Invalid render range computing viewability ' +\n          JSON.stringify({renderRange, itemCount}),\n      );\n      return [];\n    }\n    for (let idx = first; idx <= last; idx++) {\n      const metrics = listMetrics.getCellMetrics(idx, props);\n      if (!metrics) {\n        continue;\n      }\n      const top = Math.floor(metrics.offset - scrollOffset);\n      const bottom = Math.floor(top + metrics.length);\n\n      if (top < viewportHeight && bottom > 0) {\n        firstVisible = idx;\n        if (\n          _isViewable(\n            viewAreaMode,\n            viewablePercentThreshold,\n            top,\n            bottom,\n            viewportHeight,\n            metrics.length,\n          )\n        ) {\n          viewableIndices.push(idx);\n        }\n      } else if (firstVisible >= 0) {\n        break;\n      }\n    }\n    return viewableIndices;\n  }\n\n  /**\n   * Figures out which items are viewable and how that has changed from before and calls\n   * `onViewableItemsChanged` as appropriate.\n   */\n  onUpdate(\n    props: CellMetricProps,\n    scrollOffset: number,\n    viewportHeight: number,\n    listMetrics: ListMetricsAggregator,\n    createViewToken: (\n      index: number,\n      isViewable: boolean,\n      props: CellMetricProps,\n    ) => ViewToken,\n    onViewableItemsChanged: ({\n      viewableItems: Array<ViewToken>,\n      changed: Array<ViewToken>,\n      ...\n    }) => void,\n    // Optional optimization to reduce the scan size\n    renderRange?: {\n      first: number,\n      last: number,\n      ...\n    },\n  ): void {\n    const itemCount = props.getItemCount(props.data);\n    if (\n      (this._config.waitForInteraction && !this._hasInteracted) ||\n      itemCount === 0 ||\n      !listMetrics.getCellMetrics(0, props)\n    ) {\n      return;\n    }\n    let viewableIndices: Array<number> = [];\n    if (itemCount) {\n      viewableIndices = this.computeViewableItems(\n        props,\n        scrollOffset,\n        viewportHeight,\n        listMetrics,\n        renderRange,\n      );\n    }\n    if (\n      this._viewableIndices.length === viewableIndices.length &&\n      this._viewableIndices.every((v, ii) => v === viewableIndices[ii])\n    ) {\n      // We might get a lot of scroll events where visibility doesn't change and we don't want to do\n      // extra work in those cases.\n      return;\n    }\n    this._viewableIndices = viewableIndices;\n    if (this._config.minimumViewTime) {\n      const handle: TimeoutID = setTimeout(() => {\n        /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This\n         * comment suppresses an error found when Flow v0.63 was deployed. To\n         * see the error delete this comment and run Flow. */\n        this._timers.delete(handle);\n        this._onUpdateSync(\n          props,\n          viewableIndices,\n          onViewableItemsChanged,\n          createViewToken,\n        );\n      }, this._config.minimumViewTime);\n      /* $FlowFixMe[incompatible-call] (>=0.63.0 site=react_native_fb) This\n       * comment suppresses an error found when Flow v0.63 was deployed. To see\n       * the error delete this comment and run Flow. */\n      this._timers.add(handle);\n    } else {\n      this._onUpdateSync(\n        props,\n        viewableIndices,\n        onViewableItemsChanged,\n        createViewToken,\n      );\n    }\n  }\n\n  /**\n   * clean-up cached _viewableIndices to evaluate changed items on next update\n   */\n  resetViewableIndices() {\n    this._viewableIndices = [];\n  }\n\n  /**\n   * Records that an interaction has happened even if there has been no scroll.\n   */\n  recordInteraction() {\n    this._hasInteracted = true;\n  }\n\n  _onUpdateSync(\n    props: CellMetricProps,\n    viewableIndicesToCheck: Array<number>,\n    onViewableItemsChanged: ({\n      changed: Array<ViewToken>,\n      viewableItems: Array<ViewToken>,\n      ...\n    }) => void,\n    createViewToken: (\n      index: number,\n      isViewable: boolean,\n      props: CellMetricProps,\n    ) => ViewToken,\n  ) {\n    // Filter out indices that have gone out of view since this call was scheduled.\n    viewableIndicesToCheck = viewableIndicesToCheck.filter(ii =>\n      this._viewableIndices.includes(ii),\n    );\n    const prevItems = this._viewableItems;\n    const nextItems = new Map(\n      viewableIndicesToCheck.map(ii => {\n        const viewable = createViewToken(ii, true, props);\n        return [viewable.key, viewable];\n      }),\n    );\n\n    const changed = [];\n    for (const [key, viewable] of nextItems) {\n      if (!prevItems.has(key)) {\n        changed.push(viewable);\n      }\n    }\n    for (const [key, viewable] of prevItems) {\n      if (!nextItems.has(key)) {\n        changed.push({...viewable, isViewable: false});\n      }\n    }\n    if (changed.length > 0) {\n      this._viewableItems = nextItems;\n      onViewableItemsChanged({\n        viewableItems: Array.from(nextItems.values()),\n        changed,\n        viewabilityConfig: this._config,\n      });\n    }\n  }\n}\n\nfunction _isViewable(\n  viewAreaMode: boolean,\n  viewablePercentThreshold: number,\n  top: number,\n  bottom: number,\n  viewportHeight: number,\n  itemLength: number,\n): boolean {\n  if (_isEntirelyVisible(top, bottom, viewportHeight)) {\n    return true;\n  } else {\n    const pixels = _getPixelsVisible(top, bottom, viewportHeight);\n    const percent =\n      100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);\n    return percent >= viewablePercentThreshold;\n  }\n}\n\nfunction _getPixelsVisible(\n  top: number,\n  bottom: number,\n  viewportHeight: number,\n): number {\n  const visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0);\n  return Math.max(0, visibleHeight);\n}\n\nfunction _isEntirelyVisible(\n  top: number,\n  bottom: number,\n  viewportHeight: number,\n): boolean {\n  return top >= 0 && bottom <= viewportHeight && bottom > top;\n}\n\nexport default ViewabilityHelper;\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 * @flow\n * @format\n */\n\nimport type {CellRendererProps, ListRenderItem} from './VirtualizedListProps';\nimport type {\n  FocusEvent,\n  LayoutChangeEvent,\n  StyleProp,\n  ViewStyle,\n} from 'react-native';\n\nimport {VirtualizedListCellContextProvider} from './VirtualizedListContext.js';\nimport invariant from 'invariant';\nimport * as React from 'react';\nimport {isValidElement} from 'react';\nimport {StyleSheet, View} from 'react-native';\n\nexport type Props<ItemT> = {\n  CellRendererComponent?: ?React.ComponentType<CellRendererProps<ItemT>>,\n  ItemSeparatorComponent: ?React.ComponentType<\n    any | {highlighted: boolean, leadingItem: ?ItemT},\n  >,\n  ListItemComponent?: ?(React.ComponentType<any> | React.MixedElement),\n  cellKey: string,\n  horizontal: ?boolean,\n  index: number,\n  inversionStyle: StyleProp<ViewStyle>,\n  item: ItemT,\n  onCellLayout?: (\n    event: LayoutChangeEvent,\n    cellKey: string,\n    index: number,\n  ) => void,\n  onCellFocusCapture?: (cellKey: string) => void,\n  onUnmount: (cellKey: string) => void,\n  onUpdateSeparators: (\n    cellKeys: Array<?string>,\n    props: Partial<SeparatorProps<ItemT>>,\n  ) => void,\n  prevCellKey: ?string,\n  renderItem?: ?ListRenderItem<ItemT>,\n  ...\n};\n\ntype SeparatorProps<ItemT> = $ReadOnly<{\n  highlighted: boolean,\n  leadingItem: ?ItemT,\n}>;\n\ntype State<ItemT> = {\n  separatorProps: SeparatorProps<ItemT>,\n  ...\n};\n\nexport default class CellRenderer<ItemT> extends React.PureComponent<\n  Props<ItemT>,\n  State<ItemT>,\n> {\n  state: State<ItemT> = {\n    separatorProps: {\n      highlighted: false,\n      leadingItem: this.props.item,\n    },\n  };\n\n  static getDerivedStateFromProps<StaticItemT>(\n    props: Props<StaticItemT>,\n    prevState: State<StaticItemT>,\n  ): ?State<StaticItemT> {\n    if (props.item !== prevState.separatorProps.leadingItem) {\n      return {\n        separatorProps: {\n          ...prevState.separatorProps,\n          leadingItem: props.item,\n        },\n      };\n    }\n    return null;\n  }\n\n  // TODO: consider factoring separator stuff out of VirtualizedList into FlatList since it's not\n  // reused by SectionList and we can keep VirtualizedList simpler.\n  // $FlowFixMe[missing-local-annot]\n  _separators = {\n    highlight: () => {\n      const {cellKey, prevCellKey} = this.props;\n      this.props.onUpdateSeparators([cellKey, prevCellKey], {\n        highlighted: true,\n      });\n    },\n    unhighlight: () => {\n      const {cellKey, prevCellKey} = this.props;\n      this.props.onUpdateSeparators([cellKey, prevCellKey], {\n        highlighted: false,\n      });\n    },\n    updateProps: (\n      select: 'leading' | 'trailing',\n      newProps: SeparatorProps<ItemT>,\n    ) => {\n      const {cellKey, prevCellKey} = this.props;\n      this.props.onUpdateSeparators(\n        [select === 'leading' ? prevCellKey : cellKey],\n        newProps,\n      );\n    },\n  };\n\n  updateSeparatorProps(newProps: SeparatorProps<ItemT>) {\n    this.setState(state => ({\n      separatorProps: {...state.separatorProps, ...newProps},\n    }));\n  }\n\n  componentWillUnmount() {\n    this.props.onUnmount(this.props.cellKey);\n  }\n\n  _onLayout = (nativeEvent: LayoutChangeEvent): void => {\n    this.props.onCellLayout?.(\n      nativeEvent,\n      this.props.cellKey,\n      this.props.index,\n    );\n  };\n\n  _onCellFocusCapture = (e: FocusEvent): void => {\n    this.props.onCellFocusCapture?.(this.props.cellKey);\n  };\n\n  _renderElement(\n    renderItem: ?ListRenderItem<ItemT>,\n    ListItemComponent: any,\n    item: ItemT,\n    index: number,\n  ): React.Node {\n    if (renderItem && ListItemComponent) {\n      console.warn(\n        'VirtualizedList: Both ListItemComponent and renderItem props are present. ListItemComponent will take' +\n          ' precedence over renderItem.',\n      );\n    }\n\n    if (ListItemComponent) {\n      return (\n        <ListItemComponent\n          item={item}\n          index={index}\n          separators={this._separators}\n        />\n      );\n    }\n\n    if (renderItem) {\n      return renderItem({\n        item,\n        index,\n        separators: this._separators,\n      });\n    }\n\n    invariant(\n      false,\n      'VirtualizedList: Either ListItemComponent or renderItem props are required but none were found.',\n    );\n  }\n\n  render(): React.Node {\n    const {\n      CellRendererComponent,\n      ItemSeparatorComponent,\n      ListItemComponent,\n      cellKey,\n      horizontal,\n      item,\n      index,\n      inversionStyle,\n      onCellLayout,\n      renderItem,\n    } = this.props;\n    const element = this._renderElement(\n      renderItem,\n      ListItemComponent,\n      item,\n      index,\n    );\n\n    // NOTE: that when this is a sticky header, `onLayout` will get automatically extracted and\n    // called explicitly by `ScrollViewStickyHeader`.\n    const itemSeparator: React.Node = isValidElement(ItemSeparatorComponent)\n      ? // $FlowFixMe[incompatible-type]\n        ItemSeparatorComponent\n      : // $FlowFixMe[incompatible-type]\n        ItemSeparatorComponent && (\n          <ItemSeparatorComponent {...this.state.separatorProps} />\n        );\n    const cellStyle = inversionStyle\n      ? horizontal\n        ? [styles.rowReverse, inversionStyle]\n        : [styles.columnReverse, inversionStyle]\n      : horizontal\n        ? [styles.row, inversionStyle]\n        : inversionStyle;\n    const result = !CellRendererComponent ? (\n      <View\n        style={cellStyle}\n        onFocusCapture={this._onCellFocusCapture}\n        {...(onCellLayout && {onLayout: this._onLayout})}>\n        {element}\n        {itemSeparator}\n      </View>\n    ) : (\n      <CellRendererComponent\n        cellKey={cellKey}\n        index={index}\n        item={item}\n        style={cellStyle}\n        onFocusCapture={this._onCellFocusCapture}\n        {...(onCellLayout && {onLayout: this._onLayout})}>\n        {element}\n        {itemSeparator}\n      </CellRendererComponent>\n    );\n\n    return (\n      <VirtualizedListCellContextProvider cellKey={this.props.cellKey}>\n        {result}\n      </VirtualizedListCellContextProvider>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  row: {\n    flexDirection: 'row',\n  },\n  rowReverse: {\n    flexDirection: 'row-reverse',\n  },\n  columnReverse: {\n    flexDirection: 'column-reverse',\n  },\n});\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 * @flow strict-local\n * @format\n */\n\nimport typeof VirtualizedListT from './VirtualizedList';\n\nimport * as React from 'react';\nimport {createContext, useContext, useMemo} from 'react';\n\ntype Context = $ReadOnly<{\n  cellKey: ?string,\n  getScrollMetrics: () => {\n    contentLength: number,\n    dOffset: number,\n    dt: number,\n    offset: number,\n    timestamp: number,\n    velocity: number,\n    visibleLength: number,\n    zoomScale: number,\n  },\n  horizontal: ?boolean,\n  getOutermostParentListRef: () => React.ElementRef<VirtualizedListT>,\n  registerAsNestedChild: ({\n    cellKey: string,\n    ref: React.ElementRef<VirtualizedListT>,\n  }) => void,\n  unregisterAsNestedChild: ({ref: React.ElementRef<VirtualizedListT>}) => void,\n}>;\n\nexport const VirtualizedListContext: React.Context<?Context> =\n  createContext(null);\nif (__DEV__) {\n  VirtualizedListContext.displayName = 'VirtualizedListContext';\n}\n\n/**\n * Resets the context. Intended for use by portal-like components (e.g. Modal).\n */\nexport function VirtualizedListContextResetter({\n  children,\n}: {\n  children: React.Node,\n}): React.Node {\n  return (\n    <VirtualizedListContext.Provider value={null}>\n      {children}\n    </VirtualizedListContext.Provider>\n  );\n}\n\n/**\n * Sets the context with memoization. Intended to be used by `VirtualizedList`.\n */\nexport function VirtualizedListContextProvider({\n  children,\n  value,\n}: {\n  children: React.Node,\n  value: Context,\n}): React.Node {\n  // Avoid setting a newly created context object if the values are identical.\n  const context = useMemo(\n    () => ({\n      cellKey: null,\n      getScrollMetrics: value.getScrollMetrics,\n      horizontal: value.horizontal,\n      getOutermostParentListRef: value.getOutermostParentListRef,\n      registerAsNestedChild: value.registerAsNestedChild,\n      unregisterAsNestedChild: value.unregisterAsNestedChild,\n    }),\n    [\n      value.getScrollMetrics,\n      value.horizontal,\n      value.getOutermostParentListRef,\n      value.registerAsNestedChild,\n      value.unregisterAsNestedChild,\n    ],\n  );\n  return (\n    <VirtualizedListContext.Provider value={context}>\n      {children}\n    </VirtualizedListContext.Provider>\n  );\n}\n\n/**\n * Sets the `cellKey`. Intended to be used by `VirtualizedList` for each cell.\n */\nexport function VirtualizedListCellContextProvider({\n  cellKey,\n  children,\n}: {\n  cellKey: string,\n  children: React.Node,\n}): React.Node {\n  // Avoid setting a newly created context object if the values are identical.\n  const currContext = useContext(VirtualizedListContext);\n  const context = useMemo(\n    () => (currContext == null ? null : {...currContext, cellKey}),\n    [currContext, cellKey],\n  );\n  return (\n    <VirtualizedListContext.Provider value={context}>\n      {children}\n    </VirtualizedListContext.Provider>\n  );\n}\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 * @flow\n * @format\n */\n\nimport type {\n  ViewabilityConfig,\n  ViewabilityConfigCallbackPair,\n  ViewToken,\n} from './ViewabilityHelper';\nimport type {\n  FocusEvent,\n  LayoutChangeEvent,\n  ScrollViewProps,\n  StyleProp,\n  ViewStyle,\n} from 'react-native';\n\nimport * as React from 'react';\n\nexport type Item = any;\n\nexport type Separators = {\n  highlight: () => void,\n  unhighlight: () => void,\n  updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n  ...\n};\n\nexport type ListRenderItemInfo<ItemT> = {\n  item: ItemT,\n  index: number,\n  separators: Separators,\n  ...\n};\n\nexport type CellRendererProps<ItemT> = $ReadOnly<{\n  cellKey: string,\n  children: React.Node,\n  index: number,\n  item: ItemT,\n  onFocusCapture?: (event: FocusEvent) => void,\n  onLayout?: (event: LayoutChangeEvent) => void,\n  style: StyleProp<ViewStyle>,\n}>;\n\nexport type ListRenderItem<ItemT> = (\n  info: ListRenderItemInfo<ItemT>,\n) => React.Node;\n\ntype RequiredVirtualizedListProps = {\n  /**\n   * The default accessor functions assume this is an Array<{key: string} | {id: string}> but you can override\n   * getItem, getItemCount, and keyExtractor to handle any type of index-based data.\n   */\n  data?: any,\n  /**\n   * A generic accessor for extracting an item from any sort of data blob.\n   */\n  getItem: (data: any, index: number) => ?Item,\n  /**\n   * Determines how many items are in the data blob.\n   */\n  getItemCount: (data: any) => number,\n};\ntype OptionalVirtualizedListProps = {\n  renderItem?: ?ListRenderItem<Item>,\n  /**\n   * `debug` will turn on extra logging and visual overlays to aid with debugging both usage and\n   * implementation, but with a significant perf hit.\n   */\n  debug?: ?boolean,\n  /**\n   * DEPRECATED: Virtualization provides significant performance and memory optimizations, but fully\n   * unmounts react instances that are outside of the render window. You should only need to disable\n   * this for debugging purposes. Defaults to false.\n   */\n  disableVirtualization?: ?boolean,\n  /**\n   * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n   * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n   * `data` prop, stick it here and treat it immutably.\n   */\n  extraData?: any,\n  // e.g. height, y\n  getItemLayout?: (\n    data: any,\n    index: number,\n  ) => {\n    length: number,\n    offset: number,\n    index: number,\n    ...\n  },\n  horizontal?: ?boolean,\n  /**\n   * How many items to render in the initial batch. This should be enough to fill the screen but not\n   * much more. Note these items will never be unmounted as part of the windowed rendering in order\n   * to improve perceived performance of scroll-to-top actions.\n   */\n  initialNumToRender?: ?number,\n  /**\n   * Instead of starting at the top with the first item, start at `initialScrollIndex`. This\n   * disables the \"scroll to top\" optimization that keeps the first `initialNumToRender` items\n   * always rendered and immediately renders the items starting at this initial index. Requires\n   * `getItemLayout` to be implemented.\n   */\n  initialScrollIndex?: ?number,\n  /**\n   * Reverses the direction of scroll. Uses scale transforms of -1.\n   */\n  inverted?: ?boolean,\n  keyExtractor?: ?(item: Item, index: number) => string,\n  /**\n   * CellRendererComponent allows customizing how cells rendered by\n   * `renderItem`/`ListItemComponent` are wrapped when placed into the\n   * underlying ScrollView. This component must accept event handlers which\n   * notify VirtualizedList of changes within the cell.\n   */\n  CellRendererComponent?: ?React.ComponentType<CellRendererProps<Item>>,\n  /**\n   * Rendered in between each item, but not at the top or bottom. By default, `highlighted` and\n   * `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight`\n   * which will update the `highlighted` prop, but you can also add custom props with\n   * `separators.updateProps`.\n   */\n  ItemSeparatorComponent?: ?React.ComponentType<any>,\n  /**\n   * Takes an item from `data` and renders it into the list. Example usage:\n   *\n   *     <FlatList\n   *       ItemSeparatorComponent={Platform.OS !== 'android' && ({highlighted}) => (\n   *         <View style={[style.separator, highlighted && {marginLeft: 0}]} />\n   *       )}\n   *       data={[{title: 'Title Text', key: 'item1'}]}\n   *       ListItemComponent={({item, separators}) => (\n   *         <TouchableHighlight\n   *           onPress={() => this._onPress(item)}\n   *           onShowUnderlay={separators.highlight}\n   *           onHideUnderlay={separators.unhighlight}>\n   *           <View style={{backgroundColor: 'white'}}>\n   *             <Text>{item.title}</Text>\n   *           </View>\n   *         </TouchableHighlight>\n   *       )}\n   *     />\n   *\n   * Provides additional metadata like `index` if you need it, as well as a more generic\n   * `separators.updateProps` function which let's you set whatever props you want to change the\n   * rendering of either the leading separator or trailing separator in case the more common\n   * `highlight` and `unhighlight` (which set the `highlighted: boolean` prop) are insufficient for\n   * your use-case.\n   */\n  ListItemComponent?: ?(React.ComponentType<any> | React.MixedElement),\n  /**\n   * Rendered when the list is empty. Can be a React Component Class, a render function, or\n   * a rendered element.\n   */\n  ListEmptyComponent?: ?(React.ComponentType<any> | React.MixedElement),\n  /**\n   * Rendered at the bottom of all the items. Can be a React Component Class, a render function, or\n   * a rendered element.\n   */\n  ListFooterComponent?: ?(React.ComponentType<any> | React.MixedElement),\n  /**\n   * Styling for internal View for ListFooterComponent\n   */\n  ListFooterComponentStyle?: StyleProp<ViewStyle>,\n  /**\n   * Rendered at the top of all the items. Can be a React Component Class, a render function, or\n   * a rendered element.\n   */\n  ListHeaderComponent?: ?(React.ComponentType<any> | React.MixedElement),\n  /**\n   * Styling for internal View for ListHeaderComponent\n   */\n  ListHeaderComponentStyle?: StyleProp<ViewStyle>,\n  /**\n   * The maximum number of items to render in each incremental render batch. The more rendered at\n   * once, the better the fill rate, but responsiveness may suffer because rendering content may\n   * interfere with responding to button taps or other interactions.\n   */\n  maxToRenderPerBatch?: ?number,\n  /**\n   * Called once when the scroll position gets within within `onEndReachedThreshold`\n   * from the logical end of the list.\n   */\n  onEndReached?: ?(info: {distanceFromEnd: number, ...}) => void,\n  /**\n   * How far from the end (in units of visible length of the list) the trailing edge of the\n   * list must be from the end of the content to trigger the `onEndReached` callback.\n   * Thus, a value of 0.5 will trigger `onEndReached` when the end of the content is\n   * within half the visible length of the list.\n   */\n  onEndReachedThreshold?: ?number,\n  /**\n   * If provided, a standard RefreshControl will be added for \"Pull to Refresh\" functionality. Make\n   * sure to also set the `refreshing` prop correctly.\n   */\n  onRefresh?: ?() => void,\n  /**\n   * Used to handle failures when scrolling to an index that has not been measured yet. Recommended\n   * action is to either compute your own offset and `scrollTo` it, or scroll as far as possible and\n   * then try again after more items have been rendered.\n   */\n  onScrollToIndexFailed?: ?(info: {\n    index: number,\n    highestMeasuredFrameIndex: number,\n    averageItemLength: number,\n    ...\n  }) => void,\n  /**\n   * Called once when the scroll position gets within within `onStartReachedThreshold`\n   * from the logical start of the list.\n   */\n  onStartReached?: ?(info: {distanceFromStart: number, ...}) => void,\n  /**\n   * How far from the start (in units of visible length of the list) the leading edge of the\n   * list must be from the start of the content to trigger the `onStartReached` callback.\n   * Thus, a value of 0.5 will trigger `onStartReached` when the start of the content is\n   * within half the visible length of the list.\n   */\n  onStartReachedThreshold?: ?number,\n  /**\n   * Called when the viewability of rows changes, as defined by the\n   * `viewabilityConfig` prop.\n   */\n  onViewableItemsChanged?: ?(info: {\n    viewableItems: Array<ViewToken>,\n    changed: Array<ViewToken>,\n    ...\n  }) => void,\n  persistentScrollbar?: ?boolean,\n  /**\n   * Set this when offset is needed for the loading indicator to show correctly.\n   */\n  progressViewOffset?: number,\n  /**\n   * A custom refresh control element. When set, it overrides the default\n   * <RefreshControl> component built internally. The onRefresh and refreshing\n   * props are also ignored. Only works for vertical VirtualizedList.\n   */\n  refreshControl?: ?React.MixedElement,\n  /**\n   * Set this true while waiting for new data from a refresh.\n   */\n  refreshing?: ?boolean,\n  /**\n   * Note: may have bugs (missing content) in some circumstances - use at your own risk.\n   *\n   * This may improve scroll performance for large lists.\n   */\n  removeClippedSubviews?: boolean,\n  /**\n   * Render a custom scroll component, e.g. with a differently styled `RefreshControl`.\n   */\n  renderScrollComponent?: (props: ScrollViewProps) => React.MixedElement,\n  /**\n   * Amount of time between low-pri item render batches, e.g. for rendering items quite a ways off\n   * screen. Similar fill rate/responsiveness tradeoff as `maxToRenderPerBatch`.\n   */\n  updateCellsBatchingPeriod?: ?number,\n  /**\n   * See `ViewabilityHelper` for flow type and further documentation.\n   */\n  viewabilityConfig?: ViewabilityConfig,\n  /**\n   * List of ViewabilityConfig/onViewableItemsChanged pairs. A specific onViewableItemsChanged\n   * will be called when its corresponding ViewabilityConfig's conditions are met.\n   */\n  viewabilityConfigCallbackPairs?: Array<ViewabilityConfigCallbackPair>,\n  /**\n   * Determines the maximum number of items rendered outside of the visible area, in units of\n   * visible lengths. So if your list fills the screen, then `windowSize={21}` (the default) will\n   * render the visible screen area plus up to 10 screens above and 10 below the viewport. Reducing\n   * this number will reduce memory consumption and may improve performance, but will increase the\n   * chance that fast scrolling may reveal momentary blank areas of unrendered content.\n   */\n  windowSize?: ?number,\n};\n\nexport type VirtualizedListProps = {\n  ...ScrollViewProps,\n  ...RequiredVirtualizedListProps,\n  ...OptionalVirtualizedListProps,\n};\n\n/**\n * Default Props Helper Functions\n * Use the following helper functions for default values\n */\n\n// horizontalOrDefault(this.props.horizontal)\nexport function horizontalOrDefault(horizontal: ?boolean): boolean {\n  return horizontal ?? false;\n}\n\n// initialNumToRenderOrDefault(this.props.initialNumToRender)\nexport function initialNumToRenderOrDefault(\n  initialNumToRender: ?number,\n): number {\n  return initialNumToRender ?? 10;\n}\n\n// maxToRenderPerBatchOrDefault(this.props.maxToRenderPerBatch)\nexport function maxToRenderPerBatchOrDefault(\n  maxToRenderPerBatch: ?number,\n): number {\n  return maxToRenderPerBatch ?? 10;\n}\n\n// onStartReachedThresholdOrDefault(this.props.onStartReachedThreshold)\nexport function onStartReachedThresholdOrDefault(\n  onStartReachedThreshold: ?number,\n): number {\n  return onStartReachedThreshold ?? 2;\n}\n\n// onEndReachedThresholdOrDefault(this.props.onEndReachedThreshold)\nexport function onEndReachedThresholdOrDefault(\n  onEndReachedThreshold: ?number,\n): number {\n  return onEndReachedThreshold ?? 2;\n}\n\n// windowSizeOrDefault(this.props.windowSize)\nexport function windowSizeOrDefault(windowSize: ?number): number {\n  return windowSize ?? 21;\n}\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 * @flow\n * @format\n */\n\nimport type {ViewToken} from './ViewabilityHelper';\nimport type {VirtualizedListProps} from './VirtualizedListProps';\n\nimport VirtualizedList from './VirtualizedList';\nimport {keyExtractor as defaultKeyExtractor} from './VirtualizeUtils';\nimport invariant from 'invariant';\nimport * as React from 'react';\nimport {useEffect, useState} from 'react';\n\ntype DefaultVirtualizedSectionT = {\n  data: any,\n  [key: string]: any,\n};\n\nexport type SectionData<SectionItemT, SectionT = DefaultVirtualizedSectionT> =\n  | ($ReadOnly<SectionBase<SectionItemT, SectionT>> & SectionT)\n  | (SectionBase<SectionItemT, SectionT> & SectionT)\n  | SectionT;\n\nexport type SectionBase<SectionItemT, SectionT = DefaultVirtualizedSectionT> = {\n  /**\n   * The data for rendering items in this section.\n   */\n  data: $ReadOnlyArray<SectionItemT>,\n  /**\n   * Optional key to keep track of section re-ordering. If you don't plan on re-ordering sections,\n   * the array index will be used by default.\n   */\n  key?: string,\n  // Optional props will override list-wide props just for this section.\n  renderItem?: ?(info: {\n    item: SectionItemT,\n    index: number,\n    section: SectionData<SectionItemT, SectionT>,\n    separators: {\n      highlight: () => void,\n      unhighlight: () => void,\n      updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n      ...\n    },\n    ...\n  }) => null | React.MixedElement,\n  ItemSeparatorComponent?: ?React.ComponentType<any>,\n  keyExtractor?: (item: ?SectionItemT, index?: ?number) => string,\n  ...\n};\n\ntype RequiredVirtualizedSectionListProps<\n  ItemT,\n  SectionT = DefaultVirtualizedSectionT,\n> = {\n  sections: $ReadOnlyArray<SectionData<ItemT, SectionT>>,\n};\n\ntype OptionalVirtualizedSectionListProps<\n  ItemT,\n  SectionT = DefaultVirtualizedSectionT,\n> = {\n  /**\n   * Default renderer for every item in every section.\n   */\n  renderItem?: (info: {\n    item: ItemT,\n    index: number,\n    section: SectionT,\n    separators: {\n      highlight: () => void,\n      unhighlight: () => void,\n      updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n      ...\n    },\n    ...\n  }) => null | React.Node,\n  /**\n   * Rendered at the top of each section. These stick to the top of the `ScrollView` by default on\n   * iOS. See `stickySectionHeadersEnabled`.\n   */\n  renderSectionHeader?: ?(info: {section: SectionT, ...}) => null | React.Node,\n  /**\n   * Rendered at the bottom of each section.\n   */\n  renderSectionFooter?: ?(info: {section: SectionT, ...}) => null | React.Node,\n  /**\n   * Rendered at the top and bottom of each section (note this is different from\n   * `ItemSeparatorComponent` which is only rendered between items). These are intended to separate\n   * sections from the headers above and below and typically have the same highlight response as\n   * `ItemSeparatorComponent`. Also receives `highlighted`, `[leading/trailing][Item/Separator]`,\n   * and any custom props from `separators.updateProps`.\n   */\n  SectionSeparatorComponent?: ?React.ComponentType<any>,\n  /**\n   * Makes section headers stick to the top of the screen until the next one pushes it off. Only\n   * enabled by default on iOS because that is the platform standard there.\n   */\n  stickySectionHeadersEnabled?: boolean,\n  onEndReached?: ?({distanceFromEnd: number, ...}) => void,\n};\n\nexport type VirtualizedSectionListProps<\n  ItemT,\n  SectionT = DefaultVirtualizedSectionT,\n> = {\n  ...RequiredVirtualizedSectionListProps<ItemT, SectionT>,\n  ...OptionalVirtualizedSectionListProps<ItemT, SectionT>,\n  ...Omit<VirtualizedListProps, 'data' | 'renderItem'>,\n};\nexport type ScrollToLocationParamsType = {\n  animated?: ?boolean,\n  itemIndex: number,\n  sectionIndex: number,\n  viewOffset?: number,\n  viewPosition?: number,\n};\n\ntype State = {childProps: VirtualizedListProps, ...};\n\n/**\n * Right now this just flattens everything into one list and uses VirtualizedList under the\n * hood. The only operation that might not scale well is concatting the data arrays of all the\n * sections when new props are received, which should be plenty fast for up to ~10,000 items.\n */\nclass VirtualizedSectionList<\n  ItemT,\n  SectionT: SectionBase<\n    ItemT,\n    DefaultVirtualizedSectionT,\n  > = DefaultVirtualizedSectionT,\n> extends React.PureComponent<\n  VirtualizedSectionListProps<ItemT, SectionT>,\n  State,\n> {\n  scrollToLocation(params: ScrollToLocationParamsType) {\n    let index = params.itemIndex;\n    for (let i = 0; i < params.sectionIndex; i++) {\n      index += this.props.getItemCount(this.props.sections[i].data) + 2;\n    }\n    let viewOffset = params.viewOffset || 0;\n    if (this._listRef == null) {\n      return;\n    }\n    const listRef = this._listRef;\n    if (params.itemIndex > 0 && this.props.stickySectionHeadersEnabled) {\n      const frame = listRef\n        .__getListMetrics()\n        .getCellMetricsApprox(index - params.itemIndex, listRef.props);\n      viewOffset += frame.length;\n    }\n    const toIndexParams = {\n      ...params,\n      viewOffset,\n      index,\n    };\n    // $FlowFixMe[incompatible-use]\n    this._listRef.scrollToIndex(toIndexParams);\n  }\n\n  getListRef(): ?VirtualizedList {\n    return this._listRef;\n  }\n\n  render(): React.Node {\n    const {\n      ItemSeparatorComponent, // don't pass through, rendered with renderItem\n      SectionSeparatorComponent,\n      renderItem: _renderItem,\n      renderSectionFooter,\n      renderSectionHeader,\n      sections: _sections,\n      stickySectionHeadersEnabled,\n      ...passThroughProps\n    } = this.props;\n\n    const listHeaderOffset = this.props.ListHeaderComponent ? 1 : 0;\n\n    const stickyHeaderIndices = this.props.stickySectionHeadersEnabled\n      ? ([]: Array<number>)\n      : undefined;\n\n    let itemCount = 0;\n    for (const section of this.props.sections) {\n      // Track the section header indices\n      if (stickyHeaderIndices != null) {\n        stickyHeaderIndices.push(itemCount + listHeaderOffset);\n      }\n\n      // Add two for the section header and footer.\n      itemCount += 2;\n      itemCount += this.props.getItemCount(section.data);\n    }\n    const renderItem = this._renderItem(itemCount);\n\n    return (\n      <VirtualizedList\n        {...passThroughProps}\n        keyExtractor={this._keyExtractor}\n        stickyHeaderIndices={stickyHeaderIndices}\n        renderItem={renderItem}\n        data={this.props.sections}\n        getItem={(sections, index) =>\n          this._getItem(this.props, sections, index)\n        }\n        getItemCount={() => itemCount}\n        onViewableItemsChanged={\n          this.props.onViewableItemsChanged\n            ? this._onViewableItemsChanged\n            : undefined\n        }\n        ref={this._captureRef}\n      />\n    );\n  }\n\n  _getItem(\n    props: VirtualizedSectionListProps<ItemT, SectionT>,\n    sections: ?$ReadOnlyArray<SectionData<ItemT, SectionT>>,\n    index: number,\n  ): ?ItemT {\n    if (!sections) {\n      return null;\n    }\n    let itemIdx = index - 1;\n    for (let i = 0; i < sections.length; i++) {\n      const section = sections[i];\n      const sectionData = section.data;\n      const itemCount = props.getItemCount(sectionData);\n      if (itemIdx === -1 || itemIdx === itemCount) {\n        // We intend for there to be overflow by one on both ends of the list.\n        // This will be for headers and footers. When returning a header or footer\n        // item the section itself is the item.\n        // $FlowIgnore[incompatible-return]\n        return section;\n      } else if (itemIdx < itemCount) {\n        // If we are in the bounds of the list's data then return the item.\n        return props.getItem(sectionData, itemIdx);\n      } else {\n        itemIdx -= itemCount + 2; // Add two for the header and footer\n      }\n    }\n    return null;\n  }\n\n  // $FlowFixMe[missing-local-annot]\n  _keyExtractor = (item: ItemT, index: number) => {\n    const info = this._subExtractor(index);\n    return (info && info.key) || String(index);\n  };\n\n  _subExtractor(index: number): ?{\n    section: SectionData<ItemT, SectionT>,\n    // Key of the section or combined key for section + item\n    key: string,\n    // Relative index within the section\n    index: ?number,\n    // True if this is the section header\n    header?: ?boolean,\n    leadingItem?: ?ItemT,\n    leadingSection?: ?SectionData<ItemT, SectionT>,\n    trailingItem?: ?ItemT,\n    trailingSection?: ?SectionData<ItemT, SectionT>,\n    ...\n  } {\n    let itemIndex = index;\n    const {getItem, getItemCount, keyExtractor, sections} = this.props;\n    for (let i = 0; i < sections.length; i++) {\n      const section = sections[i];\n      const sectionData = section.data;\n      const key = section.key || String(i);\n      itemIndex -= 1; // The section adds an item for the header\n      if (itemIndex >= getItemCount(sectionData) + 1) {\n        itemIndex -= getItemCount(sectionData) + 1; // The section adds an item for the footer.\n      } else if (itemIndex === -1) {\n        return {\n          section,\n          key: key + ':header',\n          index: null,\n          header: true,\n          trailingSection: sections[i + 1],\n        };\n      } else if (itemIndex === getItemCount(sectionData)) {\n        return {\n          section,\n          key: key + ':footer',\n          index: null,\n          header: false,\n          trailingSection: sections[i + 1],\n        };\n      } else {\n        const extractor =\n          section.keyExtractor || keyExtractor || defaultKeyExtractor;\n        return {\n          section,\n          key:\n            key + ':' + extractor(getItem(sectionData, itemIndex), itemIndex),\n          index: itemIndex,\n          leadingItem: getItem(sectionData, itemIndex - 1),\n          leadingSection: sections[i - 1],\n          trailingItem: getItem(sectionData, itemIndex + 1),\n          trailingSection: sections[i + 1],\n        };\n      }\n    }\n  }\n\n  _convertViewable = (viewable: ViewToken): ?ViewToken => {\n    invariant(viewable.index != null, 'Received a broken ViewToken');\n    const info = this._subExtractor(viewable.index);\n    if (!info) {\n      return null;\n    }\n    const keyExtractorWithNullableIndex = info.section.keyExtractor;\n    const keyExtractorWithNonNullableIndex =\n      this.props.keyExtractor || defaultKeyExtractor;\n    const key =\n      keyExtractorWithNullableIndex != null\n        ? keyExtractorWithNullableIndex(viewable.item, info.index)\n        : keyExtractorWithNonNullableIndex(viewable.item, info.index ?? 0);\n\n    return {\n      ...viewable,\n      index: info.index,\n      key,\n      section: info.section,\n    };\n  };\n\n  _onViewableItemsChanged = ({\n    viewableItems,\n    changed,\n  }: {\n    viewableItems: Array<ViewToken>,\n    changed: Array<ViewToken>,\n    ...\n  }) => {\n    const onViewableItemsChanged = this.props.onViewableItemsChanged;\n    if (onViewableItemsChanged != null) {\n      onViewableItemsChanged({\n        viewableItems: viewableItems\n          .map(this._convertViewable, this)\n          .filter(Boolean),\n        changed: changed.map(this._convertViewable, this).filter(Boolean),\n      });\n    }\n  };\n\n  _renderItem =\n    (listItemCount: number): $FlowFixMe =>\n    // eslint-disable-next-line react/no-unstable-nested-components\n    ({item, index}: {item: ItemT, index: number, ...}) => {\n      const info = this._subExtractor(index);\n      if (!info) {\n        return null;\n      }\n      const infoIndex = info.index;\n      if (infoIndex == null) {\n        const {section} = info;\n        if (info.header === true) {\n          const {renderSectionHeader} = this.props;\n          return renderSectionHeader ? renderSectionHeader({section}) : null;\n        } else {\n          const {renderSectionFooter} = this.props;\n          return renderSectionFooter ? renderSectionFooter({section}) : null;\n        }\n      } else {\n        const renderItem = info.section.renderItem || this.props.renderItem;\n        const SeparatorComponent = this._getSeparatorComponent(\n          index,\n          info,\n          listItemCount,\n        );\n        invariant(renderItem, 'no renderItem!');\n        return (\n          <ItemWithSeparator\n            SeparatorComponent={SeparatorComponent}\n            LeadingSeparatorComponent={\n              infoIndex === 0 ? this.props.SectionSeparatorComponent : undefined\n            }\n            cellKey={info.key}\n            index={infoIndex}\n            item={item}\n            leadingItem={info.leadingItem}\n            leadingSection={info.leadingSection}\n            prevCellKey={(this._subExtractor(index - 1) || {}).key}\n            // Callback to provide updateHighlight for this item\n            setSelfHighlightCallback={this._setUpdateHighlightFor}\n            setSelfUpdatePropsCallback={this._setUpdatePropsFor}\n            // Provide child ability to set highlight/updateProps for previous item using prevCellKey\n            updateHighlightFor={this._updateHighlightFor}\n            updatePropsFor={this._updatePropsFor}\n            renderItem={renderItem}\n            section={info.section}\n            trailingItem={info.trailingItem}\n            trailingSection={info.trailingSection}\n            inverted={!!this.props.inverted}\n          />\n        );\n      }\n    };\n\n  _updatePropsFor = (cellKey: string, value: any) => {\n    const updateProps = this._updatePropsMap[cellKey];\n    if (updateProps != null) {\n      updateProps(value);\n    }\n  };\n\n  _updateHighlightFor = (cellKey: string, value: boolean) => {\n    const updateHighlight = this._updateHighlightMap[cellKey];\n    if (updateHighlight != null) {\n      updateHighlight(value);\n    }\n  };\n\n  _setUpdateHighlightFor = (\n    cellKey: string,\n    updateHighlightFn: ?(boolean) => void,\n  ) => {\n    if (updateHighlightFn != null) {\n      this._updateHighlightMap[cellKey] = updateHighlightFn;\n    } else {\n      // $FlowFixMe[prop-missing]\n      delete this._updateHighlightFor[cellKey];\n    }\n  };\n\n  _setUpdatePropsFor = (cellKey: string, updatePropsFn: ?(boolean) => void) => {\n    if (updatePropsFn != null) {\n      this._updatePropsMap[cellKey] = updatePropsFn;\n    } else {\n      delete this._updatePropsMap[cellKey];\n    }\n  };\n\n  _getSeparatorComponent(\n    index: number,\n    info?: ?Object,\n    listItemCount: number,\n  ): ?React.ComponentType<any> {\n    info = info || this._subExtractor(index);\n    if (!info) {\n      return null;\n    }\n    const ItemSeparatorComponent =\n      info.section.ItemSeparatorComponent || this.props.ItemSeparatorComponent;\n    const {SectionSeparatorComponent} = this.props;\n    const isLastItemInList = index === listItemCount - 1;\n    const isLastItemInSection =\n      info.index === this.props.getItemCount(info.section.data) - 1;\n    if (SectionSeparatorComponent && isLastItemInSection) {\n      return SectionSeparatorComponent;\n    }\n    if (ItemSeparatorComponent && !isLastItemInSection && !isLastItemInList) {\n      return ItemSeparatorComponent;\n    }\n    return null;\n  }\n\n  _updateHighlightMap: {[string]: (boolean) => void} = {};\n  _updatePropsMap: {[string]: void | (boolean => void)} = {};\n  _listRef: ?VirtualizedList;\n  _captureRef = (ref: null | VirtualizedList) => {\n    this._listRef = ref;\n  };\n}\n\ntype ItemWithSeparatorCommonProps<ItemT> = $ReadOnly<{\n  leadingItem: ?ItemT,\n  leadingSection: ?Object,\n  section: Object,\n  trailingItem: ?ItemT,\n  trailingSection: ?Object,\n}>;\n\ntype ItemWithSeparatorProps<ItemT> = $ReadOnly<{\n  ...ItemWithSeparatorCommonProps<ItemT>,\n  LeadingSeparatorComponent: ?React.ComponentType<any>,\n  SeparatorComponent: ?React.ComponentType<any>,\n  cellKey: string,\n  index: number,\n  item: ItemT,\n  setSelfHighlightCallback: (\n    cellKey: string,\n    updateFn: ?(boolean) => void,\n  ) => void,\n  setSelfUpdatePropsCallback: (\n    cellKey: string,\n    updateFn: ?(boolean) => void,\n  ) => void,\n  prevCellKey?: ?string,\n  updateHighlightFor: (prevCellKey: string, value: boolean) => void,\n  updatePropsFor: (prevCellKey: string, value: Object) => void,\n  renderItem: Function,\n  inverted: boolean,\n}>;\n\nfunction ItemWithSeparator<ItemT>(\n  props: ItemWithSeparatorProps<ItemT>,\n): React.Node {\n  const {\n    LeadingSeparatorComponent,\n    // this is the trailing separator and is associated with this item\n    SeparatorComponent,\n    cellKey,\n    prevCellKey,\n    setSelfHighlightCallback,\n    updateHighlightFor,\n    setSelfUpdatePropsCallback,\n    updatePropsFor,\n    item,\n    index,\n    section,\n    inverted,\n  } = props;\n\n  const [leadingSeparatorHiglighted, setLeadingSeparatorHighlighted] =\n    useState(false);\n\n  const [separatorHighlighted, setSeparatorHighlighted] = useState(false);\n\n  const [leadingSeparatorProps, setLeadingSeparatorProps] = useState<\n    ItemWithSeparatorCommonProps<ItemT>,\n  >({\n    leadingItem: props.leadingItem,\n    leadingSection: props.leadingSection,\n    section: props.section,\n    trailingItem: props.item,\n    trailingSection: props.trailingSection,\n  });\n  const [separatorProps, setSeparatorProps] = useState<\n    ItemWithSeparatorCommonProps<ItemT>,\n  >({\n    leadingItem: props.item,\n    leadingSection: props.leadingSection,\n    section: props.section,\n    trailingItem: props.trailingItem,\n    trailingSection: props.trailingSection,\n  });\n\n  useEffect(() => {\n    setSelfHighlightCallback(cellKey, setSeparatorHighlighted);\n    // $FlowFixMe[incompatible-call]\n    setSelfUpdatePropsCallback(cellKey, setSeparatorProps);\n\n    return () => {\n      setSelfUpdatePropsCallback(cellKey, null);\n      setSelfHighlightCallback(cellKey, null);\n    };\n  }, [\n    cellKey,\n    setSelfHighlightCallback,\n    setSeparatorProps,\n    setSelfUpdatePropsCallback,\n  ]);\n\n  const separators = {\n    highlight: () => {\n      setLeadingSeparatorHighlighted(true);\n      setSeparatorHighlighted(true);\n      if (prevCellKey != null) {\n        updateHighlightFor(prevCellKey, true);\n      }\n    },\n    unhighlight: () => {\n      setLeadingSeparatorHighlighted(false);\n      setSeparatorHighlighted(false);\n      if (prevCellKey != null) {\n        updateHighlightFor(prevCellKey, false);\n      }\n    },\n    updateProps: (\n      select: 'leading' | 'trailing',\n      newProps: Partial<ItemWithSeparatorCommonProps<ItemT>>,\n    ) => {\n      if (select === 'leading') {\n        if (LeadingSeparatorComponent != null) {\n          setLeadingSeparatorProps({...leadingSeparatorProps, ...newProps});\n        } else if (prevCellKey != null) {\n          // update the previous item's separator\n          updatePropsFor(prevCellKey, {...leadingSeparatorProps, ...newProps});\n        }\n      } else if (select === 'trailing' && SeparatorComponent != null) {\n        setSeparatorProps({...separatorProps, ...newProps});\n      }\n    },\n  };\n  const element = props.renderItem({\n    item,\n    index,\n    section,\n    separators,\n  });\n  const leadingSeparator = LeadingSeparatorComponent != null && (\n    <LeadingSeparatorComponent\n      highlighted={leadingSeparatorHiglighted}\n      {...leadingSeparatorProps}\n    />\n  );\n  const separator = SeparatorComponent != null && (\n    <SeparatorComponent\n      highlighted={separatorHighlighted}\n      {...separatorProps}\n    />\n  );\n  const RenderSeparator = leadingSeparator || separator;\n  const firstSeparator = inverted === false ? leadingSeparator : separator;\n  const secondSeparator = inverted === false ? separator : leadingSeparator;\n\n  return (\n    <>\n      {RenderSeparator ? firstSeparator : null}\n      {element}\n      {RenderSeparator ? secondSeparator : null}\n    </>\n  );\n}\n\nconst VirtualizedSectionListComponent = VirtualizedSectionList as component<\n  ItemT,\n  SectionT: SectionBase<\n    ItemT,\n    DefaultVirtualizedSectionT,\n  > = DefaultVirtualizedSectionT,\n>(\n  ref: React.RefSetter<\n    interface {\n      getListRef(): ?VirtualizedList,\n      scrollToLocation(params: ScrollToLocationParamsType): void,\n    },\n  >,\n  ...VirtualizedSectionListProps<ItemT, SectionT>\n);\n\nexport default VirtualizedSectionListComponent;\n\nexport type AnyVirtualizedSectionList = typeof VirtualizedSectionListComponent<\n  any,\n  any,\n>;\n","'use strict';\n\nvar safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nmodule.exports = memoizeOne;\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 * @flow strict-local\n * @format\n */\n\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\nimport Image from '../../Image/Image';\nimport createAnimatedComponent from '../createAnimatedComponent';\nimport * as React from 'react';\n\nexport default (createAnimatedComponent(\n  (Image: $FlowFixMe),\n): AnimatedComponentType<\n  React.ElementConfig<typeof Image>,\n  React.ElementRef<typeof Image>,\n>);\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 * @flow strict\n * @format\n */\n\nimport * as React from 'react';\nimport {createContext} from 'react';\n\ntype ContextType = ?string;\n\nconst Context: React.Context<ContextType> = createContext<ContextType>(null);\n\nif (__DEV__) {\n  Context.displayName = 'ImageAnalyticsTagContext';\n}\n\nexport default Context;\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 * @flow strict-local\n * @format\n */\n\nimport type {\n  AbstractImageAndroid,\n  AbstractImageIOS,\n  ImageType as ImageComponent,\n} from './ImageTypes.flow';\n\nimport useMergeRefs from '../Utilities/useMergeRefs';\nimport * as React from 'react';\nimport {useRef} from 'react';\n\ntype ImageComponentDecorator = (AbstractImageAndroid => AbstractImageAndroid) &\n  (AbstractImageIOS => AbstractImageIOS);\n\nlet injectedImageComponentDecorator: ?ImageComponentDecorator;\n\nexport function unstable_setImageComponentDecorator(\n  imageComponentDecorator: ?ImageComponentDecorator,\n): void {\n  injectedImageComponentDecorator = imageComponentDecorator;\n}\n\nexport function unstable_getImageComponentDecorator(): ?ImageComponentDecorator {\n  return injectedImageComponentDecorator;\n}\n\ntype ImageInstance = React.ElementRef<ImageComponent>;\n\ntype ImageAttachedCallback = (\n  imageInstance: ImageInstance,\n) => void | (() => void);\n\nconst imageAttachedCallbacks = new Set<ImageAttachedCallback>();\n\nexport function unstable_registerImageAttachedCallback(\n  callback: ImageAttachedCallback,\n): void {\n  imageAttachedCallbacks.add(callback);\n}\n\nexport function unstable_unregisterImageAttachedCallback(\n  callback: ImageAttachedCallback,\n): void {\n  imageAttachedCallbacks.delete(callback);\n}\n\nexport function useWrapRefWithImageAttachedCallbacks(\n  forwardedRef: React.RefSetter<ImageInstance>,\n): React.RefSetter<ImageInstance> {\n  const pendingCleanupCallbacks = useRef<Array<() => void>>([]);\n\n  const imageAttachedCallbacksRef =\n    useRef<?(node: ImageInstance | null) => void>(null);\n\n  if (imageAttachedCallbacksRef.current == null) {\n    imageAttachedCallbacksRef.current = (node: ImageInstance | null): void => {\n      if (node == null) {\n        if (pendingCleanupCallbacks.current.length > 0) {\n          pendingCleanupCallbacks.current.forEach(cb => cb());\n          pendingCleanupCallbacks.current = [];\n        }\n      } else {\n        imageAttachedCallbacks.forEach(imageAttachedCallback => {\n          const maybeCleanupCallback = imageAttachedCallback(node);\n          if (maybeCleanupCallback != null) {\n            pendingCleanupCallbacks.current.push(maybeCleanupCallback);\n          }\n        });\n      }\n    };\n  }\n\n  // `useMergeRefs` returns a stable ref if its arguments don't change.\n  return useMergeRefs<ImageInstance>(\n    forwardedRef,\n    imageAttachedCallbacksRef.current,\n  );\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {ResolvedAssetSource} from './AssetSourceResolver';\nimport type {ImageProps} from './ImageProps';\n\nimport resolveAssetSource from './resolveAssetSource';\n\n/**\n * A function which returns the appropriate value for image source\n * by resolving the `source`, `src` and `srcSet` props.\n */\nexport function getImageSourcesFromImageProps(\n  imageProps: ImageProps,\n): ?ResolvedAssetSource | $ReadOnlyArray<{uri: string, ...}> {\n  let source = resolveAssetSource(imageProps.source);\n\n  let sources;\n\n  const {crossOrigin, referrerPolicy, src, srcSet, width, height} = imageProps;\n\n  const headers: {[string]: string} = {};\n  if (crossOrigin === 'use-credentials') {\n    headers['Access-Control-Allow-Credentials'] = 'true';\n  }\n  if (referrerPolicy != null) {\n    headers['Referrer-Policy'] = referrerPolicy;\n  }\n  if (srcSet != null) {\n    const sourceList = [];\n    const srcSetList = srcSet.split(', ');\n    // `src` prop should be used with default scale if `srcSet` does not have 1x scale.\n    let shouldUseSrcForDefaultScale = true;\n    srcSetList.forEach(imageSrc => {\n      const [uri, xScale = '1x'] = imageSrc.split(' ');\n      if (!xScale.endsWith('x')) {\n        console.warn(\n          'The provided format for scale is not supported yet. Please use scales like 1x, 2x, etc.',\n        );\n      } else {\n        const scale = parseInt(xScale.split('x')[0], 10);\n        if (!isNaN(scale)) {\n          // 1x scale is provided in `srcSet` prop so ignore the `src` prop if provided.\n          shouldUseSrcForDefaultScale =\n            scale === 1 ? false : shouldUseSrcForDefaultScale;\n          sourceList.push({headers, scale, uri, width, height});\n        }\n      }\n    });\n\n    if (shouldUseSrcForDefaultScale && src != null) {\n      sourceList.push({\n        headers,\n        scale: 1,\n        uri: src,\n        width,\n        height,\n      });\n    }\n    if (sourceList.length === 0) {\n      console.warn('The provided value for srcSet is not valid.');\n    }\n\n    sources = sourceList;\n  } else if (src != null) {\n    sources = [{uri: src, headers: headers, width, height}];\n  } else if (source != null && source.uri && Object.keys(headers).length > 0) {\n    sources = [{...source, headers}];\n  } else {\n    sources = source;\n  }\n  return sources;\n}\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 * @flow strict\n * @format\n */\n\nimport type {ImageResizeMode} from './ImageResizeMode';\n\nconst objectFitMap: {[string]: ImageResizeMode} = {\n  contain: 'contain',\n  cover: 'cover',\n  fill: 'stretch',\n  'scale-down': 'contain',\n  none: 'none',\n};\n\nexport function convertObjectFitToResizeMode(\n  objectFit: ?string,\n): ?ImageResizeMode {\n  return objectFit != null ? objectFitMap[objectFit] : undefined;\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../src/private/types/HostComponent';\nimport type {HostInstance} from '../../src/private/types/HostInstance';\nimport type {ViewProps} from '../Components/View/ViewPropTypes';\nimport type {PartialViewConfig} from '../Renderer/shims/ReactNativeTypes';\nimport type {\n  ColorValue,\n  DangerouslyImpreciseStyle,\n  ImageStyleProp,\n} from '../StyleSheet/StyleSheet';\nimport type {ResolvedAssetSource} from './AssetSourceResolver';\nimport type {ImageProps} from './ImageProps';\nimport type {ImageSource} from './ImageSource';\n\nimport * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry';\nimport {ConditionallyIgnoredEventHandlers} from '../NativeComponent/ViewConfigIgnore';\nimport codegenNativeCommands from '../Utilities/codegenNativeCommands';\nimport Platform from '../Utilities/Platform';\n\ntype ImageHostComponentProps = $ReadOnly<{\n  ...ImageProps,\n  ...ViewProps,\n\n  style?: ImageStyleProp | DangerouslyImpreciseStyle,\n\n  // iOS native props\n  tintColor?: ColorValue,\n\n  // Android native props\n  shouldNotifyLoadEvents?: boolean,\n  src?:\n    | ?ResolvedAssetSource\n    | ?$ReadOnlyArray<?$ReadOnly<{uri?: ?string, ...}>>,\n  headers?: ?{[string]: string},\n  defaultSource?: ?ImageSource | ?string,\n  loadingIndicatorSrc?: ?string,\n}>;\n\ninterface NativeCommands {\n  +setIsVisible_EXPERIMENTAL: (\n    viewRef: HostInstance,\n    isVisible: boolean,\n    time: number,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setIsVisible_EXPERIMENTAL'],\n});\n\nexport const __INTERNAL_VIEW_CONFIG: PartialViewConfig =\n  Platform.OS === 'android'\n    ? {\n        uiViewClassName: 'RCTImageView',\n        bubblingEventTypes: {},\n        directEventTypes: {\n          topLoadStart: {\n            registrationName: 'onLoadStart',\n          },\n          topProgress: {\n            registrationName: 'onProgress',\n          },\n          topError: {\n            registrationName: 'onError',\n          },\n          topLoad: {\n            registrationName: 'onLoad',\n          },\n          topLoadEnd: {\n            registrationName: 'onLoadEnd',\n          },\n        },\n        validAttributes: {\n          blurRadius: true,\n          defaultSource: true,\n          internal_analyticTag: true,\n          resizeMethod: true,\n          resizeMode: true,\n          resizeMultiplier: true,\n          tintColor: {\n            process: require('../StyleSheet/processColor').default,\n          },\n          borderBottomLeftRadius: true,\n          borderTopLeftRadius: true,\n          src: true,\n          // NOTE: New Architecture expects this to be called `source`,\n          // regardless of the platform, therefore propagate it as well.\n          // For the backwards compatibility reasons, we keep both `src`\n          // and `source`, which will be identical at this stage.\n          source: true,\n          borderRadius: true,\n          headers: true,\n          shouldNotifyLoadEvents: true,\n          overlayColor: {\n            process: require('../StyleSheet/processColor').default,\n          },\n          borderColor: {\n            process: require('../StyleSheet/processColor').default,\n          },\n          accessible: true,\n          progressiveRenderingEnabled: true,\n          fadeDuration: true,\n          borderBottomRightRadius: true,\n          borderTopRightRadius: true,\n          loadingIndicatorSrc: true,\n        },\n      }\n    : {\n        uiViewClassName: 'RCTImageView',\n        bubblingEventTypes: {},\n        directEventTypes: {\n          topLoadStart: {\n            registrationName: 'onLoadStart',\n          },\n          topProgress: {\n            registrationName: 'onProgress',\n          },\n          topError: {\n            registrationName: 'onError',\n          },\n          topPartialLoad: {\n            registrationName: 'onPartialLoad',\n          },\n          topLoad: {\n            registrationName: 'onLoad',\n          },\n          topLoadEnd: {\n            registrationName: 'onLoadEnd',\n          },\n        },\n        validAttributes: {\n          blurRadius: true,\n          capInsets: {\n            diff: require('../Utilities/differ/insetsDiffer').default,\n          },\n          defaultSource: {\n            process: require('./resolveAssetSource').default,\n          },\n          internal_analyticTag: true,\n          resizeMode: true,\n          source: true,\n          tintColor: {\n            process: require('../StyleSheet/processColor').default,\n          },\n          ...ConditionallyIgnoredEventHandlers({\n            onLoadStart: true,\n            onLoad: true,\n            onLoadEnd: true,\n            onProgress: true,\n            onError: true,\n            onPartialLoad: true,\n          }),\n        },\n      };\n\nconst ImageViewNativeComponent: HostComponent<ImageHostComponentProps> =\n  NativeComponentRegistry.get<ImageHostComponentProps>(\n    'RCTImageView',\n    () => __INTERNAL_VIEW_CONFIG,\n  );\n\nexport default ImageViewNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport type {____ViewStyle_Internal} from '../../StyleSheet/StyleSheetTypes';\nimport type {\n  AnimatedComponentType,\n  AnimatedProps,\n} from '../createAnimatedComponent';\n\nimport RefreshControl from '../../Components/RefreshControl/RefreshControl';\nimport ScrollView, {\n  type ScrollViewProps,\n} from '../../Components/ScrollView/ScrollView';\nimport flattenStyle from '../../StyleSheet/flattenStyle';\nimport splitLayoutProps from '../../StyleSheet/splitLayoutProps';\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport Platform from '../../Utilities/Platform';\nimport useMergeRefs from '../../Utilities/useMergeRefs';\nimport createAnimatedComponent from '../createAnimatedComponent';\nimport useAnimatedProps from '../useAnimatedProps';\nimport * as React from 'react';\nimport {cloneElement, useMemo} from 'react';\n\ntype AnimatedScrollViewInstance = React.ElementRef<typeof ScrollView>;\n\n/**\n * @see https://github.com/facebook/react-native/commit/b8c8562\n */\nconst AnimatedScrollView: AnimatedComponentType<\n  ScrollViewProps,\n  AnimatedScrollViewInstance,\n> = function AnimatedScrollViewWithOrWithoutInvertedRefreshControl({\n  ref: forwardedRef,\n  ...props\n}: {\n  ref?: React.RefSetter<AnimatedScrollViewInstance>,\n  ...AnimatedProps<ScrollViewProps>,\n}) {\n  // (Android only) When a ScrollView has a RefreshControl and\n  // any `style` property set with an Animated.Value, the CSS\n  // gets incorrectly applied twice. This is because ScrollView\n  // swaps the parent/child relationship of itself and the\n  // RefreshControl component (see ScrollView.js for more details).\n  if (\n    Platform.OS === 'android' &&\n    props.refreshControl != null &&\n    props.style != null\n  ) {\n    return (\n      // $FlowFixMe - It should return an Animated ScrollView but it returns a ScrollView with Animated props applied.\n      <AnimatedScrollViewWithInvertedRefreshControl\n        scrollEventThrottle={0.0001}\n        {...props}\n        ref={forwardedRef}\n        // $FlowFixMe[incompatible-type]\n        refreshControl={props.refreshControl}\n      />\n    );\n  } else {\n    return (\n      <AnimatedScrollViewWithoutInvertedRefreshControl\n        scrollEventThrottle={0.0001}\n        {...props}\n        ref={forwardedRef}\n      />\n    );\n  }\n};\n\nconst AnimatedScrollViewWithInvertedRefreshControl =\n  function AnimatedScrollViewWithInvertedRefreshControl({\n    ref: forwardedRef,\n    ...props\n  }: {\n    ref?: React.RefSetter<AnimatedScrollViewInstance>,\n    ...React.ElementConfig<typeof ScrollView>,\n    // $FlowFixMe[unclear-type] Same Flow type as `refreshControl` in ScrollView\n    refreshControl: ExactReactElement_DEPRECATED<any>,\n  }) {\n    // Split `props` into the animate-able props for the parent (RefreshControl)\n    // and child (ScrollView).\n    const {intermediatePropsForRefreshControl, intermediatePropsForScrollView} =\n      useMemo(() => {\n        // $FlowFixMe[underconstrained-implicit-instantiation]\n        // $FlowFixMe[incompatible-call]\n        const {outer, inner} = splitLayoutProps(flattenStyle(props.style));\n        return {\n          intermediatePropsForRefreshControl: {style: outer},\n          intermediatePropsForScrollView: {...props, style: inner},\n        };\n      }, [props]);\n\n    // Handle animated props on `refreshControl`.\n    const [refreshControlAnimatedProps, refreshControlRef] = useAnimatedProps<\n      {style: ?____ViewStyle_Internal},\n      $FlowFixMe,\n    >(intermediatePropsForRefreshControl);\n    // NOTE: Assumes that refreshControl.ref` and `refreshControl.style` can be\n    // safely clobbered.\n    const refreshControl: ExactReactElement_DEPRECATED<typeof RefreshControl> =\n      cloneElement(props.refreshControl, {\n        ...refreshControlAnimatedProps,\n        ref: refreshControlRef,\n      });\n\n    // Handle animated props on `NativeDirectionalScrollView`.\n    const [scrollViewAnimatedProps, scrollViewRef] = useAnimatedProps<\n      ScrollViewProps,\n      AnimatedScrollViewInstance,\n    >(intermediatePropsForScrollView);\n    const ref = useMergeRefs<AnimatedScrollViewInstance>(\n      scrollViewRef,\n      forwardedRef,\n    );\n\n    return (\n      // $FlowFixMe[incompatible-use] Investigate useAnimatedProps return value\n      <ScrollView\n        {...scrollViewAnimatedProps}\n        ref={ref}\n        refreshControl={refreshControl}\n        // Because `refreshControl` is a clone of `props.refreshControl` with\n        // `refreshControlAnimatedProps` added, we need to pass ScrollView.js\n        // the combined styles since it also splits the outer/inner styles for\n        // its parent/child, respectively. Without this, the refreshControl\n        // styles would be ignored.\n        style={StyleSheet.compose(\n          scrollViewAnimatedProps.style,\n          refreshControlAnimatedProps.style,\n        )}\n      />\n    );\n  };\n\nconst AnimatedScrollViewWithoutInvertedRefreshControl =\n  createAnimatedComponent(ScrollView);\n\nexport default AnimatedScrollView;\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 * @flow strict-local\n * @format\n */\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport AndroidSwipeRefreshLayoutNativeComponent, {\n  Commands as AndroidSwipeRefreshLayoutCommands,\n} from './AndroidSwipeRefreshLayoutNativeComponent';\nimport PullToRefreshViewNativeComponent, {\n  Commands as PullToRefreshCommands,\n} from './PullToRefreshViewNativeComponent';\nimport * as React from 'react';\n\nconst Platform = require('../../Utilities/Platform').default;\n\nexport type RefreshControlPropsIOS = $ReadOnly<{\n  /**\n   * The color of the refresh indicator.\n   */\n  tintColor?: ?ColorValue,\n  /**\n   * Title color.\n   */\n  titleColor?: ?ColorValue,\n  /**\n   * The title displayed under the refresh indicator.\n   */\n  title?: ?string,\n}>;\n\nexport type RefreshControlPropsAndroid = $ReadOnly<{\n  /**\n   * Whether the pull to refresh functionality is enabled.\n   */\n  enabled?: ?boolean,\n  /**\n   * The colors (at least one) that will be used to draw the refresh indicator.\n   */\n  colors?: ?$ReadOnlyArray<ColorValue>,\n  /**\n   * The background color of the refresh indicator.\n   */\n  progressBackgroundColor?: ?ColorValue,\n  /**\n   * Size of the refresh indicator.\n   */\n  size?: ?('default' | 'large'),\n}>;\n\ntype RefreshControlBaseProps = $ReadOnly<{\n  /**\n   * Called when the view starts refreshing.\n   */\n  onRefresh?: ?() => void | Promise<void>,\n\n  /**\n   * Whether the view should be indicating an active refresh.\n   */\n  refreshing: boolean,\n\n  /**\n   * Progress view top offset\n   */\n  progressViewOffset?: ?number,\n}>;\n\nexport type RefreshControlProps = $ReadOnly<{\n  ...ViewProps,\n  ...RefreshControlPropsIOS,\n  ...RefreshControlPropsAndroid,\n  ...RefreshControlBaseProps,\n}>;\n\n/**\n * This component is used inside a ScrollView or ListView to add pull to refresh\n * functionality. When the ScrollView is at `scrollY: 0`, swiping down\n * triggers an `onRefresh` event.\n *\n * ### Usage example\n *\n * ``` js\n * class RefreshableList extends Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = {\n *       refreshing: false,\n *     };\n *   }\n *\n *   _onRefresh() {\n *     this.setState({refreshing: true});\n *     fetchData().then(() => {\n *       this.setState({refreshing: false});\n *     });\n *   }\n *\n *   render() {\n *     return (\n *       <ListView\n *         refreshControl={\n *           <RefreshControl\n *             refreshing={this.state.refreshing}\n *             onRefresh={this._onRefresh.bind(this)}\n *           />\n *         }\n *         ...\n *       >\n *       ...\n *       </ListView>\n *     );\n *   }\n *   ...\n * }\n * ```\n *\n * __Note:__ `refreshing` is a controlled prop, this is why it needs to be set to true\n * in the `onRefresh` function otherwise the refresh indicator will stop immediately.\n */\nclass RefreshControl extends React.Component<RefreshControlProps> {\n  _nativeRef: ?React.ElementRef<\n    | typeof PullToRefreshViewNativeComponent\n    | typeof AndroidSwipeRefreshLayoutNativeComponent,\n  >;\n  _lastNativeRefreshing: boolean = false;\n\n  componentDidMount() {\n    this._lastNativeRefreshing = this.props.refreshing;\n  }\n\n  componentDidUpdate(prevProps: RefreshControlProps) {\n    // RefreshControl is a controlled component so if the native refreshing\n    // value doesn't match the current js refreshing prop update it to\n    // the js value.\n    if (this.props.refreshing !== prevProps.refreshing) {\n      this._lastNativeRefreshing = this.props.refreshing;\n    } else if (\n      this.props.refreshing !== this._lastNativeRefreshing &&\n      this._nativeRef\n    ) {\n      if (Platform.OS === 'android') {\n        AndroidSwipeRefreshLayoutCommands.setNativeRefreshing(\n          this._nativeRef,\n          this.props.refreshing,\n        );\n      } else {\n        PullToRefreshCommands.setNativeRefreshing(\n          this._nativeRef,\n          this.props.refreshing,\n        );\n      }\n      this._lastNativeRefreshing = this.props.refreshing;\n    }\n  }\n\n  render(): React.Node {\n    if (Platform.OS === 'ios') {\n      const {enabled, colors, progressBackgroundColor, size, ...props} =\n        this.props;\n      return (\n        <PullToRefreshViewNativeComponent\n          {...props}\n          ref={this._setNativeRef}\n          onRefresh={this._onRefresh}\n        />\n      );\n    } else {\n      const {tintColor, titleColor, title, ...props} = this.props;\n      return (\n        <AndroidSwipeRefreshLayoutNativeComponent\n          {...props}\n          ref={this._setNativeRef}\n          onRefresh={this._onRefresh}\n        />\n      );\n    }\n  }\n\n  _onRefresh = () => {\n    this._lastNativeRefreshing = true;\n\n    // $FlowFixMe[unused-promise]\n    this.props.onRefresh && this.props.onRefresh();\n\n    // The native component will start refreshing so force an update to\n    // make sure it stays in sync with the js component.\n    this.forceUpdate();\n  };\n\n  _setNativeRef = (\n    ref: ?React.ElementRef<\n      | typeof PullToRefreshViewNativeComponent\n      | typeof AndroidSwipeRefreshLayoutNativeComponent,\n    >,\n  ) => {\n    this._nativeRef = ref;\n  };\n}\n\nexport default RefreshControl;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent';\nexport {default} from '../../../src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent';\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet';\nimport type {\n  DirectEventHandler,\n  Float,\n  WithDefault,\n} from '../../../../Libraries/Types/CodegenTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\nimport * as React from 'react';\n\ntype AndroidSwipeRefreshLayoutNativeProps = $ReadOnly<{\n  ...ViewProps,\n\n  /**\n   * Whether the pull to refresh functionality is enabled.\n   */\n  enabled?: WithDefault<boolean, true>,\n  /**\n   * The colors (at least one) that will be used to draw the refresh indicator.\n   */\n  colors?: ?$ReadOnlyArray<ColorValue>,\n  /**\n   * The background color of the refresh indicator.\n   */\n  progressBackgroundColor?: ?ColorValue,\n  /**\n   * Size of the refresh indicator.\n   */\n  size?: WithDefault<'default' | 'large', 'default'>,\n  /**\n   * Progress view top offset\n   */\n  progressViewOffset?: WithDefault<Float, 0>,\n\n  /**\n   * Called when the view starts refreshing.\n   */\n  onRefresh?: ?DirectEventHandler<null>,\n\n  /**\n   * Whether the view should be indicating an active refresh.\n   */\n  refreshing: boolean,\n}>;\n\ntype NativeType = HostComponent<AndroidSwipeRefreshLayoutNativeProps>;\n\ninterface NativeCommands {\n  +setNativeRefreshing: (\n    viewRef: React.ElementRef<NativeType>,\n    value: boolean,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setNativeRefreshing'],\n});\n\nexport default (codegenNativeComponent<AndroidSwipeRefreshLayoutNativeProps>(\n  'AndroidSwipeRefreshLayout',\n): NativeType);\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent';\nimport PullToRefreshViewNativeComponent from '../../../src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent';\n\nexport default PullToRefreshViewNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet';\nimport type {\n  DirectEventHandler,\n  Float,\n  WithDefault,\n} from '../../../../Libraries/Types/CodegenTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\nimport * as React from 'react';\n\ntype PullToRefreshNativeProps = $ReadOnly<{\n  ...ViewProps,\n\n  /**\n   * The color of the refresh indicator.\n   */\n  tintColor?: ?ColorValue,\n  /**\n   * Title color.\n   */\n  titleColor?: ?ColorValue,\n  /**\n   * The title displayed under the refresh indicator.\n   */\n  title?: WithDefault<string, null>,\n  /**\n   * Progress view top offset\n   */\n  progressViewOffset?: WithDefault<Float, 0>,\n\n  /**\n   * Called when the view starts refreshing.\n   */\n  onRefresh?: ?DirectEventHandler<null>,\n\n  /**\n   * Whether the view should be indicating an active refresh.\n   */\n  refreshing: boolean,\n}>;\n\ntype ComponentType = HostComponent<PullToRefreshNativeProps>;\n\ninterface NativeCommands {\n  +setNativeRefreshing: (\n    viewRef: React.ElementRef<ComponentType>,\n    refreshing: boolean,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setNativeRefreshing'],\n});\n\nexport default (codegenNativeComponent<PullToRefreshNativeProps>(\n  'PullToRefreshView',\n  {\n    paperComponentName: 'RCTRefreshControl',\n    excludedPlatforms: ['android'],\n  },\n): HostComponent<PullToRefreshNativeProps>);\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 * @flow strict-local\n * @format\n */\n\nimport type {HostInstance} from '../../../src/private/types/HostInstance';\nimport type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType';\nimport type {PointProp} from '../../StyleSheet/PointPropType';\nimport type {ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {\n  GestureResponderEvent,\n  LayoutChangeEvent,\n  ScrollEvent,\n} from '../../Types/CoreEventTypes';\nimport type {EventSubscription} from '../../vendor/emitter/EventEmitter';\nimport type {KeyboardEvent, KeyboardMetrics} from '../Keyboard/Keyboard';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {ScrollViewStickyHeaderProps} from './ScrollViewStickyHeader';\n\nimport {\n  HScrollContentViewNativeComponent,\n  HScrollViewNativeComponent,\n} from '../../../src/private/components/scrollview/HScrollViewNativeComponents';\nimport {\n  VScrollContentViewNativeComponent,\n  VScrollViewNativeComponent,\n} from '../../../src/private/components/scrollview/VScrollViewNativeComponents';\nimport AnimatedImplementation from '../../Animated/AnimatedImplementation';\nimport FrameRateLogger from '../../Interaction/FrameRateLogger';\nimport {findNodeHandle} from '../../ReactNative/RendererProxy';\nimport UIManager from '../../ReactNative/UIManager';\nimport flattenStyle from '../../StyleSheet/flattenStyle';\nimport splitLayoutProps from '../../StyleSheet/splitLayoutProps';\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport Dimensions from '../../Utilities/Dimensions';\nimport dismissKeyboard from '../../Utilities/dismissKeyboard';\nimport Platform from '../../Utilities/Platform';\nimport Keyboard from '../Keyboard/Keyboard';\nimport TextInputState from '../TextInput/TextInputState';\nimport View from '../View/View';\nimport processDecelerationRate from './processDecelerationRate';\nimport Commands from './ScrollViewCommands';\nimport ScrollViewContext, {HORIZONTAL, VERTICAL} from './ScrollViewContext';\nimport ScrollViewStickyHeader from './ScrollViewStickyHeader';\nimport invariant from 'invariant';\nimport memoize from 'memoize-one';\nimport nullthrows from 'nullthrows';\nimport * as React from 'react';\nimport {cloneElement} from 'react';\n\n/*\n * iOS scroll event timing nuances:\n * ===============================\n *\n *\n * Scrolling without bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n *    ... physical touch starts ...\n * 2. `onTouchStartCapture`   (when you press down to stop the scroll)\n * 3. `onTouchStart`          (same, but bubble phase)\n * 4. `onResponderRelease`    (when lifting up - you could pause forever before * lifting)\n * 5. `onMomentumScrollEnd`\n *\n *\n * Scrolling with bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n *    ... bounce begins ...\n *    ... some time elapses ...\n *    ... physical touch during bounce ...\n * 2. `onMomentumScrollEnd`   (Makes no sense why this occurs first during bounce)\n * 3. `onTouchStartCapture`   (immediately after `onMomentumScrollEnd`)\n * 4. `onTouchStart`          (same, but bubble phase)\n * 5. `onTouchEnd`            (You could hold the touch start for a long time)\n * 6. `onMomentumScrollBegin` (When releasing the view starts bouncing back)\n *\n * So when we receive an `onTouchStart`, how can we tell if we are touching\n * *during* an animation (which then causes the animation to stop)? The only way\n * to tell is if the `touchStart` occurred immediately after the\n * `onMomentumScrollEnd`.\n *\n * This is abstracted out for you, so you can just call this.scrollResponderIsAnimating() if\n * necessary\n *\n * `ScrollView` also includes logic for blurring a currently focused input\n * if one is focused while scrolling. This is a natural place\n * to put this logic since it can support not dismissing the keyboard while\n * scrolling, unless a recognized \"tap\"-like gesture has occurred.\n *\n * The public lifecycle API includes events for keyboard interaction, responder\n * interaction, and scrolling (among others). The keyboard callbacks\n * `onKeyboardWill/Did/*` are *global* events, but are invoked on scroll\n * responder's props so that you can guarantee that the scroll responder's\n * internal state has been updated accordingly (and deterministically) by\n * the time the props callbacks are invoke. Otherwise, you would always wonder\n * if the scroll responder is currently in a state where it recognizes new\n * keyboard positions etc. If coordinating scrolling with keyboard movement,\n * *always* use these hooks instead of listening to your own global keyboard\n * events.\n *\n * Public keyboard lifecycle API: (props callbacks)\n *\n * Standard Keyboard Appearance Sequence:\n *\n *   this.props.onKeyboardWillShow\n *   this.props.onKeyboardDidShow\n *\n * `onScrollResponderKeyboardDismissed` will be invoked if an appropriate\n * tap inside the scroll responder's scrollable region was responsible\n * for the dismissal of the keyboard. There are other reasons why the\n * keyboard could be dismissed.\n *\n *   this.props.onScrollResponderKeyboardDismissed\n *\n * Standard Keyboard Hide Sequence:\n *\n *   this.props.onKeyboardWillHide\n *   this.props.onKeyboardDidHide\n */\n\nexport interface ScrollViewScrollToOptions {\n  x?: number;\n  y?: number;\n  animated?: boolean;\n}\n\n// Public methods for ScrollView\nexport interface ScrollViewImperativeMethods {\n  +getScrollResponder: () => ScrollResponderType;\n  +getScrollableNode: () => ?number;\n  +getInnerViewNode: () => ?number;\n  +getInnerViewRef: () => InnerViewInstance | null;\n  +getNativeScrollRef: () => HostInstance | null;\n  +scrollTo: (\n    options?: ScrollViewScrollToOptions | number,\n    deprecatedX?: number,\n    deprecatedAnimated?: boolean,\n  ) => void;\n  +scrollToEnd: (options?: ?ScrollViewScrollToOptions) => void;\n  +flashScrollIndicators: () => void;\n  +scrollResponderZoomTo: (\n    rect: {\n      x: number,\n      y: number,\n      width: number,\n      height: number,\n      animated?: boolean,\n    },\n    animated?: boolean, // deprecated, put this inside the rect argument instead\n  ) => void;\n  +scrollResponderScrollNativeHandleToKeyboard: (\n    nodeHandle: number | HostInstance,\n    additionalOffset?: number,\n    preventNegativeScrollOffset?: boolean,\n  ) => void;\n}\n\nexport type DecelerationRateType = 'fast' | 'normal' | number;\nexport type ScrollResponderType = ScrollViewImperativeMethods;\n\nexport interface PublicScrollViewInstance\n  extends HostInstance,\n    ScrollViewImperativeMethods {}\n\ntype InnerViewInstance = React.ElementRef<typeof View>;\n\nexport type ScrollViewPropsIOS = $ReadOnly<{\n  /**\n   * Controls whether iOS should automatically adjust the content inset\n   * for scroll views that are placed behind a navigation bar or\n   * tab bar/ toolbar. The default value is true.\n   * @platform ios\n   */\n  automaticallyAdjustContentInsets?: ?boolean,\n  /**\n   * Controls whether the ScrollView should automatically adjust its `contentInset`\n   * and `scrollViewInsets` when the Keyboard changes its size. The default value is false.\n   * @platform ios\n   */\n  automaticallyAdjustKeyboardInsets?: ?boolean,\n  /**\n   * Controls whether iOS should automatically adjust the scroll indicator\n   * insets. The default value is true. Available on iOS 13 and later.\n   * @platform ios\n   */\n  automaticallyAdjustsScrollIndicatorInsets?: ?boolean,\n  /**\n   * The amount by which the scroll view content is inset from the edges\n   * of the scroll view. Defaults to `{top: 0, left: 0, bottom: 0, right: 0}`.\n   * @platform ios\n   */\n  contentInset?: ?EdgeInsetsProp,\n  /**\n   * When true, the scroll view bounces when it reaches the end of the\n   * content if the content is larger then the scroll view along the axis of\n   * the scroll direction. When false, it disables all bouncing even if\n   * the `alwaysBounce*` props are true. The default value is true.\n   * @platform ios\n   */\n  bounces?: ?boolean,\n  /**\n   * By default, ScrollView has an active pan responder that hijacks panresponders\n   * deeper in the render tree in order to prevent accidental touches while scrolling.\n   * However, in certain occasions (such as when using snapToInterval) in a vertical scrollview\n   * You may want to disable this behavior in order to prevent the ScrollView from blocking touches\n   */\n  disableScrollViewPanResponder?: ?boolean,\n  /**\n   * When true, gestures can drive zoom past min/max and the zoom will animate\n   * to the min/max value at gesture end, otherwise the zoom will not exceed\n   * the limits.\n   * @platform ios\n   */\n  bouncesZoom?: ?boolean,\n  /**\n   * When true, the scroll view bounces horizontally when it reaches the end\n   * even if the content is smaller than the scroll view itself. The default\n   * value is true when `horizontal={true}` and false otherwise.\n   * @platform ios\n   */\n  alwaysBounceHorizontal?: ?boolean,\n  /**\n   * When true, the scroll view bounces vertically when it reaches the end\n   * even if the content is smaller than the scroll view itself. The default\n   * value is false when `horizontal={true}` and true otherwise.\n   * @platform ios\n   */\n  alwaysBounceVertical?: ?boolean,\n  /**\n   * When true, the scroll view automatically centers the content when the\n   * content is smaller than the scroll view bounds; when the content is\n   * larger than the scroll view, this property has no effect. The default\n   * value is false.\n   * @platform ios\n   */\n  centerContent?: ?boolean,\n  /**\n   * The style of the scroll indicators.\n   *\n   *   - `'default'` (the default), same as `black`.\n   *   - `'black'`, scroll indicator is black. This style is good against a light background.\n   *   - `'white'`, scroll indicator is white. This style is good against a dark background.\n   *\n   * @platform ios\n   */\n  indicatorStyle?: ?('default' | 'black' | 'white'),\n  /**\n   * When true, the ScrollView will try to lock to only vertical or horizontal\n   * scrolling while dragging.  The default value is false.\n   * @platform ios\n   */\n  directionalLockEnabled?: ?boolean,\n  /**\n   * When false, once tracking starts, won't try to drag if the touch moves.\n   * The default value is true.\n   * @platform ios\n   */\n  canCancelContentTouches?: ?boolean,\n  /**\n   * The maximum allowed zoom scale. The default value is 1.0.\n   * @platform ios\n   */\n  maximumZoomScale?: ?number,\n  /**\n   * The minimum allowed zoom scale. The default value is 1.0.\n   * @platform ios\n   */\n  minimumZoomScale?: ?number,\n  /**\n   * When true, ScrollView allows use of pinch gestures to zoom in and out.\n   * The default value is true.\n   * @platform ios\n   */\n  pinchGestureEnabled?: ?boolean,\n  /**\n   * The amount by which the scroll view indicators are inset from the edges\n   * of the scroll view. This should normally be set to the same value as\n   * the `contentInset`. Defaults to `{0, 0, 0, 0}`.\n   * @platform ios\n   */\n  scrollIndicatorInsets?: ?EdgeInsetsProp,\n  /**\n   * When true, the scroll view can be programmatically scrolled beyond its\n   * content size. The default value is false.\n   * @platform ios\n   */\n  scrollToOverflowEnabled?: ?boolean,\n  /**\n   * When true, the scroll view scrolls to top when the status bar is tapped.\n   * The default value is true.\n   * @platform ios\n   */\n  scrollsToTop?: ?boolean,\n  /**\n   * Fires when the scroll view scrolls to top after the status bar has been tapped\n   * @platform ios\n   */\n  onScrollToTop?: (event: ScrollEvent) => void,\n  /**\n   * When true, shows a horizontal scroll indicator.\n   * The default value is true.\n   */\n  showsHorizontalScrollIndicator?: ?boolean,\n  /**\n   * The current scale of the scroll view content. The default value is 1.0.\n   * @platform ios\n   */\n  zoomScale?: ?number,\n  /**\n   * This property specifies how the safe area insets are used to modify the\n   * content area of the scroll view. The default value of this property is\n   * \"never\".\n   * @platform ios\n   */\n  contentInsetAdjustmentBehavior?: ?(\n    | 'automatic'\n    | 'scrollableAxes'\n    | 'never'\n    | 'always'\n  ),\n}>;\n\nexport type ScrollViewPropsAndroid = $ReadOnly<{\n  /**\n   * Enables nested scrolling for Android API level 21+.\n   * Nested scrolling is supported by default on iOS\n   * @platform android\n   */\n  nestedScrollEnabled?: ?boolean,\n  /**\n   * Sometimes a scrollview takes up more space than its content fills. When this is\n   * the case, this prop will fill the rest of the scrollview with a color to avoid setting\n   * a background and creating unnecessary overdraw. This is an advanced optimization\n   * that is not needed in the general case.\n   * @platform android\n   */\n  endFillColor?: ?ColorValue,\n  /**\n   * Tag used to log scroll performance on this scroll view. Will force\n   * momentum events to be turned on (see sendMomentumEvents). This doesn't do\n   * anything out of the box and you need to implement a custom native\n   * FpsListener for it to be useful.\n   * @platform android\n   */\n  scrollPerfTag?: ?string,\n  /**\n   * Used to override default value of overScroll mode.\n   *\n   * Possible values:\n   *\n   *  - `'auto'` - Default value, allow a user to over-scroll\n   *    this view only if the content is large enough to meaningfully scroll.\n   *  - `'always'` - Always allow a user to over-scroll this view.\n   *  - `'never'` - Never allow a user to over-scroll this view.\n   *\n   * @platform android\n   */\n  overScrollMode?: ?('auto' | 'always' | 'never'),\n  /**\n   * Causes the scrollbars not to turn transparent when they are not in use.\n   * The default value is false.\n   *\n   * @platform android\n   */\n  persistentScrollbar?: ?boolean,\n  /**\n   * Controls the fading effect at the edges of the scroll content.\n   *\n   * A value greater than 0 will apply the fading effect, indicating more content is available\n   * to scroll.\n   *\n   * You can specify a single number to apply the same fading length to both edges.\n   * Alternatively, use an object with `start` and `end` properties to set different\n   * fading lengths for the start and end of the scroll content.\n   *\n   * The default value is 0.\n   *\n   * @platform android\n   */\n  fadingEdgeLength?: ?number | {start: number, end: number},\n}>;\n\ntype StickyHeaderComponentType = component(\n  ref?: React.RefSetter<$ReadOnly<interface {setNextHeaderY: number => void}>>,\n  ...ScrollViewStickyHeaderProps\n);\n\ntype ScrollViewBaseProps = $ReadOnly<{\n  /**\n   * These styles will be applied to the scroll view content container which\n   * wraps all of the child views. Example:\n   *\n   * ```\n   * return (\n   *   <ScrollView contentContainerStyle={styles.contentContainer}>\n   *   </ScrollView>\n   * );\n   * ...\n   * const styles = StyleSheet.create({\n   *   contentContainer: {\n   *     paddingVertical: 20\n   *   }\n   * });\n   * ```\n   */\n  contentContainerStyle?: ?ViewStyleProp,\n  /**\n   * Used to manually set the starting scroll offset.\n   * The default value is `{x: 0, y: 0}`.\n   */\n  contentOffset?: ?PointProp,\n  /**\n   * When true, the scroll view stops on the next index (in relation to scroll\n   * position at release) regardless of how fast the gesture is. This can be\n   * used for pagination when the page is less than the width of the\n   * horizontal ScrollView or the height of the vertical ScrollView. The default value is false.\n   */\n  disableIntervalMomentum?: ?boolean,\n  /**\n   * A floating-point number that determines how quickly the scroll view\n   * decelerates after the user lifts their finger. You may also use string\n   * shortcuts `\"normal\"` and `\"fast\"` which match the underlying iOS settings\n   * for `UIScrollViewDecelerationRateNormal` and\n   * `UIScrollViewDecelerationRateFast` respectively.\n   *\n   *   - `'normal'`: 0.998 on iOS, 0.985 on Android (the default)\n   *   - `'fast'`: 0.99 on iOS, 0.9 on Android\n   */\n  decelerationRate?: ?DecelerationRateType,\n\n  /**\n   * *Experimental, iOS Only*. The API is experimental and will change in future releases.\n   *\n   * Controls how much distance is travelled after user stops scrolling.\n   * Value greater than 1 will increase the distance travelled.\n   * Value less than 1 will decrease the distance travelled.\n   *\n   * @deprecated\n   *\n   * The default value is 1.\n   */\n  experimental_endDraggingSensitivityMultiplier?: ?number,\n\n  /**\n   * When true, the scroll view's children are arranged horizontally in a row\n   * instead of vertically in a column. The default value is false.\n   */\n  horizontal?: ?boolean,\n  /**\n   * If sticky headers should stick at the bottom instead of the top of the\n   * ScrollView. This is usually used with inverted ScrollViews.\n   */\n  invertStickyHeaders?: ?boolean,\n  /**\n   * Determines whether the keyboard gets dismissed in response to a drag.\n   *\n   * *Cross platform*\n   *\n   *   - `'none'` (the default), drags do not dismiss the keyboard.\n   *   - `'on-drag'`, the keyboard is dismissed when a drag begins.\n   *\n   * *iOS Only*\n   *\n   *   - `'interactive'`, the keyboard is dismissed interactively with the drag and moves in\n   *     synchrony with the touch; dragging upwards cancels the dismissal.\n   *     On android this is not supported and it will have the same behavior as 'none'.\n   */\n  keyboardDismissMode?: ?// default\n  // cross-platform\n  ('none' | 'on-drag' | 'interactive'), // ios only\n  /**\n   * Determines when the keyboard should stay visible after a tap.\n   *\n   *   - `'never'` (the default), tapping outside of the focused text input when the keyboard\n   *     is up dismisses the keyboard. When this happens, children won't receive the tap.\n   *   - `'always'`, the keyboard will not dismiss automatically, and the scroll view will not\n   *     catch taps, but children of the scroll view can catch taps.\n   *   - `'handled'`, the keyboard will not dismiss automatically when the tap was handled by\n   *     a children, (or captured by an ancestor).\n   *   - `false`, deprecated, use 'never' instead\n   *   - `true`, deprecated, use 'always' instead\n   */\n  keyboardShouldPersistTaps?: ?('always' | 'never' | 'handled' | true | false),\n  /**\n   * When set, the scroll view will adjust the scroll position so that the first child that is\n   * partially or fully visible and at or beyond `minIndexForVisible` will not change position.\n   * This is useful for lists that are loading content in both directions, e.g. a chat thread,\n   * where new messages coming in might otherwise cause the scroll position to jump. A value of 0\n   * is common, but other values such as 1 can be used to skip loading spinners or other content\n   * that should not maintain position.\n   *\n   * The optional `autoscrollToTopThreshold` can be used to make the content automatically scroll\n   * to the top after making the adjustment if the user was within the threshold of the top before\n   * the adjustment was made. This is also useful for chat-like applications where you want to see\n   * new messages scroll into place, but not if the user has scrolled up a ways and it would be\n   * disruptive to scroll a bunch.\n   *\n   * Caveat 1: Reordering elements in the scrollview with this enabled will probably cause\n   * jumpiness and jank. It can be fixed, but there are currently no plans to do so. For now,\n   * don't re-order the content of any ScrollViews or Lists that use this feature.\n   *\n   * Caveat 2: This simply uses `contentOffset` and `frame.origin` in native code to compute\n   * visibility. Occlusion, transforms, and other complexity won't be taken into account as to\n   * whether content is \"visible\" or not.\n   *\n   */\n  maintainVisibleContentPosition?: ?$ReadOnly<{\n    minIndexForVisible: number,\n    autoscrollToTopThreshold?: ?number,\n  }>,\n  /**\n   * Called when the momentum scroll starts (scroll which occurs as the ScrollView glides to a stop).\n   */\n  onMomentumScrollBegin?: ?(event: ScrollEvent) => void,\n  /**\n   * Called when the momentum scroll ends (scroll which occurs as the ScrollView glides to a stop).\n   */\n  onMomentumScrollEnd?: ?(event: ScrollEvent) => void,\n\n  /**\n   * Fires at most once per frame during scrolling.\n   */\n  onScroll?: ?(event: ScrollEvent) => void,\n  /**\n   * Called when the user begins to drag the scroll view.\n   */\n  onScrollBeginDrag?: ?(event: ScrollEvent) => void,\n  /**\n   * Called when the user stops dragging the scroll view and it either stops\n   * or begins to glide.\n   */\n  onScrollEndDrag?: ?(event: ScrollEvent) => void,\n  /**\n   * Called when scrollable content view of the ScrollView changes.\n   *\n   * Handler function is passed the content width and content height as parameters:\n   * `(contentWidth, contentHeight)`\n   *\n   * It's implemented using onLayout handler attached to the content container\n   * which this ScrollView renders.\n   */\n  onContentSizeChange?: (contentWidth: number, contentHeight: number) => void,\n  onKeyboardDidShow?: (event: KeyboardEvent) => void,\n  onKeyboardDidHide?: (event: KeyboardEvent) => void,\n  onKeyboardWillShow?: (event: KeyboardEvent) => void,\n  onKeyboardWillHide?: (event: KeyboardEvent) => void,\n  /**\n   * When true, the scroll view stops on multiples of the scroll view's size\n   * when scrolling. This can be used for horizontal pagination. The default\n   * value is false.\n   */\n  pagingEnabled?: ?boolean,\n  /**\n   * When false, the view cannot be scrolled via touch interaction.\n   * The default value is true.\n   *\n   * Note that the view can always be scrolled by calling `scrollTo`.\n   */\n  scrollEnabled?: ?boolean,\n  /**\n   * Limits how often scroll events will be fired while scrolling, specified as\n   * a time interval in ms. This may be useful when expensive work is performed\n   * in response to scrolling. Values <= `16` will disable throttling,\n   * regardless of the refresh rate of the device.\n   */\n  scrollEventThrottle?: ?number,\n  /**\n   * When true, shows a vertical scroll indicator.\n   * The default value is true.\n   */\n  showsVerticalScrollIndicator?: ?boolean,\n  /**\n   * When true, Sticky header is hidden when scrolling down, and dock at the top\n   * when scrolling up\n   */\n  stickyHeaderHiddenOnScroll?: ?boolean,\n  /**\n   * An array of child indices determining which children get docked to the\n   * top of the screen when scrolling. For example, passing\n   * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the\n   * top of the scroll view. This property is not supported in conjunction\n   * with `horizontal={true}`.\n   */\n  stickyHeaderIndices?: ?$ReadOnlyArray<number>,\n  /**\n   * A React Component that will be used to render sticky headers.\n   * To be used together with `stickyHeaderIndices` or with `SectionList`, defaults to `ScrollViewStickyHeader`.\n   * You may need to set this if your sticky header uses custom transforms (eg. translation),\n   * for example when you want your list to have an animated hidable header.\n   */\n  StickyHeaderComponent?: StickyHeaderComponentType,\n  /**\n   * When `snapToInterval` is set, `snapToAlignment` will define the relationship\n   * of the snapping to the scroll view.\n   *\n   *   - `'start'` (the default) will align the snap at the left (horizontal) or top (vertical)\n   *   - `'center'` will align the snap in the center\n   *   - `'end'` will align the snap at the right (horizontal) or bottom (vertical)\n   */\n  snapToAlignment?: ?('start' | 'center' | 'end'),\n  /**\n   * When set, causes the scroll view to stop at multiples of the value of\n   * `snapToInterval`. This can be used for paginating through children\n   * that have lengths smaller than the scroll view. Typically used in\n   * combination with `snapToAlignment` and `decelerationRate=\"fast\"`.\n   *\n   * Overrides less configurable `pagingEnabled` prop.\n   */\n  snapToInterval?: ?number,\n  /**\n   * When set, causes the scroll view to stop at the defined offsets.\n   * This can be used for paginating through variously sized children\n   * that have lengths smaller than the scroll view. Typically used in\n   * combination with `decelerationRate=\"fast\"`.\n   *\n   * Overrides less configurable `pagingEnabled` and `snapToInterval` props.\n   */\n  snapToOffsets?: ?$ReadOnlyArray<number>,\n  /**\n   * Use in conjunction with `snapToOffsets`. By default, the beginning\n   * of the list counts as a snap offset. Set `snapToStart` to false to disable\n   * this behavior and allow the list to scroll freely between its start and\n   * the first `snapToOffsets` offset.\n   * The default value is true.\n   */\n  snapToStart?: ?boolean,\n  /**\n   * Use in conjunction with `snapToOffsets`. By default, the end\n   * of the list counts as a snap offset. Set `snapToEnd` to false to disable\n   * this behavior and allow the list to scroll freely between its end and\n   * the last `snapToOffsets` offset.\n   * The default value is true.\n   */\n  snapToEnd?: ?boolean,\n  /**\n   * Experimental: When true, offscreen child views (whose `overflow` value is\n   * `hidden`) are removed from their native backing superview when offscreen.\n   * This can improve scrolling performance on long lists. The default value is\n   * true.\n   */\n  removeClippedSubviews?: ?boolean,\n  /**\n   * A RefreshControl component, used to provide pull-to-refresh\n   * functionality for the ScrollView. Only works for vertical ScrollViews\n   * (`horizontal` prop must be `false`).\n   *\n   * See [RefreshControl](docs/refreshcontrol.html).\n   */\n  /* $FlowFixMe[unclear-type] - how to handle generic type without existential\n   * operator? */\n  refreshControl?: ?React.MixedElement,\n  children?: React.Node,\n  /**\n   * A ref to the inner View element of the ScrollView. This should be used\n   * instead of calling `getInnerViewRef`.\n   */\n  innerViewRef?: React.RefSetter<InnerViewInstance>,\n  /**\n   * A ref to the Native ScrollView component. This ref can be used to call\n   * all of ScrollView's public methods, in addition to native methods like\n   * measure, measureLayout, etc.\n   */\n  scrollViewRef?: React.RefSetter<PublicScrollViewInstance>,\n}>;\n\nexport type ScrollViewProps = $ReadOnly<{\n  ...Omit<ViewProps, 'experimental_accessibilityOrder'>,\n  ...ScrollViewPropsIOS,\n  ...ScrollViewPropsAndroid,\n  ...ScrollViewBaseProps,\n}>;\n\ntype ScrollViewState = {\n  layoutHeight: ?number,\n};\n\nconst IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16;\n\nexport type ScrollViewComponentStatics = $ReadOnly<{\n  Context: typeof ScrollViewContext,\n}>;\n\n/**\n * Component that wraps platform ScrollView while providing\n * integration with touch locking \"responder\" system.\n *\n * Keep in mind that ScrollViews must have a bounded height in order to work,\n * since they contain unbounded-height children into a bounded container (via\n * a scroll interaction). In order to bound the height of a ScrollView, either\n * set the height of the view directly (discouraged) or make sure all parent\n * views have bounded height. Forgetting to transfer `{flex: 1}` down the\n * view stack can lead to errors here, which the element inspector makes\n * easy to debug.\n *\n * Doesn't yet support other contained responders from blocking this scroll\n * view from becoming the responder.\n *\n *\n * `<ScrollView>` vs [`<FlatList>`](https://reactnative.dev/docs/flatlist) - which one to use?\n *\n * `ScrollView` simply renders all its react child components at once. That\n * makes it very easy to understand and use.\n *\n * On the other hand, this has a performance downside. Imagine you have a very\n * long list of items you want to display, maybe several screens worth of\n * content. Creating JS components and native views for everything all at once,\n * much of which may not even be shown, will contribute to slow rendering and\n * increased memory usage.\n *\n * This is where `FlatList` comes into play. `FlatList` renders items lazily,\n * just when they are about to appear, and removes items that scroll way off\n * screen to save memory and processing time.\n *\n * `FlatList` is also handy if you want to render separators between your items,\n * multiple columns, infinite scroll loading, or any number of other features it\n * supports out of the box.\n */\nclass ScrollView extends React.Component<ScrollViewProps, ScrollViewState> {\n  static Context: typeof ScrollViewContext = ScrollViewContext;\n\n  constructor(props: ScrollViewProps) {\n    super(props);\n\n    this._scrollAnimatedValue = new AnimatedImplementation.Value(\n      this.props.contentOffset?.y ?? 0,\n    );\n    this._scrollAnimatedValue.setOffset(this.props.contentInset?.top ?? 0);\n  }\n\n  _scrollAnimatedValue: AnimatedImplementation.Value;\n  _scrollAnimatedValueAttachment: ?{detach: () => void, ...} = null;\n  _stickyHeaderRefs: Map<\n    React.Key,\n    React.ElementRef<StickyHeaderComponentType>,\n  > = new Map();\n  _headerLayoutYs: Map<React.Key, number> = new Map();\n\n  _keyboardMetrics: ?KeyboardMetrics = null;\n  _additionalScrollOffset: number = 0;\n  _isTouching: boolean = false;\n  _lastMomentumScrollBeginTime: number = 0;\n  _lastMomentumScrollEndTime: number = 0;\n\n  // Reset to false every time becomes responder. This is used to:\n  // - Determine if the scroll view has been scrolled and therefore should\n  // refuse to give up its responder lock.\n  // - Determine if releasing should dismiss the keyboard when we are in\n  // tap-to-dismiss mode (this.props.keyboardShouldPersistTaps !== 'always').\n  _observedScrollSinceBecomingResponder: boolean = false;\n  _becameResponderWhileAnimating: boolean = false;\n  _preventNegativeScrollOffset: ?boolean = null;\n\n  _animated: ?boolean = null;\n\n  _subscriptionKeyboardWillShow: ?EventSubscription = null;\n  _subscriptionKeyboardWillHide: ?EventSubscription = null;\n  _subscriptionKeyboardDidShow: ?EventSubscription = null;\n  _subscriptionKeyboardDidHide: ?EventSubscription = null;\n\n  state: ScrollViewState = {\n    layoutHeight: null,\n  };\n\n  componentDidMount() {\n    if (typeof this.props.keyboardShouldPersistTaps === 'boolean') {\n      console.warn(\n        `'keyboardShouldPersistTaps={${\n          this.props.keyboardShouldPersistTaps === true ? 'true' : 'false'\n        }}' is deprecated. ` +\n          `Use 'keyboardShouldPersistTaps=\"${\n            this.props.keyboardShouldPersistTaps ? 'always' : 'never'\n          }\"' instead`,\n      );\n    }\n\n    this._keyboardMetrics = Keyboard.metrics();\n    this._additionalScrollOffset = 0;\n\n    this._subscriptionKeyboardWillShow = Keyboard.addListener(\n      'keyboardWillShow',\n      this.scrollResponderKeyboardWillShow,\n    );\n    this._subscriptionKeyboardWillHide = Keyboard.addListener(\n      'keyboardWillHide',\n      this.scrollResponderKeyboardWillHide,\n    );\n    this._subscriptionKeyboardDidShow = Keyboard.addListener(\n      'keyboardDidShow',\n      this.scrollResponderKeyboardDidShow,\n    );\n    this._subscriptionKeyboardDidHide = Keyboard.addListener(\n      'keyboardDidHide',\n      this.scrollResponderKeyboardDidHide,\n    );\n\n    this._updateAnimatedNodeAttachment();\n  }\n\n  componentDidUpdate(prevProps: ScrollViewProps) {\n    const prevContentInsetTop = prevProps.contentInset\n      ? prevProps.contentInset.top\n      : 0;\n    const newContentInsetTop = this.props.contentInset\n      ? this.props.contentInset.top\n      : 0;\n    if (prevContentInsetTop !== newContentInsetTop) {\n      this._scrollAnimatedValue.setOffset(newContentInsetTop || 0);\n    }\n\n    this._updateAnimatedNodeAttachment();\n  }\n\n  componentWillUnmount() {\n    if (this._subscriptionKeyboardWillShow != null) {\n      this._subscriptionKeyboardWillShow.remove();\n    }\n    if (this._subscriptionKeyboardWillHide != null) {\n      this._subscriptionKeyboardWillHide.remove();\n    }\n    if (this._subscriptionKeyboardDidShow != null) {\n      this._subscriptionKeyboardDidShow.remove();\n    }\n    if (this._subscriptionKeyboardDidHide != null) {\n      this._subscriptionKeyboardDidHide.remove();\n    }\n\n    if (this._scrollAnimatedValueAttachment) {\n      this._scrollAnimatedValueAttachment.detach();\n    }\n  }\n\n  /**\n   * Returns a reference to the underlying scroll responder, which supports\n   * operations like `scrollTo`. All ScrollView-like components should\n   * implement this method so that they can be composed while providing access\n   * to the underlying scroll responder's methods.\n   */\n  getScrollResponder: ScrollViewImperativeMethods['getScrollResponder'] =\n    () => {\n      // $FlowFixMe[unclear-type]\n      return ((this: any): ScrollResponderType);\n    };\n\n  getScrollableNode: ScrollViewImperativeMethods['getScrollableNode'] = () => {\n    return findNodeHandle<$FlowFixMe>(this.getNativeScrollRef());\n  };\n\n  getInnerViewNode: ScrollViewImperativeMethods['getInnerViewNode'] = () => {\n    return findNodeHandle<$FlowFixMe>(this._innerView.nativeInstance);\n  };\n\n  getInnerViewRef: ScrollViewImperativeMethods['getInnerViewRef'] = () => {\n    return this._innerView.nativeInstance;\n  };\n\n  getNativeScrollRef: ScrollViewImperativeMethods['getNativeScrollRef'] =\n    () => {\n      return this._scrollView.nativeInstance;\n    };\n\n  /**\n   * Scrolls to a given x, y offset, either immediately or with a smooth animation.\n   *\n   * Example:\n   *\n   * `scrollTo({x: 0, y: 0, animated: true})`\n   *\n   * Note: The weird function signature is due to the fact that, for historical reasons,\n   * the function also accepts separate arguments as an alternative to the options object.\n   * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n   */\n  scrollTo: ScrollViewImperativeMethods['scrollTo'] = (\n    options,\n    deprecatedX,\n    deprecatedAnimated,\n  ) => {\n    let x, y, animated;\n    if (typeof options === 'number') {\n      console.warn(\n        '`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, ' +\n          'animated: true})` instead.',\n      );\n      y = options;\n      x = deprecatedX;\n      animated = deprecatedAnimated;\n    } else if (options) {\n      y = options.y;\n      x = options.x;\n      animated = options.animated;\n    }\n    const component = this.getNativeScrollRef();\n    if (component == null) {\n      return;\n    }\n    Commands.scrollTo(component, x || 0, y || 0, animated !== false);\n  };\n\n  /**\n   * If this is a vertical ScrollView scrolls to the bottom.\n   * If this is a horizontal ScrollView scrolls to the right.\n   *\n   * Use `scrollToEnd({animated: true})` for smooth animated scrolling,\n   * `scrollToEnd({animated: false})` for immediate scrolling.\n   * If no options are passed, `animated` defaults to true.\n   */\n  scrollToEnd: ScrollViewImperativeMethods['scrollToEnd'] = options => {\n    // Default to true\n    const animated = (options && options.animated) !== false;\n    const component = this.getNativeScrollRef();\n    if (component == null) {\n      return;\n    }\n    Commands.scrollToEnd(component, animated);\n  };\n\n  /**\n   * Displays the scroll indicators momentarily.\n   *\n   * @platform ios\n   */\n  flashScrollIndicators: ScrollViewImperativeMethods['flashScrollIndicators'] =\n    () => {\n      const component = this.getNativeScrollRef();\n      if (component == null) {\n        return;\n      }\n      Commands.flashScrollIndicators(component);\n    };\n\n  /**\n   * This method should be used as the callback to onFocus in a TextInputs'\n   * parent view. Note that any module using this mixin needs to return\n   * the parent view's ref in getScrollViewRef() in order to use this method.\n   * @param {number} nodeHandle The TextInput node handle\n   * @param {number} additionalOffset The scroll view's bottom \"contentInset\".\n   *        Default is 0.\n   * @param {bool} preventNegativeScrolling Whether to allow pulling the content\n   *        down to make it meet the keyboard's top. Default is false.\n   */\n  scrollResponderScrollNativeHandleToKeyboard: ScrollViewImperativeMethods['scrollResponderScrollNativeHandleToKeyboard'] =\n    (\n      nodeHandle: number | HostInstance,\n      additionalOffset?: number,\n      preventNegativeScrollOffset?: boolean,\n    ) => {\n      this._additionalScrollOffset = additionalOffset || 0;\n      this._preventNegativeScrollOffset = !!preventNegativeScrollOffset;\n\n      if (this._innerView.nativeInstance == null) {\n        return;\n      }\n\n      if (typeof nodeHandle === 'number') {\n        UIManager.measureLayout(\n          nodeHandle,\n          nullthrows(findNodeHandle<$FlowFixMe>(this)),\n          // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n          this._textInputFocusError,\n          this._inputMeasureAndScrollToKeyboard,\n        );\n      } else {\n        nodeHandle.measureLayout(\n          this._innerView.nativeInstance,\n          this._inputMeasureAndScrollToKeyboard,\n          // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n          this._textInputFocusError,\n        );\n      }\n    };\n\n  /**\n   * A helper function to zoom to a specific rect in the scrollview. The argument has the shape\n   * {x: number; y: number; width: number; height: number; animated: boolean = true}\n   *\n   * @platform ios\n   */\n  scrollResponderZoomTo: ScrollViewImperativeMethods['scrollResponderZoomTo'] =\n    (\n      rect: {\n        x: number,\n        y: number,\n        width: number,\n        height: number,\n        animated?: boolean,\n      },\n      animated?: boolean, // deprecated, put this inside the rect argument instead\n    ) => {\n      invariant(Platform.OS === 'ios', 'zoomToRect is not implemented');\n      if ('animated' in rect) {\n        this._animated = rect.animated;\n        delete rect.animated;\n      } else if (typeof animated !== 'undefined') {\n        console.warn(\n          '`scrollResponderZoomTo` `animated` argument is deprecated. Use `options.animated` instead',\n        );\n      }\n\n      const component = this.getNativeScrollRef();\n      if (component == null) {\n        return;\n      }\n      Commands.zoomToRect(component, rect, animated !== false);\n    };\n\n  _textInputFocusError() {\n    console.warn('Error measuring text field.');\n  }\n\n  /**\n   * The calculations performed here assume the scroll view takes up the entire\n   * screen - even if has some content inset. We then measure the offsets of the\n   * keyboard, and compensate both for the scroll view's \"contentInset\".\n   *\n   * @param {number} left Position of input w.r.t. table view.\n   * @param {number} top Position of input w.r.t. table view.\n   * @param {number} width Width of the text input.\n   * @param {number} height Height of the text input.\n   */\n  _inputMeasureAndScrollToKeyboard: (\n    left: number,\n    top: number,\n    width: number,\n    height: number,\n  ) => void = (left: number, top: number, width: number, height: number) => {\n    let keyboardScreenY = Dimensions.get('window').height;\n\n    const scrollTextInputIntoVisibleRect = () => {\n      if (this._keyboardMetrics != null) {\n        keyboardScreenY = this._keyboardMetrics.screenY;\n      }\n      let scrollOffsetY =\n        top - keyboardScreenY + height + this._additionalScrollOffset;\n\n      // By default, this can scroll with negative offset, pulling the content\n      // down so that the target component's bottom meets the keyboard's top.\n      // If requested otherwise, cap the offset at 0 minimum to avoid content\n      // shifting down.\n      if (this._preventNegativeScrollOffset === true) {\n        scrollOffsetY = Math.max(0, scrollOffsetY);\n      }\n      this.scrollTo({x: 0, y: scrollOffsetY, animated: true});\n\n      this._additionalScrollOffset = 0;\n      this._preventNegativeScrollOffset = false;\n    };\n\n    if (this._keyboardMetrics == null) {\n      // `_keyboardMetrics` is set inside `scrollResponderKeyboardWillShow` which\n      // is not guaranteed to be called before `_inputMeasureAndScrollToKeyboard` but native has already scheduled it.\n      // In case it was not called before `_inputMeasureAndScrollToKeyboard`, we postpone scrolling to\n      // text input.\n      setTimeout(() => {\n        scrollTextInputIntoVisibleRect();\n      }, 0);\n    } else {\n      scrollTextInputIntoVisibleRect();\n    }\n  };\n\n  _getKeyForIndex(\n    index: number,\n    // $FlowFixMe[unclear-type] - The children and its key is unknown.\n    childArray: any,\n  ): React.Key {\n    const child = childArray[index];\n    return child && child.key;\n  }\n\n  _updateAnimatedNodeAttachment() {\n    if (this._scrollAnimatedValueAttachment) {\n      this._scrollAnimatedValueAttachment.detach();\n    }\n    if (\n      this.props.stickyHeaderIndices &&\n      this.props.stickyHeaderIndices.length > 0\n    ) {\n      this._scrollAnimatedValueAttachment =\n        AnimatedImplementation.attachNativeEvent(\n          this.getNativeScrollRef(),\n          'onScroll',\n          [{nativeEvent: {contentOffset: {y: this._scrollAnimatedValue}}}],\n        );\n    }\n  }\n\n  _setStickyHeaderRef(\n    key: string,\n    ref: ?React.ElementRef<StickyHeaderComponentType>,\n  ) {\n    if (ref) {\n      this._stickyHeaderRefs.set(key, ref);\n    } else {\n      this._stickyHeaderRefs.delete(key);\n    }\n  }\n\n  _onStickyHeaderLayout(\n    index: number,\n    event: LayoutChangeEvent,\n    key: React.Key,\n  ) {\n    const {stickyHeaderIndices} = this.props;\n    if (!stickyHeaderIndices) {\n      return;\n    }\n    const childArray = React.Children.toArray<$FlowFixMe>(this.props.children);\n    if (key !== this._getKeyForIndex(index, childArray)) {\n      // ignore stale layout update\n      return;\n    }\n\n    const layoutY = event.nativeEvent.layout.y;\n    this._headerLayoutYs.set(key, layoutY);\n\n    const indexOfIndex = stickyHeaderIndices.indexOf(index);\n    const previousHeaderIndex = stickyHeaderIndices[indexOfIndex - 1];\n    if (previousHeaderIndex != null) {\n      const previousHeader = this._stickyHeaderRefs.get(\n        this._getKeyForIndex(previousHeaderIndex, childArray),\n      );\n      previousHeader &&\n        previousHeader.setNextHeaderY &&\n        previousHeader.setNextHeaderY(layoutY);\n    }\n  }\n\n  _handleScroll = (e: ScrollEvent) => {\n    this._observedScrollSinceBecomingResponder = true;\n    this.props.onScroll && this.props.onScroll(e);\n  };\n\n  _handleLayout = (e: LayoutChangeEvent) => {\n    if (this.props.invertStickyHeaders === true) {\n      this.setState({layoutHeight: e.nativeEvent.layout.height});\n    }\n    if (this.props.onLayout) {\n      this.props.onLayout(e);\n    }\n  };\n\n  _handleContentOnLayout = (e: LayoutChangeEvent) => {\n    const {width, height} = e.nativeEvent.layout;\n    this.props.onContentSizeChange &&\n      this.props.onContentSizeChange(width, height);\n  };\n\n  _innerView: RefForwarder<InnerViewInstance, InnerViewInstance> =\n    createRefForwarder(\n      (instance: InnerViewInstance): InnerViewInstance => instance,\n    );\n\n  _scrollView: RefForwarder<HostInstance, PublicScrollViewInstance | null> =\n    createRefForwarder(nativeInstance => {\n      // This is a hack. Ideally we would forwardRef  to the underlying\n      // host component. However, since ScrollView has it's own methods that can be\n      // called as well, if we used the standard forwardRef then these\n      // methods wouldn't be accessible and thus be a breaking change.\n      //\n      // Therefore we edit ref to include ScrollView's public methods so that\n      // they are callable from the ref.\n\n      // $FlowFixMe[prop-missing] - Known issue with appending custom methods.\n      // $FlowFixMe[unsafe-object-assign]\n      const publicInstance: PublicScrollViewInstance = Object.assign(\n        nativeInstance,\n        {\n          getScrollResponder: this.getScrollResponder,\n          getScrollableNode: this.getScrollableNode,\n          getInnerViewNode: this.getInnerViewNode,\n          getInnerViewRef: this.getInnerViewRef,\n          getNativeScrollRef: this.getNativeScrollRef,\n          scrollTo: this.scrollTo,\n          scrollToEnd: this.scrollToEnd,\n          flashScrollIndicators: this.flashScrollIndicators,\n          scrollResponderZoomTo: this.scrollResponderZoomTo,\n          scrollResponderScrollNativeHandleToKeyboard:\n            this.scrollResponderScrollNativeHandleToKeyboard,\n        },\n      );\n\n      return publicInstance;\n    });\n\n  /**\n   * Warning, this may be called several times for a single keyboard opening.\n   * It's best to store the information in this method and then take any action\n   * at a later point (either in `keyboardDidShow` or other).\n   *\n   * Here's the order that events occur in:\n   * - focus\n   * - willShow {startCoordinates, endCoordinates} several times\n   * - didShow several times\n   * - blur\n   * - willHide {startCoordinates, endCoordinates} several times\n   * - didHide several times\n   *\n   * The `ScrollResponder` module callbacks for each of these events.\n   * Even though any user could have easily listened to keyboard events\n   * themselves, using these `props` callbacks ensures that ordering of events\n   * is consistent - and not dependent on the order that the keyboard events are\n   * subscribed to. This matters when telling the scroll view to scroll to where\n   * the keyboard is headed - the scroll responder better have been notified of\n   * the keyboard destination before being instructed to scroll to where the\n   * keyboard will be. Stick to the `ScrollResponder` callbacks, and everything\n   * will work.\n   *\n   * WARNING: These callbacks will fire even if a keyboard is displayed in a\n   * different navigation pane. Filter out the events to determine if they are\n   * relevant to you. (For example, only if you receive these callbacks after\n   * you had explicitly focused a node etc).\n   */\n\n  scrollResponderKeyboardWillShow: (e: KeyboardEvent) => void = (\n    e: KeyboardEvent,\n  ) => {\n    this._keyboardMetrics = e.endCoordinates;\n    this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);\n  };\n\n  scrollResponderKeyboardWillHide: (e: KeyboardEvent) => void = (\n    e: KeyboardEvent,\n  ) => {\n    this._keyboardMetrics = null;\n    this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);\n  };\n\n  scrollResponderKeyboardDidShow: (e: KeyboardEvent) => void = (\n    e: KeyboardEvent,\n  ) => {\n    this._keyboardMetrics = e.endCoordinates;\n    this.props.onKeyboardDidShow && this.props.onKeyboardDidShow(e);\n  };\n\n  scrollResponderKeyboardDidHide: (e: KeyboardEvent) => void = (\n    e: KeyboardEvent,\n  ) => {\n    this._keyboardMetrics = null;\n    this.props.onKeyboardDidHide && this.props.onKeyboardDidHide(e);\n  };\n\n  /**\n   * Invoke this from an `onMomentumScrollBegin` event.\n   */\n  _handleMomentumScrollBegin: (e: ScrollEvent) => void = (e: ScrollEvent) => {\n    this._lastMomentumScrollBeginTime = global.performance.now();\n    this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n  };\n\n  /**\n   * Invoke this from an `onMomentumScrollEnd` event.\n   */\n  _handleMomentumScrollEnd: (e: ScrollEvent) => void = (e: ScrollEvent) => {\n    FrameRateLogger.endScroll();\n    this._lastMomentumScrollEndTime = global.performance.now();\n    this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n  };\n\n  /**\n   * Unfortunately, `onScrollBeginDrag` also fires when *stopping* the scroll\n   * animation, and there's not an easy way to distinguish a drag vs. stopping\n   * momentum.\n   *\n   * Invoke this from an `onScrollBeginDrag` event.\n   */\n  _handleScrollBeginDrag: (e: ScrollEvent) => void = (e: ScrollEvent) => {\n    FrameRateLogger.beginScroll(); // TODO: track all scrolls after implementing onScrollEndAnimation\n\n    if (\n      Platform.OS === 'android' &&\n      this.props.keyboardDismissMode === 'on-drag'\n    ) {\n      dismissKeyboard();\n    }\n\n    this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n  };\n\n  /**\n   * Invoke this from an `onScrollEndDrag` event.\n   */\n  _handleScrollEndDrag: (e: ScrollEvent) => void = (e: ScrollEvent) => {\n    const {velocity} = e.nativeEvent;\n    // - If we are animating, then this is a \"drag\" that is stopping the scrollview and momentum end\n    //   will fire.\n    // - If velocity is non-zero, then the interaction will stop when momentum scroll ends or\n    //   another drag starts and ends.\n    // - If we don't get velocity, better to stop the interaction twice than not stop it.\n    if (\n      !this._isAnimating() &&\n      (!velocity || (velocity.x === 0 && velocity.y === 0))\n    ) {\n      FrameRateLogger.endScroll();\n    }\n    this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n  };\n\n  /**\n   * A helper function for this class that lets us quickly determine if the\n   * view is currently animating. This is particularly useful to know when\n   * a touch has just started or ended.\n   */\n  _isAnimating: () => boolean = () => {\n    const now = global.performance.now();\n    const timeSinceLastMomentumScrollEnd =\n      now - this._lastMomentumScrollEndTime;\n    const isAnimating =\n      timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS ||\n      this._lastMomentumScrollEndTime < this._lastMomentumScrollBeginTime;\n    return isAnimating;\n  };\n\n  /**\n   * Invoke this from an `onResponderGrant` event.\n   */\n  _handleResponderGrant: (e: GestureResponderEvent) => void = (\n    e: GestureResponderEvent,\n  ) => {\n    this._observedScrollSinceBecomingResponder = false;\n    this.props.onResponderGrant && this.props.onResponderGrant(e);\n    this._becameResponderWhileAnimating = this._isAnimating();\n  };\n\n  /**\n   * Invoke this from an `onResponderReject` event.\n   *\n   * Some other element is not yielding its role as responder. Normally, we'd\n   * just disable the `UIScrollView`, but a touch has already began on it, the\n   * `UIScrollView` will not accept being disabled after that. The easiest\n   * solution for now is to accept the limitation of disallowing this\n   * altogether. To improve this, find a way to disable the `UIScrollView` after\n   * a touch has already started.\n   */\n  _handleResponderReject: () => void = () => {};\n\n  /**\n   * Invoke this from an `onResponderRelease` event.\n   */\n  _handleResponderRelease: (e: GestureResponderEvent) => void = (\n    e: GestureResponderEvent,\n  ) => {\n    this._isTouching = e.nativeEvent.touches.length !== 0;\n    this.props.onResponderRelease && this.props.onResponderRelease(e);\n\n    if (typeof e.target === 'number') {\n      if (__DEV__) {\n        console.error(\n          'Did not expect event target to be a number. Should have been a native component',\n        );\n      }\n\n      return;\n    }\n\n    // By default scroll views will unfocus a textField\n    // if another touch occurs outside of it\n    const currentlyFocusedTextInput = TextInputState.currentlyFocusedInput();\n    if (\n      currentlyFocusedTextInput != null &&\n      this.props.keyboardShouldPersistTaps !== true &&\n      this.props.keyboardShouldPersistTaps !== 'always' &&\n      this._keyboardIsDismissible() &&\n      e.target !== currentlyFocusedTextInput &&\n      !this._observedScrollSinceBecomingResponder &&\n      !this._becameResponderWhileAnimating\n    ) {\n      TextInputState.blurTextInput(currentlyFocusedTextInput);\n    }\n  };\n\n  /**\n   * We will allow the scroll view to give up its lock iff it acquired the lock\n   * during an animation. This is a very useful default that happens to satisfy\n   * many common user experiences.\n   *\n   * - Stop a scroll on the left edge, then turn that into an outer view's\n   *   backswipe.\n   * - Stop a scroll mid-bounce at the top, continue pulling to have the outer\n   *   view dismiss.\n   * - However, without catching the scroll view mid-bounce (while it is\n   *   motionless), if you drag far enough for the scroll view to become\n   *   responder (and therefore drag the scroll view a bit), any backswipe\n   *   navigation of a swipe gesture higher in the view hierarchy, should be\n   *   rejected.\n   */\n  _handleResponderTerminationRequest: () => boolean = () => {\n    return !this._observedScrollSinceBecomingResponder;\n  };\n\n  /**\n   * Invoke this from an `onScroll` event.\n   */\n  _handleScrollShouldSetResponder: () => boolean = () => {\n    // Allow any event touch pass through if the default pan responder is disabled\n    if (this.props.disableScrollViewPanResponder === true) {\n      return false;\n    }\n    return this._isTouching;\n  };\n\n  /**\n   * Merely touch starting is not sufficient for a scroll view to become the\n   * responder. Being the \"responder\" means that the very next touch move/end\n   * event will result in an action/movement.\n   *\n   * Invoke this from an `onStartShouldSetResponder` event.\n   *\n   * `onStartShouldSetResponder` is used when the next move/end will trigger\n   * some UI movement/action, but when you want to yield priority to views\n   * nested inside of the view.\n   *\n   * There may be some cases where scroll views actually should return `true`\n   * from `onStartShouldSetResponder`: Any time we are detecting a standard tap\n   * that gives priority to nested views.\n   *\n   * - If a single tap on the scroll view triggers an action such as\n   *   recentering a map style view yet wants to give priority to interaction\n   *   views inside (such as dropped pins or labels), then we would return true\n   *   from this method when there is a single touch.\n   *\n   * - Similar to the previous case, if a two finger \"tap\" should trigger a\n   *   zoom, we would check the `touches` count, and if `>= 2`, we would return\n   *   true.\n   *\n   */\n  _handleStartShouldSetResponder: (e: GestureResponderEvent) => boolean = (\n    e: GestureResponderEvent,\n  ) => {\n    // Allow any event touch pass through if the default pan responder is disabled\n    if (this.props.disableScrollViewPanResponder === true) {\n      return false;\n    }\n\n    const currentlyFocusedInput = TextInputState.currentlyFocusedInput();\n    if (\n      this.props.keyboardShouldPersistTaps === 'handled' &&\n      this._keyboardIsDismissible() &&\n      e.target !== currentlyFocusedInput\n    ) {\n      return true;\n    }\n    return false;\n  };\n\n  /**\n   * There are times when the scroll view wants to become the responder\n   * (meaning respond to the next immediate `touchStart/touchEnd`), in a way\n   * that *doesn't* give priority to nested views (hence the capture phase):\n   *\n   * - Currently animating.\n   * - Tapping anywhere that is not a text input, while the keyboard is\n   *   up (which should dismiss the keyboard).\n   *\n   * Invoke this from an `onStartShouldSetResponderCapture` event.\n   */\n  _handleStartShouldSetResponderCapture: (e: GestureResponderEvent) => boolean =\n    (e: GestureResponderEvent) => {\n      // The scroll view should receive taps instead of its descendants if:\n      // * it is already animating/decelerating\n      if (this._isAnimating()) {\n        return true;\n      }\n\n      // Allow any event touch pass through if the default pan responder is disabled\n      if (this.props.disableScrollViewPanResponder === true) {\n        return false;\n      }\n\n      // * the keyboard is up, keyboardShouldPersistTaps is 'never' (the default),\n      // and a new touch starts with a non-textinput target (in which case the\n      // first tap should be sent to the scroll view and dismiss the keyboard,\n      // then the second tap goes to the actual interior view)\n      const {keyboardShouldPersistTaps} = this.props;\n      const keyboardNeverPersistTaps =\n        // $FlowFixMe[sketchy-null-bool]\n        !keyboardShouldPersistTaps || keyboardShouldPersistTaps === 'never';\n\n      if (typeof e.target === 'number') {\n        if (__DEV__) {\n          console.error(\n            'Did not expect event target to be a number. Should have been a native component',\n          );\n        }\n\n        return false;\n      }\n\n      // Let presses through if the soft keyboard is detached from the viewport\n      if (this._softKeyboardIsDetached()) {\n        return false;\n      }\n\n      if (\n        keyboardNeverPersistTaps &&\n        this._keyboardIsDismissible() &&\n        e.target != null &&\n        // $FlowFixMe[incompatible-type]\n        !TextInputState.isTextInput(e.target)\n      ) {\n        return true;\n      }\n\n      return false;\n    };\n\n  /**\n   * Do we consider there to be a dismissible soft-keyboard open?\n   */\n  _keyboardIsDismissible: () => boolean = () => {\n    const currentlyFocusedInput = TextInputState.currentlyFocusedInput();\n\n    // We cannot dismiss the keyboard without an input to blur, even if a soft\n    // keyboard is open (e.g. when keyboard is open due to a native component\n    // not participating in TextInputState). It's also possible that the\n    // currently focused input isn't a TextInput (such as by calling ref.focus\n    // on a non-TextInput).\n    const hasFocusedTextInput =\n      currentlyFocusedInput != null &&\n      TextInputState.isTextInput(currentlyFocusedInput);\n\n    // Even if an input is focused, we may not have a keyboard to dismiss. E.g\n    // when using a physical keyboard. Ensure we have an event for an opened\n    // keyboard.\n    const softKeyboardMayBeOpen =\n      this._keyboardMetrics != null || this._keyboardEventsAreUnreliable();\n\n    return hasFocusedTextInput && softKeyboardMayBeOpen;\n  };\n\n  /**\n   * Whether an open soft keyboard is present which does not overlap the\n   * viewport. E.g. for a VR soft-keyboard which is detached from the app\n   * viewport.\n   */\n  _softKeyboardIsDetached: () => boolean = () => {\n    return this._keyboardMetrics != null && this._keyboardMetrics.height === 0;\n  };\n\n  _keyboardEventsAreUnreliable: () => boolean = () => {\n    // Android versions prior to API 30 rely on observing layout changes when\n    // `android:windowSoftInputMode` is set to `adjustResize` or `adjustPan`.\n    return Platform.OS === 'android' && Platform.Version < 30;\n  };\n\n  /**\n   * Invoke this from an `onTouchEnd` event.\n   *\n   * @param {GestureResponderEvent} e Event.\n   */\n  _handleTouchEnd: (e: GestureResponderEvent) => void = (\n    e: GestureResponderEvent,\n  ) => {\n    const nativeEvent = e.nativeEvent;\n    this._isTouching = nativeEvent.touches.length !== 0;\n\n    const {keyboardShouldPersistTaps} = this.props;\n    const keyboardNeverPersistsTaps =\n      // $FlowFixMe[sketchy-null-bool]\n      !keyboardShouldPersistTaps || keyboardShouldPersistTaps === 'never';\n\n    // Dismiss the keyboard now if we didn't become responder in capture phase\n    // to eat presses, but still want to dismiss on interaction.\n    // Don't do anything if the target of the touch event is the current input.\n    const currentlyFocusedTextInput = TextInputState.currentlyFocusedInput();\n    if (\n      currentlyFocusedTextInput != null &&\n      e.target !== currentlyFocusedTextInput &&\n      this._softKeyboardIsDetached() &&\n      this._keyboardIsDismissible() &&\n      keyboardNeverPersistsTaps\n    ) {\n      TextInputState.blurTextInput(currentlyFocusedTextInput);\n    }\n\n    this.props.onTouchEnd && this.props.onTouchEnd(e);\n  };\n\n  /**\n   * Invoke this from an `onTouchCancel` event.\n   *\n   * @param {GestureResponderEvent} e Event.\n   */\n  _handleTouchCancel: (e: GestureResponderEvent) => void = (\n    e: GestureResponderEvent,\n  ) => {\n    this._isTouching = false;\n    this.props.onTouchCancel && this.props.onTouchCancel(e);\n  };\n\n  /**\n   * Invoke this from an `onTouchStart` event.\n   *\n   * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n   * order, after `ResponderEventPlugin`, we can detect that we were *not*\n   * permitted to be the responder (presumably because a contained view became\n   * responder). The `onResponderReject` won't fire in that case - it only\n   * fires when a *current* responder rejects our request.\n   *\n   * @param {GestureResponderEvent} e Touch Start event.\n   */\n  _handleTouchStart: (e: GestureResponderEvent) => void = (\n    e: GestureResponderEvent,\n  ) => {\n    this._isTouching = true;\n    this.props.onTouchStart && this.props.onTouchStart(e);\n  };\n\n  /**\n   * Invoke this from an `onTouchMove` event.\n   *\n   * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n   * order, after `ResponderEventPlugin`, we can detect that we were *not*\n   * permitted to be the responder (presumably because a contained view became\n   * responder). The `onResponderReject` won't fire in that case - it only\n   * fires when a *current* responder rejects our request.\n   *\n   * @param {GestureResponderEvent} e Touch Start event.\n   */\n  _handleTouchMove: (e: GestureResponderEvent) => void = (\n    e: GestureResponderEvent,\n  ) => {\n    this.props.onTouchMove && this.props.onTouchMove(e);\n  };\n\n  render(): React.Node {\n    const horizontal = this.props.horizontal === true;\n\n    const NativeScrollView = horizontal\n      ? HScrollViewNativeComponent\n      : VScrollViewNativeComponent;\n\n    const NativeScrollContentView = horizontal\n      ? HScrollContentViewNativeComponent\n      : VScrollContentViewNativeComponent;\n\n    const contentContainerStyle = [\n      horizontal && styles.contentContainerHorizontal,\n      this.props.contentContainerStyle,\n    ];\n    if (__DEV__ && this.props.style !== undefined) {\n      // $FlowFixMe[underconstrained-implicit-instantiation]\n      const style = flattenStyle(this.props.style);\n      const childLayoutProps = (\n        ['alignItems', 'justifyContent'] as const\n      ).filter(\n        // $FlowFixMe[incompatible-use]\n        prop => style && style[prop] !== undefined,\n      );\n      invariant(\n        childLayoutProps.length === 0,\n        'ScrollView child layout (' +\n          JSON.stringify(childLayoutProps) +\n          ') must be applied through the contentContainerStyle prop.',\n      );\n    }\n\n    const contentSizeChangeProps =\n      this.props.onContentSizeChange == null\n        ? null\n        : {\n            onLayout: this._handleContentOnLayout,\n          };\n\n    const {stickyHeaderIndices} = this.props;\n    let children = this.props.children;\n    /**\n     * This function can cause unnecessary remount when nested in conditionals as it causes remap of children keys.\n     * https://react.dev/reference/react/Children#children-toarray-caveats\n     */\n    children = React.Children.toArray<$FlowFixMe>(children);\n\n    if (stickyHeaderIndices != null && stickyHeaderIndices.length > 0) {\n      children = children.map((child, index) => {\n        const indexOfIndex = child ? stickyHeaderIndices.indexOf(index) : -1;\n        if (indexOfIndex > -1) {\n          const key = child.key;\n          const nextIndex = stickyHeaderIndices[indexOfIndex + 1];\n          const StickyHeaderComponent =\n            this.props.StickyHeaderComponent || ScrollViewStickyHeader;\n          return (\n            <StickyHeaderComponent\n              key={key}\n              ref={ref => this._setStickyHeaderRef(key, ref)}\n              nextHeaderLayoutY={this._headerLayoutYs.get(\n                this._getKeyForIndex(nextIndex, children),\n              )}\n              onLayout={event => this._onStickyHeaderLayout(index, event, key)}\n              scrollAnimatedValue={this._scrollAnimatedValue}\n              inverted={this.props.invertStickyHeaders}\n              hiddenOnScroll={this.props.stickyHeaderHiddenOnScroll}\n              scrollViewHeight={this.state.layoutHeight}>\n              {child}\n            </StickyHeaderComponent>\n          );\n        } else {\n          return child;\n        }\n      });\n    }\n    children = (\n      <ScrollViewContext.Provider value={horizontal ? HORIZONTAL : VERTICAL}>\n        {children}\n      </ScrollViewContext.Provider>\n    );\n\n    const hasStickyHeaders =\n      Array.isArray(stickyHeaderIndices) && stickyHeaderIndices.length > 0;\n\n    // Some ScrollView native component behaviors rely on using the metrics\n    // of mounted views for anchoring. Make sure not to flatten children if\n    // this is the case.\n    const preserveChildren =\n      this.props.maintainVisibleContentPosition != null ||\n      (Platform.OS === 'android' && this.props.snapToAlignment != null);\n\n    const contentContainer = (\n      <NativeScrollContentView\n        {...contentSizeChangeProps}\n        ref={this._innerView.getForwardingRef(this.props.innerViewRef)}\n        style={contentContainerStyle}\n        removeClippedSubviews={\n          // Subview clipping causes issues with sticky headers on Android and\n          // would be hard to fix properly in a performant way.\n          Platform.OS === 'android' && hasStickyHeaders\n            ? false\n            : this.props.removeClippedSubviews\n        }\n        collapsable={false}\n        collapsableChildren={!preserveChildren}>\n        {children}\n      </NativeScrollContentView>\n    );\n\n    const alwaysBounceHorizontal =\n      this.props.alwaysBounceHorizontal !== undefined\n        ? this.props.alwaysBounceHorizontal\n        : this.props.horizontal;\n\n    const alwaysBounceVertical =\n      this.props.alwaysBounceVertical !== undefined\n        ? this.props.alwaysBounceVertical\n        : !this.props.horizontal;\n\n    const baseStyle = horizontal ? styles.baseHorizontal : styles.baseVertical;\n\n    const {experimental_endDraggingSensitivityMultiplier, ...otherProps} =\n      this.props;\n    const props = {\n      ...otherProps,\n      alwaysBounceHorizontal,\n      alwaysBounceVertical,\n      style: StyleSheet.compose(baseStyle, this.props.style),\n      // Override the onContentSizeChange from props, since this event can\n      // bubble up from TextInputs\n      onContentSizeChange: null,\n      onLayout: this._handleLayout,\n      onMomentumScrollBegin: this._handleMomentumScrollBegin,\n      onMomentumScrollEnd: this._handleMomentumScrollEnd,\n      onResponderGrant: this._handleResponderGrant,\n      onResponderReject: this._handleResponderReject,\n      onResponderRelease: this._handleResponderRelease,\n      onResponderTerminationRequest: this._handleResponderTerminationRequest,\n      onScrollBeginDrag: this._handleScrollBeginDrag,\n      onScrollEndDrag: this._handleScrollEndDrag,\n      onScrollShouldSetResponder: this._handleScrollShouldSetResponder,\n      onStartShouldSetResponder: this._handleStartShouldSetResponder,\n      onStartShouldSetResponderCapture:\n        this._handleStartShouldSetResponderCapture,\n      onTouchEnd: this._handleTouchEnd,\n      onTouchMove: this._handleTouchMove,\n      onTouchStart: this._handleTouchStart,\n      onTouchCancel: this._handleTouchCancel,\n      onScroll: this._handleScroll,\n      endDraggingSensitivityMultiplier:\n        experimental_endDraggingSensitivityMultiplier,\n      scrollEventThrottle: hasStickyHeaders\n        ? 1\n        : this.props.scrollEventThrottle,\n      sendMomentumEvents:\n        this.props.onMomentumScrollBegin || this.props.onMomentumScrollEnd\n          ? true\n          : false,\n      // default to true\n      snapToStart: this.props.snapToStart !== false,\n      // default to true\n      snapToEnd: this.props.snapToEnd !== false,\n      // pagingEnabled is overridden by snapToInterval / snapToOffsets\n      pagingEnabled: Platform.select({\n        // on iOS, pagingEnabled must be set to false to have snapToInterval / snapToOffsets work\n        ios:\n          this.props.pagingEnabled === true &&\n          this.props.snapToInterval == null &&\n          this.props.snapToOffsets == null,\n        // on Android, pagingEnabled must be set to true to have snapToInterval / snapToOffsets work\n        android:\n          this.props.pagingEnabled === true ||\n          this.props.snapToInterval != null ||\n          this.props.snapToOffsets != null,\n      }),\n    };\n\n    const {decelerationRate} = this.props;\n    if (decelerationRate != null) {\n      props.decelerationRate = processDecelerationRate(decelerationRate);\n    }\n\n    const refreshControl = this.props.refreshControl;\n    const scrollViewRef = this._scrollView.getForwardingRef(\n      this.props.scrollViewRef,\n    );\n\n    if (refreshControl != null) {\n      if (Platform.OS === 'ios') {\n        // On iOS the RefreshControl is a child of the ScrollView.\n        return (\n          // $FlowFixMe[incompatible-type] - Flow only knows element refs.\n          <NativeScrollView {...props} ref={scrollViewRef}>\n            {refreshControl}\n            {contentContainer}\n          </NativeScrollView>\n        );\n      } else if (Platform.OS === 'android') {\n        // On Android wrap the ScrollView with a AndroidSwipeRefreshLayout.\n        // Since the ScrollView is wrapped add the style props to the\n        // AndroidSwipeRefreshLayout and use flex: 1 for the ScrollView.\n        // Note: we should split props.style on the inner and outer props\n        // however, the ScrollView still needs the baseStyle to be scrollable\n        const {outer, inner} = splitLayoutProps(flattenStyle(props.style));\n        // $FlowFixMe[incompatible-call]\n        return cloneElement(\n          refreshControl,\n          {style: StyleSheet.compose(baseStyle, outer)},\n          <NativeScrollView\n            {...props}\n            style={StyleSheet.compose(baseStyle, inner)}\n            // $FlowFixMe[incompatible-type] - Flow only knows element refs.\n            ref={scrollViewRef}>\n            {contentContainer}\n          </NativeScrollView>,\n        );\n      }\n    }\n    return (\n      // $FlowFixMe[incompatible-type] - Flow only knows element refs.\n      <NativeScrollView {...props} ref={scrollViewRef}>\n        {contentContainer}\n      </NativeScrollView>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  baseVertical: {\n    flexGrow: 1,\n    flexShrink: 1,\n    flexDirection: 'column',\n    overflow: 'scroll',\n  },\n  baseHorizontal: {\n    flexGrow: 1,\n    flexShrink: 1,\n    flexDirection: 'row',\n    overflow: 'scroll',\n  },\n  contentContainerHorizontal: {\n    flexDirection: 'row',\n  },\n});\n\ntype RefForwarder<TNativeInstance, TPublicInstance> = {\n  getForwardingRef: (\n    ?React.RefSetter<TPublicInstance>,\n  ) => (TNativeInstance | null) => void,\n  nativeInstance: TNativeInstance | null,\n  publicInstance: TPublicInstance | null,\n};\n\n/**\n * Helper function that should be replaced with `useCallback` and `useMergeRefs`\n * once `ScrollView` is reimplemented as a functional component.\n */\nfunction createRefForwarder<TNativeInstance, TPublicInstance>(\n  mutator: TNativeInstance => TPublicInstance,\n): RefForwarder<TNativeInstance, TPublicInstance> {\n  const state: RefForwarder<TNativeInstance, TPublicInstance> = {\n    getForwardingRef: memoize(forwardedRef => {\n      return (nativeInstance: TNativeInstance | null): void => {\n        const publicInstance =\n          nativeInstance == null ? null : mutator(nativeInstance);\n\n        state.nativeInstance = nativeInstance;\n        state.publicInstance = publicInstance;\n\n        if (forwardedRef != null) {\n          if (typeof forwardedRef === 'function') {\n            forwardedRef(publicInstance);\n          } else {\n            forwardedRef.current = publicInstance;\n          }\n        }\n      };\n    }),\n    nativeInstance: null,\n    publicInstance: null,\n  };\n\n  return state;\n}\n\n// NOTE: This wrapper component is necessary because `ScrollView` is a class\n// component and we need to map `ref` to a differently named prop. This can be\n// removed when `ScrollView` is a functional component.\nconst ScrollViewWrapper: component(\n  ref?: React.RefSetter<PublicScrollViewInstance>,\n  ...props: ScrollViewProps\n) = function Wrapper({\n  ref,\n  ...props\n}: {\n  ref?: React.RefSetter<PublicScrollViewInstance>,\n  ...ScrollViewProps,\n}): React.Node {\n  return ref == null ? (\n    <ScrollView {...props} />\n  ) : (\n    <ScrollView {...props} scrollViewRef={ref} />\n  );\n};\nScrollViewWrapper.displayName = 'ScrollView';\n// $FlowExpectedError[prop-missing]\nScrollViewWrapper.Context = ScrollViewContext;\n\nexport default ((ScrollViewWrapper: $FlowFixMe): typeof ScrollViewWrapper &\n  ScrollViewComponentStatics);\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 * @flow strict-local\n * @format\n */\n\nimport type {ScrollViewNativeProps} from '../../../../Libraries/Components/ScrollView/ScrollViewNativeComponentType';\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport AndroidHorizontalScrollViewNativeComponent from '../../../../Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent';\nimport ScrollContentViewNativeComponent from '../../../../Libraries/Components/ScrollView/ScrollContentViewNativeComponent';\nimport ScrollViewNativeComponent from '../../../../Libraries/Components/ScrollView/ScrollViewNativeComponent';\nimport Platform from '../../../../Libraries/Utilities/Platform';\nimport AndroidHorizontalScrollContentViewNativeComponent from '../../specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent';\n\nexport const HScrollViewNativeComponent: HostComponent<ScrollViewNativeProps> =\n  Platform.OS === 'android'\n    ? AndroidHorizontalScrollViewNativeComponent\n    : ScrollViewNativeComponent;\n\nexport const HScrollContentViewNativeComponent: HostComponent<ViewProps> =\n  Platform.OS === 'android'\n    ? AndroidHorizontalScrollContentViewNativeComponent\n    : ScrollContentViewNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ScrollViewNativeProps as Props} from './ScrollViewNativeComponentType';\n\nimport * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';\n\nexport const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {\n  uiViewClassName: 'AndroidHorizontalScrollView',\n  bubblingEventTypes: {},\n  directEventTypes: {},\n  validAttributes: {\n    decelerationRate: true,\n    disableIntervalMomentum: true,\n    maintainVisibleContentPosition: true,\n    endFillColor: {process: require('../../StyleSheet/processColor').default},\n    fadingEdgeLength: true,\n    nestedScrollEnabled: true,\n    overScrollMode: true,\n    pagingEnabled: true,\n    persistentScrollbar: true,\n    horizontal: true,\n    scrollEnabled: true,\n    scrollEventThrottle: true,\n    scrollPerfTag: true,\n    sendMomentumEvents: true,\n    showsHorizontalScrollIndicator: true,\n    snapToAlignment: true,\n    snapToEnd: true,\n    snapToInterval: true,\n    snapToStart: true,\n    snapToOffsets: true,\n    contentOffset: true,\n    borderBottomLeftRadius: true,\n    borderBottomRightRadius: true,\n    borderRadius: true,\n    borderStyle: true,\n    borderRightColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    borderColor: {process: require('../../StyleSheet/processColor').default},\n    borderBottomColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    borderTopLeftRadius: true,\n    borderTopColor: {process: require('../../StyleSheet/processColor').default},\n    removeClippedSubviews: true,\n    borderTopRightRadius: true,\n    borderLeftColor: {\n      process: require('../../StyleSheet/processColor').default,\n    },\n    pointerEvents: true,\n  },\n};\n\nconst AndroidHorizontalScrollViewNativeComponent: HostComponent<Props> =\n  NativeComponentRegistry.get<Props>(\n    'AndroidHorizontalScrollView',\n    () => __INTERNAL_VIEW_CONFIG,\n  );\n\nexport default AndroidHorizontalScrollViewNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ViewProps as Props} from '../View/ViewPropTypes';\n\nimport * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';\n\nexport const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {\n  uiViewClassName: 'RCTScrollContentView',\n  bubblingEventTypes: {},\n  directEventTypes: {},\n  validAttributes: {},\n};\n\nconst ScrollContentViewNativeComponent: HostComponent<Props> =\n  NativeComponentRegistry.get<Props>(\n    'RCTScrollContentView',\n    () => __INTERNAL_VIEW_CONFIG,\n  );\n\nexport default ScrollContentViewNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {PartialViewConfig} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ScrollViewNativeProps as Props} from './ScrollViewNativeComponentType';\n\nimport * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';\nimport {ConditionallyIgnoredEventHandlers} from '../../NativeComponent/ViewConfigIgnore';\nimport Platform from '../../Utilities/Platform';\n\nexport const __INTERNAL_VIEW_CONFIG: PartialViewConfig =\n  Platform.OS === 'android'\n    ? {\n        uiViewClassName: 'RCTScrollView',\n        bubblingEventTypes: {},\n        directEventTypes: {\n          topMomentumScrollBegin: {\n            registrationName: 'onMomentumScrollBegin',\n          },\n          topMomentumScrollEnd: {\n            registrationName: 'onMomentumScrollEnd',\n          },\n          topScroll: {\n            registrationName: 'onScroll',\n          },\n          topScrollBeginDrag: {\n            registrationName: 'onScrollBeginDrag',\n          },\n          topScrollEndDrag: {\n            registrationName: 'onScrollEndDrag',\n          },\n        },\n        validAttributes: {\n          contentOffset: {\n            diff: require('../../Utilities/differ/pointsDiffer').default,\n          },\n          decelerationRate: true,\n          disableIntervalMomentum: true,\n          maintainVisibleContentPosition: true,\n          pagingEnabled: true,\n          scrollEnabled: true,\n          showsVerticalScrollIndicator: true,\n          snapToAlignment: true,\n          snapToEnd: true,\n          snapToInterval: true,\n          snapToOffsets: true,\n          snapToStart: true,\n          borderBottomLeftRadius: true,\n          borderBottomRightRadius: true,\n          sendMomentumEvents: true,\n          borderRadius: true,\n          nestedScrollEnabled: true,\n          scrollEventThrottle: true,\n          borderStyle: true,\n          borderRightColor: {\n            process: require('../../StyleSheet/processColor').default,\n          },\n          borderColor: {\n            process: require('../../StyleSheet/processColor').default,\n          },\n          borderBottomColor: {\n            process: require('../../StyleSheet/processColor').default,\n          },\n          persistentScrollbar: true,\n          horizontal: true,\n          endFillColor: {\n            process: require('../../StyleSheet/processColor').default,\n          },\n          fadingEdgeLength: true,\n          overScrollMode: true,\n          borderTopLeftRadius: true,\n          scrollPerfTag: true,\n          borderTopColor: {\n            process: require('../../StyleSheet/processColor').default,\n          },\n          removeClippedSubviews: true,\n          borderTopRightRadius: true,\n          borderLeftColor: {\n            process: require('../../StyleSheet/processColor').default,\n          },\n          pointerEvents: true,\n          isInvertedVirtualizedList: true,\n        },\n      }\n    : {\n        uiViewClassName: 'RCTScrollView',\n        bubblingEventTypes: {},\n        directEventTypes: {\n          topMomentumScrollBegin: {\n            registrationName: 'onMomentumScrollBegin',\n          },\n          topMomentumScrollEnd: {\n            registrationName: 'onMomentumScrollEnd',\n          },\n          topScroll: {\n            registrationName: 'onScroll',\n          },\n          topScrollBeginDrag: {\n            registrationName: 'onScrollBeginDrag',\n          },\n          topScrollEndDrag: {\n            registrationName: 'onScrollEndDrag',\n          },\n          topScrollToTop: {\n            registrationName: 'onScrollToTop',\n          },\n        },\n        validAttributes: {\n          alwaysBounceHorizontal: true,\n          alwaysBounceVertical: true,\n          automaticallyAdjustContentInsets: true,\n          automaticallyAdjustKeyboardInsets: true,\n          automaticallyAdjustsScrollIndicatorInsets: true,\n          bounces: true,\n          bouncesZoom: true,\n          canCancelContentTouches: true,\n          centerContent: true,\n          contentInset: {\n            diff: require('../../Utilities/differ/insetsDiffer').default,\n          },\n          contentOffset: {\n            diff: require('../../Utilities/differ/pointsDiffer').default,\n          },\n          contentInsetAdjustmentBehavior: true,\n          decelerationRate: true,\n          endDraggingSensitivityMultiplier: true,\n          directionalLockEnabled: true,\n          disableIntervalMomentum: true,\n          indicatorStyle: true,\n          inverted: true,\n          keyboardDismissMode: true,\n          maintainVisibleContentPosition: true,\n          maximumZoomScale: true,\n          minimumZoomScale: true,\n          pagingEnabled: true,\n          pinchGestureEnabled: true,\n          scrollEnabled: true,\n          scrollEventThrottle: true,\n          scrollIndicatorInsets: {\n            diff: require('../../Utilities/differ/insetsDiffer').default,\n          },\n          scrollToOverflowEnabled: true,\n          scrollsToTop: true,\n          showsHorizontalScrollIndicator: true,\n          showsVerticalScrollIndicator: true,\n          snapToAlignment: true,\n          snapToEnd: true,\n          snapToInterval: true,\n          snapToOffsets: true,\n          snapToStart: true,\n          verticalScrollIndicatorInsets: {\n            diff: require('../../Utilities/differ/insetsDiffer').default,\n          },\n          zoomScale: true,\n          ...ConditionallyIgnoredEventHandlers({\n            onScrollBeginDrag: true,\n            onMomentumScrollEnd: true,\n            onScrollEndDrag: true,\n            onMomentumScrollBegin: true,\n            onScrollToTop: true,\n            onScroll: true,\n          }),\n        },\n      };\n\nconst ScrollViewNativeComponent: HostComponent<Props> =\n  NativeComponentRegistry.get<Props>(\n    'RCTScrollView',\n    () => __INTERNAL_VIEW_CONFIG,\n  );\n\nexport default ScrollViewNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\n\ntype AndroidHorizontalScrollContentViewNativeProps = $ReadOnly<{\n  ...ViewProps,\n\n  removeClippedSubviews?: ?boolean,\n}>;\n\ntype NativeType = HostComponent<AndroidHorizontalScrollContentViewNativeProps>;\n\nexport default (codegenNativeComponent<AndroidHorizontalScrollContentViewNativeProps>(\n  'AndroidHorizontalScrollContentView',\n  {interfaceOnly: true},\n): NativeType);\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 * @flow strict-local\n * @format\n */\n\nimport type {ScrollViewNativeProps} from '../../../../Libraries/Components/ScrollView/ScrollViewNativeComponentType';\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport ScrollContentViewNativeComponent from '../../../../Libraries/Components/ScrollView/ScrollContentViewNativeComponent';\nimport ScrollViewNativeComponent from '../../../../Libraries/Components/ScrollView/ScrollViewNativeComponent';\nimport View from '../../../../Libraries/Components/View/View';\nimport Platform from '../../../../Libraries/Utilities/Platform';\n\nexport const VScrollViewNativeComponent: HostComponent<ScrollViewNativeProps> =\n  ScrollViewNativeComponent;\n\nexport const VScrollContentViewNativeComponent: HostComponent<ViewProps> =\n  Platform.OS === 'android' ? View : ScrollContentViewNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport NativeFrameRateLogger from './NativeFrameRateLogger';\n\nconst invariant = require('invariant');\n\n/**\n * Flow API for native FrameRateLogger module. If the native module is not installed, function calls\n * are just no-ops.\n *\n * Typical behavior is that `setContext` is called when a new screen is loaded (e.g. via a\n * navigation integration), and then `beginScroll` is called by `ScrollResponder` at which point the\n * native module then begins tracking frame drops. When `ScrollResponder` calls `endScroll`, the\n * native module gathers up all it's frame drop data and reports it via an analytics pipeline for\n * analysis.\n *\n * Note that `beginScroll` may be called multiple times by `ScrollResponder` - unclear if that's a\n * bug, but the native module should be robust to that.\n *\n * In the future we may add support for tracking frame drops in other types of interactions beyond\n * scrolling.\n */\nconst FrameRateLogger = {\n  /**\n   * Enable `debug` to see local logs of what's going on.\n   */\n  setGlobalOptions: function (options: {debug?: boolean, ...}) {\n    if (options.debug !== undefined) {\n      invariant(\n        NativeFrameRateLogger,\n        'Trying to debug FrameRateLogger without the native module!',\n      );\n    }\n    NativeFrameRateLogger?.setGlobalOptions({\n      debug: !!options.debug,\n    });\n  },\n\n  /**\n   * Must call `setContext` before any events can be properly tracked, which is done automatically\n   * in `AppRegistry`, but navigation is also a common place to hook in.\n   */\n  setContext: function (context: string) {\n    NativeFrameRateLogger?.setContext(context);\n  },\n\n  /**\n   * Called in `ScrollResponder` so any component that uses that module will handle this\n   * automatically.\n   */\n  beginScroll() {\n    NativeFrameRateLogger?.beginScroll();\n  },\n\n  /**\n   * Called in `ScrollResponder` so any component that uses that module will handle this\n   * automatically.\n   */\n  endScroll() {\n    NativeFrameRateLogger?.endScroll();\n  },\n};\n\nexport default FrameRateLogger;\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeFrameRateLogger';\nimport NativeFrameRateLogger from '../../src/private/specs_DEPRECATED/modules/NativeFrameRateLogger';\n\nexport default NativeFrameRateLogger;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +setGlobalOptions: (options: {+debug?: ?boolean}) => void;\n  +setContext: (context: string) => void;\n  +beginScroll: () => void;\n  +endScroll: () => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('FrameRateLogger'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {____ViewStyle_Internal} from './StyleSheetTypes';\n\nexport default function splitLayoutProps(props: ?____ViewStyle_Internal): {\n  outer: ?____ViewStyle_Internal,\n  inner: ?____ViewStyle_Internal,\n} {\n  let outer: ?____ViewStyle_Internal = null;\n  let inner: ?____ViewStyle_Internal = null;\n\n  if (props != null) {\n    // $FlowIgnore[incompatible-exact] Will contain a subset of keys from `props`.\n    outer = {};\n    // $FlowIgnore[incompatible-exact] Will contain a subset of keys from `props`.\n    inner = {};\n\n    for (const prop of Object.keys(props)) {\n      switch (prop) {\n        case 'margin':\n        case 'marginHorizontal':\n        case 'marginVertical':\n        case 'marginBottom':\n        case 'marginTop':\n        case 'marginLeft':\n        case 'marginRight':\n        case 'flex':\n        case 'flexGrow':\n        case 'flexShrink':\n        case 'flexBasis':\n        case 'alignSelf':\n        case 'height':\n        case 'minHeight':\n        case 'maxHeight':\n        case 'width':\n        case 'minWidth':\n        case 'maxWidth':\n        case 'position':\n        case 'left':\n        case 'right':\n        case 'bottom':\n        case 'top':\n        case 'transform':\n        case 'transformOrigin':\n        case 'rowGap':\n        case 'columnGap':\n        case 'gap':\n          // $FlowFixMe[cannot-write]\n          // $FlowFixMe[incompatible-use]\n          // $FlowFixMe[prop-missing]\n          outer[prop] = props[prop];\n          break;\n        default:\n          // $FlowFixMe[cannot-write]\n          // $FlowFixMe[incompatible-use]\n          // $FlowFixMe[prop-missing]\n          inner[prop] = props[prop];\n          break;\n      }\n    }\n  }\n\n  return {outer, inner};\n}\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 * @flow strict-local\n * @format\n */\n\n// This function dismisses the currently-open keyboard, if any.\n\n'use strict';\n\nconst TextInputState =\n  require('../Components/TextInput/TextInputState').default;\n\nfunction dismissKeyboard() {\n  TextInputState.blurTextInput(TextInputState.currentlyFocusedInput());\n}\n\nexport default dismissKeyboard;\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 * @flow strict-local\n * @format\n */\n\nimport type {EventSubscription} from '../../vendor/emitter/EventEmitter';\n\nimport NativeEventEmitter from '../../EventEmitter/NativeEventEmitter';\nimport LayoutAnimation from '../../LayoutAnimation/LayoutAnimation';\nimport dismissKeyboard from '../../Utilities/dismissKeyboard';\nimport Platform from '../../Utilities/Platform';\nimport NativeKeyboardObserver from './NativeKeyboardObserver';\n\nexport type KeyboardEventName = $Keys<KeyboardEventDefinitions>;\n\nexport type KeyboardEventEasing =\n  | 'easeIn'\n  | 'easeInEaseOut'\n  | 'easeOut'\n  | 'linear'\n  | 'keyboard';\n\nexport type KeyboardMetrics = $ReadOnly<{\n  screenX: number,\n  screenY: number,\n  width: number,\n  height: number,\n}>;\n\nexport type KeyboardEvent = AndroidKeyboardEvent | IOSKeyboardEvent;\n\ntype BaseKeyboardEvent = {\n  duration: number,\n  easing: KeyboardEventEasing,\n  endCoordinates: KeyboardMetrics,\n};\n\nexport type AndroidKeyboardEvent = $ReadOnly<{\n  ...BaseKeyboardEvent,\n  duration: 0,\n  easing: 'keyboard',\n}>;\n\nexport type IOSKeyboardEvent = $ReadOnly<{\n  ...BaseKeyboardEvent,\n  startCoordinates: KeyboardMetrics,\n  isEventFromThisApp: boolean,\n}>;\n\ntype KeyboardEventDefinitions = {\n  keyboardWillShow: [KeyboardEvent],\n  keyboardDidShow: [KeyboardEvent],\n  keyboardWillHide: [KeyboardEvent],\n  keyboardDidHide: [KeyboardEvent],\n  keyboardWillChangeFrame: [KeyboardEvent],\n  keyboardDidChangeFrame: [KeyboardEvent],\n};\n\n/**\n * `Keyboard` module to control keyboard events.\n *\n * ### Usage\n *\n * The Keyboard module allows you to listen for native events and react to them, as\n * well as make changes to the keyboard, like dismissing it.\n *\n *```\n * import React, { Component } from 'react';\n * import { Keyboard, TextInput } from 'react-native';\n *\n * class Example extends Component {\n *   componentWillMount () {\n *     this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);\n *     this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);\n *   }\n *\n *   componentWillUnmount () {\n *     this.keyboardDidShowListener.remove();\n *     this.keyboardDidHideListener.remove();\n *   }\n *\n *   _keyboardDidShow () {\n *     alert('Keyboard Shown');\n *   }\n *\n *   _keyboardDidHide () {\n *     alert('Keyboard Hidden');\n *   }\n *\n *   render() {\n *     return (\n *       <TextInput\n *         onSubmitEditing={Keyboard.dismiss}\n *       />\n *     );\n *   }\n * }\n *```\n */\n\nclass KeyboardImpl {\n  _currentlyShowing: ?KeyboardEvent;\n\n  _emitter: NativeEventEmitter<KeyboardEventDefinitions> =\n    new NativeEventEmitter(\n      // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior\n      // If you want to use the native module on other platforms, please remove this condition and test its behavior\n      Platform.OS !== 'ios' ? null : NativeKeyboardObserver,\n    );\n\n  constructor() {\n    this.addListener('keyboardDidShow', ev => {\n      this._currentlyShowing = ev;\n    });\n    this.addListener('keyboardDidHide', _ev => {\n      this._currentlyShowing = null;\n    });\n  }\n\n  /**\n   * The `addListener` function connects a JavaScript function to an identified native\n   * keyboard notification event.\n   *\n   * This function then returns the reference to the listener.\n   *\n   * @param {string} eventName The `nativeEvent` is the string that identifies the event you're listening for.  This\n   *can be any of the following:\n   *\n   * - `keyboardWillShow`\n   * - `keyboardDidShow`\n   * - `keyboardWillHide`\n   * - `keyboardDidHide`\n   * - `keyboardWillChangeFrame`\n   * - `keyboardDidChangeFrame`\n   *\n   * Android versions prior to API 30 rely on observing layout changes when\n   * `android:windowSoftInputMode` is set to `adjustResize` or `adjustPan`.\n   *\n   * `keyboardWillShow` as well as `keyboardWillHide` are not available on Android since there is\n   * no native corresponding event.\n   *\n   * @param {function} callback function to be called when the event fires.\n   */\n  addListener<K: $Keys<KeyboardEventDefinitions>>(\n    eventType: K,\n    listener: (...KeyboardEventDefinitions[K]) => mixed,\n    context?: mixed,\n  ): EventSubscription {\n    return this._emitter.addListener(eventType, listener);\n  }\n\n  /**\n   * Removes all listeners for a specific event type.\n   *\n   * @param {string} eventType The native event string listeners are watching which will be removed.\n   */\n  removeAllListeners<K: $Keys<KeyboardEventDefinitions>>(eventType: ?K): void {\n    this._emitter.removeAllListeners(eventType);\n  }\n\n  /**\n   * Dismisses the active keyboard and removes focus.\n   */\n  dismiss(): void {\n    dismissKeyboard();\n  }\n\n  /**\n   * Whether the keyboard is last known to be visible.\n   */\n  isVisible(): boolean {\n    return !!this._currentlyShowing;\n  }\n\n  /**\n   * Return the metrics of the soft-keyboard if visible.\n   */\n  metrics(): ?KeyboardMetrics {\n    return this._currentlyShowing?.endCoordinates;\n  }\n\n  /**\n   * Useful for syncing TextInput (or other keyboard accessory view) size of\n   * position changes with keyboard movements.\n   */\n  scheduleLayoutAnimation(event: KeyboardEvent): void {\n    const {duration, easing} = event;\n    if (duration != null && duration !== 0) {\n      LayoutAnimation.configureNext({\n        duration: duration,\n        update: {\n          duration: duration,\n          type: (easing != null && LayoutAnimation.Types[easing]) || 'keyboard',\n        },\n      });\n    }\n  }\n}\n\nconst Keyboard: KeyboardImpl = new KeyboardImpl();\n\nexport default Keyboard;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {\n  LayoutAnimationConfig,\n  LayoutAnimationProperty,\n  LayoutAnimationType,\n} from '../Renderer/shims/ReactNativeTypes';\n\nimport * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';\nimport {getFabricUIManager} from '../ReactNative/FabricUIManager';\nimport Platform from '../Utilities/Platform';\n\nconst UIManager = require('../ReactNative/UIManager').default;\n\nexport type {\n  LayoutAnimationType,\n  LayoutAnimationProperty,\n  LayoutAnimationAnimationConfig as LayoutAnimationAnim,\n} from '../Renderer/shims/ReactNativeTypes';\n\n// Reexport type\nexport type {LayoutAnimationConfig} from '../Renderer/shims/ReactNativeTypes';\n\nexport type LayoutAnimationTypes = $ReadOnly<{\n  [type in LayoutAnimationType]: type,\n}>;\n\nexport type LayoutAnimationProperties = $ReadOnly<{\n  [prop in LayoutAnimationProperty]: prop,\n}>;\n\ntype OnAnimationDidEndCallback = () => void;\ntype OnAnimationDidFailCallback = () => void;\n\nlet isLayoutAnimationEnabled: boolean =\n  ReactNativeFeatureFlags.isLayoutAnimationEnabled();\n\nfunction setLayoutAnimationEnabled(value: boolean) {\n  isLayoutAnimationEnabled = isLayoutAnimationEnabled;\n}\n\n/**\n * Configures the next commit to be animated.\n *\n * onAnimationDidEnd is guaranteed to be called when the animation completes.\n * onAnimationDidFail is *never* called in the classic, pre-Fabric renderer,\n * and never has been. In the new renderer (Fabric) it is called only if configuration\n * parsing fails.\n */\nfunction configureNext(\n  config: LayoutAnimationConfig,\n  onAnimationDidEnd?: OnAnimationDidEndCallback,\n  onAnimationDidFail?: OnAnimationDidFailCallback,\n) {\n  if (Platform.isDisableAnimations) {\n    return;\n  }\n\n  if (!isLayoutAnimationEnabled) {\n    return;\n  }\n\n  // Since LayoutAnimations may possibly be disabled for now on iOS (Fabric),\n  // or Android (non-Fabric) we race a setTimeout with animation completion,\n  // in case onComplete is never called\n  // from native. Once LayoutAnimations+Fabric unconditionally ship everywhere, we can\n  // delete this mechanism at least in the Fabric branch.\n  let animationCompletionHasRun = false;\n  const onAnimationComplete = () => {\n    if (animationCompletionHasRun) {\n      return;\n    }\n    animationCompletionHasRun = true;\n    clearTimeout(raceWithAnimationId);\n    onAnimationDidEnd?.();\n  };\n  const raceWithAnimationId = setTimeout(\n    onAnimationComplete,\n    (config.duration ?? 0) + 17 /* one frame + 1ms */,\n  );\n\n  // In Fabric, LayoutAnimations are unconditionally enabled for Android, and\n  // conditionally enabled on iOS (pending fully shipping; this is a temporary state).\n  const FabricUIManager = getFabricUIManager();\n  if (FabricUIManager?.configureNextLayoutAnimation) {\n    global?.nativeFabricUIManager?.configureNextLayoutAnimation(\n      config,\n      onAnimationComplete,\n      onAnimationDidFail ??\n        function () {} /* this will only be called if configuration parsing fails */,\n    );\n    return;\n  }\n\n  // This will only run if Fabric is *not* installed.\n  // If you have Fabric + non-Fabric running in the same VM, non-Fabric LayoutAnimations\n  // will not work.\n  if (UIManager?.configureNextLayoutAnimation) {\n    UIManager.configureNextLayoutAnimation(\n      config,\n      onAnimationComplete ?? function () {},\n      onAnimationDidFail ??\n        function () {} /* this should never be called in Non-Fabric */,\n    );\n  }\n}\n\nfunction createLayoutAnimation(\n  duration: number,\n  type?: LayoutAnimationType,\n  property?: LayoutAnimationProperty,\n): LayoutAnimationConfig {\n  return {\n    duration,\n    create: {type, property},\n    update: {type},\n    delete: {type, property},\n  };\n}\n\nconst Presets = {\n  easeInEaseOut: (createLayoutAnimation(\n    300,\n    'easeInEaseOut',\n    'opacity',\n  ): LayoutAnimationConfig),\n  linear: (createLayoutAnimation(\n    500,\n    'linear',\n    'opacity',\n  ): LayoutAnimationConfig),\n  spring: ({\n    duration: 700,\n    create: {\n      type: 'linear',\n      property: 'opacity',\n    },\n    update: {\n      type: 'spring',\n      springDamping: 0.4,\n    },\n    delete: {\n      type: 'linear',\n      property: 'opacity',\n    },\n  }: LayoutAnimationConfig),\n};\n\n/**\n * Automatically animates views to their new positions when the\n * next layout happens.\n *\n * A common way to use this API is to call it before calling `setState`.\n *\n * Note that in order to get this to work on **Android** you need to set the following flags via `UIManager`:\n *\n *     UIManager.setLayoutAnimationEnabledExperimental && UIManager.setLayoutAnimationEnabledExperimental(true);\n */\nconst LayoutAnimation = {\n  /**\n   * Schedules an animation to happen on the next layout.\n   *\n   * @param config Specifies animation properties:\n   *\n   *   - `duration` in milliseconds\n   *   - `create`, `AnimationConfig` for animating in new views\n   *   - `update`, `AnimationConfig` for animating views that have been updated\n   *\n   * @param onAnimationDidEnd Called when the animation finished.\n   * Only supported on iOS.\n   * @param onError Called on error. Only supported on iOS.\n   */\n  configureNext,\n  /**\n   * Helper for creating a config for `configureNext`.\n   */\n  create: createLayoutAnimation,\n  Types: Object.freeze({\n    spring: 'spring',\n    linear: 'linear',\n    easeInEaseOut: 'easeInEaseOut',\n    easeIn: 'easeIn',\n    easeOut: 'easeOut',\n    keyboard: 'keyboard',\n  }) as LayoutAnimationTypes,\n  Properties: Object.freeze({\n    opacity: 'opacity',\n    scaleX: 'scaleX',\n    scaleY: 'scaleY',\n    scaleXY: 'scaleXY',\n  }) as LayoutAnimationProperties,\n  checkConfig(...args: Array<mixed>) {\n    console.error('LayoutAnimation.checkConfig(...) has been disabled.');\n  },\n  Presets,\n  easeInEaseOut: (configureNext.bind(null, Presets.easeInEaseOut): (\n    onAnimationDidEnd?: OnAnimationDidEndCallback,\n  ) => void),\n  linear: (configureNext.bind(null, Presets.linear): (\n    onAnimationDidEnd?: OnAnimationDidEndCallback,\n  ) => void),\n  spring: (configureNext.bind(null, Presets.spring): (\n    onAnimationDidEnd?: OnAnimationDidEndCallback,\n  ) => void),\n  setEnabled: setLayoutAnimationEnabled,\n};\n\nexport default LayoutAnimation;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeKeyboardObserver';\nexport {default} from '../../../src/private/specs_DEPRECATED/modules/NativeKeyboardObserver';\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('KeyboardObserver'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport Platform from '../../Utilities/Platform';\n\nfunction processDecelerationRate(\n  decelerationRate: number | 'normal' | 'fast',\n): number {\n  if (decelerationRate === 'normal') {\n    return Platform.select({\n      ios: 0.998,\n      android: 0.985,\n    });\n  } else if (decelerationRate === 'fast') {\n    return Platform.select({\n      ios: 0.99,\n      android: 0.9,\n    });\n  }\n  return decelerationRate;\n}\n\nexport default processDecelerationRate;\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {Double} from '../../Types/CodegenTypes';\n\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport * as React from 'react';\n\ntype ScrollViewNativeComponentType = HostComponent<{...}>;\ninterface NativeCommands {\n  +flashScrollIndicators: (\n    viewRef: React.ElementRef<ScrollViewNativeComponentType>,\n  ) => void;\n  +scrollTo: (\n    viewRef: React.ElementRef<ScrollViewNativeComponentType>,\n    x: Double,\n    y: Double,\n    animated: boolean,\n  ) => void;\n  +scrollToEnd: (\n    viewRef: React.ElementRef<ScrollViewNativeComponentType>,\n    animated: boolean,\n  ) => void;\n  +zoomToRect: (\n    viewRef: React.ElementRef<ScrollViewNativeComponentType>,\n    rect: {\n      x: Double,\n      y: Double,\n      width: Double,\n      height: Double,\n      animated?: boolean,\n    },\n    animated?: boolean,\n  ) => void;\n}\n\nexport default (codegenNativeCommands<NativeCommands>({\n  supportedCommands: [\n    'flashScrollIndicators',\n    'scrollTo',\n    'scrollToEnd',\n    'zoomToRect',\n  ],\n}): NativeCommands);\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 * @flow strict\n * @format\n */\n\nimport * as React from 'react';\nimport {createContext} from 'react';\n\ntype Value = {horizontal: boolean} | null;\n\nconst ScrollViewContext: React.Context<Value> = createContext(null);\nif (__DEV__) {\n  ScrollViewContext.displayName = 'ScrollViewContext';\n}\nexport default ScrollViewContext;\n\n// $FlowFixMe[incompatible-type] frozen objects are readonly\nexport const HORIZONTAL: Value = Object.freeze({horizontal: true});\n// $FlowFixMe[incompatible-type] frozen objects are readonly\nexport const VERTICAL: Value = Object.freeze({horizontal: false});\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 * @flow strict-local\n * @format\n */\n\nimport type {LayoutChangeEvent} from '../../Types/CoreEventTypes';\n\nimport Animated from '../../Animated/Animated';\nimport {isPublicInstance as isFabricPublicInstance} from '../../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils';\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport Platform from '../../Utilities/Platform';\nimport useMergeRefs from '../../Utilities/useMergeRefs';\nimport * as React from 'react';\nimport {\n  cloneElement,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\n\nexport type ScrollViewStickyHeaderProps = $ReadOnly<{\n  children?: React.Node,\n  nextHeaderLayoutY: ?number,\n  onLayout: (event: LayoutChangeEvent) => void,\n  scrollAnimatedValue: Animated.Value,\n  // Will cause sticky headers to stick at the bottom of the ScrollView instead\n  // of the top.\n  inverted: ?boolean,\n  // The height of the parent ScrollView. Currently only set when inverted.\n  scrollViewHeight: ?number,\n  nativeID?: ?string,\n  hiddenOnScroll?: ?boolean,\n}>;\n\ninterface Instance extends React.ElementRef<typeof Animated.View> {\n  +setNextHeaderY: number => void;\n}\n\nconst ScrollViewStickyHeader: component(\n  ref: React.RefSetter<Instance>,\n  ...props: ScrollViewStickyHeaderProps\n) = function ScrollViewStickyHeader({\n  ref: forwardedRef,\n  ...props\n}: {\n  ref?: React.RefSetter<Instance>,\n  ...ScrollViewStickyHeaderProps,\n}) {\n  const {\n    inverted,\n    scrollViewHeight,\n    hiddenOnScroll,\n    scrollAnimatedValue,\n    nextHeaderLayoutY: _nextHeaderLayoutY,\n  } = props;\n\n  const [measured, setMeasured] = useState<boolean>(false);\n  const [layoutY, setLayoutY] = useState<number>(0);\n  const [layoutHeight, setLayoutHeight] = useState<number>(0);\n  const [translateY, setTranslateY] = useState<?number>(null);\n  const [nextHeaderLayoutY, setNextHeaderLayoutY] =\n    useState<?number>(_nextHeaderLayoutY);\n  const [isFabric, setIsFabric] = useState<boolean>(false);\n\n  const callbackRef = useCallback((ref: Instance | null): void => {\n    if (ref == null) {\n      return;\n    }\n    // $FlowExpectedError[cannot-write]\n    ref.setNextHeaderY = setNextHeaderLayoutY;\n    setIsFabric(isFabricPublicInstance(ref));\n  }, []);\n  const ref: React.RefSetter<React.ElementRef<typeof Animated.View>> =\n    // $FlowFixMe[prop-missing] - Instance is mutated to have `setNextHeaderY`.\n    useMergeRefs<Instance>(callbackRef, forwardedRef);\n\n  const offset = useMemo(\n    () =>\n      hiddenOnScroll === true\n        ? Animated.diffClamp(\n            scrollAnimatedValue\n              .interpolate({\n                extrapolateLeft: 'clamp',\n                inputRange: [layoutY, layoutY + 1],\n                outputRange: ([0, 1]: Array<number>),\n              })\n              .interpolate({\n                inputRange: [0, 1],\n                outputRange: ([0, -1]: Array<number>),\n              }),\n            -layoutHeight,\n            0,\n          )\n        : null,\n    [scrollAnimatedValue, layoutHeight, layoutY, hiddenOnScroll],\n  );\n\n  const [animatedTranslateY, setAnimatedTranslateY] = useState<Animated.Node>(\n    () => {\n      const inputRange: Array<number> = [-1, 0];\n      const outputRange: Array<number> = [0, 0];\n      const initialTranslateY = scrollAnimatedValue.interpolate({\n        inputRange,\n        outputRange,\n      });\n\n      if (offset != null) {\n        return Animated.add(initialTranslateY, offset);\n      }\n      return initialTranslateY;\n    },\n  );\n\n  const haveReceivedInitialZeroTranslateY = useRef<boolean>(true);\n  const translateYDebounceTimer = useRef<?TimeoutID>(null);\n\n  useEffect(() => {\n    if (translateY !== 0 && translateY != null) {\n      haveReceivedInitialZeroTranslateY.current = false;\n    }\n  }, [translateY]);\n\n  // This is called whenever the (Interpolated) Animated Value\n  // updates, which is several times per frame during scrolling.\n  // To ensure that the Fabric ShadowTree has the most recent\n  // translate style of this node, we debounce the value and then\n  // pass it through to the underlying node during render.\n  // This is:\n  // 1. Only an issue in Fabric.\n  // 2. Worse in Android than iOS. In Android, but not iOS, you\n  //    can touch and move your finger slightly and still trigger\n  //    a \"tap\" event. In iOS, moving will cancel the tap in\n  //    both Fabric and non-Fabric. On Android when you move\n  //    your finger, the hit-detection moves from the Android\n  //    platform to JS, so we need the ShadowTree to have knowledge\n  //    of the current position.\n  const animatedValueListener = useCallback(({value}: $FlowFixMe) => {\n    const debounceTimeout: number = Platform.OS === 'android' ? 15 : 64;\n    // When the AnimatedInterpolation is recreated, it always initializes\n    // to a value of zero and emits a value change of 0 to its listeners.\n    if (value === 0 && !haveReceivedInitialZeroTranslateY.current) {\n      haveReceivedInitialZeroTranslateY.current = true;\n      return;\n    }\n    if (translateYDebounceTimer.current != null) {\n      clearTimeout(translateYDebounceTimer.current);\n    }\n    translateYDebounceTimer.current = setTimeout(\n      () => setTranslateY(value),\n      debounceTimeout,\n    );\n  }, []);\n\n  useEffect(() => {\n    const inputRange: Array<number> = [-1, 0];\n    const outputRange: Array<number> = [0, 0];\n\n    if (measured) {\n      if (inverted === true) {\n        // The interpolation looks like:\n        // - Negative scroll: no translation\n        // - `stickStartPoint` is the point at which the header will start sticking.\n        //   It is calculated using the ScrollView viewport height so it is a the bottom.\n        // - Headers that are in the initial viewport will never stick, `stickStartPoint`\n        //   will be negative.\n        // - From 0 to `stickStartPoint` no translation. This will cause the header\n        //   to scroll normally until it reaches the top of the scroll view.\n        // - From `stickStartPoint` to when the next header y hits the bottom edge of the header: translate\n        //   equally to scroll. This will cause the header to stay at the top of the scroll view.\n        // - Past the collision with the next header y: no more translation. This will cause the\n        //   header to continue scrolling up and make room for the next sticky header.\n        //   In the case that there is no next header just translate equally to\n        //   scroll indefinitely.\n        if (scrollViewHeight != null) {\n          const stickStartPoint = layoutY + layoutHeight - scrollViewHeight;\n          if (stickStartPoint > 0) {\n            inputRange.push(stickStartPoint);\n            outputRange.push(0);\n            inputRange.push(stickStartPoint + 1);\n            outputRange.push(1);\n            // If the next sticky header has not loaded yet (probably windowing) or is the last\n            // we can just keep it sticked forever.\n            const collisionPoint =\n              (nextHeaderLayoutY || 0) - layoutHeight - scrollViewHeight;\n            if (collisionPoint > stickStartPoint) {\n              inputRange.push(collisionPoint, collisionPoint + 1);\n              outputRange.push(\n                collisionPoint - stickStartPoint,\n                collisionPoint - stickStartPoint,\n              );\n            }\n          }\n        }\n      } else {\n        // The interpolation looks like:\n        // - Negative scroll: no translation\n        // - From 0 to the y of the header: no translation. This will cause the header\n        //   to scroll normally until it reaches the top of the scroll view.\n        // - From header y to when the next header y hits the bottom edge of the header: translate\n        //   equally to scroll. This will cause the header to stay at the top of the scroll view.\n        // - Past the collision with the next header y: no more translation. This will cause the\n        //   header to continue scrolling up and make room for the next sticky header.\n        //   In the case that there is no next header just translate equally to\n        //   scroll indefinitely.\n        inputRange.push(layoutY);\n        outputRange.push(0);\n        // If the next sticky header has not loaded yet (probably windowing) or is the last\n        // we can just keep it sticked forever.\n        const collisionPoint = (nextHeaderLayoutY || 0) - layoutHeight;\n        if (collisionPoint >= layoutY) {\n          inputRange.push(collisionPoint, collisionPoint + 1);\n          outputRange.push(collisionPoint - layoutY, collisionPoint - layoutY);\n        } else {\n          inputRange.push(layoutY + 1);\n          outputRange.push(1);\n        }\n      }\n    }\n\n    let newAnimatedTranslateY: Animated.Node = scrollAnimatedValue.interpolate({\n      inputRange,\n      outputRange,\n    });\n\n    if (offset != null) {\n      newAnimatedTranslateY = Animated.add(newAnimatedTranslateY, offset);\n    }\n\n    // add the event listener\n    let animatedListenerId;\n    if (isFabric) {\n      animatedListenerId = newAnimatedTranslateY.addListener(\n        animatedValueListener,\n      );\n    }\n\n    setAnimatedTranslateY(newAnimatedTranslateY);\n\n    // clean up the event listener and timer\n    return () => {\n      if (animatedListenerId) {\n        newAnimatedTranslateY.removeListener(animatedListenerId);\n      }\n      if (translateYDebounceTimer.current != null) {\n        clearTimeout(translateYDebounceTimer.current);\n      }\n    };\n  }, [\n    nextHeaderLayoutY,\n    measured,\n    layoutHeight,\n    layoutY,\n    scrollViewHeight,\n    scrollAnimatedValue,\n    inverted,\n    offset,\n    animatedValueListener,\n    isFabric,\n  ]);\n\n  const _onLayout = (event: LayoutChangeEvent) => {\n    setLayoutY(event.nativeEvent.layout.y);\n    setLayoutHeight(event.nativeEvent.layout.height);\n    setMeasured(true);\n\n    props.onLayout(event);\n    const child = React.Children.only<$FlowFixMe>(props.children);\n    if (child.props.onLayout) {\n      child.props.onLayout(event);\n    }\n  };\n\n  const child = React.Children.only<$FlowFixMe>(props.children);\n\n  const passthroughAnimatedPropExplicitValues =\n    isFabric && translateY != null\n      ? {\n          style: {transform: [{translateY: translateY}]},\n        }\n      : null;\n\n  return (\n    <Animated.View\n      collapsable={false}\n      nativeID={props.nativeID}\n      onLayout={_onLayout}\n      /* $FlowFixMe[prop-missing] passthroughAnimatedPropExplicitValues isn't properly\n         included in the Animated.View flow type. */\n      ref={ref}\n      style={[\n        child.props.style,\n        styles.header,\n        {transform: [{translateY: animatedTranslateY}]},\n      ]}\n      passthroughAnimatedPropExplicitValues={\n        passthroughAnimatedPropExplicitValues\n      }>\n      {cloneElement(child, {\n        style: styles.fill, // We transfer the child style to the wrapper.\n        onLayout: undefined, // we call this manually through our this._onLayout\n      })}\n    </Animated.View>\n  );\n};\n\nconst styles = StyleSheet.create({\n  header: {\n    zIndex: 10,\n  },\n  fill: {\n    flex: 1,\n  },\n});\n\nexport default ScrollViewStickyHeader;\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 * @flow strict-local\n * @format\n */\n\nimport type {AnimatedPropsHook} from '../../src/private/animated/createAnimatedPropsHook';\n\nimport createAnimatedPropsHook from '../../src/private/animated/createAnimatedPropsHook';\n\n/**\n * @deprecated\n */\nexport default createAnimatedPropsHook(null) as AnimatedPropsHook;\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 * @flow strict-local\n * @format\n */\n\nimport type {AnimatedProps} from '../createAnimatedComponent';\n\nimport SectionList, {type SectionListProps} from '../../Lists/SectionList';\nimport createAnimatedComponent from '../createAnimatedComponent';\nimport * as React from 'react';\n\n// $FlowFixMe\nexport default (createAnimatedComponent(SectionList): component<\n  // $FlowExpectedError[unclear-type]\n  ItemT = any,\n  // $FlowExpectedError[unclear-type]\n  SectionT = any,\n>(\n  ref?: React.RefSetter<SectionList<ItemT, SectionT>>,\n  ...props: AnimatedProps<SectionListProps<ItemT, SectionT>>\n));\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {ScrollResponderType} from '../Components/ScrollView/ScrollView';\nimport type {\n  ListRenderItemInfo,\n  ScrollToLocationParamsType,\n  SectionBase as _SectionBase,\n  SectionData,\n  VirtualizedSectionListProps,\n} from '@react-native/virtualized-lists';\n\nimport Platform from '../Utilities/Platform';\nimport VirtualizedLists from '@react-native/virtualized-lists';\nimport * as React from 'react';\n\nconst VirtualizedSectionList = VirtualizedLists.VirtualizedSectionList;\n\ntype DefaultSectionT = {\n  [key: string]: any,\n};\n\nexport type SectionBase<\n  SectionItemT,\n  SectionT = DefaultSectionT,\n> = _SectionBase<SectionItemT, SectionT>;\n\nexport type {\n  SectionData as SectionListData,\n  ScrollToLocationParamsType as SectionListScrollParams,\n};\n\ntype RequiredSectionListProps<ItemT, SectionT = DefaultSectionT> = {\n  /**\n   * The actual data to render, akin to the `data` prop in [`<FlatList>`](https://reactnative.dev/docs/flatlist).\n   *\n   * General shape:\n   *\n   *     sections: $ReadOnlyArray<{\n   *       data: $ReadOnlyArray<SectionItem>,\n   *       renderItem?: ({item: SectionItem, ...}) => ?React.MixedElement,\n   *       ItemSeparatorComponent?: ?ReactClass<{highlighted: boolean, ...}>,\n   *     }>\n   */\n  sections: $ReadOnlyArray<SectionData<ItemT, SectionT>>,\n};\n\nexport type SectionListRenderItemInfo<ItemT, SectionT = DefaultSectionT> = {\n  ...ListRenderItemInfo<ItemT>,\n  section: SectionData<ItemT, SectionT>,\n  ...\n};\n\nexport type SectionListRenderItem<ItemT, SectionT = DefaultSectionT> = (\n  info: SectionListRenderItemInfo<ItemT, SectionT>,\n) => React.Node | null;\n\ntype OptionalSectionListProps<ItemT, SectionT = DefaultSectionT> = {\n  /**\n   * Default renderer for every item in every section. Can be over-ridden on a per-section basis.\n   */\n  renderItem?: SectionListRenderItem<ItemT, SectionT>,\n  /**\n   * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n   * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n   * `data` prop, stick it here and treat it immutably.\n   */\n  extraData?: any,\n  /**\n   * How many items to render in the initial batch. This should be enough to fill the screen but not\n   * much more. Note these items will never be unmounted as part of the windowed rendering in order\n   * to improve perceived performance of scroll-to-top actions.\n   */\n  initialNumToRender?: ?number,\n  /**\n   * Reverses the direction of scroll. Uses scale transforms of -1.\n   */\n  inverted?: ?boolean,\n  /**\n   * Used to extract a unique key for a given item at the specified index. Key is used for caching\n   * and as the react key to track item re-ordering. The default extractor checks item.key, then\n   * falls back to using the index, like react does. Note that this sets keys for each item, but\n   * each overall section still needs its own key.\n   */\n  keyExtractor?: ?(item: ItemT, index: number) => string,\n  /**\n   * Called once when the scroll position gets within `onEndReachedThreshold` of the rendered\n   * content.\n   */\n  onEndReached?: ?(info: {distanceFromEnd: number, ...}) => void,\n  /**\n   * Note: may have bugs (missing content) in some circumstances - use at your own risk.\n   *\n   * This may improve scroll performance for large lists.\n   */\n  removeClippedSubviews?: boolean,\n};\n\nexport type SectionListProps<ItemT, SectionT = DefaultSectionT> = {\n  ...Omit<\n    VirtualizedSectionListProps<ItemT, SectionT>,\n    'getItem' | 'getItemCount' | 'renderItem' | 'keyExtractor',\n  >,\n  ...RequiredSectionListProps<ItemT, SectionT>,\n  ...OptionalSectionListProps<ItemT, SectionT>,\n};\n\n/**\n * A performant interface for rendering sectioned lists, supporting the most handy features:\n *\n *  - Fully cross-platform.\n *  - Configurable viewability callbacks.\n *  - List header support.\n *  - List footer support.\n *  - Item separator support.\n *  - Section header support.\n *  - Section separator support.\n *  - Heterogeneous data and item rendering support.\n *  - Pull to Refresh.\n *  - Scroll loading.\n *\n * If you don't need section support and want a simpler interface, use\n * [`<FlatList>`](https://reactnative.dev/docs/flatlist).\n *\n * Simple Examples:\n *\n *     <SectionList\n *       renderItem={({item}) => <ListItem title={item} />}\n *       renderSectionHeader={({section}) => <Header title={section.title} />}\n *       sections={[ // homogeneous rendering between sections\n *         {data: [...], title: ...},\n *         {data: [...], title: ...},\n *         {data: [...], title: ...},\n *       ]}\n *     />\n *\n *     <SectionList\n *       sections={[ // heterogeneous rendering between sections\n *         {data: [...], renderItem: ...},\n *         {data: [...], renderItem: ...},\n *         {data: [...], renderItem: ...},\n *       ]}\n *     />\n *\n * This is a convenience wrapper around [`<VirtualizedList>`](docs/virtualizedlist),\n * and thus inherits its props (as well as those of `ScrollView`) that aren't explicitly listed\n * here, along with the following caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n *   your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n *   equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n *   (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n *   changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n *   offscreen. This means it's possible to scroll faster than the fill rate and momentarily see\n *   blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n *   and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n *   Alternatively, you can provide a custom `keyExtractor` prop.\n *\n */\nexport default class SectionList<\n  ItemT = any,\n  SectionT = DefaultSectionT,\n> extends React.PureComponent<SectionListProps<ItemT, SectionT>> {\n  props: SectionListProps<ItemT, SectionT>;\n\n  /**\n   * Scrolls to the item at the specified `sectionIndex` and `itemIndex` (within the section)\n   * positioned in the viewable area such that `viewPosition` 0 places it at the top (and may be\n   * covered by a sticky header), 1 at the bottom, and 0.5 centered in the middle. `viewOffset` is a\n   * fixed number of pixels to offset the final target position, e.g. to compensate for sticky\n   * headers.\n   *\n   * Note: cannot scroll to locations outside the render window without specifying the\n   * `getItemLayout` prop.\n   */\n  scrollToLocation(params: ScrollToLocationParamsType) {\n    if (this._wrapperListRef != null) {\n      this._wrapperListRef.scrollToLocation(params);\n    }\n  }\n\n  /**\n   * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.\n   * if `waitForInteractions` is true and the user has not scrolled. This is typically called by\n   * taps on items or by navigation actions.\n   */\n  recordInteraction() {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    listRef && listRef.recordInteraction();\n  }\n\n  /**\n   * Displays the scroll indicators momentarily.\n   *\n   * @platform ios\n   */\n  flashScrollIndicators() {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    listRef && listRef.flashScrollIndicators();\n  }\n\n  /**\n   * Provides a handle to the underlying scroll responder.\n   */\n  getScrollResponder(): ?ScrollResponderType {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    if (listRef) {\n      return listRef.getScrollResponder();\n    }\n  }\n\n  getScrollableNode(): any {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    if (listRef) {\n      return listRef.getScrollableNode();\n    }\n  }\n\n  setNativeProps(props: Object) {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    if (listRef) {\n      listRef.setNativeProps(props);\n    }\n  }\n\n  render(): React.Node {\n    const {\n      stickySectionHeadersEnabled: _stickySectionHeadersEnabled,\n      ...restProps\n    } = this.props;\n    const stickySectionHeadersEnabled =\n      _stickySectionHeadersEnabled ?? Platform.OS === 'ios';\n    return (\n      /* $FlowFixMe[incompatible-type] Error revealed after improved builtin\n       * React utility types */\n      /* $FlowFixMe[incompatible-type] Error revealed after improved builtin\n       * React utility types */\n      <VirtualizedSectionList\n        {...restProps}\n        stickySectionHeadersEnabled={stickySectionHeadersEnabled}\n        ref={this._captureRef}\n        // $FlowFixMe[missing-local-annot]\n        getItemCount={items => items.length}\n        // $FlowFixMe[missing-local-annot]\n        getItem={(items, index) => items[index]}\n      />\n    );\n  }\n\n  _wrapperListRef: ?React.ElementRef<typeof VirtualizedSectionList>;\n  _captureRef = (ref: ?React.RefOf<VirtualizedSectionList>) => {\n    this._wrapperListRef = ref;\n  };\n}\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 * @flow strict-local\n * @format\n */\n\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\nimport Text, {type TextProps} from '../../Text/Text';\nimport createAnimatedComponent from '../createAnimatedComponent';\nimport * as React from 'react';\n\nexport default (createAnimatedComponent(\n  (Text: $FlowFixMe),\n): AnimatedComponentType<TextProps, React.ElementRef<typeof Text>>);\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../Components/View/ViewPropTypes';\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\nimport View from '../../Components/View/View';\nimport createAnimatedComponent from '../createAnimatedComponent';\nimport * as React from 'react';\n\nexport default (createAnimatedComponent(View): AnimatedComponentType<\n  ViewProps,\n  React.ElementRef<typeof View>,\n>);\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 * @flow strict-local\n * @format\n */\n\nimport type {HostInstance} from '../../src/private/types/HostInstance';\nimport type {ImageBackgroundProps} from './ImageProps';\n\nimport View from '../Components/View/View';\nimport flattenStyle from '../StyleSheet/flattenStyle';\nimport StyleSheet from '../StyleSheet/StyleSheet';\nimport Image from './Image';\nimport * as React from 'react';\n\nexport type {ImageBackgroundProps} from './ImageProps';\n\n/**\n * Very simple drop-in replacement for <Image> which supports nesting views.\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, View, ImageBackground, Text } from 'react-native';\n *\n * class DisplayAnImageBackground extends Component {\n *   render() {\n *     return (\n *       <ImageBackground\n *         style={{width: 50, height: 50}}\n *         source={{uri: 'https://reactnative.dev/img/opengraph.png'}}\n *       >\n *         <Text>React</Text>\n *       </ImageBackground>\n *     );\n *   }\n * }\n *\n * // App registration and rendering\n * AppRegistry.registerComponent('DisplayAnImageBackground', () => DisplayAnImageBackground);\n * ```\n */\nclass ImageBackground extends React.Component<ImageBackgroundProps> {\n  setNativeProps(props: {...}) {\n    // Work-around flow\n    const viewRef = this._viewRef;\n    if (viewRef) {\n      viewRef.setNativeProps(props);\n    }\n  }\n\n  _viewRef: ?React.ElementRef<typeof View> = null;\n\n  _captureRef = (ref: null | HostInstance) => {\n    this._viewRef = ref;\n  };\n\n  render(): React.Node {\n    const {\n      children,\n      style,\n      imageStyle,\n      imageRef,\n      importantForAccessibility,\n      ...props\n    } = this.props;\n\n    // $FlowFixMe[underconstrained-implicit-instantiation]\n    const flattenedStyle = flattenStyle(style);\n    return (\n      <View\n        accessibilityIgnoresInvertColors={true}\n        importantForAccessibility={importantForAccessibility}\n        style={style}\n        ref={this._captureRef}>\n        {/* $FlowFixMe[incompatible-use] */}\n        <Image\n          {...props}\n          importantForAccessibility={importantForAccessibility}\n          style={[\n            StyleSheet.absoluteFill,\n            {\n              // Temporary Workaround:\n              // Current (imperfect yet) implementation of <Image> overwrites width and height styles\n              // (which is not quite correct), and these styles conflict with explicitly set styles\n              // of <ImageBackground> and with our internal layout model here.\n              // So, we have to proxy/reapply these styles explicitly for actual <Image> component.\n              // This workaround should be removed after implementing proper support of\n              // intrinsic content size of the <Image>.\n              // $FlowFixMe[prop-missing]\n              width: flattenedStyle?.width,\n              // $FlowFixMe[prop-missing]\n              height: flattenedStyle?.height,\n            },\n            imageStyle,\n          ]}\n          ref={imageRef}\n        />\n        {children}\n      </View>\n    );\n  }\n}\n\nexport default ImageBackground;\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 * @flow strict-local\n * @format\n */\n\nimport SafeAreaView from '../../Components/SafeAreaView/SafeAreaView';\nimport StyleSheet, {\n  type ColorValue,\n  type ViewStyleProp,\n} from '../../StyleSheet/StyleSheet';\nimport Platform from '../../Utilities/Platform';\nimport useWindowDimensions from '../../Utilities/useWindowDimensions';\nimport RCTInputAccessoryViewNativeComponent from './RCTInputAccessoryViewNativeComponent';\nimport * as React from 'react';\n\n/**\n * Note: iOS only\n *\n * A component which enables customization of the keyboard input accessory view.\n * The input accessory view is displayed above the keyboard whenever a TextInput\n * has focus. This component can be used to create custom toolbars.\n *\n * To use this component wrap your custom toolbar with the\n * InputAccessoryView component, and set a nativeID. Then, pass that nativeID\n * as the inputAccessoryViewID of whatever TextInput you desire. A simple\n * example:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, TextInput, InputAccessoryView, Button } from 'react-native';\n *\n * export default class UselessTextInput extends Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = {text: 'Placeholder Text'};\n *   }\n *\n *   render() {\n *     const inputAccessoryViewID = \"uniqueID\";\n *     return (\n *       <View>\n *         <ScrollView keyboardDismissMode=\"interactive\">\n *           <TextInput\n *             style={{\n *               padding: 10,\n *               paddingTop: 50,\n *             }}\n *             inputAccessoryViewID=inputAccessoryViewID\n *             onChangeText={text => this.setState({text})}\n *             value={this.state.text}\n *           />\n *         </ScrollView>\n *         <InputAccessoryView nativeID=inputAccessoryViewID>\n *           <Button\n *             onPress={() => this.setState({text: 'Placeholder Text'})}\n *             title=\"Reset Text\"\n *           />\n *         </InputAccessoryView>\n *       </View>\n *     );\n *   }\n * }\n *\n * // skip this line if using Create React Native App\n * AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput);\n * ```\n *\n * This component can also be used to create sticky text inputs (text inputs\n * which are anchored to the top of the keyboard). To do this, wrap a\n * TextInput with the InputAccessoryView component, and don't set a nativeID.\n * For an example, look at InputAccessoryViewExample.js in RNTester.\n */\n\nexport type InputAccessoryViewProps = $ReadOnly<{\n  +children: React.Node,\n  /**\n   * An ID which is used to associate this `InputAccessoryView` to\n   * specified TextInput(s).\n   */\n  nativeID?: ?string,\n  style?: ?ViewStyleProp,\n  backgroundColor?: ?ColorValue,\n}>;\n\nconst InputAccessoryView: React.ComponentType<InputAccessoryViewProps> = (\n  props: InputAccessoryViewProps,\n) => {\n  const {width} = useWindowDimensions();\n\n  if (Platform.OS === 'ios') {\n    if (React.Children.count(props.children) === 0) {\n      return null;\n    }\n\n    return (\n      <RCTInputAccessoryViewNativeComponent\n        style={[props.style, styles.container]}\n        nativeID={props.nativeID}\n        backgroundColor={props.backgroundColor}>\n        <SafeAreaView style={[styles.safeAreaView, {width}]}>\n          {props.children}\n        </SafeAreaView>\n      </RCTInputAccessoryViewNativeComponent>\n    );\n  } else {\n    console.warn('<InputAccessoryView> is only supported on iOS.');\n    return null;\n  }\n};\n\nconst styles = StyleSheet.create({\n  container: {\n    position: 'absolute',\n  },\n  safeAreaView: {\n    flex: 1,\n  },\n});\n\nexport default InputAccessoryView;\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport Platform from '../../Utilities/Platform';\nimport View from '../View/View';\nimport * as React from 'react';\n\n/**\n * Renders nested content and automatically applies paddings reflect the portion\n * of the view that is not covered by navigation bars, tab bars, toolbars, and\n * other ancestor views.\n *\n * Moreover, and most importantly, Safe Area's paddings reflect physical\n * limitation of the screen, such as rounded corners or camera notches (aka\n * sensor housing area on iPhone X).\n * @deprecated Use `react-native-safe-area-context` instead. This component will be removed in a future release.\n */\nconst SafeAreaView: component(\n  ref?: React.RefSetter<React.ElementRef<typeof View>>,\n  ...props: ViewProps\n) = Platform.select({\n  ios: require('./RCTSafeAreaViewNativeComponent').default,\n  default: View,\n});\n\nexport default SafeAreaView;\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 * @flow strict-local\n * @format\n */\n\nimport Dimensions from './Dimensions';\nimport {\n  type DisplayMetrics,\n  type DisplayMetricsAndroid,\n} from './NativeDeviceInfo';\nimport {useEffect, useState} from 'react';\n\nexport default function useWindowDimensions():\n  | DisplayMetrics\n  | DisplayMetricsAndroid {\n  const [dimensions, setDimensions] = useState(() => Dimensions.get('window'));\n  useEffect(() => {\n    function handleChange({\n      window,\n    }: {\n      window: DisplayMetrics | DisplayMetricsAndroid,\n    }) {\n      if (\n        dimensions.width !== window.width ||\n        dimensions.height !== window.height ||\n        dimensions.scale !== window.scale ||\n        dimensions.fontScale !== window.fontScale\n      ) {\n        setDimensions(window);\n      }\n    }\n    const subscription = Dimensions.addEventListener('change', handleChange);\n    // We might have missed an update between calling `get` in render and\n    // `addEventListener` in this handler, so we set it here. If there was\n    // no change, React will filter out this update as a no-op.\n    handleChange({window: Dimensions.get('window')});\n    return () => {\n      subscription.remove();\n    };\n  }, [dimensions]);\n  return dimensions;\n}\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent';\nexport {default} from '../../../src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent';\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\n\ntype InputAccessoryNativeProps = $ReadOnly<{\n  ...ViewProps,\n  backgroundColor?: ?ColorValue,\n}>;\n\nexport default (codegenNativeComponent<InputAccessoryNativeProps>(\n  'InputAccessory',\n  {\n    interfaceOnly: true,\n    paperComponentName: 'RCTInputAccessoryView',\n    excludedPlatforms: ['android'],\n  },\n): HostComponent<InputAccessoryNativeProps>);\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {\n  ViewLayout,\n  ViewLayoutEvent,\n  ViewProps,\n} from '../View/ViewPropTypes';\nimport type {KeyboardEvent, KeyboardMetrics} from './Keyboard';\n\nimport LayoutAnimation from '../../LayoutAnimation/LayoutAnimation';\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport Platform from '../../Utilities/Platform';\nimport {type EventSubscription} from '../../vendor/emitter/EventEmitter';\nimport AccessibilityInfo from '../AccessibilityInfo/AccessibilityInfo';\nimport View from '../View/View';\nimport Keyboard from './Keyboard';\nimport * as React from 'react';\nimport {createRef} from 'react';\n\nexport type KeyboardAvoidingViewProps = $ReadOnly<{\n  ...ViewProps,\n\n  /**\n   * Specify how to react to the presence of the keyboard.\n   */\n  behavior?: ?('height' | 'position' | 'padding'),\n\n  /**\n   * Style of the content container when `behavior` is 'position'.\n   */\n  contentContainerStyle?: ?ViewStyleProp,\n\n  /**\n   * Controls whether this `KeyboardAvoidingView` instance should take effect.\n   * This is useful when more than one is on the screen. Defaults to true.\n   */\n  enabled?: ?boolean,\n\n  /**\n   * Distance between the top of the user screen and the React Native view. This\n   * may be non-zero in some cases. Defaults to 0.\n   */\n  keyboardVerticalOffset?: number,\n}>;\n\ntype KeyboardAvoidingViewState = {\n  bottom: number,\n};\n\n/**\n * View that moves out of the way when the keyboard appears by automatically\n * adjusting its height, position, or bottom padding.\n */\nclass KeyboardAvoidingView extends React.Component<\n  KeyboardAvoidingViewProps,\n  KeyboardAvoidingViewState,\n> {\n  _frame: ?ViewLayout = null;\n  _keyboardEvent: ?KeyboardEvent = null;\n  _subscriptions: Array<EventSubscription> = [];\n  viewRef: {current: React.ElementRef<typeof View> | null, ...};\n  _initialFrameHeight: number = 0;\n  _bottom: number = 0;\n\n  constructor(props: KeyboardAvoidingViewProps) {\n    super(props);\n    this.state = {bottom: 0};\n    this.viewRef = createRef();\n  }\n\n  async _relativeKeyboardHeight(\n    keyboardFrame: KeyboardMetrics,\n  ): Promise<number> {\n    const frame = this._frame;\n    if (!frame || !keyboardFrame) {\n      return 0;\n    }\n\n    // On iOS when Prefer Cross-Fade Transitions is enabled, the keyboard position\n    // & height is reported differently (0 instead of Y position value matching height of frame)\n    if (\n      Platform.OS === 'ios' &&\n      keyboardFrame.screenY === 0 &&\n      (await AccessibilityInfo.prefersCrossFadeTransitions())\n    ) {\n      return 0;\n    }\n\n    const keyboardY =\n      keyboardFrame.screenY - (this.props.keyboardVerticalOffset ?? 0);\n\n    if (this.props.behavior === 'height') {\n      return Math.max(\n        this.state.bottom + frame.y + frame.height - keyboardY,\n        0,\n      );\n    }\n\n    // Calculate the displacement needed for the view such that it\n    // no longer overlaps with the keyboard\n    return Math.max(frame.y + frame.height - keyboardY, 0);\n  }\n\n  _onKeyboardChange = (event: ?KeyboardEvent) => {\n    this._keyboardEvent = event;\n    // $FlowFixMe[unused-promise]\n    this._updateBottomIfNecessary();\n  };\n\n  _onKeyboardHide = (event: ?KeyboardEvent) => {\n    this._keyboardEvent = null;\n    // $FlowFixMe[unused-promise]\n    this._updateBottomIfNecessary();\n  };\n\n  _onLayout = async (event: ViewLayoutEvent) => {\n    event.persist();\n\n    const oldFrame = this._frame;\n    this._frame = event.nativeEvent.layout;\n    if (!this._initialFrameHeight) {\n      // save the initial frame height, before the keyboard is visible\n      this._initialFrameHeight = this._frame.height;\n    }\n\n    // update bottom height for the first time or when the height is changed\n    if (!oldFrame || oldFrame.height !== this._frame.height) {\n      await this._updateBottomIfNecessary();\n    }\n\n    if (this.props.onLayout) {\n      this.props.onLayout(event);\n    }\n  };\n\n  // Avoid unnecessary renders if the KeyboardAvoidingView is disabled.\n  _setBottom = (value: number) => {\n    const enabled = this.props.enabled ?? true;\n    this._bottom = value;\n    if (enabled) {\n      this.setState({bottom: value});\n    }\n  };\n\n  _updateBottomIfNecessary = async () => {\n    if (this._keyboardEvent == null) {\n      this._setBottom(0);\n      return;\n    }\n\n    const {duration, easing, endCoordinates} = this._keyboardEvent;\n    const height = await this._relativeKeyboardHeight(endCoordinates);\n\n    if (this._bottom === height) {\n      return;\n    }\n\n    this._setBottom(height);\n\n    const enabled = this.props.enabled ?? true;\n    if (enabled && duration && easing) {\n      LayoutAnimation.configureNext({\n        // We have to pass the duration equal to minimal accepted duration defined here: RCTLayoutAnimation.m\n        duration: duration > 10 ? duration : 10,\n        update: {\n          duration: duration > 10 ? duration : 10,\n          type: LayoutAnimation.Types[easing] || 'keyboard',\n        },\n      });\n    }\n  };\n\n  componentDidUpdate(\n    _: KeyboardAvoidingViewProps,\n    prevState: KeyboardAvoidingViewState,\n  ): void {\n    const enabled = this.props.enabled ?? true;\n    if (enabled && this._bottom !== prevState.bottom) {\n      this.setState({bottom: this._bottom});\n    }\n  }\n\n  componentDidMount(): void {\n    if (!Keyboard.isVisible()) {\n      this._keyboardEvent = null;\n      this._setBottom(0);\n    }\n\n    if (Platform.OS === 'ios') {\n      this._subscriptions = [\n        // When undocked, split or floating, iOS will emit\n        // UIKeyboardWillHideNotification notification.\n        // UIKeyboardWillChangeFrameNotification will be emitted before\n        // UIKeyboardWillHideNotification, so we need to listen to\n        // keyboardWillHide and keyboardWillShow instead of\n        // keyboardWillChangeFrame.\n        Keyboard.addListener('keyboardWillHide', this._onKeyboardHide),\n        Keyboard.addListener('keyboardWillShow', this._onKeyboardChange),\n      ];\n    } else {\n      this._subscriptions = [\n        Keyboard.addListener('keyboardDidHide', this._onKeyboardChange),\n        Keyboard.addListener('keyboardDidShow', this._onKeyboardChange),\n      ];\n    }\n  }\n\n  componentWillUnmount(): void {\n    this._subscriptions.forEach(subscription => {\n      subscription.remove();\n    });\n  }\n\n  render(): React.Node {\n    const {\n      behavior,\n      children,\n      contentContainerStyle,\n      enabled = true,\n      // eslint-disable-next-line no-unused-vars\n      keyboardVerticalOffset = 0,\n      style,\n      onLayout,\n      ...props\n    } = this.props;\n    const bottomHeight = enabled === true ? this.state.bottom : 0;\n    switch (behavior) {\n      case 'height':\n        let heightStyle;\n        if (this._frame != null && this.state.bottom > 0) {\n          // Note that we only apply a height change when there is keyboard present,\n          // i.e. this.state.bottom is greater than 0. If we remove that condition,\n          // this.frame.height will never go back to its original value.\n          // When height changes, we need to disable flex.\n          heightStyle = {\n            height: this._initialFrameHeight - bottomHeight,\n            flex: 0,\n          };\n        }\n        return (\n          <View\n            ref={this.viewRef}\n            style={StyleSheet.compose(style, heightStyle)}\n            onLayout={this._onLayout}\n            {...props}>\n            {children}\n          </View>\n        );\n\n      case 'position':\n        return (\n          <View\n            ref={this.viewRef}\n            style={style}\n            onLayout={this._onLayout}\n            {...props}>\n            <View\n              style={StyleSheet.compose(contentContainerStyle, {\n                bottom: bottomHeight,\n              })}>\n              {children}\n            </View>\n          </View>\n        );\n\n      case 'padding':\n        return (\n          <View\n            ref={this.viewRef}\n            style={StyleSheet.compose(style, {paddingBottom: bottomHeight})}\n            onLayout={this._onLayout}\n            {...props}>\n            {children}\n          </View>\n        );\n\n      default:\n        return (\n          <View\n            ref={this.viewRef}\n            onLayout={this._onLayout}\n            style={style}\n            {...props}>\n            {children}\n          </View>\n        );\n    }\n  }\n}\n\nexport default KeyboardAvoidingView;\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 * @flow strict-local\n * @format\n */\n\nimport type {HostInstance} from '../../../src/private/types/HostInstance';\nimport type {EventSubscription} from '../../vendor/emitter/EventEmitter';\n\nimport RCTDeviceEventEmitter from '../../EventEmitter/RCTDeviceEventEmitter';\nimport {sendAccessibilityEvent} from '../../ReactNative/RendererProxy';\nimport Platform from '../../Utilities/Platform';\nimport legacySendAccessibilityEvent from './legacySendAccessibilityEvent';\nimport NativeAccessibilityInfoAndroid from './NativeAccessibilityInfo';\nimport NativeAccessibilityManagerIOS from './NativeAccessibilityManager';\n\n// Events that are only supported on Android.\ntype AccessibilityEventDefinitionsAndroid = {\n  accessibilityServiceChanged: [boolean],\n  highTextContrastChanged: [boolean],\n};\n\n// Events that are only supported on iOS.\ntype AccessibilityEventDefinitionsIOS = {\n  announcementFinished: [{announcement: string, success: boolean}],\n  boldTextChanged: [boolean],\n  grayscaleChanged: [boolean],\n  invertColorsChanged: [boolean],\n  reduceTransparencyChanged: [boolean],\n  darkerSystemColorsChanged: [boolean],\n};\n\ntype AccessibilityEventDefinitions = {\n  ...AccessibilityEventDefinitionsAndroid,\n  ...AccessibilityEventDefinitionsIOS,\n  change: [boolean], // screenReaderChanged\n  reduceMotionChanged: [boolean],\n  screenReaderChanged: [boolean],\n};\n\ntype AccessibilityEventTypes = 'click' | 'focus' | 'viewHoverEnter';\n\n// Mapping of public event names to platform-specific event names.\nconst EventNames: Map<\n  $Keys<AccessibilityEventDefinitions>,\n  string,\n> = Platform.OS === 'android'\n  ? new Map([\n      ['change', 'touchExplorationDidChange'],\n      ['reduceMotionChanged', 'reduceMotionDidChange'],\n      ['highTextContrastChanged', 'highTextContrastDidChange'],\n      ['screenReaderChanged', 'touchExplorationDidChange'],\n      ['accessibilityServiceChanged', 'accessibilityServiceDidChange'],\n      ['invertColorsChanged', 'invertColorDidChange'],\n      ['grayscaleChanged', 'grayscaleModeDidChange'],\n    ])\n  : new Map([\n      ['announcementFinished', 'announcementFinished'],\n      ['boldTextChanged', 'boldTextChanged'],\n      ['change', 'screenReaderChanged'],\n      ['grayscaleChanged', 'grayscaleChanged'],\n      ['invertColorsChanged', 'invertColorsChanged'],\n      ['reduceMotionChanged', 'reduceMotionChanged'],\n      ['reduceTransparencyChanged', 'reduceTransparencyChanged'],\n      ['screenReaderChanged', 'screenReaderChanged'],\n      ['darkerSystemColorsChanged', 'darkerSystemColorsChanged'],\n    ]);\n\n/**\n * Sometimes it's useful to know whether or not the device has a screen reader\n * that is currently active. The `AccessibilityInfo` API is designed for this\n * purpose. You can use it to query the current state of the screen reader as\n * well as to register to be notified when the state of the screen reader\n * changes.\n *\n * See https://reactnative.dev/docs/accessibilityinfo\n */\nconst AccessibilityInfo = {\n  /**\n   * Query whether bold text is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when bold text is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#isBoldTextEnabled\n   */\n  isBoldTextEnabled(): Promise<boolean> {\n    if (Platform.OS === 'android') {\n      return Promise.resolve(false);\n    } else {\n      return new Promise((resolve, reject) => {\n        if (NativeAccessibilityManagerIOS != null) {\n          NativeAccessibilityManagerIOS.getCurrentBoldTextState(\n            resolve,\n            reject,\n          );\n        } else {\n          reject(null);\n        }\n      });\n    }\n  },\n\n  /**\n   * Query whether grayscale is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when grayscale is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#isGrayscaleEnabled\n   */\n  isGrayscaleEnabled(): Promise<boolean> {\n    if (Platform.OS === 'android') {\n      return new Promise((resolve, reject) => {\n        if (NativeAccessibilityInfoAndroid?.isGrayscaleEnabled != null) {\n          NativeAccessibilityInfoAndroid.isGrayscaleEnabled(resolve);\n        } else {\n          reject(null);\n        }\n      });\n    } else {\n      return new Promise((resolve, reject) => {\n        if (NativeAccessibilityManagerIOS != null) {\n          NativeAccessibilityManagerIOS.getCurrentGrayscaleState(\n            resolve,\n            reject,\n          );\n        } else {\n          reject(null);\n        }\n      });\n    }\n  },\n\n  /**\n   * Query whether inverted colors are currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when invert color is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#isInvertColorsEnabled\n   */\n  isInvertColorsEnabled(): Promise<boolean> {\n    if (Platform.OS === 'android') {\n      return new Promise((resolve, reject) => {\n        if (NativeAccessibilityInfoAndroid?.isInvertColorsEnabled != null) {\n          NativeAccessibilityInfoAndroid.isInvertColorsEnabled(resolve);\n        } else {\n          reject(null);\n        }\n      });\n    } else {\n      return new Promise((resolve, reject) => {\n        if (NativeAccessibilityManagerIOS != null) {\n          NativeAccessibilityManagerIOS.getCurrentInvertColorsState(\n            resolve,\n            reject,\n          );\n        } else {\n          reject(null);\n        }\n      });\n    }\n  },\n\n  /**\n   * Query whether reduced motion is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when a reduce motion is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#isReduceMotionEnabled\n   */\n  isReduceMotionEnabled(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (Platform.OS === 'android') {\n        if (NativeAccessibilityInfoAndroid != null) {\n          NativeAccessibilityInfoAndroid.isReduceMotionEnabled(resolve);\n        } else {\n          reject(null);\n        }\n      } else {\n        if (NativeAccessibilityManagerIOS != null) {\n          NativeAccessibilityManagerIOS.getCurrentReduceMotionState(\n            resolve,\n            reject,\n          );\n        } else {\n          reject(null);\n        }\n      }\n    });\n  },\n\n  /**\n   * Query whether high text contrast is currently enabled. Android only.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when high text contrast is enabled and `false` otherwise.\n   */\n  isHighTextContrastEnabled(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (Platform.OS === 'android') {\n        if (NativeAccessibilityInfoAndroid?.isHighTextContrastEnabled != null) {\n          NativeAccessibilityInfoAndroid.isHighTextContrastEnabled(resolve);\n        } else {\n          reject(null);\n        }\n      } else {\n        return Promise.resolve(false);\n      }\n    });\n  },\n\n  /**\n   * Query whether dark system colors is currently enabled. iOS only.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when dark system colors is enabled and `false` otherwise.\n   */\n  isDarkerSystemColorsEnabled(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (Platform.OS === 'android') {\n        return Promise.resolve(false);\n      } else {\n        if (\n          NativeAccessibilityManagerIOS?.getCurrentDarkerSystemColorsState !=\n          null\n        ) {\n          NativeAccessibilityManagerIOS.getCurrentDarkerSystemColorsState(\n            resolve,\n            reject,\n          );\n        } else {\n          reject(null);\n        }\n      }\n    });\n  },\n\n  /**\n   * Query whether reduce motion and prefer cross-fade transitions settings are currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when  prefer cross-fade transitions is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#prefersCrossFadeTransitions\n   */\n  prefersCrossFadeTransitions(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (Platform.OS === 'android') {\n        return Promise.resolve(false);\n      } else {\n        if (\n          NativeAccessibilityManagerIOS?.getCurrentPrefersCrossFadeTransitionsState !=\n          null\n        ) {\n          NativeAccessibilityManagerIOS.getCurrentPrefersCrossFadeTransitionsState(\n            resolve,\n            reject,\n          );\n        } else {\n          reject(null);\n        }\n      }\n    });\n  },\n\n  /**\n   * Query whether reduced transparency is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when a reduce transparency is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#isReduceTransparencyEnabled\n   */\n  isReduceTransparencyEnabled(): Promise<boolean> {\n    if (Platform.OS === 'android') {\n      return Promise.resolve(false);\n    } else {\n      return new Promise((resolve, reject) => {\n        if (NativeAccessibilityManagerIOS != null) {\n          NativeAccessibilityManagerIOS.getCurrentReduceTransparencyState(\n            resolve,\n            reject,\n          );\n        } else {\n          reject(null);\n        }\n      });\n    }\n  },\n\n  /**\n   * Query whether a screen reader is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when a screen reader is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#isScreenReaderEnabled\n   */\n  isScreenReaderEnabled(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (Platform.OS === 'android') {\n        if (NativeAccessibilityInfoAndroid != null) {\n          NativeAccessibilityInfoAndroid.isTouchExplorationEnabled(resolve);\n        } else {\n          reject(null);\n        }\n      } else {\n        if (NativeAccessibilityManagerIOS != null) {\n          NativeAccessibilityManagerIOS.getCurrentVoiceOverState(\n            resolve,\n            reject,\n          );\n        } else {\n          reject(null);\n        }\n      }\n    });\n  },\n\n  /**\n   * Query whether Accessibility Service is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when any service is enabled and `false` otherwise.\n   *\n   * @platform android\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo/#isaccessibilityserviceenabled-android\n   */\n  isAccessibilityServiceEnabled(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (Platform.OS === 'android') {\n        if (\n          NativeAccessibilityInfoAndroid != null &&\n          NativeAccessibilityInfoAndroid.isAccessibilityServiceEnabled != null\n        ) {\n          NativeAccessibilityInfoAndroid.isAccessibilityServiceEnabled(resolve);\n        } else {\n          reject(null);\n        }\n      } else {\n        reject(null);\n      }\n    });\n  },\n\n  /**\n   * Add an event handler. Supported events:\n   *\n   * - `reduceMotionChanged`: Fires when the state of the reduce motion toggle changes.\n   *   The argument to the event handler is a boolean. The boolean is `true` when a reduce\n   *   motion is enabled (or when \"Transition Animation Scale\" in \"Developer options\" is\n   *   \"Animation off\") and `false` otherwise.\n   * - `screenReaderChanged`: Fires when the state of the screen reader changes. The argument\n   *   to the event handler is a boolean. The boolean is `true` when a screen\n   *   reader is enabled and `false` otherwise.\n   *\n   * These events are only supported on iOS:\n   *\n   * - `boldTextChanged`: iOS-only event. Fires when the state of the bold text toggle changes.\n   *   The argument to the event handler is a boolean. The boolean is `true` when a bold text\n   *   is enabled and `false` otherwise.\n   * - `grayscaleChanged`: iOS-only event. Fires when the state of the gray scale toggle changes.\n   *   The argument to the event handler is a boolean. The boolean is `true` when a gray scale\n   *   is enabled and `false` otherwise.\n   * - `invertColorsChanged`: iOS-only event. Fires when the state of the invert colors toggle\n   *   changes. The argument to the event handler is a boolean. The boolean is `true` when a invert\n   *   colors is enabled and `false` otherwise.\n   * - `reduceTransparencyChanged`: iOS-only event. Fires when the state of the reduce transparency\n   *   toggle changes.  The argument to the event handler is a boolean. The boolean is `true`\n   *   when a reduce transparency is enabled and `false` otherwise.\n   * - `announcementFinished`: iOS-only event. Fires when the screen reader has\n   *   finished making an announcement. The argument to the event handler is a\n   *   dictionary with these keys:\n   *     - `announcement`: The string announced by the screen reader.\n   *     - `success`: A boolean indicating whether the announcement was\n   *       successfully made.\n   * - `darkerSystemColorsChanged`: iOS-only event. Fires when the state of the dark system colors\n   *   toggle changes. The argument to the event handler is a boolean. The boolean is `true` when\n   *   dark system colors is enabled and `false` otherwise.\n   *\n   * These events are only supported on Android:\n   *\n   * - `highTextContrastChanged`: Android-only event. Fires when the state of the high text contrast\n   *   toggle changes. The argument to the event handler is a boolean. The boolean is `true` when\n   *   high text contrast is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#addeventlistener\n   */\n  addEventListener<K: $Keys<AccessibilityEventDefinitions>>(\n    eventName: K,\n    // $FlowIssue[incompatible-type] - Flow bug with unions and generics (T128099423)\n    handler: (...AccessibilityEventDefinitions[K]) => void,\n  ): EventSubscription {\n    const deviceEventName = EventNames.get(eventName);\n    return deviceEventName == null\n      ? {remove(): void {}}\n      : // $FlowFixMe[incompatible-call]\n        RCTDeviceEventEmitter.addListener(deviceEventName, handler);\n  },\n\n  /**\n   * Set accessibility focus to a React component.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#setaccessibilityfocus\n   */\n  setAccessibilityFocus(reactTag: number): void {\n    legacySendAccessibilityEvent(reactTag, 'focus');\n  },\n\n  /**\n   * Send a named accessibility event to a HostComponent.\n   */\n  sendAccessibilityEvent(\n    handle: HostInstance,\n    eventType: AccessibilityEventTypes,\n  ) {\n    // iOS only supports 'focus' event types\n    if (Platform.OS === 'ios' && eventType === 'click') {\n      return;\n    }\n    // route through React renderer to distinguish between Fabric and non-Fabric handles\n    sendAccessibilityEvent(handle, eventType);\n  },\n\n  /**\n   * Post a string to be announced by the screen reader.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#announceforaccessibility\n   */\n  announceForAccessibility(announcement: string): void {\n    if (Platform.OS === 'android') {\n      NativeAccessibilityInfoAndroid?.announceForAccessibility(announcement);\n    } else {\n      NativeAccessibilityManagerIOS?.announceForAccessibility(announcement);\n    }\n  },\n\n  /**\n   * Post a string to be announced by the screen reader.\n   * - `announcement`: The string announced by the screen reader.\n   * - `options`: An object that configures the reading options.\n   *   - `queue`: The announcement will be queued behind existing announcements. iOS only.\n   */\n  announceForAccessibilityWithOptions(\n    announcement: string,\n    options: {queue?: boolean},\n  ): void {\n    if (Platform.OS === 'android') {\n      NativeAccessibilityInfoAndroid?.announceForAccessibility(announcement);\n    } else {\n      if (NativeAccessibilityManagerIOS?.announceForAccessibilityWithOptions) {\n        NativeAccessibilityManagerIOS?.announceForAccessibilityWithOptions(\n          announcement,\n          options,\n        );\n      } else {\n        NativeAccessibilityManagerIOS?.announceForAccessibility(announcement);\n      }\n    }\n  },\n\n  /**\n   * Get the recommended timeout for changes to the UI needed by this user.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo#getrecommendedtimeoutmillis\n   */\n  getRecommendedTimeoutMillis(originalTimeout: number): Promise<number> {\n    if (Platform.OS === 'android') {\n      return new Promise((resolve, reject) => {\n        if (NativeAccessibilityInfoAndroid?.getRecommendedTimeoutMillis) {\n          NativeAccessibilityInfoAndroid.getRecommendedTimeoutMillis(\n            originalTimeout,\n            resolve,\n          );\n        } else {\n          resolve(originalTimeout);\n        }\n      });\n    } else {\n      return Promise.resolve(originalTimeout);\n    }\n  },\n};\n\nexport default AccessibilityInfo;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo';\nexport {default} from '../../../src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo';\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +isReduceMotionEnabled: (\n    onSuccess: (isReduceMotionEnabled: boolean) => void,\n  ) => void;\n  +isInvertColorsEnabled?: (\n    onSuccess: (isInvertColorsEnabled: boolean) => void,\n  ) => void;\n  +isHighTextContrastEnabled?: (\n    onSuccess: (isHighTextContrastEnabled: boolean) => void,\n  ) => void;\n  +isTouchExplorationEnabled: (\n    onSuccess: (isScreenReaderEnabled: boolean) => void,\n  ) => void;\n  +isAccessibilityServiceEnabled?: ?(\n    onSuccess: (isAccessibilityServiceEnabled: boolean) => void,\n  ) => void;\n  +setAccessibilityFocus: (reactTag: number) => void;\n  +announceForAccessibility: (announcement: string) => void;\n  +getRecommendedTimeoutMillis?: (\n    mSec: number,\n    onSuccess: (recommendedTimeoutMillis: number) => void,\n  ) => void;\n  +isGrayscaleEnabled?: (\n    onSuccess: (isGrayscaleEnabled: boolean) => void,\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('AccessibilityInfo'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport LayoutConformanceNativeComponent from './LayoutConformanceNativeComponent';\nimport * as React from 'react';\n\nexport type LayoutConformanceProps = $ReadOnly<{\n  /**\n   * strict: Layout in accordance with W3C spec, even when breaking\n   * compatibility: Layout with the same behavior as previous versions of React Native\n   */\n  mode: 'strict' | 'compatibility',\n\n  children: React.Node,\n}>;\n\n// We want a graceful fallback for apps using legacy arch, but need to know\n// ahead of time whether the component is available, so we test for global.\n// This does not correctly handle mixed arch apps (which is okay, since we just\n// degrade the error experience).\nconst isFabricUIManagerInstalled = global?.nativeFabricUIManager != null;\n\nfunction LayoutConformance(props: LayoutConformanceProps): React.Node {\n  return (\n    <LayoutConformanceNativeComponent {...props} style={styles.container} />\n  );\n}\n\nfunction UnimplementedLayoutConformance(\n  props: LayoutConformanceProps,\n): React.Node {\n  if (__DEV__) {\n    const warnOnce = require('../../Utilities/warnOnce').default;\n\n    warnOnce(\n      'layoutconformance-unsupported',\n      '\"LayoutConformance\" is only supported in the New Architecture',\n    );\n  }\n\n  return props.children;\n}\n\nexport default (isFabricUIManagerInstalled\n  ? LayoutConformance\n  : UnimplementedLayoutConformance) as component(...LayoutConformanceProps);\n\nconst styles = StyleSheet.create({\n  container: {\n    display: 'contents',\n  },\n});\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 * @flow strict-local\n * @format\n */\n\nimport type {HostComponent} from '../../../src/private/types/HostComponent';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';\n\ntype Props = $ReadOnly<{\n  mode: 'strict' | 'compatibility',\n  ...ViewProps,\n}>;\n\nconst LayoutConformanceNativeComponent: HostComponent<Props> =\n  NativeComponentRegistry.get<Props>('LayoutConformance', () => ({\n    uiViewClassName: 'LayoutConformance',\n    validAttributes: {\n      mode: true,\n    },\n  }));\n\nexport default LayoutConformanceNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport type {HostInstance} from '../../src/private/types/HostInstance';\nimport type {ViewProps} from '../Components/View/ViewPropTypes';\nimport type {RootTag} from '../ReactNative/RootTag';\nimport type {DirectEventHandler} from '../Types/CodegenTypes';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport {type ColorValue} from '../StyleSheet/StyleSheet';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\nimport NativeModalManager from './NativeModalManager';\nimport RCTModalHostView from './RCTModalHostViewNativeComponent';\nimport VirtualizedLists from '@react-native/virtualized-lists';\nimport * as React from 'react';\n\nconst ScrollView = require('../Components/ScrollView/ScrollView').default;\nconst View = require('../Components/View/View').default;\nconst AppContainer = require('../ReactNative/AppContainer').default;\nconst I18nManager = require('../ReactNative/I18nManager').default;\nconst {RootTagContext} = require('../ReactNative/RootTag');\nconst StyleSheet = require('../StyleSheet/StyleSheet').default;\nconst Platform = require('../Utilities/Platform').default;\n\nconst VirtualizedListContextResetter =\n  VirtualizedLists.VirtualizedListContextResetter;\n\ntype ModalEventDefinitions = {\n  modalDismissed: [{modalID: number}],\n};\n\nexport type PublicModalInstance = HostInstance;\n\nconst ModalEventEmitter =\n  Platform.OS === 'ios' && NativeModalManager != null\n    ? new NativeEventEmitter<ModalEventDefinitions>(\n        // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior\n        // If you want to use the native module on other platforms, please remove this condition and test its behavior\n        Platform.OS !== 'ios' ? null : NativeModalManager,\n      )\n    : null;\n\n/**\n * The Modal component is a simple way to present content above an enclosing view.\n *\n * See https://reactnative.dev/docs/modal\n */\n\n// In order to route onDismiss callbacks, we need to uniquely identifier each\n// <Modal> on screen. There can be different ones, either nested or as siblings.\n// We cannot pass the onDismiss callback to native as the view will be\n// destroyed before the callback is fired.\nlet uniqueModalIdentifier = 0;\n\ntype OrientationChangeEvent = $ReadOnly<{\n  orientation: 'portrait' | 'landscape',\n}>;\n\nexport type ModalBaseProps = {\n  /**\n   * @deprecated Use animationType instead\n   */\n  animated?: boolean,\n  /**\n   * The `animationType` prop controls how the modal animates.\n   *\n   * - `slide` slides in from the bottom\n   * - `fade` fades into view\n   * - `none` appears without an animation\n   */\n  animationType?: ?('none' | 'slide' | 'fade'),\n  /**\n   * The `transparent` prop determines whether your modal will fill the entire view.\n   * Setting this to `true` will render the modal over a transparent background.\n   */\n  transparent?: ?boolean,\n  /**\n   * The `visible` prop determines whether your modal is visible.\n   */\n  visible?: ?boolean,\n  /**\n   * The `onRequestClose` callback is called when the user taps the hardware back button on Android, dismisses the sheet using a gesture on iOS (when `allowSwipeDismissal` is set to true) or the menu button on Apple TV.\n   *\n   * This is required on iOS and Android.\n   */\n  // onRequestClose?: (event: NativeSyntheticEvent<any>) => void;\n  onRequestClose?: ?DirectEventHandler<null>,\n  /**\n   * The `onShow` prop allows passing a function that will be called once the modal has been shown.\n   */\n  // onShow?: (event: NativeSyntheticEvent<any>) => void;\n  onShow?: ?DirectEventHandler<null>,\n\n  /**\n   * The `backdropColor` props sets the background color of the modal's container.\n   * Defaults to `white` if not provided and transparent is `false`. Ignored if `transparent` is `true`.\n   */\n  backdropColor?: ColorValue,\n\n  /**\n   * A ref to the native Modal component.\n   */\n  modalRef?: React.RefSetter<PublicModalInstance>,\n};\n\nexport type ModalPropsIOS = {\n  /**\n   * The `presentationStyle` determines the style of modal to show\n   */\n  presentationStyle?: ?(\n    | 'fullScreen'\n    | 'pageSheet'\n    | 'formSheet'\n    | 'overFullScreen'\n  ),\n\n  /**\n   * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations.\n   * On iOS, the modal is still restricted by what's specified in your app's Info.plist's UISupportedInterfaceOrientations field.\n   */\n  supportedOrientations?: ?$ReadOnlyArray<\n    | 'portrait'\n    | 'portrait-upside-down'\n    | 'landscape'\n    | 'landscape-left'\n    | 'landscape-right',\n  >,\n\n  /**\n   * The `onDismiss` prop allows passing a function that will be called once the modal has been dismissed.\n   */\n  // onDismiss?: (() => void) | undefined;\n  onDismiss?: ?() => void,\n\n  /**\n   * The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed.\n   * The orientation provided is only 'portrait' or 'landscape'. This callback is also called on initial render, regardless of the current orientation.\n   */\n  // onOrientationChange?:\n  //   | ((event: NativeSyntheticEvent<any>) => void)\n  //   | undefined;\n  onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,\n\n  /**\n   * Controls whether the modal can be dismissed by swiping down on iOS.\n   * This requires you to implement the `onRequestClose` prop to handle the dismissal.\n   */\n  allowSwipeDismissal?: ?boolean,\n};\n\nexport type ModalPropsAndroid = {\n  /**\n   *  Controls whether to force hardware acceleration for the underlying window.\n   */\n  hardwareAccelerated?: ?boolean,\n\n  /**\n   *  Determines whether your modal should go under the system statusbar.\n   */\n  statusBarTranslucent?: ?boolean,\n\n  /**\n   *  Determines whether your modal should go under the system navigationbar.\n   */\n  navigationBarTranslucent?: ?boolean,\n};\n\nexport type ModalProps = {\n  ...ModalBaseProps,\n  ...ModalPropsIOS,\n  ...ModalPropsAndroid,\n  ...ViewProps,\n};\n\nfunction confirmProps(props: ModalProps) {\n  if (__DEV__) {\n    if (\n      props.presentationStyle &&\n      props.presentationStyle !== 'overFullScreen' &&\n      props.transparent === true\n    ) {\n      console.warn(\n        `Modal with '${props.presentationStyle}' presentation style and 'transparent' value is not supported.`,\n      );\n    }\n    if (\n      props.navigationBarTranslucent === true &&\n      props.statusBarTranslucent !== true\n    ) {\n      console.warn(\n        'Modal with translucent navigation bar and without translucent status bar is not supported.',\n      );\n    }\n\n    if (\n      Platform.OS === 'ios' &&\n      props.allowSwipeDismissal === true &&\n      !props.onRequestClose\n    ) {\n      console.warn(\n        'Modal requires the onRequestClose prop when used with `allowSwipeDismissal`. This is necessary to prevent state corruption.',\n      );\n    }\n  }\n}\n\n// Create a state to track whether the Modal is rendering or not.\n// This is the only prop that controls whether the modal is rendered or not.\ntype ModalState = {\n  isRendered: boolean,\n};\n\nclass Modal extends React.Component<ModalProps, ModalState> {\n  static defaultProps: {hardwareAccelerated: boolean, visible: boolean} = {\n    visible: true,\n    hardwareAccelerated: false,\n  };\n\n  static contextType: React.Context<RootTag> = RootTagContext;\n\n  _identifier: number;\n  _eventSubscription: ?EventSubscription;\n\n  constructor(props: ModalProps) {\n    super(props);\n    if (__DEV__) {\n      confirmProps(props);\n    }\n    this._identifier = uniqueModalIdentifier++;\n    this.state = {\n      isRendered: props.visible === true,\n    };\n  }\n\n  componentDidMount() {\n    // 'modalDismissed' is for the old renderer in iOS only\n    if (ModalEventEmitter) {\n      this._eventSubscription = ModalEventEmitter.addListener(\n        'modalDismissed',\n        event => {\n          this.setState({isRendered: false}, () => {\n            if (event.modalID === this._identifier && this.props.onDismiss) {\n              this.props.onDismiss();\n            }\n          });\n        },\n      );\n    }\n  }\n\n  componentWillUnmount() {\n    if (Platform.OS === 'ios') {\n      this.setState({isRendered: false});\n    }\n    if (this._eventSubscription) {\n      this._eventSubscription.remove();\n    }\n  }\n\n  componentDidUpdate(prevProps: ModalProps) {\n    if (prevProps.visible === false && this.props.visible === true) {\n      this.setState({isRendered: true});\n    }\n\n    if (__DEV__) {\n      confirmProps(this.props);\n    }\n  }\n\n  // Helper function to encapsulate platform specific logic to show or not the Modal.\n  _shouldShowModal(): boolean {\n    if (Platform.OS === 'ios') {\n      return this.props.visible === true || this.state.isRendered === true;\n    }\n\n    return this.props.visible === true;\n  }\n\n  render(): React.Node {\n    if (!this._shouldShowModal()) {\n      return null;\n    }\n\n    const containerStyles = {\n      backgroundColor:\n        this.props.transparent === true\n          ? 'transparent'\n          : this.props.backdropColor ?? 'white',\n    };\n\n    let animationType = this.props.animationType || 'none';\n\n    let presentationStyle = this.props.presentationStyle;\n    if (!presentationStyle) {\n      presentationStyle = 'fullScreen';\n      if (this.props.transparent === true) {\n        presentationStyle = 'overFullScreen';\n      }\n    }\n\n    const innerChildren = __DEV__ ? (\n      <AppContainer rootTag={this.context}>{this.props.children}</AppContainer>\n    ) : (\n      this.props.children\n    );\n\n    const onDismiss = () => {\n      // OnDismiss is implemented on iOS only.\n      if (Platform.OS === 'ios') {\n        this.setState({isRendered: false}, () => {\n          if (this.props.onDismiss) {\n            this.props.onDismiss();\n          }\n        });\n      }\n    };\n\n    return (\n      <RCTModalHostView\n        /* $FlowFixMe[incompatible-type] Natural Inference rollout. See\n         * https://fburl.com/workplace/6291gfvu */\n        animationType={animationType}\n        presentationStyle={presentationStyle}\n        transparent={this.props.transparent}\n        hardwareAccelerated={this.props.hardwareAccelerated}\n        onRequestClose={this.props.onRequestClose}\n        onShow={this.props.onShow}\n        onDismiss={onDismiss}\n        ref={this.props.modalRef}\n        visible={this.props.visible}\n        statusBarTranslucent={this.props.statusBarTranslucent}\n        navigationBarTranslucent={this.props.navigationBarTranslucent}\n        identifier={this._identifier}\n        style={styles.modal}\n        // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n        onStartShouldSetResponder={this._shouldSetResponder}\n        supportedOrientations={this.props.supportedOrientations}\n        onOrientationChange={this.props.onOrientationChange}\n        allowSwipeDismissal={this.props.allowSwipeDismissal}\n        testID={this.props.testID}>\n        <VirtualizedListContextResetter>\n          <ScrollView.Context.Provider value={null}>\n            <View\n              // $FlowFixMe[incompatible-type]\n              style={[styles.container, containerStyles]}\n              collapsable={false}>\n              {innerChildren}\n            </View>\n          </ScrollView.Context.Provider>\n        </VirtualizedListContextResetter>\n      </RCTModalHostView>\n    );\n  }\n\n  // We don't want any responder events bubbling out of the modal.\n  _shouldSetResponder(): boolean {\n    return true;\n  }\n}\n\nconst side = I18nManager.getConstants().isRTL ? 'right' : 'left';\nconst styles = StyleSheet.create({\n  modal: {\n    position: 'absolute',\n  },\n  /* $FlowFixMe[incompatible-call] Natural Inference rollout. See\n   * https://fburl.com/workplace/6291gfvu */\n  container: {\n    /* $FlowFixMe[invalid-computed-prop] (>=0.111.0 site=react_native_fb) This\n     * comment suppresses an error found when Flow v0.111 was deployed. To see\n     * the error, delete this comment and run Flow. */\n    // $FlowFixMe[incompatible-call]\n    [side]: 0,\n    top: 0,\n    flex: 1,\n  },\n});\n\ntype ModalRefProps = $ReadOnly<{\n  ref?: React.RefSetter<PublicModalInstance>,\n}>;\n\n// NOTE: This wrapper component is necessary because `Modal` is a class\n// component and we need to map `ref` to a differently named prop. This can be\n// removed when `Modal` is a functional component.\nfunction Wrapper({\n  ref,\n  ...props\n}: {\n  ...ModalRefProps,\n  ...ModalProps,\n}): React.Node {\n  return <Modal {...props} modalRef={ref} />;\n}\n\nWrapper.displayName = 'Modal';\n// $FlowExpectedError[prop-missing]\nWrapper.Context = VirtualizedListContextResetter;\n\nexport default Wrapper;\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeModalManager';\nimport NativeModalManager from '../../src/private/specs_DEPRECATED/modules/NativeModalManager';\n\nexport default NativeModalManager;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  // RCTEventEmitter\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('ModalManager'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent';\nimport RCTModalHostViewNativeComponent from '../../src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent';\n\nexport default RCTModalHostViewNativeComponent;\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {\n  DirectEventHandler,\n  Int32,\n  WithDefault,\n} from '../../../../Libraries/Types/CodegenTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\n\ntype OrientationChangeEvent = $ReadOnly<{\n  orientation: 'portrait' | 'landscape',\n}>;\n\ntype RCTModalHostViewNativeProps = $ReadOnly<{\n  ...ViewProps,\n\n  /**\n   * The `animationType` prop controls how the modal animates.\n   *\n   * See https://reactnative.dev/docs/modal#animationtype\n   */\n  animationType?: WithDefault<'none' | 'slide' | 'fade', 'none'>,\n\n  /**\n   * The `presentationStyle` prop controls how the modal appears.\n   *\n   * See https://reactnative.dev/docs/modal#presentationstyle\n   */\n  presentationStyle?: WithDefault<\n    'fullScreen' | 'pageSheet' | 'formSheet' | 'overFullScreen',\n    'fullScreen',\n  >,\n\n  /**\n   * The `transparent` prop determines whether your modal will fill the\n   * entire view.\n   *\n   * See https://reactnative.dev/docs/modal#transparent\n   */\n  transparent?: WithDefault<boolean, false>,\n\n  /**\n   * The `statusBarTranslucent` prop determines whether your modal should go under\n   * the system statusbar.\n   *\n   * See https://reactnative.dev/docs/modal#statusBarTranslucent\n   */\n  statusBarTranslucent?: WithDefault<boolean, false>,\n\n  /**\n   * The `navigationBarTranslucent` prop determines whether your modal should go under\n   * the system navigationbar.\n   *\n   * See https://reactnative.dev/docs/modal#navigationBarTranslucent\n   */\n  navigationBarTranslucent?: WithDefault<boolean, false>,\n\n  /**\n   * The `hardwareAccelerated` prop controls whether to force hardware\n   * acceleration for the underlying window.\n   *\n   * See https://reactnative.dev/docs/modal#hardwareaccelerated\n   */\n  hardwareAccelerated?: WithDefault<boolean, false>,\n\n  /**\n   * The `onRequestClose` callback is called when the user taps the hardware\n   * back button on Android or the menu button on Apple TV.\n   *\n   * This is required on Apple TV and Android.\n   *\n   * See https://reactnative.dev/docs/modal#onrequestclose\n   */\n  onRequestClose?: ?DirectEventHandler<null>,\n\n  /**\n   * The `onShow` prop allows passing a function that will be called once the\n   * modal has been shown.\n   *\n   * See https://reactnative.dev/docs/modal#onshow\n   */\n  onShow?: ?DirectEventHandler<null>,\n\n  /**\n   * The `onDismiss` prop allows passing a function that will be called once\n   * the modal has been dismissed.\n   *\n   * See https://reactnative.dev/docs/modal#ondismiss\n   */\n  onDismiss?: ?DirectEventHandler<null>,\n\n  /**\n   * The `visible` prop determines whether your modal is visible.\n   *\n   * See https://reactnative.dev/docs/modal#visible\n   */\n  visible?: WithDefault<boolean, false>,\n\n  /**\n   * Deprecated. Use the `animationType` prop instead.\n   */\n  animated?: WithDefault<boolean, false>,\n\n  /**\n   * Controls whether the modal can be dismissed by swiping down on iOS.\n   * This requires you to implement the `onRequestClose` prop to handle the dismissal.\n   */\n  allowSwipeDismissal?: WithDefault<boolean, false>,\n\n  /**\n   * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations.\n   *\n   * See https://reactnative.dev/docs/modal#supportedorientations\n   */\n  supportedOrientations?: WithDefault<\n    $ReadOnlyArray<\n      | 'portrait'\n      | 'portrait-upside-down'\n      | 'landscape'\n      | 'landscape-left'\n      | 'landscape-right',\n    >,\n    'portrait',\n  >,\n\n  /**\n   * The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed.\n   *\n   * See https://reactnative.dev/docs/modal#onorientationchange\n   */\n  onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,\n\n  /**\n   * The `identifier` is the unique number for identifying Modal components.\n   */\n  identifier?: WithDefault<Int32, 0>,\n}>;\n\nexport default (codegenNativeComponent<RCTModalHostViewNativeProps>(\n  'ModalHostView',\n  {\n    interfaceOnly: true,\n    paperComponentName: 'RCTModalHostView',\n  },\n): HostComponent<RCTModalHostViewNativeProps>);\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 * @flow strict-local\n * @format\n */\n\nimport type {I18nManagerConstants} from './NativeI18nManager';\n\nimport NativeI18nManager from './NativeI18nManager';\n\nconst i18nConstants: I18nManagerConstants = getI18nManagerConstants();\n\nfunction getI18nManagerConstants(): I18nManagerConstants {\n  if (NativeI18nManager) {\n    const {isRTL, doLeftAndRightSwapInRTL, localeIdentifier} =\n      NativeI18nManager.getConstants();\n    return {isRTL, doLeftAndRightSwapInRTL, localeIdentifier};\n  }\n\n  return {\n    isRTL: false,\n    doLeftAndRightSwapInRTL: true,\n  };\n}\n\nexport default {\n  getConstants: (): I18nManagerConstants => {\n    return i18nConstants;\n  },\n\n  allowRTL: (shouldAllow: boolean) => {\n    if (!NativeI18nManager) {\n      return;\n    }\n\n    NativeI18nManager.allowRTL(shouldAllow);\n  },\n\n  forceRTL: (shouldForce: boolean) => {\n    if (!NativeI18nManager) {\n      return;\n    }\n\n    NativeI18nManager.forceRTL(shouldForce);\n  },\n\n  swapLeftAndRightInRTL: (flipStyles: boolean) => {\n    if (!NativeI18nManager) {\n      return;\n    }\n\n    NativeI18nManager.swapLeftAndRightInRTL(flipStyles);\n  },\n\n  isRTL: i18nConstants.isRTL as I18nManagerConstants['isRTL'],\n  doLeftAndRightSwapInRTL:\n    i18nConstants.doLeftAndRightSwapInRTL as I18nManagerConstants['doLeftAndRightSwapInRTL'],\n};\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeI18nManager';\nimport NativeI18nManager from '../../src/private/specs_DEPRECATED/modules/NativeI18nManager';\n\nexport default NativeI18nManager;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type I18nManagerConstants = {\n  doLeftAndRightSwapInRTL: boolean,\n  isRTL: boolean,\n  localeIdentifier?: ?string,\n};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => I18nManagerConstants;\n  allowRTL: (allowRTL: boolean) => void;\n  forceRTL: (forceRTL: boolean) => void;\n  swapLeftAndRightInRTL: (flipStyles: boolean) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('I18nManager'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {\n  GestureResponderEvent,\n  LayoutChangeEvent,\n  MouseEvent,\n} from '../../Types/CoreEventTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport usePressability from '../../Pressability/usePressability';\nimport {type RectOrSize} from '../../StyleSheet/Rect';\nimport useMergeRefs from '../../Utilities/useMergeRefs';\nimport View from '../View/View';\nimport useAndroidRippleForView, {\n  type PressableAndroidRippleConfig,\n} from './useAndroidRippleForView';\nimport * as React from 'react';\nimport {memo, useMemo, useRef, useState} from 'react';\n\nexport type {PressableAndroidRippleConfig};\n\nexport type PressableStateCallbackType = $ReadOnly<{\n  pressed: boolean,\n}>;\n\ntype PressableBaseProps = $ReadOnly<{\n  /**\n   * Whether a press gesture can be interrupted by a parent gesture such as a\n   * scroll event. Defaults to true.\n   */\n  cancelable?: ?boolean,\n\n  /**\n   * Either children or a render prop that receives a boolean reflecting whether\n   * the component is currently pressed.\n   */\n  children?: React.Node | ((state: PressableStateCallbackType) => React.Node),\n\n  /**\n   * Duration to wait after hover in before calling `onHoverIn`.\n   */\n  delayHoverIn?: ?number,\n\n  /**\n   * Duration to wait after hover out before calling `onHoverOut`.\n   */\n  delayHoverOut?: ?number,\n\n  /**\n   * Duration (in milliseconds) from `onPressIn` before `onLongPress` is called.\n   */\n  delayLongPress?: ?number,\n\n  /**\n   * Whether the press behavior is disabled.\n   */\n  disabled?: ?boolean,\n\n  /**\n   * Additional distance outside of this view in which a press is detected.\n   */\n  hitSlop?: ?RectOrSize,\n\n  /**\n   * Additional distance outside of this view in which a touch is considered a\n   * press before `onPressOut` is triggered.\n   */\n  pressRetentionOffset?: ?RectOrSize,\n\n  /**\n   * Called when this view's layout changes.\n   */\n  onLayout?: ?(event: LayoutChangeEvent) => mixed,\n\n  /**\n   * Called when the hover is activated to provide visual feedback.\n   */\n  onHoverIn?: ?(event: MouseEvent) => mixed,\n\n  /**\n   * Called when the hover is deactivated to undo visual feedback.\n   */\n  onHoverOut?: ?(event: MouseEvent) => mixed,\n\n  /**\n   * Called when a long-tap gesture is detected.\n   */\n  onLongPress?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Called when a single tap gesture is detected.\n   */\n  onPress?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Called when a touch is engaged before `onPress`.\n   */\n  onPressIn?: ?(event: GestureResponderEvent) => mixed,\n  /**\n   * Called when the press location moves.\n   */\n  onPressMove?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Called when a touch is released before `onPress`.\n   */\n  onPressOut?: ?(event: GestureResponderEvent) => mixed,\n\n  /**\n   * Either view styles or a function that receives a boolean reflecting whether\n   * the component is currently pressed and returns view styles.\n   */\n  style?:\n    | ViewStyleProp\n    | ((state: PressableStateCallbackType) => ViewStyleProp),\n\n  /**\n   * Identifier used to find this view in tests.\n   */\n  testID?: ?string,\n\n  /**\n   * If true, doesn't play system sound on touch.\n   */\n  android_disableSound?: ?boolean,\n\n  /**\n   * Enables the Android ripple effect and configures its color.\n   */\n  android_ripple?: ?PressableAndroidRippleConfig,\n\n  /**\n   * Used only for documentation or testing (e.g. snapshot testing).\n   */\n  testOnly_pressed?: ?boolean,\n\n  /**\n   * Duration to wait after press down before calling `onPressIn`.\n   */\n  unstable_pressDelay?: ?number,\n}>;\n\nexport type PressableProps = $ReadOnly<{\n  // Pressability may override `onMouseEnter` and `onMouseLeave` to\n  // implement `onHoverIn` and `onHoverOut` in a platform-agnostic way.\n  // Hover events should be used instead of mouse events.\n  ...Omit<ViewProps, 'onMouseEnter' | 'onMouseLeave'>,\n  ...PressableBaseProps,\n}>;\n\ntype Instance = React.ElementRef<typeof View>;\n\n/**\n * Component used to build display components that should respond to whether the\n * component is currently pressed or not.\n */\nfunction Pressable({\n  ref: forwardedRef,\n  ...props\n}: {\n  ref?: React.RefSetter<Instance>,\n  ...PressableProps,\n}): React.Node {\n  const {\n    accessible,\n    accessibilityState,\n    'aria-live': ariaLive,\n    android_disableSound,\n    android_ripple,\n    'aria-busy': ariaBusy,\n    'aria-checked': ariaChecked,\n    'aria-disabled': ariaDisabled,\n    'aria-expanded': ariaExpanded,\n    'aria-label': ariaLabel,\n    'aria-selected': ariaSelected,\n    cancelable,\n    children,\n    delayHoverIn,\n    delayHoverOut,\n    delayLongPress,\n    disabled,\n    focusable,\n    hitSlop,\n    onBlur,\n    onFocus,\n    onHoverIn,\n    onHoverOut,\n    onLongPress,\n    onPress,\n    onPressIn,\n    onPressMove,\n    onPressOut,\n    pressRetentionOffset,\n    style,\n    testOnly_pressed,\n    unstable_pressDelay,\n    ...restProps\n  } = props;\n\n  const viewRef = useRef<Instance | null>(null);\n  const mergedRef = useMergeRefs(forwardedRef, viewRef);\n\n  const android_rippleConfig = useAndroidRippleForView(android_ripple, viewRef);\n\n  const [pressed, setPressed] = usePressState(testOnly_pressed === true);\n\n  const shouldUpdatePressed =\n    typeof children === 'function' || typeof style === 'function';\n\n  let _accessibilityState = {\n    busy: ariaBusy ?? accessibilityState?.busy,\n    checked: ariaChecked ?? accessibilityState?.checked,\n    disabled: ariaDisabled ?? accessibilityState?.disabled,\n    expanded: ariaExpanded ?? accessibilityState?.expanded,\n    selected: ariaSelected ?? accessibilityState?.selected,\n  };\n\n  _accessibilityState =\n    disabled != null ? {..._accessibilityState, disabled} : _accessibilityState;\n\n  const accessibilityValue = {\n    max: props['aria-valuemax'] ?? props.accessibilityValue?.max,\n    min: props['aria-valuemin'] ?? props.accessibilityValue?.min,\n    now: props['aria-valuenow'] ?? props.accessibilityValue?.now,\n    text: props['aria-valuetext'] ?? props.accessibilityValue?.text,\n  };\n\n  const accessibilityLiveRegion =\n    ariaLive === 'off' ? 'none' : ariaLive ?? props.accessibilityLiveRegion;\n\n  const accessibilityLabel = ariaLabel ?? props.accessibilityLabel;\n  const restPropsWithDefaults: React.ElementConfig<typeof View> = {\n    ...restProps,\n    ...android_rippleConfig?.viewProps,\n    accessible: accessible !== false,\n    accessibilityViewIsModal:\n      restProps['aria-modal'] ?? restProps.accessibilityViewIsModal,\n    accessibilityLiveRegion,\n    accessibilityLabel,\n    accessibilityState: _accessibilityState,\n    focusable: focusable !== false,\n    accessibilityValue,\n    hitSlop,\n  };\n\n  const config = useMemo(\n    () => ({\n      cancelable,\n      disabled,\n      hitSlop,\n      pressRectOffset: pressRetentionOffset,\n      android_disableSound,\n      delayHoverIn,\n      delayHoverOut,\n      delayLongPress,\n      delayPressIn: unstable_pressDelay,\n      onBlur,\n      onFocus,\n      onHoverIn,\n      onHoverOut,\n      onLongPress,\n      onPress,\n      onPressIn(event: GestureResponderEvent): void {\n        if (android_rippleConfig != null) {\n          android_rippleConfig.onPressIn(event);\n        }\n        shouldUpdatePressed && setPressed(true);\n        if (onPressIn != null) {\n          onPressIn(event);\n        }\n      },\n      onPressMove(event: GestureResponderEvent): void {\n        android_rippleConfig?.onPressMove(event);\n        if (onPressMove != null) {\n          onPressMove(event);\n        }\n      },\n      onPressOut(event: GestureResponderEvent): void {\n        if (android_rippleConfig != null) {\n          android_rippleConfig.onPressOut(event);\n        }\n        shouldUpdatePressed && setPressed(false);\n        if (onPressOut != null) {\n          onPressOut(event);\n        }\n      },\n    }),\n    [\n      android_disableSound,\n      android_rippleConfig,\n      cancelable,\n      delayHoverIn,\n      delayHoverOut,\n      delayLongPress,\n      disabled,\n      hitSlop,\n      onBlur,\n      onFocus,\n      onHoverIn,\n      onHoverOut,\n      onLongPress,\n      onPress,\n      onPressIn,\n      onPressMove,\n      onPressOut,\n      pressRetentionOffset,\n      setPressed,\n      shouldUpdatePressed,\n      unstable_pressDelay,\n    ],\n  );\n\n  const eventHandlers = usePressability(config);\n\n  return (\n    <View\n      {...restPropsWithDefaults}\n      {...eventHandlers}\n      ref={mergedRef}\n      style={typeof style === 'function' ? style({pressed}) : style}\n      collapsable={false}>\n      {typeof children === 'function' ? children({pressed}) : children}\n      {__DEV__ ? <PressabilityDebugView color=\"red\" hitSlop={hitSlop} /> : null}\n    </View>\n  );\n}\n\nfunction usePressState(forcePressed: boolean): [boolean, (boolean) => void] {\n  const [pressed, setPressed] = useState(false);\n  return [pressed || forcePressed, setPressed];\n}\n\nconst MemoedPressable = memo(Pressable);\nMemoedPressable.displayName = 'Pressable';\n\nexport default (MemoedPressable: component(\n  ref?: React.RefSetter<React.ElementRef<typeof View>>,\n  ...props: PressableProps\n));\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 * @flow strict-local\n * @format\n */\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {GestureResponderEvent} from '../../Types/CoreEventTypes';\n\nimport processColor from '../../StyleSheet/processColor';\nimport Platform from '../../Utilities/Platform';\nimport View from '../View/View';\nimport {Commands} from '../View/ViewNativeComponent';\nimport invariant from 'invariant';\nimport * as React from 'react';\nimport {useMemo} from 'react';\n\ntype NativeBackgroundProp = $ReadOnly<{\n  type: 'RippleAndroid',\n  color: ?number,\n  borderless: boolean,\n  rippleRadius: ?number,\n}>;\n\nexport type PressableAndroidRippleConfig = {\n  color?: ColorValue,\n  borderless?: boolean,\n  radius?: number,\n  foreground?: boolean,\n};\n\n/**\n * Provides the event handlers and props for configuring the ripple effect on\n * supported versions of Android.\n */\nexport default function useAndroidRippleForView(\n  rippleConfig: ?PressableAndroidRippleConfig,\n  viewRef: {current: null | React.ElementRef<typeof View>},\n): ?$ReadOnly<{\n  onPressIn: (event: GestureResponderEvent) => void,\n  onPressMove: (event: GestureResponderEvent) => void,\n  onPressOut: (event: GestureResponderEvent) => void,\n  viewProps:\n    | $ReadOnly<{nativeBackgroundAndroid: NativeBackgroundProp}>\n    | $ReadOnly<{nativeForegroundAndroid: NativeBackgroundProp}>,\n}> {\n  const {color, borderless, radius, foreground} = rippleConfig ?? {};\n\n  return useMemo(() => {\n    if (\n      Platform.OS === 'android' &&\n      (color != null || borderless != null || radius != null)\n    ) {\n      const processedColor = processColor(color);\n      invariant(\n        processedColor == null || typeof processedColor === 'number',\n        'Unexpected color given for Ripple color',\n      );\n\n      const nativeRippleValue = {\n        type: 'RippleAndroid',\n        color: processedColor,\n        borderless: borderless === true,\n        rippleRadius: radius,\n      };\n\n      return {\n        viewProps:\n          foreground === true\n            ? // $FlowFixMe[incompatible-return]\n              {nativeForegroundAndroid: nativeRippleValue}\n            : // $FlowFixMe[incompatible-return]\n              {nativeBackgroundAndroid: nativeRippleValue},\n        onPressIn(event: GestureResponderEvent): void {\n          const view = viewRef.current;\n          if (view != null) {\n            Commands.hotspotUpdate(\n              view,\n              event.nativeEvent.locationX ?? 0,\n              event.nativeEvent.locationY ?? 0,\n            );\n            Commands.setPressed(view, true);\n          }\n        },\n        onPressMove(event: GestureResponderEvent): void {\n          const view = viewRef.current;\n          if (view != null) {\n            Commands.hotspotUpdate(\n              view,\n              event.nativeEvent.locationX ?? 0,\n              event.nativeEvent.locationY ?? 0,\n            );\n          }\n        },\n        onPressOut(event: GestureResponderEvent): void {\n          const view = viewRef.current;\n          if (view != null) {\n            Commands.setPressed(view, false);\n          }\n        },\n      };\n    }\n    return null;\n  }, [borderless, color, foreground, radius, viewRef]);\n}\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 * @flow\n * @format\n */\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\n\nimport processColor from '../../StyleSheet/processColor';\nimport Platform from '../../Utilities/Platform';\nimport NativeStatusBarManagerAndroid from './NativeStatusBarManagerAndroid';\nimport NativeStatusBarManagerIOS from './NativeStatusBarManagerIOS';\nimport invariant from 'invariant';\nimport * as React from 'react';\n\n/**\n * Status bar style\n */\nexport type StatusBarStyle = $Keys<{\n  /**\n   * Default status bar style (dark for iOS, light for Android)\n   */\n  default: string,\n  /**\n   * Dark background, white texts and icons\n   */\n  'light-content': string,\n  /**\n   * Light background, dark texts and icons\n   */\n  'dark-content': string,\n  ...\n}>;\n\n/**\n * Status bar animation\n */\nexport type StatusBarAnimation = $Keys<{\n  /**\n   * No animation\n   */\n  none: string,\n  /**\n   * Fade animation\n   */\n  fade: string,\n  /**\n   * Slide animation\n   */\n  slide: string,\n  ...\n}>;\n\nexport type StatusBarPropsAndroid = $ReadOnly<{\n  /**\n   * The background color of the status bar.\n   *\n   * Please note that this prop has no effect on Android 15+\n   *\n   * @platform android\n   */\n  backgroundColor?: ?ColorValue,\n  /**\n   * If the status bar is translucent.\n   * When translucent is set to true, the app will draw under the status bar.\n   * This is useful when using a semi transparent status bar color.\n   *\n   * Please note that this prop has no effect on Android 15+\n   *\n   * @platform android\n   */\n  translucent?: ?boolean,\n}>;\n\nexport type StatusBarPropsIOS = $ReadOnly<{\n  /**\n   * If the network activity indicator should be visible.\n   *\n   * @platform ios\n   */\n  networkActivityIndicatorVisible?: ?boolean,\n  /**\n   * The transition effect when showing and hiding the status bar using the `hidden`\n   * prop. Defaults to 'fade'.\n   *\n   * @platform ios\n   */\n  showHideTransition?: ?('fade' | 'slide' | 'none'),\n}>;\n\ntype StatusBarBaseProps = $ReadOnly<{\n  /**\n   * If the status bar is hidden.\n   */\n  hidden?: ?boolean,\n  /**\n   * If the transition between status bar property changes should be animated.\n   * Supported for backgroundColor, barStyle and hidden.\n   */\n  animated?: ?boolean,\n  /**\n   * Sets the color of the status bar text.\n   */\n  barStyle?: ?('default' | 'light-content' | 'dark-content'),\n}>;\n\nexport type StatusBarProps = $ReadOnly<{\n  ...StatusBarPropsAndroid,\n  ...StatusBarPropsIOS,\n  ...StatusBarBaseProps,\n}>;\n\ntype StackProps = {\n  backgroundColor: ?{\n    value: StatusBarProps['backgroundColor'],\n    animated: boolean,\n  },\n  barStyle: ?{\n    value: StatusBarProps['barStyle'],\n    animated: boolean,\n  },\n  translucent: StatusBarProps['translucent'],\n  hidden: ?{\n    value: boolean,\n    animated: boolean,\n    transition: StatusBarProps['showHideTransition'],\n  },\n  networkActivityIndicatorVisible: StatusBarProps['networkActivityIndicatorVisible'],\n};\n\n/**\n * Merges the prop stack with the default values.\n */\nfunction mergePropsStack(\n  propsStack: Array<Object>,\n  defaultValues: Object,\n): Object {\n  return propsStack.reduce(\n    (prev, cur) => {\n      for (const prop in cur) {\n        if (cur[prop] != null) {\n          prev[prop] = cur[prop];\n        }\n      }\n      return prev;\n    },\n    {...defaultValues},\n  );\n}\n\n/**\n * Returns an object to insert in the props stack from the props\n * and the transition/animation info.\n */\nfunction createStackEntry(props: StatusBarProps): StackProps {\n  const animated = props.animated ?? false;\n  const showHideTransition = props.showHideTransition ?? 'fade';\n  return {\n    backgroundColor:\n      props.backgroundColor != null\n        ? {\n            value: props.backgroundColor,\n            animated,\n          }\n        : null,\n    barStyle:\n      props.barStyle != null\n        ? {\n            value: props.barStyle,\n            animated,\n          }\n        : null,\n    translucent: props.translucent,\n    hidden:\n      props.hidden != null\n        ? {\n            value: props.hidden,\n            animated,\n            transition: showHideTransition,\n          }\n        : null,\n    networkActivityIndicatorVisible: props.networkActivityIndicatorVisible,\n  };\n}\n\n/**\n * Component to control the app status bar.\n *\n * It is possible to have multiple `StatusBar` components mounted at the same\n * time. The props will be merged in the order the `StatusBar` components were\n * mounted.\n *\n * ### Imperative API\n *\n * For cases where using a component is not ideal, there are static methods\n * to manipulate the `StatusBar` display stack. These methods have the same\n * behavior as mounting and unmounting a `StatusBar` component.\n *\n * For example, you can call `StatusBar.pushStackEntry` to update the status bar\n * before launching a third-party native UI component, and then call\n * `StatusBar.popStackEntry` when completed.\n *\n * ```\n * const openThirdPartyBugReporter = async () => {\n *   // The bug reporter has a dark background, so we push a new status bar style.\n *   const stackEntry = StatusBar.pushStackEntry({barStyle: 'light-content'});\n *\n *   // `open` returns a promise that resolves when the UI is dismissed.\n *   await BugReporter.open();\n *\n *   // Don't forget to call `popStackEntry` when you're done.\n *   StatusBar.popStackEntry(stackEntry);\n * };\n * ```\n *\n * There is a legacy imperative API that enables you to manually update the\n * status bar styles. However, the legacy API does not update the internal\n * `StatusBar` display stack, which means that any changes will be overridden\n * whenever a `StatusBar` component is mounted or unmounted.\n *\n * It is strongly advised that you use `pushStackEntry`, `popStackEntry`, or\n * `replaceStackEntry` instead of the static methods beginning with `set`.\n *\n * ### Constants\n *\n * `currentHeight` (Android only) The height of the status bar.\n */\nclass StatusBar extends React.Component<StatusBarProps> {\n  static _propsStack: Array<StackProps> = [];\n\n  static _defaultProps: any = createStackEntry({\n    backgroundColor:\n      Platform.OS === 'android'\n        ? NativeStatusBarManagerAndroid.getConstants()\n            .DEFAULT_BACKGROUND_COLOR ?? 'black'\n        : 'black',\n    barStyle: 'default',\n    translucent: false,\n    hidden: false,\n    networkActivityIndicatorVisible: false,\n  });\n\n  // Timer for updating the native module values at the end of the frame.\n  static _updateImmediate: ?number = null;\n\n  // The current merged values from the props stack.\n  static _currentValues: ?StackProps = null;\n\n  // TODO(janic): Provide a real API to deal with status bar height. See the\n  // discussion in #6195.\n  /**\n   * The current height of the status bar on the device.\n   *\n   * @platform android\n   */\n  static currentHeight: ?number =\n    Platform.OS === 'android'\n      ? NativeStatusBarManagerAndroid.getConstants().HEIGHT\n      : null;\n\n  // Provide an imperative API as static functions of the component.\n  // See the corresponding prop for more detail.\n\n  /**\n   * Show or hide the status bar\n   * @param hidden Hide the status bar.\n   * @param animation Optional animation when\n   *    changing the status bar hidden property.\n   */\n  static setHidden(hidden: boolean, animation?: StatusBarAnimation) {\n    animation = animation || 'none';\n    StatusBar._defaultProps.hidden.value = hidden;\n    if (Platform.OS === 'ios') {\n      NativeStatusBarManagerIOS.setHidden(hidden, animation);\n    } else if (Platform.OS === 'android') {\n      NativeStatusBarManagerAndroid.setHidden(hidden);\n    }\n  }\n\n  /**\n   * Set the status bar style\n   * @param style Status bar style to set\n   * @param animated Animate the style change.\n   */\n  static setBarStyle(style: StatusBarStyle, animated?: boolean) {\n    animated = animated || false;\n    StatusBar._defaultProps.barStyle.value = style;\n    if (Platform.OS === 'ios') {\n      NativeStatusBarManagerIOS.setStyle(style, animated);\n    } else if (Platform.OS === 'android') {\n      NativeStatusBarManagerAndroid.setStyle(style);\n    }\n  }\n\n  /**\n   * DEPRECATED - The status bar network activity indicator is not supported in iOS 13 and later. This will be removed in a future release.\n   * @param visible Show the indicator.\n   *\n   * @deprecated\n   */\n  static setNetworkActivityIndicatorVisible(visible: boolean) {\n    if (Platform.OS !== 'ios') {\n      console.warn(\n        '`setNetworkActivityIndicatorVisible` is only available on iOS',\n      );\n      return;\n    }\n    StatusBar._defaultProps.networkActivityIndicatorVisible = visible;\n    NativeStatusBarManagerIOS.setNetworkActivityIndicatorVisible(visible);\n  }\n\n  /**\n   * Set the background color for the status bar\n   * @param color Background color.\n   * @param animated Animate the style change.\n   */\n  static setBackgroundColor(color: ColorValue, animated?: boolean): void {\n    if (Platform.OS !== 'android') {\n      console.warn('`setBackgroundColor` is only available on Android');\n      return;\n    }\n    animated = animated || false;\n    StatusBar._defaultProps.backgroundColor.value = color;\n\n    const processedColor = processColor(color);\n    if (processedColor == null) {\n      console.warn(\n        `\\`StatusBar.setBackgroundColor\\`: Color ${String(color)} parsed to null or undefined`,\n      );\n      return;\n    }\n    invariant(\n      typeof processedColor === 'number',\n      'Unexpected color given for StatusBar.setBackgroundColor',\n    );\n\n    NativeStatusBarManagerAndroid.setColor(processedColor, animated);\n  }\n\n  /**\n   * Control the translucency of the status bar\n   * @param translucent Set as translucent.\n   */\n  static setTranslucent(translucent: boolean) {\n    if (Platform.OS !== 'android') {\n      console.warn('`setTranslucent` is only available on Android');\n      return;\n    }\n    StatusBar._defaultProps.translucent = translucent;\n    NativeStatusBarManagerAndroid.setTranslucent(translucent);\n  }\n\n  /**\n   * Push a StatusBar entry onto the stack.\n   * The return value should be passed to `popStackEntry` when complete.\n   *\n   * @param props Object containing the StatusBar props to use in the stack entry.\n   */\n  static pushStackEntry(props: StatusBarProps): StackProps {\n    const entry = createStackEntry(props);\n    StatusBar._propsStack.push(entry);\n    StatusBar._updatePropsStack();\n    return entry;\n  }\n\n  /**\n   * Pop a StatusBar entry from the stack.\n   *\n   * @param entry Entry returned from `pushStackEntry`.\n   */\n  static popStackEntry(entry: StackProps) {\n    const index = StatusBar._propsStack.indexOf(entry);\n    if (index !== -1) {\n      StatusBar._propsStack.splice(index, 1);\n    }\n    StatusBar._updatePropsStack();\n  }\n\n  /**\n   * Replace an existing StatusBar stack entry with new props.\n   *\n   * @param entry Entry returned from `pushStackEntry` to replace.\n   * @param props Object containing the StatusBar props to use in the replacement stack entry.\n   */\n  static replaceStackEntry(\n    entry: StackProps,\n    props: StatusBarProps,\n  ): StackProps {\n    const newEntry = createStackEntry(props);\n    const index = StatusBar._propsStack.indexOf(entry);\n    if (index !== -1) {\n      StatusBar._propsStack[index] = newEntry;\n    }\n    StatusBar._updatePropsStack();\n    return newEntry;\n  }\n\n  _stackEntry: ?StackProps = null;\n\n  componentDidMount() {\n    // Every time a StatusBar component is mounted, we push it's prop to a stack\n    // and always update the native status bar with the props from the top of then\n    // stack. This allows having multiple StatusBar components and the one that is\n    // added last or is deeper in the view hierarchy will have priority.\n    this._stackEntry = StatusBar.pushStackEntry(this.props);\n  }\n\n  componentWillUnmount() {\n    // When a StatusBar is unmounted, remove itself from the stack and update\n    // the native bar with the next props.\n    if (this._stackEntry != null) {\n      StatusBar.popStackEntry(this._stackEntry);\n    }\n  }\n\n  componentDidUpdate() {\n    if (this._stackEntry != null) {\n      this._stackEntry = StatusBar.replaceStackEntry(\n        this._stackEntry,\n        this.props,\n      );\n    }\n  }\n\n  /**\n   * Updates the native status bar with the props from the stack.\n   */\n  static _updatePropsStack = () => {\n    // Send the update to the native module only once at the end of the frame.\n    clearImmediate(StatusBar._updateImmediate);\n    StatusBar._updateImmediate = setImmediate(() => {\n      const oldProps = StatusBar._currentValues;\n      const mergedProps = mergePropsStack(\n        StatusBar._propsStack,\n        StatusBar._defaultProps,\n      );\n\n      // Update the props that have changed using the merged values from the props stack.\n      if (Platform.OS === 'ios') {\n        if (\n          !oldProps ||\n          oldProps.barStyle?.value !== mergedProps.barStyle.value\n        ) {\n          NativeStatusBarManagerIOS.setStyle(\n            mergedProps.barStyle.value,\n            mergedProps.barStyle.animated || false,\n          );\n        }\n        if (!oldProps || oldProps.hidden?.value !== mergedProps.hidden.value) {\n          NativeStatusBarManagerIOS.setHidden(\n            mergedProps.hidden.value,\n            mergedProps.hidden.animated\n              ? mergedProps.hidden.transition\n              : 'none',\n          );\n        }\n\n        if (\n          !oldProps ||\n          oldProps.networkActivityIndicatorVisible !==\n            mergedProps.networkActivityIndicatorVisible\n        ) {\n          NativeStatusBarManagerIOS.setNetworkActivityIndicatorVisible(\n            mergedProps.networkActivityIndicatorVisible,\n          );\n        }\n      } else if (Platform.OS === 'android') {\n        //todo(T60684787): Add back optimization to only update bar style and\n        //background color if the new value is different from the old value.\n        NativeStatusBarManagerAndroid.setStyle(mergedProps.barStyle.value);\n        const processedColor = processColor(mergedProps.backgroundColor.value);\n        if (processedColor == null) {\n          console.warn(\n            `\\`StatusBar._updatePropsStack\\`: Color ${mergedProps.backgroundColor.value} parsed to null or undefined`,\n          );\n        } else {\n          invariant(\n            typeof processedColor === 'number',\n            'Unexpected color given in StatusBar._updatePropsStack',\n          );\n          NativeStatusBarManagerAndroid.setColor(\n            processedColor,\n            mergedProps.backgroundColor.animated,\n          );\n        }\n        if (!oldProps || oldProps.hidden?.value !== mergedProps.hidden.value) {\n          NativeStatusBarManagerAndroid.setHidden(mergedProps.hidden.value);\n        }\n        // Activities are not translucent by default, so always set if true.\n        if (\n          !oldProps ||\n          oldProps.translucent !== mergedProps.translucent ||\n          mergedProps.translucent\n        ) {\n          NativeStatusBarManagerAndroid.setTranslucent(mergedProps.translucent);\n        }\n      }\n      // Update the current prop values.\n      StatusBar._currentValues = mergedProps;\n    });\n  };\n\n  render(): React.Node {\n    return null;\n  }\n}\n\nexport default StatusBar;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeStatusBarManagerAndroid';\nexport {default} from '../../../src/private/specs_DEPRECATED/modules/NativeStatusBarManagerAndroid';\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {\n    +HEIGHT: number,\n    +DEFAULT_BACKGROUND_COLOR: number,\n  };\n  +setColor: (color: number, animated: boolean) => void;\n  +setTranslucent: (translucent: boolean) => void;\n\n  /**\n   *  - statusBarStyles can be:\n   *    - 'default'\n   *    - 'dark-content'\n   */\n  +setStyle: (statusBarStyle?: ?string) => void;\n  +setHidden: (hidden: boolean) => void;\n}\n\nconst NativeModule = TurboModuleRegistry.getEnforcing<Spec>('StatusBarManager');\nlet constants = null;\n\nconst NativeStatusBarManager = {\n  getConstants(): {\n    +HEIGHT: number,\n    +DEFAULT_BACKGROUND_COLOR?: number,\n  } {\n    if (constants == null) {\n      constants = NativeModule.getConstants();\n    }\n    return constants;\n  },\n\n  setColor(color: number, animated: boolean): void {\n    NativeModule.setColor(color, animated);\n  },\n\n  setTranslucent(translucent: boolean): void {\n    NativeModule.setTranslucent(translucent);\n  },\n\n  /**\n   *  - statusBarStyles can be:\n   *    - 'default'\n   *    - 'dark-content'\n   */\n  setStyle(statusBarStyle?: ?string): void {\n    NativeModule.setStyle(statusBarStyle);\n  },\n\n  setHidden(hidden: boolean): void {\n    NativeModule.setHidden(hidden);\n  },\n};\n\nexport default NativeStatusBarManager;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeStatusBarManagerIOS';\nexport {default} from '../../../src/private/specs_DEPRECATED/modules/NativeStatusBarManagerIOS';\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {\n    +HEIGHT: number,\n    +DEFAULT_BACKGROUND_COLOR?: number,\n  };\n\n  // TODO(T47754272) Can we remove this method?\n  +getHeight: (callback: (result: {height: number}) => void) => void;\n  +setNetworkActivityIndicatorVisible: (visible: boolean) => void;\n  +addListener: (eventType: string) => void;\n  +removeListeners: (count: number) => void;\n\n  /**\n   *  - statusBarStyles can be:\n   *    - 'default'\n   *    - 'dark-content'\n   *    - 'light-content'\n   */\n  +setStyle: (statusBarStyle?: ?string, animated: boolean) => void;\n  /**\n   *  - withAnimation can be: 'none' | 'fade' | 'slide'\n   */\n  +setHidden: (hidden: boolean, withAnimation: string) => void;\n}\n\nconst NativeModule = TurboModuleRegistry.getEnforcing<Spec>('StatusBarManager');\nlet constants = null;\n\nconst NativeStatusBarManager = {\n  getConstants(): {\n    +HEIGHT: number,\n    +DEFAULT_BACKGROUND_COLOR?: number,\n  } {\n    if (constants == null) {\n      constants = NativeModule.getConstants();\n    }\n    return constants;\n  },\n\n  // TODO(T47754272) Can we remove this method?\n  getHeight(callback: (result: {height: number}) => void): void {\n    NativeModule.getHeight(callback);\n  },\n\n  setNetworkActivityIndicatorVisible(visible: boolean): void {\n    NativeModule.setNetworkActivityIndicatorVisible(visible);\n  },\n\n  addListener(eventType: string): void {\n    NativeModule.addListener(eventType);\n  },\n\n  removeListeners(count: number): void {\n    NativeModule.removeListeners(count);\n  },\n\n  /**\n   *  - statusBarStyles can be:\n   *    - 'default'\n   *    - 'dark-content'\n   *    - 'light-content'\n   */\n  setStyle(statusBarStyle?: ?string, animated: boolean): void {\n    NativeModule.setStyle(statusBarStyle, animated);\n  },\n\n  /**\n   *  - withAnimation can be: 'none' | 'fade' | 'slide'\n   */\n  setHidden(hidden: boolean, withAnimation: string): void {\n    NativeModule.setHidden(hidden, withAnimation);\n  },\n};\n\nexport default NativeStatusBarManager;\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 * @flow strict-local\n * @format\n */\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {NativeSyntheticEvent} from '../../Types/CoreEventTypes';\nimport type {AccessibilityState} from '../View/ViewAccessibility';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport Platform from '../../Utilities/Platform';\nimport useMergeRefs from '../../Utilities/useMergeRefs';\nimport AndroidSwitchNativeComponent, {\n  Commands as AndroidSwitchCommands,\n} from './AndroidSwitchNativeComponent';\nimport SwitchNativeComponent, {\n  Commands as SwitchCommands,\n} from './SwitchNativeComponent';\nimport * as React from 'react';\nimport {useLayoutEffect, useRef, useState} from 'react';\n\nexport type SwitchPropsIOS = {\n  /**\n   * Background color when the switch is turned on.\n   *\n   * @deprecated use trackColor instead\n   */\n  onTintColor?: ?ColorValue,\n\n  /**\n   * Color of the foreground switch grip.\n   *\n   * @deprecated use thumbColor instead\n   */\n  thumbTintColor?: ?ColorValue,\n\n  /**\n   * Background color when the switch is turned off.\n   *\n   * @deprecated use trackColor instead\n   */\n  tintColor?: ?ColorValue,\n};\n\ntype SwitchChangeEventData = $ReadOnly<{\n  target: number,\n  value: boolean,\n}>;\n\nexport type SwitchChangeEvent = NativeSyntheticEvent<SwitchChangeEventData>;\n\ntype SwitchPropsBase = {\n  /**\n    If true the user won't be able to toggle the switch.\n\n    @default false\n   */\n  disabled?: ?boolean,\n\n  /**\n      The value of the switch. If true the switch will be turned on.\n\n      @default false\n     */\n  value?: ?boolean,\n\n  /**\n      Color of the foreground switch grip. If this is set on iOS, the switch grip will lose its drop shadow.\n     */\n  thumbColor?: ?ColorValue,\n\n  /**\n      Custom colors for the switch track.\n\n      _iOS_: When the switch value is false, the track shrinks into the border. If you want to change the\n      color of the background exposed by the shrunken track, use\n       [`ios_backgroundColor`](https://reactnative.dev/docs/switch#ios_backgroundColor).\n     */\n  trackColor?: ?$ReadOnly<{\n    false?: ?ColorValue,\n    true?: ?ColorValue,\n  }>,\n\n  /**\n      On iOS, custom color for the background. This background color can be\n      seen either when the switch value is false or when the switch is\n      disabled (and the switch is translucent).\n     */\n  ios_backgroundColor?: ?ColorValue,\n\n  /**\n      Invoked when the user tries to change the value of the switch. Receives\n      the change event as an argument. If you want to only receive the new\n      value, use `onValueChange` instead.\n     */\n  onChange?: ?(event: SwitchChangeEvent) => Promise<void> | void,\n\n  /**\n      Invoked when the user tries to change the value of the switch. Receives\n      the new value as an argument. If you want to instead receive an event,\n      use `onChange`.\n     */\n  onValueChange?: ?(value: boolean) => Promise<void> | void,\n};\n\nexport type SwitchProps = $ReadOnly<{\n  ...ViewProps,\n  ...SwitchPropsIOS,\n  ...SwitchPropsBase,\n}>;\n\nconst returnsFalse = () => false;\nconst returnsTrue = () => true;\n\ntype SwitchRef = React.ElementRef<\n  typeof SwitchNativeComponent | typeof AndroidSwitchNativeComponent,\n>;\n\n/**\n  Renders a boolean input.\n\n  This is a controlled component that requires an `onValueChange`\n  callback that updates the `value` prop in order for the component to\n  reflect user actions. If the `value` prop is not updated, the\n  component will continue to render the supplied `value` prop instead of\n  the expected result of any user actions.\n\n  ```SnackPlayer name=Switch\n  import React, { useState } from \"react\";\n  import { View, Switch, StyleSheet } from \"react-native\";\n\n  const App = () => {\n    const [isEnabled, setIsEnabled] = useState(false);\n    const toggleSwitch = () => setIsEnabled(previousState => !previousState);\n\n    return (\n      <View style={styles.container}>\n        <Switch\n          trackColor={{ false: \"#767577\", true: \"#81b0ff\" }}\n          thumbColor={isEnabled ? \"#f5dd4b\" : \"#f4f3f4\"}\n          ios_backgroundColor=\"#3e3e3e\"\n          onValueChange={toggleSwitch}\n          value={isEnabled}\n        />\n      </View>\n    );\n  }\n\n  const styles = StyleSheet.create({\n    container: {\n      flex: 1,\n      alignItems: \"center\",\n      justifyContent: \"center\"\n    }\n  });\n\n  export default App;\n  ```\n */\nconst Switch: component(\n  ref?: React.RefSetter<SwitchRef>,\n  ...props: SwitchProps\n) = function Switch({\n  ref: forwardedRef,\n  ...props\n}: {\n  ref?: React.RefSetter<SwitchRef>,\n  ...SwitchProps,\n}): React.Node {\n  const {\n    disabled,\n    ios_backgroundColor,\n    onChange,\n    onValueChange,\n    style,\n    thumbColor,\n    trackColor,\n    value,\n    ...restProps\n  } = props;\n  const trackColorForFalse = trackColor?.false;\n  const trackColorForTrue = trackColor?.true;\n\n  const nativeSwitchRef = useRef<React.ElementRef<\n    typeof SwitchNativeComponent | typeof AndroidSwitchNativeComponent,\n  > | null>(null);\n\n  const ref = useMergeRefs(nativeSwitchRef, forwardedRef);\n\n  // We wrap the native state in an object to force the layout-effect\n  // below to re-run whenever we get an update from native, even if it's\n  // not different from the previous native state.\n  const [native, setNative] = useState({value: (null: ?boolean)});\n\n  const handleChange = (event: SwitchChangeEvent) => {\n    // $FlowFixMe[unused-promise]\n    onChange?.(event);\n    // $FlowFixMe[unused-promise]\n    onValueChange?.(event.nativeEvent.value);\n    setNative({value: event.nativeEvent.value});\n  };\n\n  useLayoutEffect(() => {\n    // This is necessary in case native updates the switch and JS decides\n    // that the update should be ignored and we should stick with the value\n    // that we have in JS.\n    const jsValue = value === true;\n    const shouldUpdateNativeSwitch =\n      native.value != null && native.value !== jsValue;\n    if (\n      shouldUpdateNativeSwitch &&\n      // $FlowIssue[method-unbinding]\n      nativeSwitchRef.current?.setNativeProps != null\n    ) {\n      if (Platform.OS === 'android') {\n        AndroidSwitchCommands.setNativeValue(nativeSwitchRef.current, jsValue);\n      } else {\n        SwitchCommands.setValue(nativeSwitchRef.current, jsValue);\n      }\n    }\n  }, [value, native]);\n\n  if (Platform.OS === 'android') {\n    const {onTintColor, tintColor, ...androidProps} = restProps;\n    const {accessibilityState} = androidProps;\n    const _disabled =\n      disabled != null ? disabled : accessibilityState?.disabled;\n\n    const _accessibilityState: ?AccessibilityState =\n      _disabled !== accessibilityState?.disabled\n        ? {...accessibilityState, disabled: _disabled}\n        : accessibilityState;\n\n    const platformProps = {\n      accessibilityState: _accessibilityState,\n      enabled: _disabled !== true,\n      on: value === true,\n      style,\n      thumbTintColor: thumbColor,\n      trackColorForFalse: trackColorForFalse,\n      trackColorForTrue: trackColorForTrue,\n      trackTintColor: value === true ? trackColorForTrue : trackColorForFalse,\n    };\n\n    return (\n      <AndroidSwitchNativeComponent\n        {...androidProps}\n        {...platformProps}\n        accessibilityRole={props.accessibilityRole ?? 'switch'}\n        onChange={handleChange}\n        onResponderTerminationRequest={returnsFalse}\n        onStartShouldSetResponder={returnsTrue}\n        ref={ref}\n      />\n    );\n  } else {\n    const platformProps = {\n      disabled,\n      onTintColor: trackColorForTrue,\n      style: StyleSheet.compose(\n        {alignSelf: 'flex-start' as const},\n        StyleSheet.compose(\n          style,\n          ios_backgroundColor == null\n            ? null\n            : {\n                backgroundColor: ios_backgroundColor,\n                borderRadius: 16,\n              },\n        ),\n      ),\n      thumbTintColor: thumbColor,\n      tintColor: trackColorForFalse,\n      value: value === true,\n    };\n\n    return (\n      <SwitchNativeComponent\n        {...restProps}\n        {...platformProps}\n        accessibilityRole={props.accessibilityRole ?? 'switch'}\n        onChange={handleChange}\n        onResponderTerminationRequest={returnsFalse}\n        onStartShouldSetResponder={returnsTrue}\n        ref={ref}\n      />\n    );\n  }\n};\n\nexport default Switch;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent';\nexport {default} from '../../../src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent';\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet';\nimport type {\n  BubblingEventHandler,\n  Int32,\n  WithDefault,\n} from '../../../../Libraries/Types/CodegenTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\nimport * as React from 'react';\n\ntype AndroidSwitchChangeEvent = $ReadOnly<{\n  value: boolean,\n  target: Int32,\n}>;\n\ntype AndroidSwitchNativeProps = $ReadOnly<{\n  ...ViewProps,\n\n  // Props\n  disabled?: WithDefault<boolean, false>,\n  enabled?: WithDefault<boolean, true>,\n  thumbColor?: ?ColorValue,\n  trackColorForFalse?: ?ColorValue,\n  trackColorForTrue?: ?ColorValue,\n  value?: WithDefault<boolean, false>,\n  on?: WithDefault<boolean, false>,\n  thumbTintColor?: ?ColorValue,\n  trackTintColor?: ?ColorValue,\n\n  // Events\n  onChange?: BubblingEventHandler<AndroidSwitchChangeEvent>,\n}>;\n\ntype NativeType = HostComponent<AndroidSwitchNativeProps>;\n\ninterface NativeCommands {\n  +setNativeValue: (\n    viewRef: React.ElementRef<NativeType>,\n    value: boolean,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setNativeValue'],\n});\n\nexport default (codegenNativeComponent<AndroidSwitchNativeProps>(\n  'AndroidSwitch',\n  {\n    interfaceOnly: true,\n  },\n): NativeType);\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/components/SwitchNativeComponent';\nexport {default} from '../../../src/private/specs_DEPRECATED/components/SwitchNativeComponent';\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet';\nimport type {\n  BubblingEventHandler,\n  Int32,\n  WithDefault,\n} from '../../../../Libraries/Types/CodegenTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\nimport * as React from 'react';\n\ntype NativeSwitchChangeEvent = $ReadOnly<{\n  value: boolean,\n  target: Int32,\n}>;\n\ntype SwitchNativeProps = $ReadOnly<{\n  ...ViewProps,\n\n  // Props\n  disabled?: WithDefault<boolean, false>,\n  value?: WithDefault<boolean, false>,\n  tintColor?: ?ColorValue,\n  onTintColor?: ?ColorValue,\n  thumbTintColor?: ?ColorValue,\n\n  // Deprecated props\n  thumbColor?: ?ColorValue,\n  trackColorForFalse?: ?ColorValue,\n  trackColorForTrue?: ?ColorValue,\n\n  // Events\n  onChange?: ?BubblingEventHandler<NativeSwitchChangeEvent>,\n}>;\n\ntype ComponentType = HostComponent<SwitchNativeProps>;\n\ninterface NativeCommands {\n  +setValue: (viewRef: React.ElementRef<ComponentType>, value: boolean) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setValue'],\n});\n\nexport default (codegenNativeComponent<SwitchNativeProps>('Switch', {\n  paperComponentName: 'RCTSwitch',\n  excludedPlatforms: ['android'],\n  interfaceOnly: true,\n}): ComponentType);\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 * @flow strict-local\n * @format\n */\n\nimport type {HostInstance} from '../../../src/private/types/HostInstance';\nimport type {____TextStyle_Internal as TextStyleInternal} from '../../StyleSheet/StyleSheetTypes';\nimport type {\n  BlurEvent,\n  FocusEvent,\n  GestureResponderEvent,\n  ScrollEvent,\n} from '../../Types/CoreEventTypes';\nimport type {\n  AutoCapitalize,\n  EnterKeyHintType,\n  EnterKeyHintTypeAndroid,\n  EnterKeyHintTypeIOS,\n  EnterKeyHintTypeOptions,\n  InputModeOptions,\n  KeyboardType,\n  KeyboardTypeAndroid,\n  KeyboardTypeIOS,\n  KeyboardTypeOptions,\n  ReturnKeyType,\n  ReturnKeyTypeAndroid,\n  ReturnKeyTypeIOS,\n  ReturnKeyTypeOptions,\n  Selection,\n  SubmitBehavior,\n  TextContentType,\n  TextInputAndroidProps,\n  TextInputBlurEvent,\n  TextInputChangeEvent,\n  TextInputContentSizeChangeEvent,\n  TextInputEditingEvent,\n  TextInputEndEditingEvent,\n  TextInputEvent,\n  TextInputFocusEvent,\n  TextInputInstance,\n  TextInputIOSProps,\n  TextInputKeyPressEvent,\n  TextInputProps,\n  TextInputSelectionChangeEvent,\n  TextInputSubmitEditingEvent,\n  TextInputType,\n} from './TextInput.flow';\n\nimport usePressability from '../../Pressability/usePressability';\nimport flattenStyle from '../../StyleSheet/flattenStyle';\nimport StyleSheet, {type TextStyleProp} from '../../StyleSheet/StyleSheet';\nimport Text from '../../Text/Text';\nimport TextAncestorContext from '../../Text/TextAncestorContext';\nimport Platform from '../../Utilities/Platform';\nimport useMergeRefs from '../../Utilities/useMergeRefs';\nimport TextInputState from './TextInputState';\nimport invariant from 'invariant';\nimport nullthrows from 'nullthrows';\nimport * as React from 'react';\nimport {useCallback, useLayoutEffect, useMemo, useRef, useState} from 'react';\n\nlet AndroidTextInput;\nlet AndroidTextInputCommands;\nlet RCTSinglelineTextInputView;\nlet RCTSinglelineTextInputNativeCommands;\nlet RCTMultilineTextInputView;\nlet RCTMultilineTextInputNativeCommands;\n\nif (Platform.OS === 'android') {\n  AndroidTextInput = require('./AndroidTextInputNativeComponent').default;\n  AndroidTextInputCommands =\n    require('./AndroidTextInputNativeComponent').Commands;\n} else if (Platform.OS === 'ios') {\n  RCTSinglelineTextInputView =\n    require('./RCTSingelineTextInputNativeComponent').default;\n  RCTSinglelineTextInputNativeCommands =\n    require('./RCTSingelineTextInputNativeComponent').Commands;\n  RCTMultilineTextInputView =\n    require('./RCTMultilineTextInputNativeComponent').default;\n  RCTMultilineTextInputNativeCommands =\n    require('./RCTMultilineTextInputNativeComponent').Commands;\n}\n\nexport type {\n  AutoCapitalize,\n  BlurEvent,\n  EnterKeyHintType,\n  EnterKeyHintTypeAndroid,\n  EnterKeyHintTypeIOS,\n  EnterKeyHintTypeOptions,\n  FocusEvent,\n  InputModeOptions,\n  KeyboardType,\n  KeyboardTypeAndroid,\n  KeyboardTypeIOS,\n  KeyboardTypeOptions,\n  ReturnKeyType,\n  ReturnKeyTypeAndroid,\n  ReturnKeyTypeIOS,\n  ReturnKeyTypeOptions,\n  SubmitBehavior,\n  TextContentType,\n  TextInputAndroidProps,\n  TextInputBlurEvent,\n  TextInputChangeEvent,\n  TextInputContentSizeChangeEvent,\n  TextInputEditingEvent,\n  TextInputEndEditingEvent,\n  TextInputEvent,\n  TextInputFocusEvent,\n  TextInputIOSProps,\n  TextInputKeyPressEvent,\n  TextInputProps,\n  TextInputSelectionChangeEvent,\n  TextInputSubmitEditingEvent,\n};\n\ntype TextInputStateType = $ReadOnly<{\n  /**\n   * @deprecated Use currentlyFocusedInput\n   * Returns the ID of the currently focused text field, if one exists\n   * If no text field is focused it returns null\n   */\n  currentlyFocusedField: () => ?number,\n\n  /**\n   * Returns the ref of the currently focused text field, if one exists\n   * If no text field is focused it returns null\n   */\n  currentlyFocusedInput: () => ?HostInstance,\n\n  /**\n   * @param textField ref of the text field to focus\n   * Focuses the specified text field\n   * noop if the text field was already focused\n   */\n  focusTextInput: (textField: ?HostInstance) => void,\n\n  /**\n   * @param textField ref of the text field to focus\n   * Unfocuses the specified text field\n   * noop if it wasn't focused\n   */\n  blurTextInput: (textField: ?HostInstance) => void,\n}>;\n\ntype ViewCommands = $NonMaybeType<\n  | typeof AndroidTextInputCommands\n  | typeof RCTMultilineTextInputNativeCommands\n  | typeof RCTSinglelineTextInputNativeCommands,\n>;\n\ntype LastNativeSelection = {\n  selection: Selection,\n  mostRecentEventCount: number,\n};\n\nconst emptyFunctionThatReturnsTrue = () => true;\n\n/**\n * This hook handles the synchronization between the state of the text input\n * in native and in JavaScript. This is necessary due to the asynchronous nature\n * of text input events.\n */\nfunction useTextInputStateSynchronization({\n  props,\n  mostRecentEventCount,\n  selection,\n  inputRef,\n  text,\n  viewCommands,\n}: {\n  props: TextInputProps,\n  mostRecentEventCount: number,\n  selection: ?Selection,\n  inputRef: React.RefObject<null | TextInputInstance>,\n  text?: string,\n  viewCommands: ViewCommands,\n}): {\n  setLastNativeText: string => void,\n  setLastNativeSelection: LastNativeSelection => void,\n} {\n  const [lastNativeText, setLastNativeText] = useState<?Stringish>(props.value);\n  const [lastNativeSelectionState, setLastNativeSelection] =\n    useState<LastNativeSelection>({\n      selection: {start: -1, end: -1},\n      mostRecentEventCount: mostRecentEventCount,\n    });\n\n  const lastNativeSelection = lastNativeSelectionState.selection;\n\n  // This is necessary in case native updates the text and JS decides\n  // that the update should be ignored and we should stick with the value\n  // that we have in JS.\n  useLayoutEffect(() => {\n    const nativeUpdate: {text?: string, selection?: Selection} = {};\n\n    if (lastNativeText !== props.value && typeof props.value === 'string') {\n      nativeUpdate.text = props.value;\n      setLastNativeText(props.value);\n    }\n\n    if (\n      selection &&\n      lastNativeSelection &&\n      (lastNativeSelection.start !== selection.start ||\n        lastNativeSelection.end !== selection.end)\n    ) {\n      nativeUpdate.selection = selection;\n      setLastNativeSelection({selection, mostRecentEventCount});\n    }\n\n    if (Object.keys(nativeUpdate).length === 0) {\n      return;\n    }\n\n    if (inputRef.current != null) {\n      viewCommands.setTextAndSelection(\n        inputRef.current,\n        mostRecentEventCount,\n        text,\n        selection?.start ?? -1,\n        selection?.end ?? -1,\n      );\n    }\n  }, [\n    mostRecentEventCount,\n    inputRef,\n    props.value,\n    props.defaultValue,\n    lastNativeText,\n    selection,\n    lastNativeSelection,\n    text,\n    viewCommands,\n  ]);\n\n  return {setLastNativeText, setLastNativeSelection};\n}\n\n/**\n * A foundational component for inputting text into the app via a\n * keyboard. Props provide configurability for several features, such as\n * auto-correction, auto-capitalization, placeholder text, and different keyboard\n * types, such as a numeric keypad.\n *\n * The simplest use case is to plop down a `TextInput` and subscribe to the\n * `onChangeText` events to read the user input. There are also other events,\n * such as `onSubmitEditing` and `onFocus` that can be subscribed to. A simple\n * example:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, TextInput } from 'react-native';\n *\n * export default class UselessTextInput extends Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = { text: 'Useless Placeholder' };\n *   }\n *\n *   render() {\n *     return (\n *       <TextInput\n *         style={{height: 40, borderColor: 'gray', borderWidth: 1}}\n *         onChangeText={(text) => this.setState({text})}\n *         value={this.state.text}\n *       />\n *     );\n *   }\n * }\n *\n * // skip this line if using Create React Native App\n * AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput);\n * ```\n *\n * Two methods exposed via the native element are .focus() and .blur() that\n * will focus or blur the TextInput programmatically.\n *\n * Note that some props are only available with `multiline={true/false}`.\n * Additionally, border styles that apply to only one side of the element\n * (e.g., `borderBottomColor`, `borderLeftWidth`, etc.) will not be applied if\n * `multiline=false`. To achieve the same effect, you can wrap your `TextInput`\n * in a `View`:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, View, TextInput } from 'react-native';\n *\n * class UselessTextInput extends Component {\n *   render() {\n *     return (\n *       <TextInput\n *         {...this.props} // Inherit any props passed to it; e.g., multiline, numberOfLines below\n *         editable={true}\n *         maxLength={40}\n *       />\n *     );\n *   }\n * }\n *\n * export default class UselessTextInputMultiline extends Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = {\n *       text: 'Useless Multiline Placeholder',\n *     };\n *   }\n *\n *   // If you type something in the text box that is a color, the background will change to that\n *   // color.\n *   render() {\n *     return (\n *      <View style={{\n *        backgroundColor: this.state.text,\n *        borderBottomColor: '#000000',\n *        borderBottomWidth: 1 }}\n *      >\n *        <UselessTextInput\n *          multiline={true}\n *          numberOfLines={4}\n *          onChangeText={(text) => this.setState({text})}\n *          value={this.state.text}\n *        />\n *      </View>\n *     );\n *   }\n * }\n *\n * // skip these lines if using Create React Native App\n * AppRegistry.registerComponent(\n *  'AwesomeProject',\n *  () => UselessTextInputMultiline\n * );\n * ```\n *\n * `TextInput` has by default a border at the bottom of its view. This border\n * has its padding set by the background image provided by the system, and it\n * cannot be changed. Solutions to avoid this is to either not set height\n * explicitly, case in which the system will take care of displaying the border\n * in the correct position, or to not display the border by setting\n * `underlineColorAndroid` to transparent.\n *\n * Note that on Android performing text selection in input can change\n * app's activity `windowSoftInputMode` param to `adjustResize`.\n * This may cause issues with components that have position: 'absolute'\n * while keyboard is active. To avoid this behavior either specify `windowSoftInputMode`\n * in AndroidManifest.xml ( https://developer.android.com/guide/topics/manifest/activity-element.html )\n * or control this param programmatically with native code.\n *\n */\nfunction InternalTextInput(props: TextInputProps): React.Node {\n  const {\n    'aria-busy': ariaBusy,\n    'aria-checked': ariaChecked,\n    'aria-disabled': ariaDisabled,\n    'aria-expanded': ariaExpanded,\n    'aria-selected': ariaSelected,\n    accessibilityState,\n    id,\n    tabIndex,\n    selection: propsSelection,\n    selectionColor,\n    selectionHandleColor,\n    cursorColor,\n    ...otherProps\n  } = props;\n\n  const inputRef = useRef<null | TextInputInstance>(null);\n\n  const selection: ?Selection =\n    propsSelection == null\n      ? null\n      : {\n          start: propsSelection.start,\n          end: propsSelection.end ?? propsSelection.start,\n        };\n\n  const text =\n    typeof props.value === 'string'\n      ? props.value\n      : typeof props.defaultValue === 'string'\n        ? props.defaultValue\n        : undefined;\n\n  const viewCommands =\n    AndroidTextInputCommands ||\n    (props.multiline === true\n      ? RCTMultilineTextInputNativeCommands\n      : RCTSinglelineTextInputNativeCommands);\n\n  const [mostRecentEventCount, setMostRecentEventCount] = useState<number>(0);\n  const {setLastNativeText, setLastNativeSelection} =\n    useTextInputStateSynchronization({\n      props,\n      inputRef,\n      mostRecentEventCount,\n      selection,\n      text,\n      viewCommands,\n    });\n\n  useLayoutEffect(() => {\n    const inputRefValue = inputRef.current;\n\n    if (inputRefValue != null) {\n      TextInputState.registerInput(inputRefValue);\n\n      return () => {\n        TextInputState.unregisterInput(inputRefValue);\n\n        if (TextInputState.currentlyFocusedInput() === inputRefValue) {\n          nullthrows(inputRefValue).blur();\n        }\n      };\n    }\n  }, []);\n\n  const setLocalRef = useCallback(\n    (instance: HostInstance | null) => {\n      // $FlowExpectedError[incompatible-type]\n      inputRef.current = instance;\n\n      /*\n      Hi reader from the future. I'm sorry for this.\n\n      This is a hack. Ideally we would forwardRef to the underlying\n      host component. However, since TextInput has it's own methods that can be\n      called as well, if we used the standard forwardRef then these\n      methods wouldn't be accessible and thus be a breaking change.\n\n      We have a couple of options of how to handle this:\n      - Return a new ref with everything we methods from both. This is problematic\n        because we need React to also know it is a host component which requires\n        internals of the class implementation of the ref.\n      - Break the API and have some other way to call one set of the methods or\n        the other. This is our long term approach as we want to eventually\n        get the methods on host components off the ref. So instead of calling\n        ref.measure() you might call ReactNative.measure(ref). This would hopefully\n        let the ref for TextInput then have the methods like `.clear`. Or we do it\n        the other way and make it TextInput.clear(textInputRef) which would be fine\n        too. Either way though is a breaking change that is longer term.\n      - Mutate this ref. :( Gross, but accomplishes what we need in the meantime\n        before we can get to the long term breaking change.\n      */\n      if (instance != null) {\n        // $FlowFixMe[prop-missing] - See the explanation above.\n        // $FlowFixMe[unsafe-object-assign]\n        Object.assign(instance, {\n          clear(): void {\n            if (inputRef.current != null) {\n              viewCommands.setTextAndSelection(\n                inputRef.current,\n                mostRecentEventCount,\n                '',\n                0,\n                0,\n              );\n            }\n          },\n          // TODO: Fix this returning true on null === null, when no input is focused\n          isFocused(): boolean {\n            return TextInputState.currentlyFocusedInput() === inputRef.current;\n          },\n          getNativeRef(): ?TextInputInstance {\n            return inputRef.current;\n          },\n          setSelection(start: number, end: number): void {\n            if (inputRef.current != null) {\n              viewCommands.setTextAndSelection(\n                inputRef.current,\n                mostRecentEventCount,\n                null,\n                start,\n                end,\n              );\n            }\n          },\n        });\n      }\n    },\n    [mostRecentEventCount, viewCommands],\n  );\n\n  // $FlowExpectedError[incompatible-call]\n  const ref = useMergeRefs<HostInstance>(setLocalRef, props.forwardedRef);\n\n  const _onChange = (event: TextInputChangeEvent) => {\n    const currentText = event.nativeEvent.text;\n    props.onChange && props.onChange(event);\n    props.onChangeText && props.onChangeText(currentText);\n\n    if (inputRef.current == null) {\n      // calling `props.onChange` or `props.onChangeText`\n      // may clean up the input itself. Exits here.\n      return;\n    }\n\n    setLastNativeText(currentText);\n    // This must happen last, after we call setLastNativeText.\n    // Different ordering can cause bugs when editing AndroidTextInputs\n    // with multiple Fragments.\n    // We must update this so that controlled input updates work.\n    setMostRecentEventCount(event.nativeEvent.eventCount);\n  };\n\n  const _onSelectionChange = (event: TextInputSelectionChangeEvent) => {\n    props.onSelectionChange && props.onSelectionChange(event);\n\n    if (inputRef.current == null) {\n      // calling `props.onSelectionChange`\n      // may clean up the input itself. Exits here.\n      return;\n    }\n\n    setLastNativeSelection({\n      selection: event.nativeEvent.selection,\n      mostRecentEventCount,\n    });\n  };\n\n  const _onFocus = (event: FocusEvent) => {\n    TextInputState.focusInput(inputRef.current);\n    if (props.onFocus) {\n      props.onFocus(event);\n    }\n  };\n\n  const _onBlur = (event: BlurEvent) => {\n    TextInputState.blurInput(inputRef.current);\n    if (props.onBlur) {\n      props.onBlur(event);\n    }\n  };\n\n  const _onScroll = (event: ScrollEvent) => {\n    props.onScroll && props.onScroll(event);\n  };\n\n  let textInput = null;\n\n  const multiline = props.multiline ?? false;\n\n  let submitBehavior: SubmitBehavior;\n  if (props.submitBehavior != null) {\n    // `submitBehavior` is set explicitly\n    if (!multiline && props.submitBehavior === 'newline') {\n      // For single line text inputs, `'newline'` is not a valid option\n      submitBehavior = 'blurAndSubmit';\n    } else {\n      submitBehavior = props.submitBehavior;\n    }\n  } else if (multiline) {\n    if (props.blurOnSubmit === true) {\n      submitBehavior = 'blurAndSubmit';\n    } else {\n      submitBehavior = 'newline';\n    }\n  } else {\n    // Single line\n    if (props.blurOnSubmit !== false) {\n      submitBehavior = 'blurAndSubmit';\n    } else {\n      submitBehavior = 'submit';\n    }\n  }\n\n  const accessible = props.accessible !== false;\n  const focusable = props.focusable !== false;\n\n  const {\n    editable,\n    hitSlop,\n    onPress,\n    onPressIn,\n    onPressOut,\n    rejectResponderTermination,\n  } = props;\n\n  const config = useMemo(\n    () => ({\n      hitSlop,\n      onPress: (event: GestureResponderEvent) => {\n        onPress?.(event);\n        if (editable !== false) {\n          if (inputRef.current != null) {\n            inputRef.current.focus();\n          }\n        }\n      },\n      onPressIn: onPressIn,\n      onPressOut: onPressOut,\n      cancelable: Platform.OS === 'ios' ? !rejectResponderTermination : null,\n    }),\n    [\n      editable,\n      hitSlop,\n      onPress,\n      onPressIn,\n      onPressOut,\n      rejectResponderTermination,\n    ],\n  );\n\n  // Hide caret during test runs due to a flashing caret\n  // makes screenshot tests flakey\n  let caretHidden = props.caretHidden;\n  if (Platform.isTesting) {\n    caretHidden = true;\n  }\n\n  // TextInput handles onBlur and onFocus events\n  // so omitting onBlur and onFocus pressability handlers here.\n  const {onBlur, onFocus, ...eventHandlers} = usePressability(config);\n\n  const _accessibilityLabel =\n    props?.['aria-label'] ?? props?.accessibilityLabel;\n\n  let _accessibilityState;\n  if (\n    accessibilityState != null ||\n    ariaBusy != null ||\n    ariaChecked != null ||\n    ariaDisabled != null ||\n    ariaExpanded != null ||\n    ariaSelected != null\n  ) {\n    _accessibilityState = {\n      busy: ariaBusy ?? accessibilityState?.busy,\n      checked: ariaChecked ?? accessibilityState?.checked,\n      disabled: ariaDisabled ?? accessibilityState?.disabled,\n      expanded: ariaExpanded ?? accessibilityState?.expanded,\n      selected: ariaSelected ?? accessibilityState?.selected,\n    };\n  }\n\n  // Keep the original (potentially nested) style when possible, as React can diff these more efficiently\n  let _style = props.style;\n  const flattenedStyle = flattenStyle<TextStyleProp>(props.style);\n  if (flattenedStyle != null) {\n    let overrides: ?{...TextStyleInternal} = null;\n    if (typeof flattenedStyle?.fontWeight === 'number') {\n      overrides = overrides || ({}: {...TextStyleInternal});\n      overrides.fontWeight =\n        // $FlowFixMe[incompatible-cast]\n        (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']);\n    }\n\n    if (flattenedStyle.verticalAlign != null) {\n      overrides = overrides || ({}: {...TextStyleInternal});\n      overrides.textAlignVertical =\n        verticalAlignToTextAlignVerticalMap[flattenedStyle.verticalAlign];\n      overrides.verticalAlign = undefined;\n    }\n\n    if (overrides != null) {\n      // $FlowFixMe[incompatible-type]\n      _style = [_style, overrides];\n    }\n  }\n\n  if (Platform.OS === 'ios') {\n    const RCTTextInputView =\n      props.multiline === true\n        ? RCTMultilineTextInputView\n        : RCTSinglelineTextInputView;\n\n    const useMultilineDefaultStyle =\n      props.multiline === true &&\n      (flattenedStyle == null ||\n        (flattenedStyle.padding == null &&\n          flattenedStyle.paddingVertical == null &&\n          flattenedStyle.paddingTop == null));\n\n    textInput = (\n      <RCTTextInputView\n        // Figure out imperative + forward refs.\n        ref={(ref: $FlowFixMe)}\n        {...otherProps}\n        {...eventHandlers}\n        acceptDragAndDropTypes={props.experimental_acceptDragAndDropTypes}\n        accessibilityLabel={_accessibilityLabel}\n        accessibilityState={_accessibilityState}\n        accessible={accessible}\n        submitBehavior={submitBehavior}\n        caretHidden={caretHidden}\n        dataDetectorTypes={props.dataDetectorTypes}\n        focusable={tabIndex !== undefined ? !tabIndex : focusable}\n        mostRecentEventCount={mostRecentEventCount}\n        nativeID={id ?? props.nativeID}\n        numberOfLines={props.rows ?? props.numberOfLines}\n        onBlur={_onBlur}\n        onChange={_onChange}\n        onContentSizeChange={props.onContentSizeChange}\n        onFocus={_onFocus}\n        onScroll={_onScroll}\n        onSelectionChange={_onSelectionChange}\n        onSelectionChangeShouldSetResponder={emptyFunctionThatReturnsTrue}\n        selection={selection}\n        selectionColor={selectionColor}\n        style={StyleSheet.compose(\n          useMultilineDefaultStyle ? styles.multilineDefault : null,\n          _style,\n        )}\n        text={text}\n      />\n    );\n  } else if (Platform.OS === 'android') {\n    const autoCapitalize = props.autoCapitalize || 'sentences';\n    const _accessibilityLabelledBy =\n      props?.['aria-labelledby'] ?? props?.accessibilityLabelledBy;\n    const placeholder = props.placeholder ?? '';\n    let children = props.children;\n    const childCount = React.Children.count(children);\n    invariant(\n      !(props.value != null && childCount),\n      'Cannot specify both value and children.',\n    );\n    if (childCount > 1) {\n      children = <Text>{children}</Text>;\n    }\n    // For consistency with iOS set cursor/selectionHandle color as selectionColor\n    const colorProps = {\n      selectionColor,\n      selectionHandleColor:\n        selectionHandleColor === undefined\n          ? selectionColor\n          : selectionHandleColor,\n      cursorColor: cursorColor === undefined ? selectionColor : cursorColor,\n    };\n    textInput = (\n      /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match up\n       * exactly with the props for TextInput. This will need to get fixed */\n      /* $FlowFixMe[incompatible-type] the types for AndroidTextInput don't\n       * match up exactly with the props for TextInput. This will need to get\n       * fixed */\n      /* $FlowFixMe[incompatible-type-arg] the types for AndroidTextInput don't\n       * match up exactly with the props for TextInput. This will need to get\n       * fixed */\n      <AndroidTextInput\n        // Figure out imperative + forward refs.\n        ref={(ref: $FlowFixMe)}\n        {...otherProps}\n        {...colorProps}\n        {...eventHandlers}\n        accessibilityLabel={_accessibilityLabel}\n        accessibilityLabelledBy={_accessibilityLabelledBy}\n        accessibilityState={_accessibilityState}\n        accessible={accessible}\n        acceptDragAndDropTypes={props.experimental_acceptDragAndDropTypes}\n        autoCapitalize={autoCapitalize}\n        submitBehavior={submitBehavior}\n        caretHidden={caretHidden}\n        children={children}\n        disableFullscreenUI={props.disableFullscreenUI}\n        focusable={tabIndex !== undefined ? !tabIndex : focusable}\n        mostRecentEventCount={mostRecentEventCount}\n        nativeID={id ?? props.nativeID}\n        numberOfLines={props.rows ?? props.numberOfLines}\n        onBlur={_onBlur}\n        onChange={_onChange}\n        onFocus={_onFocus}\n        /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match\n         * up exactly with the props for TextInput. This will need to get fixed\n         */\n        /* $FlowFixMe[incompatible-type-arg] the types for AndroidTextInput\n         * don't match up exactly with the props for TextInput. This will need\n         * to get fixed */\n        onScroll={_onScroll}\n        onSelectionChange={_onSelectionChange}\n        placeholder={placeholder}\n        style={_style}\n        text={text}\n        textBreakStrategy={props.textBreakStrategy}\n      />\n    );\n  }\n  return <TextAncestorContext value={true}>{textInput}</TextAncestorContext>;\n}\n\nconst enterKeyHintToReturnTypeMap = {\n  enter: 'default',\n  done: 'done',\n  go: 'go',\n  next: 'next',\n  previous: 'previous',\n  search: 'search',\n  send: 'send',\n} as const;\n\nconst inputModeToKeyboardTypeMap = {\n  none: 'default',\n  text: 'default',\n  decimal: 'decimal-pad',\n  numeric: 'number-pad',\n  tel: 'phone-pad',\n  search:\n    Platform.OS === 'ios' ? ('web-search' as const) : ('default' as const),\n  email: 'email-address',\n  url: 'url',\n} as const;\n\n// Map HTML autocomplete values to Android autoComplete values\nconst autoCompleteWebToAutoCompleteAndroidMap = {\n  'address-line1': 'postal-address-region',\n  'address-line2': 'postal-address-locality',\n  bday: 'birthdate-full',\n  'bday-day': 'birthdate-day',\n  'bday-month': 'birthdate-month',\n  'bday-year': 'birthdate-year',\n  'cc-csc': 'cc-csc',\n  'cc-exp': 'cc-exp',\n  'cc-exp-month': 'cc-exp-month',\n  'cc-exp-year': 'cc-exp-year',\n  'cc-number': 'cc-number',\n  country: 'postal-address-country',\n  'current-password': 'password',\n  email: 'email',\n  'honorific-prefix': 'name-prefix',\n  'honorific-suffix': 'name-suffix',\n  name: 'name',\n  'additional-name': 'name-middle',\n  'family-name': 'name-family',\n  'given-name': 'name-given',\n  'new-password': 'password-new',\n  off: 'off',\n  'one-time-code': 'sms-otp',\n  'postal-code': 'postal-code',\n  sex: 'gender',\n  'street-address': 'street-address',\n  tel: 'tel',\n  'tel-country-code': 'tel-country-code',\n  'tel-national': 'tel-national',\n  username: 'username',\n} as const;\n\n// Map HTML autocomplete values to iOS textContentType values\nconst autoCompleteWebToTextContentTypeMap = {\n  'address-line1': 'streetAddressLine1',\n  'address-line2': 'streetAddressLine2',\n  bday: 'birthdate',\n  'bday-day': 'birthdateDay',\n  'bday-month': 'birthdateMonth',\n  'bday-year': 'birthdateYear',\n  'cc-csc': 'creditCardSecurityCode',\n  'cc-exp-month': 'creditCardExpirationMonth',\n  'cc-exp-year': 'creditCardExpirationYear',\n  'cc-exp': 'creditCardExpiration',\n  'cc-given-name': 'creditCardGivenName',\n  'cc-additional-name': 'creditCardMiddleName',\n  'cc-family-name': 'creditCardFamilyName',\n  'cc-name': 'creditCardName',\n  'cc-number': 'creditCardNumber',\n  'cc-type': 'creditCardType',\n  'current-password': 'password',\n  country: 'countryName',\n  email: 'emailAddress',\n  name: 'name',\n  'additional-name': 'middleName',\n  'family-name': 'familyName',\n  'given-name': 'givenName',\n  nickname: 'nickname',\n  'honorific-prefix': 'namePrefix',\n  'honorific-suffix': 'nameSuffix',\n  'new-password': 'newPassword',\n  off: 'none',\n  'one-time-code': 'oneTimeCode',\n  organization: 'organizationName',\n  'organization-title': 'jobTitle',\n  'postal-code': 'postalCode',\n  'street-address': 'fullStreetAddress',\n  tel: 'telephoneNumber',\n  url: 'URL',\n  username: 'username',\n} as const;\n\nconst TextInput: component(\n  ref?: React.RefSetter<TextInputInstance>,\n  ...props: React.ElementConfig<typeof InternalTextInput>\n) = function TextInput({\n  ref: forwardedRef,\n  allowFontScaling = true,\n  rejectResponderTermination = true,\n  underlineColorAndroid = 'transparent',\n  autoComplete,\n  textContentType,\n  readOnly,\n  editable,\n  enterKeyHint,\n  returnKeyType,\n  inputMode,\n  showSoftInputOnFocus,\n  keyboardType,\n  ...restProps\n}: {\n  ref?: React.RefSetter<TextInputInstance>,\n  ...React.ElementConfig<typeof InternalTextInput>,\n}) {\n  return (\n    <InternalTextInput\n      allowFontScaling={allowFontScaling}\n      rejectResponderTermination={rejectResponderTermination}\n      underlineColorAndroid={underlineColorAndroid}\n      editable={readOnly !== undefined ? !readOnly : editable}\n      returnKeyType={\n        enterKeyHint ? enterKeyHintToReturnTypeMap[enterKeyHint] : returnKeyType\n      }\n      keyboardType={\n        inputMode ? inputModeToKeyboardTypeMap[inputMode] : keyboardType\n      }\n      showSoftInputOnFocus={\n        inputMode == null ? showSoftInputOnFocus : inputMode !== 'none'\n      }\n      autoComplete={\n        Platform.OS === 'android'\n          ? // $FlowFixMe[invalid-computed-prop]\n            // $FlowFixMe[prop-missing]\n            autoCompleteWebToAutoCompleteAndroidMap[autoComplete] ??\n            autoComplete\n          : undefined\n      }\n      textContentType={\n        textContentType != null\n          ? textContentType\n          : Platform.OS === 'ios' &&\n              autoComplete &&\n              autoComplete in autoCompleteWebToTextContentTypeMap\n            ? // $FlowFixMe[prop-missing]\n              autoCompleteWebToTextContentTypeMap[autoComplete]\n            : textContentType\n      }\n      {...restProps}\n      forwardedRef={forwardedRef}\n    />\n  );\n};\n\nTextInput.displayName = 'TextInput';\n\n// $FlowFixMe[prop-missing]\nTextInput.State = {\n  currentlyFocusedInput: TextInputState.currentlyFocusedInput,\n\n  currentlyFocusedField: TextInputState.currentlyFocusedField,\n  focusTextInput: TextInputState.focusTextInput,\n  blurTextInput: TextInputState.blurTextInput,\n};\n\nexport type TextInputComponentStatics = $ReadOnly<{\n  State: TextInputStateType,\n}>;\n\nconst styles = StyleSheet.create({\n  multilineDefault: {\n    // This default top inset makes RCTMultilineTextInputView seem as close as possible\n    // to single-line RCTSinglelineTextInputView defaults, using the system defaults\n    // of font size 17 and a height of 31 points.\n    paddingTop: 5,\n  },\n});\n\nconst verticalAlignToTextAlignVerticalMap = {\n  auto: 'auto',\n  top: 'top',\n  bottom: 'bottom',\n  middle: 'center',\n} as const;\n\n// $FlowFixMe[unclear-type] Unclear type. Using `any` type is not safe.\nexport default TextInput as any as TextInputType;\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 * @flow\n * @format\n */\n\nimport type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {\n  BlurEvent,\n  FocusEvent,\n  GestureResponderEvent,\n} from '../../Types/CoreEventTypes';\n\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport UIManager from '../../ReactNative/UIManager';\nimport Platform from '../../Utilities/Platform';\nimport SoundManager from '../Sound/SoundManager';\nimport BoundingDimensions from './BoundingDimensions';\nimport Position from './Position';\nimport * as React from 'react';\n\nconst extractSingleTouch = (nativeEvent: {\n  +changedTouches: $ReadOnlyArray<GestureResponderEvent['nativeEvent']>,\n  +force?: number,\n  +identifier: number,\n  +locationX: number,\n  +locationY: number,\n  +pageX: number,\n  +pageY: number,\n  +target: ?number,\n  +timestamp: number,\n  +touches: $ReadOnlyArray<GestureResponderEvent['nativeEvent']>,\n}) => {\n  const touches = nativeEvent.touches;\n  const changedTouches = nativeEvent.changedTouches;\n  const hasTouches = touches && touches.length > 0;\n  const hasChangedTouches = changedTouches && changedTouches.length > 0;\n\n  return !hasTouches && hasChangedTouches\n    ? changedTouches[0]\n    : hasTouches\n      ? touches[0]\n      : nativeEvent;\n};\n\n/**\n * `Touchable`: Taps done right.\n *\n * You hook your `ResponderEventPlugin` events into `Touchable`. `Touchable`\n * will measure time/geometry and tells you when to give feedback to the user.\n *\n * ====================== Touchable Tutorial ===============================\n * The `Touchable` mixin helps you handle the \"press\" interaction. It analyzes\n * the geometry of elements, and observes when another responder (scroll view\n * etc) has stolen the touch lock. It notifies your component when it should\n * give feedback to the user. (bouncing/highlighting/unhighlighting).\n *\n * - When a touch was activated (typically you highlight)\n * - When a touch was deactivated (typically you unhighlight)\n * - When a touch was \"pressed\" - a touch ended while still within the geometry\n *   of the element, and no other element (like scroller) has \"stolen\" touch\n *   lock (\"responder\") (Typically you bounce the element).\n *\n * A good tap interaction isn't as simple as you might think. There should be a\n * slight delay before showing a highlight when starting a touch. If a\n * subsequent touch move exceeds the boundary of the element, it should\n * unhighlight, but if that same touch is brought back within the boundary, it\n * should rehighlight again. A touch can move in and out of that boundary\n * several times, each time toggling highlighting, but a \"press\" is only\n * triggered if that touch ends while within the element's boundary and no\n * scroller (or anything else) has stolen the lock on touches.\n *\n * To create a new type of component that handles interaction using the\n * `Touchable` mixin, do the following:\n *\n * - Initialize the `Touchable` state.\n *\n *   getInitialState: function() {\n *     return merge(this.touchableGetInitialState(), yourComponentState);\n *   }\n *\n * - Choose the rendered component who's touches should start the interactive\n *   sequence. On that rendered node, forward all `Touchable` responder\n *   handlers. You can choose any rendered node you like. Choose a node whose\n *   hit target you'd like to instigate the interaction sequence:\n *\n *   // In render function:\n *   return (\n *     <View\n *       onStartShouldSetResponder={this.touchableHandleStartShouldSetResponder}\n *       onResponderTerminationRequest={this.touchableHandleResponderTerminationRequest}\n *       onResponderGrant={this.touchableHandleResponderGrant}\n *       onResponderMove={this.touchableHandleResponderMove}\n *       onResponderRelease={this.touchableHandleResponderRelease}\n *       onResponderTerminate={this.touchableHandleResponderTerminate}>\n *       <View>\n *         Even though the hit detection/interactions are triggered by the\n *         wrapping (typically larger) node, we usually end up implementing\n *         custom logic that highlights this inner one.\n *       </View>\n *     </View>\n *   );\n *\n * - You may set up your own handlers for each of these events, so long as you\n *   also invoke the `touchable*` handlers inside of your custom handler.\n *\n * - Implement the handlers on your component class in order to provide\n *   feedback to the user. See documentation for each of these class methods\n *   that you should implement.\n *\n *   touchableHandlePress: function() {\n *      this.performBounceAnimation();  // or whatever you want to do.\n *   },\n *   touchableHandleActivePressIn: function() {\n *     this.beginHighlighting(...);  // Whatever you like to convey activation\n *   },\n *   touchableHandleActivePressOut: function() {\n *     this.endHighlighting(...);  // Whatever you like to convey deactivation\n *   },\n *\n * - There are more advanced methods you can implement (see documentation below):\n *   touchableGetHighlightDelayMS: function() {\n *     return 20;\n *   }\n *   // In practice, *always* use a predeclared constant (conserve memory).\n *   touchableGetPressRectOffset: function() {\n *     return {top: 20, left: 20, right: 20, bottom: 100};\n *   }\n */\n\n/**\n * Touchable states.\n */\n\nconst States = {\n  NOT_RESPONDER: 'NOT_RESPONDER', // Not the responder\n  RESPONDER_INACTIVE_PRESS_IN: 'RESPONDER_INACTIVE_PRESS_IN', // Responder, inactive, in the `PressRect`\n  RESPONDER_INACTIVE_PRESS_OUT: 'RESPONDER_INACTIVE_PRESS_OUT', // Responder, inactive, out of `PressRect`\n  RESPONDER_ACTIVE_PRESS_IN: 'RESPONDER_ACTIVE_PRESS_IN', // Responder, active, in the `PressRect`\n  RESPONDER_ACTIVE_PRESS_OUT: 'RESPONDER_ACTIVE_PRESS_OUT', // Responder, active, out of `PressRect`\n  RESPONDER_ACTIVE_LONG_PRESS_IN: 'RESPONDER_ACTIVE_LONG_PRESS_IN', // Responder, active, in the `PressRect`, after long press threshold\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT', // Responder, active, out of `PressRect`, after long press threshold\n  ERROR: 'ERROR',\n};\n\ntype TouchableState =\n  | typeof States.NOT_RESPONDER\n  | typeof States.RESPONDER_INACTIVE_PRESS_IN\n  | typeof States.RESPONDER_INACTIVE_PRESS_OUT\n  | typeof States.RESPONDER_ACTIVE_PRESS_IN\n  | typeof States.RESPONDER_ACTIVE_PRESS_OUT\n  | typeof States.RESPONDER_ACTIVE_LONG_PRESS_IN\n  | typeof States.RESPONDER_ACTIVE_LONG_PRESS_OUT\n  | typeof States.ERROR;\n\n/*\n * Quick lookup map for states that are considered to be \"active\"\n */\n\nconst baseStatesConditions = {\n  NOT_RESPONDER: false,\n  RESPONDER_INACTIVE_PRESS_IN: false,\n  RESPONDER_INACTIVE_PRESS_OUT: false,\n  RESPONDER_ACTIVE_PRESS_IN: false,\n  RESPONDER_ACTIVE_PRESS_OUT: false,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: false,\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: false,\n  ERROR: false,\n};\n\nconst IsActive = {\n  ...baseStatesConditions,\n  RESPONDER_ACTIVE_PRESS_OUT: true,\n  RESPONDER_ACTIVE_PRESS_IN: true,\n};\n\n/**\n * Quick lookup for states that are considered to be \"pressing\" and are\n * therefore eligible to result in a \"selection\" if the press stops.\n */\nconst IsPressingIn = {\n  ...baseStatesConditions,\n  RESPONDER_INACTIVE_PRESS_IN: true,\n  RESPONDER_ACTIVE_PRESS_IN: true,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nconst IsLongPressingIn = {\n  ...baseStatesConditions,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\n/**\n * Inputs to the state machine.\n */\nconst Signals = {\n  DELAY: 'DELAY',\n  RESPONDER_GRANT: 'RESPONDER_GRANT',\n  RESPONDER_RELEASE: 'RESPONDER_RELEASE',\n  RESPONDER_TERMINATED: 'RESPONDER_TERMINATED',\n  ENTER_PRESS_RECT: 'ENTER_PRESS_RECT',\n  LEAVE_PRESS_RECT: 'LEAVE_PRESS_RECT',\n  LONG_PRESS_DETECTED: 'LONG_PRESS_DETECTED',\n};\n\ntype Signal =\n  | typeof Signals.DELAY\n  | typeof Signals.RESPONDER_GRANT\n  | typeof Signals.RESPONDER_RELEASE\n  | typeof Signals.RESPONDER_TERMINATED\n  | typeof Signals.ENTER_PRESS_RECT\n  | typeof Signals.LEAVE_PRESS_RECT\n  | typeof Signals.LONG_PRESS_DETECTED;\n\n/**\n * Mapping from States x Signals => States\n */\nconst Transitions = {\n  NOT_RESPONDER: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n    RESPONDER_RELEASE: States.ERROR,\n    RESPONDER_TERMINATED: States.ERROR,\n    ENTER_PRESS_RECT: States.ERROR,\n    LEAVE_PRESS_RECT: States.ERROR,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  RESPONDER_INACTIVE_PRESS_IN: {\n    DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  RESPONDER_INACTIVE_PRESS_OUT: {\n    DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  RESPONDER_ACTIVE_PRESS_IN: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n  },\n  RESPONDER_ACTIVE_PRESS_OUT: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_IN: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  error: {\n    DELAY: States.NOT_RESPONDER,\n    RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.NOT_RESPONDER,\n    LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n    LONG_PRESS_DETECTED: States.NOT_RESPONDER,\n  },\n};\n\n// ==== Typical Constants for integrating into UI components ====\n// var HIT_EXPAND_PX = 20;\n// var HIT_VERT_OFFSET_PX = 10;\nconst HIGHLIGHT_DELAY_MS = 130;\n\nconst PRESS_EXPAND_PX = 20;\n\nconst LONG_PRESS_THRESHOLD = 500;\n\nconst LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nconst LONG_PRESS_ALLOWED_MOVEMENT = 10;\n\n// Default amount \"active\" region protrudes beyond box\n\n/**\n * By convention, methods prefixed with underscores are meant to be @private,\n * and not @protected. Mixers shouldn't access them - not even to provide them\n * as callback handlers.\n *\n *\n * ========== Geometry =========\n * `Touchable` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n *  +--------------------------+\n *  |                          | - \"Start\" events in `HitRect` cause `HitRect`\n *  |  +--------------------+  |   to become the responder.\n *  |  |  +--------------+  |  | - `HitRect` is typically expanded around\n *  |  |  |              |  |  |   the `VisualRect`, but shifted downward.\n *  |  |  |  VisualRect  |  |  | - After pressing down, after some delay,\n *  |  |  |              |  |  |   and before letting up, the Visual React\n *  |  |  +--------------+  |  |   will become \"active\". This makes it eligible\n *  |  |     HitRect        |  |   for being highlighted (so long as the\n *  |  +--------------------+  |   press remains in the `PressRect`).\n *  |        PressRect     o   |\n *  +----------------------|---+\n *           Out Region    |\n *                         +-----+ This gap between the `HitRect` and\n *                                 `PressRect` allows a touch to move far away\n *                                 from the original hit rect, and remain\n *                                 highlighted, and eligible for a \"Press\".\n *                                 Customize this via\n *                                 `touchableGetPressRectOffset()`.\n *\n *\n *\n * ======= State Machine =======\n *\n * +-------------+ <---+ RESPONDER_RELEASE\n * |NOT_RESPONDER|\n * +-------------+ <---+ RESPONDER_TERMINATED\n *     +\n *     | RESPONDER_GRANT (HitRect)\n *     v\n * +---------------------------+  DELAY   +-------------------------+  T + DELAY     +------------------------------+\n * |RESPONDER_INACTIVE_PRESS_IN|+-------->|RESPONDER_ACTIVE_PRESS_IN| +------------> |RESPONDER_ACTIVE_LONG_PRESS_IN|\n * +---------------------------+          +-------------------------+                +------------------------------+\n *     +            ^                         +           ^                                 +           ^\n *     |LEAVE_      |ENTER_                   |LEAVE_     |ENTER_                           |LEAVE_     |ENTER_\n *     |PRESS_RECT  |PRESS_RECT               |PRESS_RECT |PRESS_RECT                       |PRESS_RECT |PRESS_RECT\n *     |            |                         |           |                                 |           |\n *     v            +                         v           +                                 v           +\n * +----------------------------+  DELAY  +--------------------------+               +-------------------------------+\n * |RESPONDER_INACTIVE_PRESS_OUT|+------->|RESPONDER_ACTIVE_PRESS_OUT|               |RESPONDER_ACTIVE_LONG_PRESS_OUT|\n * +----------------------------+         +--------------------------+               +-------------------------------+\n *\n * T + DELAY => LONG_PRESS_DELAY_MS + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the `touchableHandlePress` abstract method invocation that occurs\n * when a responder is released while in either of the \"Press\" states.\n *\n * The other important side effects are the highlight abstract method\n * invocations (internal callbacks) to be implemented by the mixer.\n *\n *\n * @lends Touchable.prototype\n */\nconst TouchableMixinImpl = {\n  componentDidMount: function () {\n    if (!Platform.isTV) {\n      return;\n    }\n  },\n\n  /**\n   * Clear all timeouts on unmount\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  componentWillUnmount: function () {\n    this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n    this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n    this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n  },\n\n  /**\n   * It's prefer that mixins determine state in this way, having the class\n   * explicitly mix the state in the one and only `getInitialState` method.\n   *\n   * @return {object} State object to be placed inside of\n   * `this.state.touchable`.\n   */\n  touchableGetInitialState: function (): {\n    touchable: {\n      touchState: ?TouchableState,\n      responderID: ?GestureResponderEvent['currentTarget'],\n    },\n  } {\n    return {\n      touchable: {touchState: undefined, responderID: null},\n    };\n  },\n\n  // ==== Hooks to Gesture Responder system ====\n  /**\n   * Must return true if embedded in a native platform scroll view.\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  touchableHandleResponderTerminationRequest: function (): any {\n    return !this.props.rejectResponderTermination;\n  },\n\n  /**\n   * Must return true to start the process of `Touchable`.\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  touchableHandleStartShouldSetResponder: function (): any {\n    return !this.props.disabled;\n  },\n\n  /**\n   * Return true to cancel press on long press.\n   */\n  touchableLongPressCancelsPress: function (): boolean {\n    return true;\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderGrant` event.\n   * @param {NativeSyntheticEvent} e Synthetic event from event system.\n   *\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  touchableHandleResponderGrant: function (e: GestureResponderEvent) {\n    const dispatchID = e.currentTarget;\n    // Since e is used in a callback invoked on another event loop\n    // (as in setTimeout etc), we need to call e.persist() on the\n    // event to make sure it doesn't get reused in the event object pool.\n    e.persist();\n\n    this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n    this.pressOutDelayTimeout = null;\n\n    this.state.touchable.touchState = States.NOT_RESPONDER;\n    this.state.touchable.responderID = dispatchID;\n    this._receiveSignal(Signals.RESPONDER_GRANT, e);\n    let delayMS =\n      this.touchableGetHighlightDelayMS !== undefined\n        ? Math.max(this.touchableGetHighlightDelayMS(), 0)\n        : HIGHLIGHT_DELAY_MS;\n    delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n    if (delayMS !== 0) {\n      this.touchableDelayTimeout = setTimeout(\n        this._handleDelay.bind(this, e),\n        delayMS,\n      );\n    } else {\n      this._handleDelay(e);\n    }\n\n    let longDelayMS =\n      this.touchableGetLongPressDelayMS !== undefined\n        ? Math.max(this.touchableGetLongPressDelayMS(), 10)\n        : LONG_PRESS_DELAY_MS;\n    longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n    this.longPressDelayTimeout = setTimeout(\n      this._handleLongDelay.bind(this, e),\n      longDelayMS + delayMS,\n    );\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderRelease` event.\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  touchableHandleResponderRelease: function (e: GestureResponderEvent) {\n    this.pressInLocation = null;\n    this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderTerminate` event.\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  touchableHandleResponderTerminate: function (e: GestureResponderEvent) {\n    this.pressInLocation = null;\n    this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderMove` event.\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  touchableHandleResponderMove: function (e: GestureResponderEvent) {\n    // Measurement may not have returned yet.\n    if (!this.state.touchable.positionOnActivate) {\n      return;\n    }\n\n    const positionOnActivate = this.state.touchable.positionOnActivate;\n    const dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n    const pressRectOffset = this.touchableGetPressRectOffset\n      ? this.touchableGetPressRectOffset()\n      : {\n          left: PRESS_EXPAND_PX,\n          right: PRESS_EXPAND_PX,\n          top: PRESS_EXPAND_PX,\n          bottom: PRESS_EXPAND_PX,\n        };\n\n    let pressExpandLeft = pressRectOffset.left;\n    let pressExpandTop = pressRectOffset.top;\n    let pressExpandRight = pressRectOffset.right;\n    let pressExpandBottom = pressRectOffset.bottom;\n\n    const hitSlop = this.touchableGetHitSlop\n      ? this.touchableGetHitSlop()\n      : null;\n\n    if (hitSlop) {\n      pressExpandLeft += hitSlop.left || 0;\n      pressExpandTop += hitSlop.top || 0;\n      pressExpandRight += hitSlop.right || 0;\n      pressExpandBottom += hitSlop.bottom || 0;\n    }\n\n    const touch = extractSingleTouch(e.nativeEvent);\n    const pageX = touch && touch.pageX;\n    const pageY = touch && touch.pageY;\n\n    if (this.pressInLocation) {\n      const movedDistance = this._getDistanceBetweenPoints(\n        pageX,\n        pageY,\n        this.pressInLocation.pageX,\n        this.pressInLocation.pageY,\n      );\n      if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n        this._cancelLongPressDelayTimeout();\n      }\n    }\n\n    const isTouchWithinActive =\n      pageX > positionOnActivate.left - pressExpandLeft &&\n      pageY > positionOnActivate.top - pressExpandTop &&\n      pageX <\n        positionOnActivate.left +\n          dimensionsOnActivate.width +\n          pressExpandRight &&\n      pageY <\n        positionOnActivate.top +\n          dimensionsOnActivate.height +\n          pressExpandBottom;\n    if (isTouchWithinActive) {\n      const prevState = this.state.touchable.touchState;\n      this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n      const curState = this.state.touchable.touchState;\n      if (\n        curState === States.RESPONDER_INACTIVE_PRESS_IN &&\n        prevState !== States.RESPONDER_INACTIVE_PRESS_IN\n      ) {\n        // fix for t7967420\n        this._cancelLongPressDelayTimeout();\n      }\n    } else {\n      this._cancelLongPressDelayTimeout();\n      this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n    }\n  },\n\n  /**\n   * Invoked when the item receives focus. Mixers might override this to\n   * visually distinguish the `VisualRect` so that the user knows that it\n   * currently has the focus. Most platforms only support a single element being\n   * focused at a time, in which case there may have been a previously focused\n   * element that was blurred just prior to this. This can be overridden when\n   * using `Touchable.Mixin.withoutDefaultFocusAndBlur`.\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  touchableHandleFocus: function (e: FocusEvent) {\n    this.props.onFocus && this.props.onFocus(e);\n  },\n\n  /**\n   * Invoked when the item loses focus. Mixers might override this to\n   * visually distinguish the `VisualRect` so that the user knows that it\n   * no longer has focus. Most platforms only support a single element being\n   * focused at a time, in which case the focus may have moved to another.\n   * This can be overridden when using\n   * `Touchable.Mixin.withoutDefaultFocusAndBlur`.\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  touchableHandleBlur: function (e: BlurEvent) {\n    this.props.onBlur && this.props.onBlur(e);\n  },\n\n  // ==== Abstract Application Callbacks ====\n\n  /**\n   * Invoked when the item should be highlighted. Mixers should implement this\n   * to visually distinguish the `VisualRect` so that the user knows that\n   * releasing a touch will result in a \"selection\" (analog to click).\n   *\n   * @abstract\n   * touchableHandleActivePressIn: function,\n   */\n\n  /**\n   * Invoked when the item is \"active\" (in that it is still eligible to become\n   * a \"select\") but the touch has left the `PressRect`. Usually the mixer will\n   * want to unhighlight the `VisualRect`. If the user (while pressing) moves\n   * back into the `PressRect` `touchableHandleActivePressIn` will be invoked\n   * again and the mixer should probably highlight the `VisualRect` again. This\n   * event will not fire on an `touchEnd/mouseUp` event, only move events while\n   * the user is depressing the mouse/touch.\n   *\n   * @abstract\n   * touchableHandleActivePressOut: function\n   */\n\n  /**\n   * Invoked when the item is \"selected\" - meaning the interaction ended by\n   * letting up while the item was either in the state\n   * `RESPONDER_ACTIVE_PRESS_IN` or `RESPONDER_INACTIVE_PRESS_IN`.\n   *\n   * @abstract\n   * touchableHandlePress: function\n   */\n\n  /**\n   * Invoked when the item is long pressed - meaning the interaction ended by\n   * letting up while the item was in `RESPONDER_ACTIVE_LONG_PRESS_IN`. If\n   * `touchableHandleLongPress` is *not* provided, `touchableHandlePress` will\n   * be called as it normally is. If `touchableHandleLongPress` is provided, by\n   * default any `touchableHandlePress` callback will not be invoked. To\n   * override this default behavior, override `touchableLongPressCancelsPress`\n   * to return false. As a result, `touchableHandlePress` will be called when\n   * lifting up, even if `touchableHandleLongPress` has also been called.\n   *\n   * @abstract\n   * touchableHandleLongPress: function\n   */\n\n  /**\n   * Returns the number of millis to wait before triggering a highlight.\n   *\n   * @abstract\n   * touchableGetHighlightDelayMS: function\n   */\n\n  /**\n   * Returns the amount to extend the `HitRect` into the `PressRect`. Positive\n   * numbers mean the size expands outwards.\n   *\n   * @abstract\n   * touchableGetPressRectOffset: function\n   */\n\n  // ==== Internal Logic ====\n\n  /**\n   * Measures the `HitRect` node on activation. The Bounding rectangle is with\n   * respect to viewport - not page, so adding the `pageXOffset/pageYOffset`\n   * should result in points that are in the same coordinate system as an\n   * event's `globalX/globalY` data values.\n   *\n   * - Consider caching this for the lifetime of the component, or possibly\n   *   being able to share this cache between any `ScrollMap` view.\n   *\n   * @sideeffects\n   * @private\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _remeasureMetricsOnActivation: function () {\n    const responderID = this.state.touchable.responderID;\n    if (responderID == null) {\n      return;\n    }\n\n    if (typeof responderID === 'number') {\n      UIManager.measure(responderID, this._handleQueryLayout);\n    } else {\n      responderID.measure(this._handleQueryLayout);\n    }\n  },\n\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _handleQueryLayout: function (\n    l: number,\n    t: number,\n    w: number,\n    h: number,\n    globalX: number,\n    globalY: number,\n  ) {\n    //don't do anything UIManager failed to measure node\n    if (!l && !t && !w && !h && !globalX && !globalY) {\n      return;\n    }\n    this.state.touchable.positionOnActivate &&\n      // $FlowFixMe[prop-missing]\n      Position.release(this.state.touchable.positionOnActivate);\n    this.state.touchable.dimensionsOnActivate &&\n      // $FlowFixMe[prop-missing]\n      BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n    // $FlowFixMe[prop-missing]\n    this.state.touchable.positionOnActivate = Position.getPooled(\n      globalX,\n      globalY,\n    );\n    // $FlowFixMe[prop-missing]\n    this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(\n      w,\n      h,\n    );\n  },\n\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _handleDelay: function (e: GestureResponderEvent) {\n    this.touchableDelayTimeout = null;\n    this._receiveSignal(Signals.DELAY, e);\n  },\n\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _handleLongDelay: function (e: GestureResponderEvent) {\n    this.longPressDelayTimeout = null;\n    const curState = this.state.touchable.touchState;\n    if (\n      curState === States.RESPONDER_ACTIVE_PRESS_IN ||\n      curState === States.RESPONDER_ACTIVE_LONG_PRESS_IN\n    ) {\n      this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n    }\n  },\n\n  /**\n   * Receives a state machine signal, performs side effects of the transition\n   * and stores the new state. Validates the transition as well.\n   *\n   * @param {Signals} signal State machine signal.\n   * @throws Error if invalid state transition or unrecognized signal.\n   * @sideeffects\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _receiveSignal: function (signal: Signal, e: GestureResponderEvent) {\n    const responderID = this.state.touchable.responderID;\n    const curState = this.state.touchable.touchState;\n    const nextState = Transitions[curState] && Transitions[curState][signal];\n    if (!responderID && signal === Signals.RESPONDER_RELEASE) {\n      return;\n    }\n    if (!nextState) {\n      throw new Error(\n        'Unrecognized signal `' +\n          signal +\n          '` or state `' +\n          curState +\n          '` for Touchable responder `' +\n          typeof this.state.touchable.responderID ===\n        'number'\n          ? this.state.touchable.responderID\n          : 'host component' + '`',\n      );\n    }\n    if (nextState === States.ERROR) {\n      throw new Error(\n        'Touchable cannot transition from `' +\n          curState +\n          '` to `' +\n          signal +\n          '` for responder `' +\n          typeof this.state.touchable.responderID ===\n        'number'\n          ? this.state.touchable.responderID\n          : '<<host component>>' + '`',\n      );\n    }\n    if (curState !== nextState) {\n      this._performSideEffectsForTransition(curState, nextState, signal, e);\n      this.state.touchable.touchState = nextState;\n    }\n  },\n\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _cancelLongPressDelayTimeout: function () {\n    this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n    this.longPressDelayTimeout = null;\n  },\n\n  _isHighlight: function (state: TouchableState): boolean {\n    return (\n      state === States.RESPONDER_ACTIVE_PRESS_IN ||\n      state === States.RESPONDER_ACTIVE_LONG_PRESS_IN\n    );\n  },\n\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _savePressInLocation: function (e: GestureResponderEvent) {\n    const touch = extractSingleTouch(e.nativeEvent);\n    const pageX = touch && touch.pageX;\n    const pageY = touch && touch.pageY;\n    const locationX = touch && touch.locationX;\n    const locationY = touch && touch.locationY;\n    this.pressInLocation = {pageX, pageY, locationX, locationY};\n  },\n\n  _getDistanceBetweenPoints: function (\n    aX: number,\n    aY: number,\n    bX: number,\n    bY: number,\n  ): number {\n    const deltaX = aX - bX;\n    const deltaY = aY - bY;\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  },\n\n  /**\n   * Will perform a transition between touchable states, and identify any\n   * highlighting or unhighlighting that must be performed for this particular\n   * transition.\n   *\n   * @param {States} curState Current Touchable state.\n   * @param {States} nextState Next Touchable state.\n   * @param {Signal} signal Signal that triggered the transition.\n   * @param {Event} e Native event.\n   * @sideeffects\n   */\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _performSideEffectsForTransition: function (\n    curState: TouchableState,\n    nextState: TouchableState,\n    signal: Signal,\n    e: GestureResponderEvent,\n  ) {\n    const curIsHighlight = this._isHighlight(curState);\n    const newIsHighlight = this._isHighlight(nextState);\n\n    const isFinalSignal =\n      signal === Signals.RESPONDER_TERMINATED ||\n      signal === Signals.RESPONDER_RELEASE;\n\n    if (isFinalSignal) {\n      this._cancelLongPressDelayTimeout();\n    }\n\n    const isInitialTransition =\n      curState === States.NOT_RESPONDER &&\n      nextState === States.RESPONDER_INACTIVE_PRESS_IN;\n\n    /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See\n     * https://fburl.com/workplace/6291gfvu */\n    const isActiveTransition = !IsActive[curState] && IsActive[nextState];\n    if (isInitialTransition || isActiveTransition) {\n      this._remeasureMetricsOnActivation();\n    }\n\n    /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See\n     * https://fburl.com/workplace/6291gfvu */\n    if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n      this.touchableHandleLongPress && this.touchableHandleLongPress(e);\n    }\n\n    if (newIsHighlight && !curIsHighlight) {\n      this._startHighlight(e);\n    } else if (!newIsHighlight && curIsHighlight) {\n      this._endHighlight(e);\n    }\n\n    /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See\n     * https://fburl.com/workplace/6291gfvu */\n    if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n      const hasLongPressHandler = !!this.props.onLongPress;\n      const pressIsLongButStillCallOnPress =\n        /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See\n         * https://fburl.com/workplace/6291gfvu */\n        IsLongPressingIn[curState] && // We *are* long pressing.. // But either has no long handler\n        (!hasLongPressHandler || !this.touchableLongPressCancelsPress()); // or we're told to ignore it.\n\n      const shouldInvokePress =\n        /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See\n         * https://fburl.com/workplace/6291gfvu */\n        !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n      if (shouldInvokePress && this.touchableHandlePress) {\n        if (!newIsHighlight && !curIsHighlight) {\n          // we never highlighted because of delay, but we should highlight now\n          this._startHighlight(e);\n          this._endHighlight(e);\n        }\n        if (Platform.OS === 'android' && !this.props.touchSoundDisabled) {\n          SoundManager.playTouchSound();\n        }\n        this.touchableHandlePress(e);\n      }\n    }\n\n    this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n    this.touchableDelayTimeout = null;\n  },\n\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _startHighlight: function (e: GestureResponderEvent) {\n    this._savePressInLocation(e);\n    this.touchableHandleActivePressIn && this.touchableHandleActivePressIn(e);\n  },\n\n  /* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n   * Flow's LTI update could not be added via codemod */\n  _endHighlight: function (e: GestureResponderEvent) {\n    if (this.touchableHandleActivePressOut) {\n      if (\n        this.touchableGetPressOutDelayMS &&\n        this.touchableGetPressOutDelayMS()\n      ) {\n        this.pressOutDelayTimeout = setTimeout(() => {\n          this.touchableHandleActivePressOut(e);\n        }, this.touchableGetPressOutDelayMS());\n      } else {\n        this.touchableHandleActivePressOut(e);\n      }\n    }\n  },\n\n  withoutDefaultFocusAndBlur: ({}: {...}),\n};\n\n/**\n * Provide an optional version of the mixin where `touchableHandleFocus` and\n * `touchableHandleBlur` can be overridden. This allows appropriate defaults to\n * be set on TV platforms, without breaking existing implementations of\n * `Touchable`.\n */\nconst {\n  touchableHandleFocus,\n  touchableHandleBlur,\n  ...TouchableMixinWithoutDefaultFocusAndBlur\n} = TouchableMixinImpl;\nTouchableMixinImpl.withoutDefaultFocusAndBlur =\n  TouchableMixinWithoutDefaultFocusAndBlur;\n\nconst TouchableImpl = {\n  Mixin: TouchableMixinImpl,\n  /**\n   * Renders a debugging overlay to visualize touch target with hitSlop (might not work on Android).\n   */\n  renderDebugView: ({\n    color,\n    hitSlop,\n  }: {\n    color: ColorValue,\n    hitSlop?: EdgeInsetsProp,\n    ...\n  }): null | React.Node => {\n    if (__DEV__) {\n      return <PressabilityDebugView color={color} hitSlop={hitSlop} />;\n    }\n    return null;\n  },\n};\n\nexport default TouchableImpl;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport PooledClass from './PooledClass';\n\nconst twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * PooledClass representing the bounding rectangle of a region.\n *\n * @param {number} width Width of bounding rectangle.\n * @param {number} height Height of bounding rectangle.\n * @constructor BoundingDimensions\n */\n// $FlowFixMe[missing-this-annot]\nfunction BoundingDimensions(width: number, height: number) {\n  this.width = width;\n  this.height = height;\n}\n\n// $FlowFixMe[prop-missing]\n// $FlowFixMe[missing-this-annot]\nBoundingDimensions.prototype.destructor = function () {\n  this.width = null;\n  this.height = null;\n};\n\n/**\n * @param {HTMLElement} element Element to return `BoundingDimensions` for.\n * @return {BoundingDimensions} Bounding dimensions of `element`.\n */\nBoundingDimensions.getPooledFromElement = function (\n  element: HTMLElement,\n): typeof BoundingDimensions {\n  // $FlowFixMe[prop-missing]\n  return BoundingDimensions.getPooled(\n    element.offsetWidth,\n    element.offsetHeight,\n  );\n};\n\nPooledClass.addPoolingTo(BoundingDimensions as $FlowFixMe, twoArgumentPooler);\n\nexport default BoundingDimensions;\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 * @flow\n * @format\n */\n\n'use strict';\nimport invariant from 'invariant';\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\n/* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n * Flow's LTI update could not be added via codemod */\nconst oneArgumentPooler = function (copyFieldsFrom: any) {\n  const Klass = this; // eslint-disable-line consistent-this\n  if (Klass.instancePool.length) {\n    const instance = Klass.instancePool.pop();\n    Klass.call(instance, copyFieldsFrom);\n    return instance;\n  } else {\n    return new Klass(copyFieldsFrom);\n  }\n};\n\n/* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n * Flow's LTI update could not be added via codemod */\nconst twoArgumentPooler = function (a1: any, a2: any) {\n  const Klass = this; // eslint-disable-line consistent-this\n  if (Klass.instancePool.length) {\n    const instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2);\n    return instance;\n  } else {\n    return new Klass(a1, a2);\n  }\n};\n\n/* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n * Flow's LTI update could not be added via codemod */\nconst threeArgumentPooler = function (a1: any, a2: any, a3: any) {\n  const Klass = this; // eslint-disable-line consistent-this\n  if (Klass.instancePool.length) {\n    const instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2, a3);\n    return instance;\n  } else {\n    return new Klass(a1, a2, a3);\n  }\n};\n\n/* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n * Flow's LTI update could not be added via codemod */\nconst fourArgumentPooler = function (a1: any, a2: any, a3: any, a4: any) {\n  const Klass = this; // eslint-disable-line consistent-this\n  if (Klass.instancePool.length) {\n    const instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2, a3, a4);\n    return instance;\n  } else {\n    return new Klass(a1, a2, a3, a4);\n  }\n};\n\n/* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's\n * LTI update could not be added via codemod */\n/* $FlowFixMe[missing-this-annot] The 'this' type annotation(s) required by\n * Flow's LTI update could not be added via codemod */\nconst standardReleaser = function (instance) {\n  const Klass = this; // eslint-disable-line consistent-this\n  invariant(\n    instance instanceof Klass,\n    'Trying to release an instance into a pool of a different type.',\n  );\n  instance.destructor();\n  if (Klass.instancePool.length < Klass.poolSize) {\n    Klass.instancePool.push(instance);\n  }\n};\n\nconst DEFAULT_POOL_SIZE = 10;\nconst DEFAULT_POOLER = oneArgumentPooler;\n\ntype Pooler = any;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nconst addPoolingTo = function <T>(\n  CopyConstructor: Class<T>,\n  pooler: Pooler,\n): Class<T> & {\n  getPooled(\n    ...args: $ReadOnlyArray<mixed>\n  ): /* arguments of the constructor */ T,\n  release(instance: mixed): void,\n  ...\n} {\n  // Casting as any so that flow ignores the actual implementation and trusts\n  // it to match the type we declared\n  const NewKlass: any = CopyConstructor;\n  NewKlass.instancePool = [];\n  NewKlass.getPooled = pooler || DEFAULT_POOLER;\n  if (!NewKlass.poolSize) {\n    NewKlass.poolSize = DEFAULT_POOL_SIZE;\n  }\n  NewKlass.release = standardReleaser;\n  return NewKlass;\n};\n\nconst PooledClass = {\n  addPoolingTo: addPoolingTo,\n  oneArgumentPooler: (oneArgumentPooler: Pooler),\n  twoArgumentPooler: (twoArgumentPooler: Pooler),\n  threeArgumentPooler: (threeArgumentPooler: Pooler),\n  fourArgumentPooler: (fourArgumentPooler: Pooler),\n};\n\nexport default PooledClass;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport PooledClass from './PooledClass';\n\nconst twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * Position does not expose methods for construction via an `HTMLDOMElement`,\n * because it isn't meaningful to construct such a thing without first defining\n * a frame of reference.\n *\n * @param {number} windowStartKey Key that window starts at.\n * @param {number} windowEndKey Key that window ends at.\n */\n// $FlowFixMe[missing-this-annot]\nfunction Position(left: number, top: number) {\n  this.left = left;\n  this.top = top;\n}\n\n// $FlowFixMe[prop-missing]\n// $FlowFixMe[missing-this-annot]\nPosition.prototype.destructor = function () {\n  this.left = null;\n  this.top = null;\n};\n\nPooledClass.addPoolingTo(Position as $FlowFixMe, twoArgumentPooler);\n\nexport default Position;\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 * @flow strict-local\n * @format\n */\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {AccessibilityState} from '../View/ViewAccessibility';\nimport type {TouchableWithoutFeedbackProps} from './TouchableWithoutFeedback';\n\nimport View from '../../Components/View/View';\nimport Pressability, {\n  type PressabilityConfig,\n} from '../../Pressability/Pressability';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport StyleSheet, {type ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport Platform from '../../Utilities/Platform';\nimport * as React from 'react';\nimport {cloneElement} from 'react';\n\ntype AndroidProps = $ReadOnly<{\n  nextFocusDown?: ?number,\n  nextFocusForward?: ?number,\n  nextFocusLeft?: ?number,\n  nextFocusRight?: ?number,\n  nextFocusUp?: ?number,\n}>;\n\ntype IOSProps = $ReadOnly<{\n  /**\n   * @deprecated Use `focusable` instead\n   */\n  hasTVPreferredFocus?: ?boolean,\n}>;\n\ntype TouchableHighlightBaseProps = $ReadOnly<{\n  /**\n   * Determines what the opacity of the wrapped view should be when touch is active.\n   */\n  activeOpacity?: ?number,\n  /**\n   * The color of the underlay that will show through when the touch is active.\n   */\n  underlayColor?: ?ColorValue,\n  /**\n   * @see https://reactnative.dev/docs/view#style\n   */\n  style?: ?ViewStyleProp,\n  /**\n   * Called immediately after the underlay is shown\n   */\n  onShowUnderlay?: ?() => void,\n  /**\n   * Called immediately after the underlay is hidden\n   */\n  onHideUnderlay?: ?() => void,\n  testOnly_pressed?: ?boolean,\n\n  hostRef?: React.RefSetter<React.ElementRef<typeof View>>,\n}>;\n\nexport type TouchableHighlightProps = $ReadOnly<{\n  ...TouchableWithoutFeedbackProps,\n  ...AndroidProps,\n  ...IOSProps,\n  ...TouchableHighlightBaseProps,\n}>;\n\ntype ExtraStyles = $ReadOnly<{\n  child: ViewStyleProp,\n  underlay: ViewStyleProp,\n}>;\n\ntype TouchableHighlightState = $ReadOnly<{\n  pressability: Pressability,\n  extraStyles: ?ExtraStyles,\n}>;\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, which allows\n * the underlay color to show through, darkening or tinting the view.\n *\n * The underlay comes from wrapping the child in a new View, which can affect\n * layout, and sometimes cause unwanted visual artifacts if not used correctly,\n * for example if the backgroundColor of the wrapped view isn't explicitly set\n * to an opaque color.\n *\n * TouchableHighlight must have one child (not zero or more than one).\n * If you wish to have several child components, wrap them in a View.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n *   return (\n *     <TouchableHighlight onPress={this._onPressButton}>\n *       <Image\n *         style={styles.button}\n *         source={require('./myButton.png')}\n *       />\n *     </TouchableHighlight>\n *   );\n * },\n * ```\n *\n *\n * ### Example\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react'\n * import {\n *   AppRegistry,\n *   StyleSheet,\n *   TouchableHighlight,\n *   Text,\n *   View,\n * } from 'react-native'\n *\n * class App extends Component {\n *   constructor(props) {\n *     super(props)\n *     this.state = { count: 0 }\n *   }\n *\n *   onPress = () => {\n *     this.setState({\n *       count: this.state.count+1\n *     })\n *   }\n *\n *  render() {\n *     return (\n *       <View style={styles.container}>\n *         <TouchableHighlight\n *          style={styles.button}\n *          onPress={this.onPress}\n *         >\n *          <Text> Touch Here </Text>\n *         </TouchableHighlight>\n *         <View style={[styles.countContainer]}>\n *           <Text style={[styles.countText]}>\n *             { this.state.count !== 0 ? this.state.count: null}\n *           </Text>\n *         </View>\n *       </View>\n *     )\n *   }\n * }\n *\n * const styles = StyleSheet.create({\n *   container: {\n *     flex: 1,\n *     justifyContent: 'center',\n *     paddingHorizontal: 10\n *   },\n *   button: {\n *     alignItems: 'center',\n *     backgroundColor: '#DDDDDD',\n *     padding: 10\n *   },\n *   countContainer: {\n *     alignItems: 'center',\n *     padding: 10\n *   },\n *   countText: {\n *     color: '#FF00FF'\n *   }\n * })\n *\n * AppRegistry.registerComponent('App', () => App)\n * ```\n *\n */\nclass TouchableHighlightImpl extends React.Component<\n  TouchableHighlightProps,\n  TouchableHighlightState,\n> {\n  _hideTimeout: ?TimeoutID;\n  _isMounted: boolean = false;\n\n  state: TouchableHighlightState = {\n    pressability: new Pressability(this._createPressabilityConfig()),\n    extraStyles:\n      this.props.testOnly_pressed === true ? this._createExtraStyles() : null,\n  };\n\n  _createPressabilityConfig(): PressabilityConfig {\n    return {\n      cancelable: !this.props.rejectResponderTermination,\n      disabled:\n        this.props.disabled != null\n          ? this.props.disabled\n          : this.props.accessibilityState?.disabled,\n      hitSlop: this.props.hitSlop,\n      delayLongPress: this.props.delayLongPress,\n      delayPressIn: this.props.delayPressIn,\n      delayPressOut: this.props.delayPressOut,\n      minPressDuration: 0,\n      pressRectOffset: this.props.pressRetentionOffset,\n      android_disableSound: this.props.touchSoundDisabled,\n      onBlur: event => {\n        if (Platform.isTV) {\n          this._hideUnderlay();\n        }\n        if (this.props.onBlur != null) {\n          this.props.onBlur(event);\n        }\n      },\n      onFocus: event => {\n        if (Platform.isTV) {\n          this._showUnderlay();\n        }\n        if (this.props.onFocus != null) {\n          this.props.onFocus(event);\n        }\n      },\n      onLongPress: this.props.onLongPress,\n      onPress: event => {\n        if (this._hideTimeout != null) {\n          clearTimeout(this._hideTimeout);\n        }\n        if (!Platform.isTV) {\n          this._showUnderlay();\n          this._hideTimeout = setTimeout(() => {\n            this._hideUnderlay();\n          }, this.props.delayPressOut ?? 0);\n        }\n        if (this.props.onPress != null) {\n          this.props.onPress(event);\n        }\n      },\n      onPressIn: event => {\n        if (this._hideTimeout != null) {\n          clearTimeout(this._hideTimeout);\n          this._hideTimeout = null;\n        }\n        this._showUnderlay();\n        if (this.props.onPressIn != null) {\n          this.props.onPressIn(event);\n        }\n      },\n      onPressOut: event => {\n        if (this._hideTimeout == null) {\n          this._hideUnderlay();\n        }\n        if (this.props.onPressOut != null) {\n          this.props.onPressOut(event);\n        }\n      },\n    };\n  }\n\n  _createExtraStyles(): ExtraStyles {\n    return {\n      child: {opacity: this.props.activeOpacity ?? 0.85},\n      underlay: {\n        backgroundColor:\n          this.props.underlayColor === undefined\n            ? 'black'\n            : this.props.underlayColor,\n      },\n    };\n  }\n\n  _showUnderlay(): void {\n    if (!this._isMounted || !this._hasPressHandler()) {\n      return;\n    }\n    this.setState({extraStyles: this._createExtraStyles()});\n    if (this.props.onShowUnderlay != null) {\n      this.props.onShowUnderlay();\n    }\n  }\n\n  _hideUnderlay(): void {\n    if (this._hideTimeout != null) {\n      clearTimeout(this._hideTimeout);\n      this._hideTimeout = null;\n    }\n    if (this.props.testOnly_pressed === true) {\n      return;\n    }\n    if (this._hasPressHandler()) {\n      this.setState({extraStyles: null});\n      if (this.props.onHideUnderlay != null) {\n        this.props.onHideUnderlay();\n      }\n    }\n  }\n\n  _hasPressHandler(): boolean {\n    return (\n      this.props.onPress != null ||\n      this.props.onPressIn != null ||\n      this.props.onPressOut != null ||\n      this.props.onLongPress != null\n    );\n  }\n\n  render(): React.Node {\n    const child = React.Children.only<$FlowFixMe>(this.props.children);\n\n    // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before\n    // adopting `Pressability`, so preserve that behavior.\n    const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} =\n      this.state.pressability.getEventHandlers();\n\n    const accessibilityState: ?AccessibilityState =\n      this.props.disabled != null\n        ? {\n            ...this.props.accessibilityState,\n            disabled: this.props.disabled,\n          }\n        : this.props.accessibilityState;\n\n    const accessibilityValue = {\n      max: this.props['aria-valuemax'] ?? this.props.accessibilityValue?.max,\n      min: this.props['aria-valuemin'] ?? this.props.accessibilityValue?.min,\n      now: this.props['aria-valuenow'] ?? this.props.accessibilityValue?.now,\n      text: this.props['aria-valuetext'] ?? this.props.accessibilityValue?.text,\n    };\n\n    const accessibilityLiveRegion =\n      this.props['aria-live'] === 'off'\n        ? 'none'\n        : this.props['aria-live'] ?? this.props.accessibilityLiveRegion;\n\n    const accessibilityLabel =\n      this.props['aria-label'] ?? this.props.accessibilityLabel;\n    return (\n      <View\n        accessible={this.props.accessible !== false}\n        accessibilityLabel={accessibilityLabel}\n        accessibilityHint={this.props.accessibilityHint}\n        accessibilityLanguage={this.props.accessibilityLanguage}\n        accessibilityRole={this.props.accessibilityRole}\n        accessibilityState={accessibilityState}\n        accessibilityValue={accessibilityValue}\n        accessibilityActions={this.props.accessibilityActions}\n        onAccessibilityAction={this.props.onAccessibilityAction}\n        importantForAccessibility={\n          this.props['aria-hidden'] === true\n            ? 'no-hide-descendants'\n            : this.props.importantForAccessibility\n        }\n        accessibilityViewIsModal={\n          this.props['aria-modal'] ?? this.props.accessibilityViewIsModal\n        }\n        accessibilityLiveRegion={accessibilityLiveRegion}\n        accessibilityElementsHidden={\n          this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden\n        }\n        style={StyleSheet.compose(\n          this.props.style,\n          this.state.extraStyles?.underlay,\n        )}\n        onLayout={this.props.onLayout}\n        hitSlop={this.props.hitSlop}\n        hasTVPreferredFocus={this.props.hasTVPreferredFocus}\n        nextFocusDown={this.props.nextFocusDown}\n        nextFocusForward={this.props.nextFocusForward}\n        nextFocusLeft={this.props.nextFocusLeft}\n        nextFocusRight={this.props.nextFocusRight}\n        nextFocusUp={this.props.nextFocusUp}\n        focusable={\n          this.props.focusable !== false &&\n          this.props.onPress !== undefined &&\n          !this.props.disabled\n        }\n        nativeID={this.props.id ?? this.props.nativeID}\n        testID={this.props.testID}\n        ref={this.props.hostRef}\n        {...eventHandlersWithoutBlurAndFocus}>\n        {cloneElement(child, {\n          style: StyleSheet.compose(\n            child.props.style,\n            this.state.extraStyles?.child,\n          ),\n        })}\n        {__DEV__ ? (\n          <PressabilityDebugView color=\"green\" hitSlop={this.props.hitSlop} />\n        ) : null}\n      </View>\n    );\n  }\n\n  componentDidMount(): void {\n    this._isMounted = true;\n    this.state.pressability.configure(this._createPressabilityConfig());\n  }\n\n  componentDidUpdate(\n    prevProps: TouchableHighlightProps,\n    prevState: TouchableHighlightState,\n  ) {\n    this.state.pressability.configure(this._createPressabilityConfig());\n  }\n\n  componentWillUnmount(): void {\n    this._isMounted = false;\n    if (this._hideTimeout != null) {\n      clearTimeout(this._hideTimeout);\n    }\n    this.state.pressability.reset();\n  }\n}\n\nconst TouchableHighlight: component(\n  ref?: React.RefSetter<React.ElementRef<typeof View>>,\n  ...props: $ReadOnly<Omit<TouchableHighlightProps, 'hostRef'>>\n) = ({\n  ref: hostRef,\n  ...props\n}: {\n  ref?: React.RefSetter<React.ElementRef<typeof View>>,\n  ...$ReadOnly<Omit<TouchableHighlightProps, 'hostRef'>>,\n}) => <TouchableHighlightImpl {...props} hostRef={hostRef} />;\n\nTouchableHighlight.displayName = 'TouchableHighlight';\n\nexport default TouchableHighlight;\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 * @flow strict-local\n * @format\n */\n\nimport type {AccessibilityActionEvent} from '../../Components/View/ViewAccessibility';\nimport type {EdgeInsetsOrSizeProp} from '../../StyleSheet/EdgeInsetsPropType';\nimport type {\n  BlurEvent,\n  FocusEvent,\n  GestureResponderEvent,\n  LayoutChangeEvent,\n} from '../../Types/CoreEventTypes';\n\nimport View from '../../Components/View/View';\nimport {type AccessibilityProps} from '../../Components/View/ViewAccessibility';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport usePressability from '../../Pressability/usePressability';\nimport {type ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport * as React from 'react';\nimport {cloneElement, useMemo} from 'react';\n\nexport type TouchableWithoutFeedbackPropsIOS = {};\n\nexport type TouchableWithoutFeedbackPropsAndroid = {\n  /**\n   * If true, doesn't play a system sound on touch.\n   *\n   * @platform android\n   */\n  touchSoundDisabled?: ?boolean,\n};\n\nexport type TouchableWithoutFeedbackProps = $ReadOnly<\n  {\n    children?: ?React.Node,\n    /**\n     * Delay in ms, from onPressIn, before onLongPress is called.\n     */\n    delayLongPress?: ?number,\n    /**\n     * Delay in ms, from the start of the touch, before onPressIn is called.\n     */\n    delayPressIn?: ?number,\n    /**\n     * Delay in ms, from the release of the touch, before onPressOut is called.\n     */\n    delayPressOut?: ?number,\n    /**\n     * If true, disable all interactions for this component.\n     */\n    disabled?: ?boolean,\n    /**\n     * Whether this View should be focusable with a non-touch input device,\n     * eg. receive focus with a hardware keyboard / TV remote.\n     */\n    focusable?: ?boolean,\n    /**\n     * This defines how far your touch can start away from the button.\n     * This is added to pressRetentionOffset when moving off of the button.\n     * NOTE The touch area never extends past the parent view bounds and\n     * the Z-index of sibling views always takes precedence if a touch hits\n     * two overlapping views.\n     */\n    hitSlop?: ?EdgeInsetsOrSizeProp,\n    /**\n     * Used to reference react managed views from native code.\n     */\n    id?: string,\n    importantForAccessibility?: ?(\n      | 'auto'\n      | 'yes'\n      | 'no'\n      | 'no-hide-descendants'\n    ),\n    nativeID?: ?string,\n    onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed,\n    /**\n     * When `accessible` is true (which is the default) this may be called when\n     * the OS-specific concept of \"blur\" occurs, meaning the element lost focus.\n     * Some platforms may not have the concept of blur.\n     */\n    onBlur?: ?(event: BlurEvent) => mixed,\n    /**\n     * When `accessible` is true (which is the default) this may be called when\n     * the OS-specific concept of \"focus\" occurs. Some platforms may not have\n     * the concept of focus.\n     */\n    onFocus?: ?(event: FocusEvent) => mixed,\n    /**\n     * Invoked on mount and layout changes with\n     * {nativeEvent: {layout: {x, y, width, height}}}\n     */\n    onLayout?: ?(event: LayoutChangeEvent) => mixed,\n    onLongPress?: ?(event: GestureResponderEvent) => mixed,\n    /**\n     * Called when the touch is released,\n     * but not if cancelled (e.g. by a scroll that steals the responder lock).\n     */\n    onPress?: ?(event: GestureResponderEvent) => mixed,\n    onPressIn?: ?(event: GestureResponderEvent) => mixed,\n    onPressOut?: ?(event: GestureResponderEvent) => mixed,\n    /**\n     * When the scroll view is disabled, this defines how far your\n     * touch may move off of the button, before deactivating the button.\n     * Once deactivated, try moving it back and you'll see that the button\n     * is once again reactivated! Move it back and forth several times\n     * while the scroll view is disabled. Ensure you pass in a constant\n     * to reduce memory allocations.\n     */\n    pressRetentionOffset?: ?EdgeInsetsOrSizeProp,\n    rejectResponderTermination?: ?boolean,\n    /**\n     * Used to locate this view in end-to-end tests.\n     */\n    testID?: ?string,\n    /**\n     * //FIXME: not in doc but available in examples\n     */\n    style?: ?ViewStyleProp,\n  } & TouchableWithoutFeedbackPropsAndroid &\n    TouchableWithoutFeedbackPropsIOS &\n    AccessibilityProps,\n>;\n\nconst PASSTHROUGH_PROPS = [\n  'accessibilityActions',\n  'accessibilityElementsHidden',\n  'accessibilityHint',\n  'accessibilityLanguage',\n  'accessibilityIgnoresInvertColors',\n  'accessibilityLabel',\n  'accessibilityLiveRegion',\n  'accessibilityRole',\n  'accessibilityValue',\n  'aria-valuemax',\n  'aria-valuemin',\n  'aria-valuenow',\n  'aria-valuetext',\n  'accessibilityViewIsModal',\n  'aria-modal',\n  'hitSlop',\n  'importantForAccessibility',\n  'nativeID',\n  'onAccessibilityAction',\n  'onBlur',\n  'onFocus',\n  'onLayout',\n  'testID',\n] as const;\n\n/**\n * Do not use unless you have a very good reason.\n * All the elements that respond to press should have a visual feedback when touched.\n * This is one of the primary reason a \"web\" app doesn't feel \"native\".\n *\n * @see https://reactnative.dev/docs/touchablewithoutfeedback\n */\nexport default function TouchableWithoutFeedback(\n  props: TouchableWithoutFeedbackProps,\n): React.Node {\n  const {\n    disabled,\n    rejectResponderTermination,\n    'aria-disabled': ariaDisabled,\n    accessibilityState,\n    hitSlop,\n    delayLongPress,\n    delayPressIn,\n    delayPressOut,\n    pressRetentionOffset,\n    touchSoundDisabled,\n    onBlur: _onBlur,\n    onFocus: _onFocus,\n    onLongPress,\n    onPress,\n    onPressIn,\n    onPressOut,\n  } = props;\n\n  const pressabilityConfig = useMemo(\n    () => ({\n      cancelable: !rejectResponderTermination,\n      disabled:\n        disabled !== null\n          ? disabled\n          : ariaDisabled ?? accessibilityState?.disabled,\n      hitSlop: hitSlop,\n      delayLongPress: delayLongPress,\n      delayPressIn: delayPressIn,\n      delayPressOut: delayPressOut,\n      minPressDuration: 0,\n      pressRectOffset: pressRetentionOffset,\n      android_disableSound: touchSoundDisabled,\n      onBlur: _onBlur,\n      onFocus: _onFocus,\n      onLongPress: onLongPress,\n      onPress: onPress,\n      onPressIn: onPressIn,\n      onPressOut: onPressOut,\n    }),\n    [\n      rejectResponderTermination,\n      disabled,\n      ariaDisabled,\n      accessibilityState?.disabled,\n      hitSlop,\n      delayLongPress,\n      delayPressIn,\n      delayPressOut,\n      pressRetentionOffset,\n      touchSoundDisabled,\n      _onBlur,\n      _onFocus,\n      onLongPress,\n      onPress,\n      onPressIn,\n      onPressOut,\n    ],\n  );\n\n  const eventHandlers = usePressability(pressabilityConfig);\n\n  const element = React.Children.only<$FlowFixMe>(props.children);\n  const children: Array<React.Node> = [element.props.children];\n  const ariaLive = props['aria-live'];\n\n  if (__DEV__) {\n    if (element.type === View) {\n      children.push(\n        <PressabilityDebugView color=\"red\" hitSlop={props.hitSlop} />,\n      );\n    }\n  }\n\n  let _accessibilityState = {\n    busy: props['aria-busy'] ?? props.accessibilityState?.busy,\n    checked: props['aria-checked'] ?? props.accessibilityState?.checked,\n    disabled: props['aria-disabled'] ?? props.accessibilityState?.disabled,\n    expanded: props['aria-expanded'] ?? props.accessibilityState?.expanded,\n    selected: props['aria-selected'] ?? props.accessibilityState?.selected,\n  };\n\n  // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before\n  // adopting `Pressability`, so preserve that behavior.\n  const {onBlur, onFocus, ...eventHandlersWithoutBlurAndFocus} = eventHandlers;\n\n  const elementProps: {[string]: mixed, ...} = {\n    ...eventHandlersWithoutBlurAndFocus,\n    accessible: props.accessible !== false,\n    accessibilityState:\n      props.disabled != null\n        ? {\n            ..._accessibilityState,\n            disabled: props.disabled,\n          }\n        : _accessibilityState,\n    focusable:\n      props.focusable !== false &&\n      props.onPress !== undefined &&\n      !props.disabled,\n\n    accessibilityElementsHidden:\n      props['aria-hidden'] ?? props.accessibilityElementsHidden,\n    importantForAccessibility:\n      props['aria-hidden'] === true\n        ? 'no-hide-descendants'\n        : props.importantForAccessibility,\n    accessibilityLiveRegion:\n      ariaLive === 'off' ? 'none' : ariaLive ?? props.accessibilityLiveRegion,\n    nativeID: props.id ?? props.nativeID,\n  };\n\n  for (const prop of PASSTHROUGH_PROPS) {\n    if (props[prop] !== undefined) {\n      elementProps[prop] = props[prop];\n    }\n  }\n\n  // $FlowFixMe[incompatible-call]\n  return cloneElement(element, elementProps, ...children);\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport VirtualizedLists from '@react-native/virtualized-lists';\n\ntype VirtualizedListType = typeof VirtualizedLists.VirtualizedList;\nconst VirtualizedListComponent: VirtualizedListType =\n  VirtualizedLists.VirtualizedList;\n\nexport type {\n  ListRenderItemInfo,\n  ListRenderItem,\n  Separators,\n  VirtualizedListProps,\n} from '@react-native/virtualized-lists';\nexport default VirtualizedListComponent;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport VirtualizedLists from '@react-native/virtualized-lists';\n\ntype VirtualizedSectionListType =\n  typeof VirtualizedLists.VirtualizedSectionList;\nconst VirtualizedSectionList: VirtualizedSectionListType =\n  VirtualizedLists.VirtualizedSectionList;\n\nexport type {\n  SectionBase,\n  ScrollToLocationParamsType,\n  VirtualizedSectionListProps,\n} from '@react-native/virtualized-lists';\nexport default VirtualizedSectionList;\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewStyleProp} from '../../../../Libraries/StyleSheet/StyleSheet';\nimport type {NativeSyntheticEvent} from '../../../../Libraries/Types/CoreEventTypes';\nimport type ReadOnlyElement from '../../webapis/dom/nodes/ReadOnlyElement';\nimport type {NativeModeChangeEvent} from './VirtualViewNativeComponent';\n\nimport StyleSheet from '../../../../Libraries/StyleSheet/StyleSheet';\nimport VirtualViewNativeComponent from './VirtualViewNativeComponent';\nimport nullthrows from 'nullthrows';\nimport * as React from 'react';\nimport {startTransition, useState} from 'react';\n\n// @see VirtualViewNativeComponent\nexport enum VirtualViewMode {\n  Visible = 0,\n  Prerender = 1,\n  Hidden = 2,\n}\n\n// @see VirtualViewNativeComponent\nexport enum VirtualViewRenderState {\n  Unknown = 0,\n  Rendered = 1,\n  None = 2,\n}\n\nexport type Rect = $ReadOnly<{\n  x: number,\n  y: number,\n  width: number,\n  height: number,\n}>;\n\nexport type ModeChangeEvent = $ReadOnly<{\n  ...Omit<NativeModeChangeEvent, 'mode'>,\n  mode: VirtualViewMode,\n  target: ReadOnlyElement,\n}>;\n\ntype VirtualViewComponent = component(\n  children?: React.Node,\n  nativeID?: string,\n  ref?: ?React.RefSetter<React.ElementRef<typeof VirtualViewNativeComponent>>,\n  style?: ?ViewStyleProp,\n  onModeChange?: (event: ModeChangeEvent) => void,\n);\n\ntype HiddenHeight = number;\nconst NotHidden = null;\n\ntype State = HiddenHeight | typeof NotHidden;\n\nfunction createVirtualView(initialState: State): VirtualViewComponent {\n  const initialHidden = initialState !== NotHidden;\n\n  component VirtualView(\n    children?: React.Node,\n    nativeID?: string,\n    ref?: ?React.RefSetter<React.ElementRef<typeof VirtualViewNativeComponent>>,\n    style?: ?ViewStyleProp,\n    onModeChange?: (event: ModeChangeEvent) => void,\n  ) {\n    const [state, setState] = useState<State>(initialState);\n    if (__DEV__) {\n      _logs.states?.push(state);\n    }\n    const isHidden = state !== NotHidden;\n\n    const handleModeChange = (\n      event: NativeSyntheticEvent<NativeModeChangeEvent>,\n    ) => {\n      const mode = nullthrows(VirtualViewMode.cast(event.nativeEvent.mode));\n      const emitModeChange =\n        onModeChange == null\n          ? null\n          : onModeChange.bind(null, {\n              mode,\n              // $FlowIgnore[incompatible-cast]\n              target: event.currentTarget as ReadOnlyElement,\n              targetRect: event.nativeEvent.targetRect,\n              thresholdRect: event.nativeEvent.thresholdRect,\n            });\n\n      match (mode) {\n        VirtualViewMode.Visible => {\n          setState(NotHidden);\n          emitModeChange?.();\n        }\n        VirtualViewMode.Prerender => {\n          startTransition(() => {\n            setState(NotHidden);\n            emitModeChange?.();\n          });\n        }\n        VirtualViewMode.Hidden => {\n          const {height} = event.nativeEvent.targetRect;\n          startTransition(() => {\n            setState(height as HiddenHeight);\n            emitModeChange?.();\n          });\n        }\n      }\n    };\n\n    return (\n      <VirtualViewNativeComponent\n        initialHidden={initialHidden}\n        nativeID={nativeID}\n        ref={ref}\n        renderState={\n          (isHidden\n            ? VirtualViewRenderState.None\n            : VirtualViewRenderState.Rendered) as number\n        }\n        style={\n          isHidden\n            ? StyleSheet.compose(style, {\n                height: Math.abs(nullthrows(state) as HiddenHeight),\n              })\n            : style\n        }\n        onModeChange={handleModeChange}>\n        {isHidden ? null : children}\n      </VirtualViewNativeComponent>\n    );\n  }\n  return VirtualView;\n}\n\nexport default createVirtualView(NotHidden) as VirtualViewComponent;\n\nexport function createHiddenVirtualView(height: number): VirtualViewComponent {\n  return createVirtualView(height as HiddenHeight);\n}\n\nexport const _logs: {states?: Array<State>} = {};\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {\n  DirectEventHandler,\n  Double,\n  Int32,\n} from '../../../../Libraries/Types/CodegenTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\n\nexport type NativeModeChangeEvent = $ReadOnly<{\n  /**\n   * Virtualization mode of the target view.\n   *\n   * - `0`: Target view is visible.\n   * - `1`: Target view is hidden, but can be prerendered.\n   * - `2`: Target view is hidden.\n   *\n   * WORKAROUND: As of this writing, codegen doesn't support enums, so we need\n   * to convert `number` into an enum in `VirtualView`.\n   */\n  mode: Int32,\n\n  /**\n   * Rect of the target view, relative to the nearest ancestor scroll container.\n   */\n  targetRect: $ReadOnly<{\n    x: Double,\n    y: Double,\n    width: Double,\n    height: Double,\n  }>,\n\n  /**\n   * Rect of the threshold that determines the mode of the target view, relative\n   * to the nearest ancestor scroll container.\n   *\n   * - `Visible`: Rect in which the target view is visible.\n   * - `Prerender`: Rect in which the target view is prerendered.\n   * - `Hidden`: Unused, without any guarantees.\n   *\n   * This can be used to determine whether and how much new content to render.\n   */\n  thresholdRect: $ReadOnly<{\n    x: Double,\n    y: Double,\n    width: Double,\n    height: Double,\n  }>,\n}>;\n\ntype VirtualViewNativeProps = $ReadOnly<{\n  ...ViewProps,\n\n  /**\n   * Whether the initial mode should be `Hidden`.\n   */\n  initialHidden?: boolean,\n\n  /**\n   * Render state of children.\n   *\n   * - `0`: Reserved to represent unknown future values.\n   * - `1`: Children are rendered.\n   * - `2`: Children are not rendered.\n   *\n   * WORKAROUND: As of this writing, codegen doesn't support enums, so we need\n   * to convert `number` into an enum in `VirtualView`.\n   */\n  renderState: Int32,\n\n  /**\n   * See `NativeModeChangeEvent`.\n   */\n  onModeChange?: ?DirectEventHandler<NativeModeChangeEvent>,\n}>;\n\nexport default codegenNativeComponent<VirtualViewNativeProps>('VirtualView', {\n  interfaceOnly: true,\n}) as HostComponent<VirtualViewNativeProps>;\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 * @flow\n * @format\n */\n\nimport type {ProcessedColorValue} from '../StyleSheet/processColor';\nimport type {ColorValue} from '../StyleSheet/StyleSheet';\n\nimport RCTActionSheetManager from './NativeActionSheetManager';\n\nconst processColor = require('../StyleSheet/processColor').default;\nconst invariant = require('invariant');\n\nexport type ActionSheetIOSOptions = $ReadOnly<{\n  title?: ?string,\n  message?: ?string,\n  options: Array<string>,\n  destructiveButtonIndex?: ?number | ?Array<number>,\n  cancelButtonIndex?: ?number,\n  anchor?: ?number,\n  tintColor?: ColorValue | ProcessedColorValue,\n  cancelButtonTintColor?: ColorValue | ProcessedColorValue,\n  disabledButtonTintColor?: ColorValue | ProcessedColorValue,\n  userInterfaceStyle?: string,\n  disabledButtonIndices?: Array<number>,\n}>;\n\nexport type ShareActionSheetIOSOptions = $ReadOnly<{\n  message?: ?string,\n  url?: ?string,\n  subject?: ?string,\n  anchor?: ?number,\n  tintColor?: ?number,\n  cancelButtonTintColor?: ?number,\n  disabledButtonTintColor?: ?number,\n  excludedActivityTypes?: ?Array<string>,\n  userInterfaceStyle?: ?string,\n}>;\n\nexport type ShareActionSheetError = $ReadOnly<{\n  domain: string,\n  code: string,\n  userInfo?: ?Object,\n  message: string,\n}>;\n\n/**\n * Display action sheets and share sheets on iOS.\n *\n * See https://reactnative.dev/docs/actionsheetios\n */\nconst ActionSheetIOS = {\n  /**\n   * Display an iOS action sheet.\n   *\n   * The `options` object must contain one or more of:\n   *\n   * - `options` (array of strings) - a list of button titles (required)\n   * - `cancelButtonIndex` (int) - index of cancel button in `options`\n   * - `destructiveButtonIndex` (int or array of ints) - index or indices of destructive buttons in `options`\n   * - `title` (string) - a title to show above the action sheet\n   * - `message` (string) - a message to show below the title\n   * - `disabledButtonIndices` (array of numbers) - a list of button indices which should be disabled\n   *\n   * The 'callback' function takes one parameter, the zero-based index\n   * of the selected item.\n   *\n   * See https://reactnative.dev/docs/actionsheetios#showactionsheetwithoptions\n   */\n  showActionSheetWithOptions(\n    options: ActionSheetIOSOptions,\n    callback: (buttonIndex: number) => void,\n  ) {\n    invariant(\n      typeof options === 'object' && options !== null,\n      'Options must be a valid object',\n    );\n    invariant(typeof callback === 'function', 'Must provide a valid callback');\n    invariant(RCTActionSheetManager, \"ActionSheetManager doesn't exist\");\n\n    const {\n      tintColor,\n      cancelButtonTintColor,\n      disabledButtonTintColor,\n      destructiveButtonIndex,\n      ...remainingOptions\n    } = options;\n    let destructiveButtonIndices = null;\n\n    if (Array.isArray(destructiveButtonIndex)) {\n      destructiveButtonIndices = destructiveButtonIndex;\n    } else if (typeof destructiveButtonIndex === 'number') {\n      destructiveButtonIndices = [destructiveButtonIndex];\n    }\n\n    const processedTintColor = processColor(tintColor);\n    const processedCancelButtonTintColor = processColor(cancelButtonTintColor);\n    const processedDisabledButtonTintColor = processColor(\n      disabledButtonTintColor,\n    );\n\n    invariant(\n      processedTintColor == null || typeof processedTintColor === 'number',\n      'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions tintColor',\n    );\n    invariant(\n      processedCancelButtonTintColor == null ||\n        typeof processedCancelButtonTintColor === 'number',\n      'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions cancelButtonTintColor',\n    );\n    invariant(\n      processedDisabledButtonTintColor == null ||\n        typeof processedDisabledButtonTintColor === 'number',\n      'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions disabledButtonTintColor',\n    );\n    RCTActionSheetManager.showActionSheetWithOptions(\n      {\n        ...remainingOptions,\n        // $FlowFixMe[incompatible-call]\n        tintColor: processedTintColor,\n        // $FlowFixMe[incompatible-call]\n        cancelButtonTintColor: processedCancelButtonTintColor,\n        // $FlowFixMe[incompatible-call]\n        disabledButtonTintColor: processedDisabledButtonTintColor,\n        destructiveButtonIndices,\n      },\n      callback,\n    );\n  },\n\n  /**\n   * Display the iOS share sheet. The `options` object should contain\n   * one or both of `message` and `url` and can additionally have\n   * a `subject` or `excludedActivityTypes`:\n   *\n   * - `url` (string) - a URL to share\n   * - `message` (string) - a message to share\n   * - `subject` (string) - a subject for the message\n   * - `excludedActivityTypes` (array) - the activities to exclude from\n   *   the ActionSheet\n   * - `tintColor` (color) - tint color of the buttons\n   *\n   * The 'failureCallback' function takes one parameter, an error object.\n   * The only property defined on this object is an optional `stack` property\n   * of type `string`.\n   *\n   * The 'successCallback' function takes two parameters:\n   *\n   * - a boolean value signifying success or failure\n   * - a string that, in the case of success, indicates the method of sharing\n   *\n   * See https://reactnative.dev/docs/actionsheetios#showshareactionsheetwithoptions\n   */\n  showShareActionSheetWithOptions(\n    options: ShareActionSheetIOSOptions,\n    failureCallback: Function | ((error: ShareActionSheetError) => void),\n    successCallback: Function | ((success: boolean, method: ?string) => void),\n  ) {\n    invariant(\n      typeof options === 'object' && options !== null,\n      'Options must be a valid object',\n    );\n    invariant(\n      typeof failureCallback === 'function',\n      'Must provide a valid failureCallback',\n    );\n    invariant(\n      typeof successCallback === 'function',\n      'Must provide a valid successCallback',\n    );\n    invariant(RCTActionSheetManager, \"ActionSheetManager doesn't exist\");\n    RCTActionSheetManager.showShareActionSheetWithOptions(\n      {...options, tintColor: processColor(options.tintColor) as $FlowFixMe},\n      failureCallback,\n      successCallback,\n    );\n  },\n\n  /**\n   * Dismisses the most upper iOS action sheet presented, if no action sheet is\n   * present a warning is displayed.\n   */\n  dismissActionSheet: () => {\n    invariant(RCTActionSheetManager, \"ActionSheetManager doesn't exist\");\n    if (typeof RCTActionSheetManager.dismissActionSheet === 'function') {\n      RCTActionSheetManager.dismissActionSheet();\n    }\n  },\n};\n\nexport default ActionSheetIOS;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeActionSheetManager';\nimport NativeActionSheetManager from '../../src/private/specs_DEPRECATED/modules/NativeActionSheetManager';\n\nexport default NativeActionSheetManager;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {};\n  +showActionSheetWithOptions: (\n    options: {\n      +title?: ?string,\n      +message?: ?string,\n      +options: ?Array<string>,\n      +destructiveButtonIndices?: ?Array<number>,\n      +cancelButtonIndex?: ?number,\n      +anchor?: ?number,\n      +tintColor?: ?number,\n      +cancelButtonTintColor?: ?number,\n      +disabledButtonTintColor?: ?number,\n      +userInterfaceStyle?: ?string,\n      +disabledButtonIndices?: Array<number>,\n    },\n    callback: (buttonIndex: number) => void,\n  ) => void;\n  +showShareActionSheetWithOptions: (\n    options: {\n      +message?: ?string,\n      +url?: ?string,\n      +subject?: ?string,\n      +anchor?: ?number,\n      +tintColor?: ?number,\n      +cancelButtonTintColor?: ?number,\n      +disabledButtonTintColor?: ?number,\n      +excludedActivityTypes?: ?Array<string>,\n      +userInterfaceStyle?: ?string,\n    },\n    failureCallback: (error: {\n      +domain: string,\n      +code: string,\n      +userInfo?: ?Object,\n      +message: string,\n    }) => void,\n    successCallback: (completed: boolean, activityType: ?string) => void,\n  ) => void;\n  +dismissActionSheet?: () => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('ActionSheetManager'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {EventSubscription} from '../vendor/emitter/EventEmitter';\nimport type {AppearancePreferences, ColorSchemeName} from './NativeAppearance';\nimport typeof INativeAppearance from './NativeAppearance';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport EventEmitter from '../vendor/emitter/EventEmitter';\nimport invariant from 'invariant';\n\nexport type {AppearancePreferences};\n\ntype Appearance = {\n  colorScheme: ?ColorSchemeName,\n};\n\nlet lazyState: ?{\n  +NativeAppearance: INativeAppearance,\n  // Cache the color scheme to reduce the cost of reading it between changes.\n  // NOTE: If `NativeAppearance` is null, this will always be null.\n  appearance: ?Appearance,\n  // NOTE: This is non-nullable to make it easier for `onChangedListener` to\n  // return a non-nullable `EventSubscription` value. This is not the common\n  // path, so we do not have to over-optimize it.\n  +eventEmitter: EventEmitter<{change: [Appearance]}>,\n};\n\n/**\n * Ensures that all state and listeners are lazily initialized correctly.\n */\nfunction getState(): $NonMaybeType<typeof lazyState> {\n  if (lazyState != null) {\n    return lazyState;\n  }\n  const eventEmitter = new EventEmitter<{change: [Appearance]}>();\n  // NOTE: Avoid initializing `NativeAppearance` until it is actually used.\n  const NativeAppearance = require('./NativeAppearance').default;\n  if (NativeAppearance == null) {\n    // Assign `null` to avoid re-initializing on subsequent invocations.\n    lazyState = {\n      NativeAppearance: null,\n      appearance: null,\n      eventEmitter,\n    };\n  } else {\n    const state: $NonMaybeType<typeof lazyState> = {\n      NativeAppearance,\n      appearance: null,\n      eventEmitter,\n    };\n    new NativeEventEmitter<{\n      appearanceChanged: [AppearancePreferences],\n    }>(NativeAppearance).addListener('appearanceChanged', newAppearance => {\n      state.appearance = {\n        colorScheme: toColorScheme(newAppearance.colorScheme),\n      };\n      eventEmitter.emit('change', state.appearance);\n    });\n    lazyState = state;\n  }\n  return lazyState;\n}\n\n/**\n * Returns the current color scheme preference. This value may change, so the\n * value should not be cached without either listening to changes or using\n * the `useColorScheme` hook.\n */\nexport function getColorScheme(): ?ColorSchemeName {\n  let colorScheme = null;\n  const state = getState();\n  const {NativeAppearance} = state;\n  if (NativeAppearance != null) {\n    if (state.appearance == null) {\n      // Lazily initialize `state.appearance`. This should only\n      // happen once because we never reassign a null value to it.\n      state.appearance = {\n        colorScheme: toColorScheme(NativeAppearance.getColorScheme()),\n      };\n    }\n    colorScheme = state.appearance.colorScheme;\n  }\n  return colorScheme;\n}\n\n/**\n * Updates the current color scheme to the supplied value.\n */\nexport function setColorScheme(colorScheme: ?ColorSchemeName): void {\n  const state = getState();\n  const {NativeAppearance} = state;\n  if (NativeAppearance != null) {\n    NativeAppearance.setColorScheme(colorScheme ?? 'unspecified');\n    state.appearance = {\n      colorScheme: toColorScheme(NativeAppearance.getColorScheme()),\n    };\n  }\n}\n\n/**\n * Add an event handler that is fired when appearance preferences change.\n */\nexport function addChangeListener(\n  listener: ({colorScheme: ?ColorSchemeName}) => void,\n): EventSubscription {\n  const {eventEmitter} = getState();\n  return eventEmitter.addListener('change', listener);\n}\n\n/**\n * TODO: (hramos) T52919652 Use ?ColorSchemeName once codegen supports union\n */\nfunction toColorScheme(colorScheme: ?string): ?ColorSchemeName {\n  invariant(\n    colorScheme === 'dark' || colorScheme === 'light' || colorScheme == null,\n    \"Unrecognized color scheme. Did you mean 'dark', 'light' or null?\",\n  );\n  return colorScheme;\n}\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 * @flow strict\n * @format\n */\n\nexport type * from '../../src/private/specs_DEPRECATED/modules/NativeAppearance';\nimport NativeAppearance from '../../src/private/specs_DEPRECATED/modules/NativeAppearance';\n\nexport default NativeAppearance;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type ColorSchemeName = 'light' | 'dark' | 'unspecified';\n\nexport type AppearancePreferences = {\n  colorScheme?: ?ColorSchemeName,\n};\n\nexport interface Spec extends TurboModule {\n  +getColorScheme: () => ?ColorSchemeName;\n  +setColorScheme: (colorScheme: ColorSchemeName) => void;\n\n  // RCTEventEmitter\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('Appearance'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport logError from '../Utilities/logError';\nimport Platform from '../Utilities/Platform';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\nimport NativeAppState from './NativeAppState';\n\n/**\n * active - The app is running in the foreground\n * background - The app is running in the background. The user is either:\n *   - in another app\n *   - on the home screen\n *   - @platform android - on another Activity (even if it was launched by your app)\n * @platform ios - inactive - This is a state that occurs when transitioning between foreground & background, and during periods of inactivity such as entering the multitasking view, opening the Notification Center or in the event of an incoming call.\n */\nexport type AppStateStatus =\n  | 'inactive'\n  | 'background'\n  | 'active'\n  | 'extension'\n  | 'unknown';\n\n/**\n * change - This even is received when the app state has changed.\n * memoryWarning - This event is used in the need of throwing memory warning or releasing it.\n * @platform android - focus - Received when the app gains focus (the user is interacting with the app).\n * @platform android - blur - Received when the user is not actively interacting with the app.\n */\ntype AppStateEventDefinitions = {\n  change: [AppStateStatus],\n  memoryWarning: [],\n  blur: [],\n  focus: [],\n};\n\nexport type AppStateEvent = $Keys<AppStateEventDefinitions>;\n\ntype NativeAppStateEventDefinitions = {\n  appStateDidChange: [{app_state: AppStateStatus}],\n  appStateFocusChange: [boolean],\n  memoryWarning: [],\n};\n\n/**\n * `AppState` can tell you if the app is in the foreground or background,\n * and notify you when the state changes.\n *\n * See https://reactnative.dev/docs/appstate\n */\nclass AppStateImpl {\n  currentState: ?string = null;\n  isAvailable: boolean;\n\n  _emitter: ?NativeEventEmitter<NativeAppStateEventDefinitions>;\n\n  constructor() {\n    if (NativeAppState == null) {\n      this.isAvailable = false;\n    } else {\n      this.isAvailable = true;\n\n      const emitter: NativeEventEmitter<NativeAppStateEventDefinitions> =\n        new NativeEventEmitter(\n          // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior\n          // If you want to use the native module on other platforms, please remove this condition and test its behavior\n          Platform.OS !== 'ios' ? null : NativeAppState,\n        );\n      this._emitter = emitter;\n\n      this.currentState = NativeAppState.getConstants().initialAppState;\n\n      let eventUpdated = false;\n\n      // TODO: this is a terrible solution - in order to ensure `currentState`\n      // prop is up to date, we have to register an observer that updates it\n      // whenever the state changes, even if nobody cares. We should just\n      // deprecate the `currentState` property and get rid of this.\n      emitter.addListener('appStateDidChange', appStateData => {\n        eventUpdated = true;\n        this.currentState = appStateData.app_state;\n      });\n\n      // TODO: see above - this request just populates the value of `currentState`\n      // when the module is first initialized. Would be better to get rid of the\n      // prop and expose `getCurrentAppState` method directly.\n      // $FlowExpectedError[incompatible-call]\n      NativeAppState.getCurrentAppState(appStateData => {\n        // It's possible that the state will have changed here & listeners need to be notified\n        if (!eventUpdated && this.currentState !== appStateData.app_state) {\n          this.currentState = appStateData.app_state;\n          // $FlowFixMe[incompatible-call]\n          emitter.emit('appStateDidChange', appStateData);\n        }\n      }, logError);\n    }\n  }\n\n  /**\n   * Add a handler to AppState changes by listening to the `change` event type\n   * and providing the handler.\n   *\n   * See https://reactnative.dev/docs/appstate#addeventlistener\n   */\n  addEventListener<K: AppStateEvent>(\n    type: K,\n    handler: (...AppStateEventDefinitions[K]) => void,\n  ): EventSubscription {\n    const emitter = this._emitter;\n    if (emitter == null) {\n      throw new Error('Cannot use AppState when `isAvailable` is false.');\n    }\n    switch (type) {\n      case 'change':\n        // $FlowIssue[invalid-tuple-arity] Flow cannot refine handler based on the event type\n        const changeHandler: AppStateStatus => void = handler;\n        return emitter.addListener('appStateDidChange', appStateData => {\n          changeHandler(appStateData.app_state);\n        });\n      case 'memoryWarning':\n        // $FlowIssue[invalid-tuple-arity] Flow cannot refine handler based on the event type\n        const memoryWarningHandler: () => void = handler;\n        return emitter.addListener('memoryWarning', memoryWarningHandler);\n      case 'blur':\n      case 'focus':\n        // $FlowIssue[invalid-tuple-arity] Flow cannot refine handler based on the event type\n        const focusOrBlurHandler: () => void = handler;\n        return emitter.addListener('appStateFocusChange', hasFocus => {\n          if (type === 'blur' && !hasFocus) {\n            focusOrBlurHandler();\n          }\n          if (type === 'focus' && hasFocus) {\n            focusOrBlurHandler();\n          }\n        });\n    }\n    throw new Error('Trying to subscribe to unknown event: ' + type);\n  }\n}\n\nconst AppState: AppStateImpl = new AppStateImpl();\nexport default AppState;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * Small utility that can be used as an error handler. You cannot just pass\n * `console.error` as a failure callback - it's not properly bound.  If passes an\n * `Error` object, it will print the message and stack.\n */\nconst logError = function (...args: $ReadOnlyArray<mixed>) {\n  if (args.length === 1 && args[0] instanceof Error) {\n    const err = args[0];\n    console.error('Error: \"' + err.message + '\".  Stack:\\n' + err.stack);\n  } else {\n    console.error.apply(console, args);\n  }\n};\n\nexport default logError;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeAppState';\nimport NativeAppState from '../../src/private/specs_DEPRECATED/modules/NativeAppState';\n\nexport default NativeAppState;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type AppStateConstants = {\n  initialAppState: string,\n};\n\nexport type AppState = {app_state: string};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => AppStateConstants;\n  +getCurrentAppState: (\n    success: (appState: AppState) => void,\n    error: (error: Object) => void,\n  ) => void;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('AppState'): Spec);\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 * @flow strict\n * @format\n */\n\nimport NativeClipboard from './NativeClipboard';\n\n/**\n * `Clipboard` gives you an interface for setting and getting content from Clipboard on both iOS and Android\n */\nexport default {\n  /**\n   * Get content of string type, this method returns a `Promise`, so you can use following code to get clipboard content\n   * ```javascript\n   * async _getContent() {\n   *   var content = await Clipboard.getString();\n   * }\n   * ```\n   */\n  getString(): Promise<string> {\n    return NativeClipboard.getString();\n  },\n  /**\n   * Set content of string type. You can use following code to set clipboard content\n   * ```javascript\n   * _setContent() {\n   *   Clipboard.setString('hello world');\n   * }\n   * ```\n   * @param {string} content the content to be stored in the clipboard.\n   */\n  setString(content: string) {\n    NativeClipboard.setString(content);\n  },\n};\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeClipboard';\nexport {default} from '../../../src/private/specs_DEPRECATED/modules/NativeClipboard';\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {};\n  +getString: () => Promise<string>;\n  +setString: (content: string) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('Clipboard'): Spec);\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 * @flow strict-local\n * @format\n */\n\nexport type {DeviceInfoConstants} from './NativeDeviceInfo';\n\nimport NativeDeviceInfo from './NativeDeviceInfo';\n\nexport default NativeDeviceInfo;\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 * @flow strict-local\n * @format\n */\n\nimport NativeDevMenu from './specs/NativeDevMenu';\n\n/**\n * The DevMenu module exposes methods for interacting with the Dev Menu in development.\n */\ntype DevMenuStatic = {\n  /**\n   * Show the Dev Menu.\n   */\n  show(): void,\n};\n\nconst DevMenu: DevMenuStatic = {\n  show(): void {\n    if (__DEV__) {\n      NativeDevMenu.show?.();\n    }\n  },\n};\n\nexport default DevMenu;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +show: () => void;\n  +reload: () => void;\n  +setProfilingEnabled: (enabled: boolean) => void;\n  +setHotLoadingEnabled: (enabled: boolean) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('DevMenu'): Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {EventSubscription} from '../vendor/emitter/EventEmitter';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport NativeDevSettings from '../NativeModules/specs/NativeDevSettings';\nimport Platform from '../Utilities/Platform';\n\n/**\n * The DevSettings module exposes methods for customizing settings for developers in development.\n */\nlet DevSettings: {\n  /**\n   * Adds a custom menu item to the developer menu.\n   *\n   * @param title - The title of the menu item. Is internally used as id and should therefore be unique.\n   * @param handler - The callback invoked when pressing the menu item.\n   */\n  addMenuItem(title: string, handler: () => mixed): void,\n  /**\n   * Reload the application.\n   *\n   * @param reason\n   */\n  reload(reason?: string): void,\n  onFastRefresh(): void,\n} = {\n  addMenuItem(title: string, handler: () => mixed): void {},\n  reload(reason?: string): void {},\n  onFastRefresh(): void {},\n};\n\ntype DevSettingsEventDefinitions = {\n  didPressMenuItem: [{title: string}],\n};\n\nif (__DEV__) {\n  const emitter = new NativeEventEmitter<DevSettingsEventDefinitions>(\n    // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior\n    // If you want to use the native module on other platforms, please remove this condition and test its behavior\n    Platform.OS !== 'ios' ? null : NativeDevSettings,\n  );\n  const subscriptions = new Map<string, EventSubscription>();\n\n  DevSettings = {\n    addMenuItem(title: string, handler: () => mixed): void {\n      // Make sure items are not added multiple times. This can\n      // happen when hot reloading the module that registers the\n      // menu items. The title is used as the id which means we\n      // don't support multiple items with the same name.\n      let subscription = subscriptions.get(title);\n      if (subscription != null) {\n        subscription.remove();\n      } else {\n        NativeDevSettings.addMenuItem(title);\n      }\n\n      subscription = emitter.addListener('didPressMenuItem', event => {\n        if (event.title === title) {\n          handler();\n        }\n      });\n      subscriptions.set(title, subscription);\n    },\n    reload(reason?: string): void {\n      if (NativeDevSettings.reloadWithReason != null) {\n        NativeDevSettings.reloadWithReason(reason ?? 'Uncategorized from JS');\n      } else {\n        NativeDevSettings.reload();\n      }\n    },\n    onFastRefresh(): void {\n      NativeDevSettings.onFastRefresh?.();\n    },\n  };\n}\n\nexport default DevSettings;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeDevSettings';\nimport NativeDevSettings from '../../../src/private/specs_DEPRECATED/modules/NativeDevSettings';\n\nexport default NativeDevSettings;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +reload: () => void;\n  +reloadWithReason?: (reason: string) => void;\n  +onFastRefresh?: () => void;\n  +setHotLoadingEnabled: (isHotLoadingEnabled: boolean) => void;\n  +setProfilingEnabled: (isProfilingEnabled: boolean) => void;\n  +toggleElementInspector: () => void;\n  +addMenuItem: (title: string) => void;\n  +openDebugger?: () => void;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n\n  // iOS only.\n  +setIsShakeToShowDevMenuEnabled: (enabled: boolean) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('DevSettings'): Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {EventSubscription} from '../vendor/emitter/EventEmitter';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport Platform from '../Utilities/Platform';\nimport NativeIntentAndroid from './NativeIntentAndroid';\nimport NativeLinkingManager from './NativeLinkingManager';\nimport invariant from 'invariant';\nimport nullthrows from 'nullthrows';\n\ntype LinkingEventDefinitions = {\n  url: [{url: string}],\n};\n\nclass LinkingImpl extends NativeEventEmitter<LinkingEventDefinitions> {\n  constructor() {\n    super(Platform.OS === 'ios' ? nullthrows(NativeLinkingManager) : undefined);\n  }\n\n  /**\n   * Add a handler to Linking changes by listening to the `url` event type\n   * and providing the handler\n   *\n   * See https://reactnative.dev/docs/linking#addeventlistener\n   */\n  addEventListener<K: $Keys<LinkingEventDefinitions>>(\n    eventType: K,\n    listener: (...LinkingEventDefinitions[K]) => mixed,\n  ): EventSubscription {\n    return this.addListener(eventType, listener);\n  }\n\n  /**\n   * Try to open the given `url` with any of the installed apps.\n   *\n   * See https://reactnative.dev/docs/linking#openurl\n   */\n  openURL(url: string): Promise<void> {\n    this._validateURL(url);\n    if (Platform.OS === 'android') {\n      return nullthrows(NativeIntentAndroid).openURL(url);\n    } else {\n      return nullthrows(NativeLinkingManager).openURL(url);\n    }\n  }\n\n  /**\n   * Determine whether or not an installed app can handle a given URL.\n   *\n   * See https://reactnative.dev/docs/linking#canopenurl\n   */\n  canOpenURL(url: string): Promise<boolean> {\n    this._validateURL(url);\n    if (Platform.OS === 'android') {\n      return nullthrows(NativeIntentAndroid).canOpenURL(url);\n    } else {\n      return nullthrows(NativeLinkingManager).canOpenURL(url);\n    }\n  }\n\n  /**\n   * Open app settings.\n   *\n   * See https://reactnative.dev/docs/linking#opensettings\n   */\n  openSettings(): Promise<void> {\n    if (Platform.OS === 'android') {\n      return nullthrows(NativeIntentAndroid).openSettings();\n    } else {\n      return nullthrows(NativeLinkingManager).openSettings();\n    }\n  }\n\n  /**\n   * If the app launch was triggered by an app link,\n   * it will give the link url, otherwise it will give `null`\n   *\n   * See https://reactnative.dev/docs/linking#getinitialurl\n   */\n  getInitialURL(): Promise<?string> {\n    return Platform.OS === 'android'\n      ? nullthrows(NativeIntentAndroid).getInitialURL()\n      : nullthrows(NativeLinkingManager).getInitialURL();\n  }\n\n  /*\n   * Launch an Android intent with extras (optional)\n   *\n   * @platform android\n   *\n   * See https://reactnative.dev/docs/linking#sendintent\n   */\n  sendIntent(\n    action: string,\n    extras?: Array<{\n      key: string,\n      value: string | number | boolean,\n      ...\n    }>,\n  ): Promise<void> {\n    if (Platform.OS === 'android') {\n      return nullthrows(NativeIntentAndroid).sendIntent(action, extras);\n    } else {\n      return new Promise((resolve, reject) => reject(new Error('Unsupported')));\n    }\n  }\n\n  _validateURL(url: string): void {\n    invariant(\n      typeof url === 'string',\n      'Invalid URL: should be a string. Was: ' + url,\n    );\n    invariant(url, 'Invalid URL: cannot be empty');\n  }\n}\n\nconst Linking: LinkingImpl = new LinkingImpl();\n\n/**\n * `Linking` gives you a general interface to interact with both incoming\n * and outgoing app links.\n *\n * See https://reactnative.dev/docs/linking\n */\nexport default Linking;\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeIntentAndroid';\nimport NativeIntentAndroid from '../../src/private/specs_DEPRECATED/modules/NativeIntentAndroid';\n\nexport default NativeIntentAndroid;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getInitialURL: () => Promise<string>;\n  +canOpenURL: (url: string) => Promise<boolean>;\n  +openURL: (url: string) => Promise<void>;\n  +openSettings: () => Promise<void>;\n  +sendIntent: (\n    action: string,\n    extras: ?Array<{\n      key: string,\n      value: string | number | boolean, // TODO(T67672788): Union types are not type safe\n      ...\n    }>,\n  ) => Promise<void>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('IntentAndroid'): ?Spec);\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeLinkingManager';\nimport NativeLinkingManager from '../../src/private/specs_DEPRECATED/modules/NativeLinkingManager';\n\nexport default NativeLinkingManager;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  // Common interface\n  +getInitialURL: () => Promise<?string>;\n  +canOpenURL: (url: string) => Promise<boolean>;\n  +openURL: (url: string) => Promise<void>;\n  +openSettings: () => Promise<void>;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('LinkingManager'): ?Spec);\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 * @flow strict\n * @format\n */\n\nimport type {IgnorePattern, LogData} from './Data/LogBoxData';\nimport type {ExtendedExceptionData} from './Data/parseLogBoxLog';\n\nimport Platform from '../Utilities/Platform';\nimport RCTLog from '../Utilities/RCTLog';\nimport * as React from 'react';\n\nexport type {LogData, ExtendedExceptionData, IgnorePattern};\n\nlet LogBox;\n\ninterface ILogBox {\n  install(): void;\n  uninstall(): void;\n  isInstalled(): boolean;\n  ignoreLogs($ReadOnlyArray<IgnorePattern>): void;\n  ignoreAllLogs(value?: boolean): void;\n  clearAllLogs(): void;\n  addLog(log: LogData): void;\n  addConsoleLog(level: 'warn' | 'error', ...args: Array<mixed>): void;\n  addException(error: ExtendedExceptionData): void;\n}\n\n/**\n * LogBox displays logs in the app.\n */\nif (__DEV__) {\n  const LogBoxData = require('./Data/LogBoxData');\n  const {\n    parseLogBoxLog,\n    parseComponentStack,\n  } = require('./Data/parseLogBoxLog');\n\n  let originalConsoleWarn;\n  let consoleWarnImpl: (...args: Array<mixed>) => void;\n\n  let isLogBoxInstalled: boolean = false;\n\n  LogBox = {\n    install(): void {\n      if (isLogBoxInstalled) {\n        return;\n      }\n\n      isLogBoxInstalled = true;\n\n      if (global.RN$registerExceptionListener != null) {\n        global.RN$registerExceptionListener(\n          (error: ExtendedExceptionData & {preventDefault: () => mixed}) => {\n            if (global.RN$isRuntimeReady?.() || !error.isFatal) {\n              error.preventDefault();\n              addException(error);\n            }\n          },\n        );\n      }\n\n      // Trigger lazy initialization of module.\n      require('../NativeModules/specs/NativeLogBox');\n\n      // IMPORTANT: we only overwrite `console.error` and `console.warn` once.\n      // When we uninstall we keep the same reference and only change its\n      // internal implementation\n      const isFirstInstall = originalConsoleWarn == null;\n      if (isFirstInstall) {\n        // We only patch warning for legacy reasons.\n        // This will be removed in the future, once warnings\n        // are fully moved to fusebox. Error handling is done\n        // via the ExceptionManager.\n        originalConsoleWarn = console.warn.bind(console);\n\n        // $FlowExpectedError[cannot-write]\n        console.warn = (...args) => {\n          consoleWarnImpl(...args);\n        };\n      }\n\n      consoleWarnImpl = registerWarning;\n\n      if (Platform.isTesting) {\n        LogBoxData.setDisabled(true);\n      }\n\n      RCTLog.setWarningHandler((...args) => {\n        registerWarning(...args);\n      });\n    },\n\n    uninstall(): void {\n      if (!isLogBoxInstalled) {\n        return;\n      }\n\n      isLogBoxInstalled = false;\n\n      // IMPORTANT: we don't re-assign to `console` in case the method has been\n      // decorated again after installing LogBox. E.g.:\n      // Before uninstalling: original > LogBox > OtherErrorHandler\n      // After uninstalling:  original > LogBox (noop) > OtherErrorHandler\n      consoleWarnImpl = originalConsoleWarn;\n    },\n\n    isInstalled(): boolean {\n      return isLogBoxInstalled;\n    },\n\n    /**\n     * Silence any logs that match the given strings or regexes.\n     */\n    ignoreLogs(patterns: $ReadOnlyArray<IgnorePattern>): void {\n      LogBoxData.addIgnorePatterns(patterns);\n    },\n\n    /**\n     * Toggle error and warning notifications\n     * Note: this only disables notifications, uncaught errors will still open a full screen LogBox.\n     * @param ignore whether to ignore logs or not\n     */\n    ignoreAllLogs(value?: ?boolean): void {\n      LogBoxData.setDisabled(value == null ? true : value);\n    },\n\n    clearAllLogs(): void {\n      LogBoxData.clear();\n    },\n\n    addLog(log: LogData): void {\n      if (isLogBoxInstalled) {\n        LogBoxData.addLog(log);\n      }\n    },\n\n    addConsoleLog(level: 'warn' | 'error', ...args: Array<mixed>) {\n      if (isLogBoxInstalled) {\n        let filteredLevel: 'warn' | 'error' | 'fatal' = level;\n        try {\n          let format = args[0];\n          if (typeof format === 'string') {\n            const filterResult =\n              require('../LogBox/Data/LogBoxData').checkWarningFilter(\n                // For legacy reasons, we strip the warning prefix from the message.\n                // Can remove this once we remove the warning module altogether.\n                format.replace(/^Warning: /, ''),\n              );\n            if (filterResult.monitorEvent !== 'warning_unhandled') {\n              if (filterResult.suppressCompletely) {\n                return;\n              }\n\n              if (filterResult.suppressDialog_LEGACY === true) {\n                filteredLevel = 'warn';\n              } else if (filterResult.forceDialogImmediately === true) {\n                filteredLevel = 'fatal'; // Do not downgrade. These are real bugs with same severity as throws.\n              }\n              args[0] = filterResult.finalFormat;\n            }\n          }\n\n          const result = parseLogBoxLog(args);\n          const category = result.category;\n          const message = result.message;\n          let componentStackType = result.componentStackType;\n          let componentStack = result.componentStack;\n          if (\n            (!componentStack || componentStack.length === 0) &&\n            // $FlowExpectedError[prop-missing]\n            React.captureOwnerStack\n          ) {\n            const ownerStack = React.captureOwnerStack();\n            if (ownerStack != null && ownerStack.length > 0) {\n              const parsedComponentStack = parseComponentStack(ownerStack);\n              componentStack = parsedComponentStack.stack;\n              componentStackType = parsedComponentStack.type;\n            }\n          }\n          if (!LogBoxData.isMessageIgnored(message.content)) {\n            LogBoxData.addLog({\n              level: filteredLevel,\n              category,\n              message,\n              componentStack,\n              componentStackType,\n            });\n          }\n        } catch (err) {\n          LogBoxData.reportLogBoxError(err);\n        }\n      }\n    },\n\n    addException,\n  };\n\n  function addException(error: ExtendedExceptionData): void {\n    if (isLogBoxInstalled) {\n      LogBoxData.addException(error);\n    }\n  }\n\n  const isRCTLogAdviceWarning = (...args: Array<mixed>) => {\n    // RCTLogAdvice is a native logging function designed to show users\n    // a message in the console, but not show it to them in Logbox.\n    return typeof args[0] === 'string' && args[0].startsWith('(ADVICE)');\n  };\n\n  const registerWarning = (...args: Array<mixed>): void => {\n    // Let warnings within LogBox itself fall through.\n    if (LogBoxData.isLogBoxErrorMessage(String(args[0]))) {\n      return;\n    } else {\n      // Be sure to pass LogBox warnings through.\n      originalConsoleWarn(...args);\n    }\n\n    try {\n      if (!isRCTLogAdviceWarning(...args)) {\n        const {category, message, componentStack, componentStackType} =\n          parseLogBoxLog(args);\n\n        if (!LogBoxData.isMessageIgnored(message.content)) {\n          LogBoxData.addLog({\n            level: 'warn',\n            category,\n            message,\n            componentStack,\n            componentStackType,\n          });\n        }\n      }\n    } catch (err) {\n      LogBoxData.reportLogBoxError(err);\n    }\n  };\n} else {\n  LogBox = {\n    install(): void {\n      // Do nothing.\n    },\n\n    uninstall(): void {\n      // Do nothing.\n    },\n\n    isInstalled(): boolean {\n      return false;\n    },\n\n    ignoreLogs(patterns: $ReadOnlyArray<IgnorePattern>): void {\n      // Do nothing.\n    },\n\n    ignoreAllLogs(value?: ?boolean): void {\n      // Do nothing.\n    },\n\n    clearAllLogs(): void {\n      // Do nothing.\n    },\n\n    addLog(log: LogData): void {\n      // Do nothing.\n    },\n\n    addConsoleLog(level: 'warn' | 'error', ...args: Array<mixed>): void {\n      // Do nothing.\n    },\n\n    addException(error: ExtendedExceptionData): void {\n      // Do nothing.\n    },\n  };\n}\n\nexport default (LogBox: ILogBox);\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid';\nimport NativeDialogManagerAndroid from '../../../src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid';\n\nexport default NativeDialogManagerAndroid;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\n/* 'buttonClicked' | 'dismissed' */\ntype DialogAction = string;\n/*\n  buttonPositive = -1,\n  buttonNegative = -2,\n  buttonNeutral = -3\n*/\ntype DialogButtonKey = number;\nexport type DialogOptions = {\n  title?: string,\n  message?: string,\n  buttonPositive?: string,\n  buttonNegative?: string,\n  buttonNeutral?: string,\n  items?: Array<string>,\n  cancelable?: boolean,\n};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {\n    +buttonClicked: DialogAction,\n    +dismissed: DialogAction,\n    +buttonPositive: DialogButtonKey,\n    +buttonNegative: DialogButtonKey,\n    +buttonNeutral: DialogButtonKey,\n  };\n  +showAlert: (\n    config: DialogOptions,\n    onError: (error: string) => void,\n    onAction: (action: DialogAction, buttonKey?: DialogButtonKey) => void,\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('DialogManagerAndroid'): ?Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {GestureResponderEvent} from '../Types/CoreEventTypes';\n\nconst InteractionManager = require('./InteractionManager').default;\nconst TouchHistoryMath = require('./TouchHistoryMath').default;\n\nconst currentCentroidXOfTouchesChangedAfter =\n  TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nconst currentCentroidYOfTouchesChangedAfter =\n  TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nconst previousCentroidXOfTouchesChangedAfter =\n  TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nconst previousCentroidYOfTouchesChangedAfter =\n  TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nconst currentCentroidX = TouchHistoryMath.currentCentroidX;\nconst currentCentroidY = TouchHistoryMath.currentCentroidY;\n\n/**\n * `PanResponder` reconciles several touches into a single gesture. It makes\n * single-touch gestures resilient to extra touches, and can be used to\n * recognize simple multi-touch gestures.\n *\n * By default, `PanResponder` holds an `InteractionManager` handle to block\n * long-running JS events from interrupting active gestures.\n *\n * It provides a predictable wrapper of the responder handlers provided by the\n * [gesture responder system](docs/gesture-responder-system.html).\n * For each handler, it provides a new `gestureState` object alongside the\n * native event object:\n *\n * ```\n * onPanResponderMove: (event, gestureState) => {}\n * ```\n *\n * A native event is a synthetic touch event with the following form:\n *\n *  - `nativeEvent`\n *      + `changedTouches` - Array of all touch events that have changed since the last event\n *      + `identifier` - The ID of the touch\n *      + `locationX` - The X position of the touch, relative to the element\n *      + `locationY` - The Y position of the touch, relative to the element\n *      + `pageX` - The X position of the touch, relative to the root element\n *      + `pageY` - The Y position of the touch, relative to the root element\n *      + `target` - The node id of the element receiving the touch event\n *      + `timestamp` - A time identifier for the touch, useful for velocity calculation\n *      + `touches` - Array of all current touches on the screen\n *\n * A `gestureState` object has the following:\n *\n *  - `stateID` - ID of the gestureState- persisted as long as there at least\n *     one touch on screen\n *  - `moveX` - the latest screen coordinates of the recently-moved touch\n *  - `moveY` - the latest screen coordinates of the recently-moved touch\n *  - `x0` - the screen coordinates of the responder grant\n *  - `y0` - the screen coordinates of the responder grant\n *  - `dx` - accumulated distance of the gesture since the touch started\n *  - `dy` - accumulated distance of the gesture since the touch started\n *  - `vx` - current velocity of the gesture\n *  - `vy` - current velocity of the gesture\n *  - `numberActiveTouches` - Number of touches currently on screen\n *\n * ### Basic Usage\n *\n * ```\n *   componentWillMount: function() {\n *     this._panResponder = PanResponder.create({\n *       // Ask to be the responder:\n *       onStartShouldSetPanResponder: (evt, gestureState) => true,\n *       onStartShouldSetPanResponderCapture: (evt, gestureState) => true,\n *       onMoveShouldSetPanResponder: (evt, gestureState) => true,\n *       onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,\n *\n *       onPanResponderGrant: (evt, gestureState) => {\n *         // The gesture has started. Show visual feedback so the user knows\n *         // what is happening!\n *\n *         // gestureState.d{x,y} will be set to zero now\n *       },\n *       onPanResponderMove: (evt, gestureState) => {\n *         // The most recent move distance is gestureState.move{X,Y}\n *\n *         // The accumulated gesture distance since becoming responder is\n *         // gestureState.d{x,y}\n *       },\n *       onPanResponderTerminationRequest: (evt, gestureState) => true,\n *       onPanResponderRelease: (evt, gestureState) => {\n *         // The user has released all touches while this view is the\n *         // responder. This typically means a gesture has succeeded\n *       },\n *       onPanResponderTerminate: (evt, gestureState) => {\n *         // Another component has become the responder, so this gesture\n *         // should be cancelled\n *       },\n *       onShouldBlockNativeResponder: (evt, gestureState) => {\n *         // Returns whether this component should block native components from becoming the JS\n *         // responder. Returns true by default. Is currently only supported on android.\n *         return true;\n *       },\n *     });\n *   },\n *\n *   render: function() {\n *     return (\n *       <View {...this._panResponder.panHandlers} />\n *     );\n *   },\n *\n * ```\n *\n * ### Working Example\n *\n * To see it in action, try the\n * [PanResponder example in RNTester](https://github.com/facebook/react-native/blob/HEAD/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js)\n */\n\nexport type PanResponderGestureState = {\n  /**\n   * ID of the gestureState - persisted as long as there at least one touch on screen\n   */\n  stateID: number,\n\n  /**\n   * The latest screen coordinates of the recently-moved touch\n   */\n  moveX: number,\n\n  /**\n   * The latest screen coordinates of the recently-moved touch\n   */\n  moveY: number,\n\n  /**\n   * The screen coordinates of the responder grant\n   */\n  x0: number,\n\n  /**\n   * The screen coordinates of the responder grant\n   */\n  y0: number,\n\n  /**\n   * Accumulated distance of the gesture since the touch started\n   */\n  dx: number,\n\n  /**\n   * Accumulated distance of the gesture since the touch started\n   */\n  dy: number,\n\n  /**\n   * Current velocity of the gesture\n   */\n  vx: number,\n\n  /**\n   * Current velocity of the gesture\n   */\n  vy: number,\n\n  /**\n   * Number of touches currently on screen\n   */\n  numberActiveTouches: number,\n\n  /**\n   * All `gestureState` accounts for timeStamps up until this value\n   *\n   * @private\n   */\n  _accountsForMovesUpTo: number,\n};\n\ntype ActiveCallback = (\n  event: GestureResponderEvent,\n  gestureState: PanResponderGestureState,\n) => boolean;\n\ntype PassiveCallback = (\n  event: GestureResponderEvent,\n  gestureState: PanResponderGestureState,\n) => mixed;\n\nexport type GestureResponderHandlerMethods = {\n  onMoveShouldSetResponder: (event: GestureResponderEvent) => boolean,\n  onMoveShouldSetResponderCapture: (event: GestureResponderEvent) => boolean,\n  onResponderEnd: (event: GestureResponderEvent) => void,\n  onResponderGrant: (event: GestureResponderEvent) => boolean,\n  onResponderMove: (event: GestureResponderEvent) => void,\n  onResponderReject: (event: GestureResponderEvent) => void,\n  onResponderRelease: (event: GestureResponderEvent) => void,\n  onResponderStart: (event: GestureResponderEvent) => void,\n  onResponderTerminate: (event: GestureResponderEvent) => void,\n  onResponderTerminationRequest: (event: GestureResponderEvent) => boolean,\n  onStartShouldSetResponder: (event: GestureResponderEvent) => boolean,\n  onStartShouldSetResponderCapture: (event: GestureResponderEvent) => boolean,\n};\n\nexport type PanResponderCallbacks = $ReadOnly<{\n  onMoveShouldSetPanResponder?: ?ActiveCallback,\n  onMoveShouldSetPanResponderCapture?: ?ActiveCallback,\n  onStartShouldSetPanResponder?: ?ActiveCallback,\n  onStartShouldSetPanResponderCapture?: ?ActiveCallback,\n  /**\n   * The body of `onResponderGrant` returns a bool, but the vast majority of\n   * callsites return void and this TODO notice is found in it:\n   *   TODO: t7467124 investigate if this can be removed\n   */\n  onPanResponderGrant?: ?(PassiveCallback | ActiveCallback),\n  onPanResponderReject?: ?PassiveCallback,\n  onPanResponderStart?: ?PassiveCallback,\n  onPanResponderEnd?: ?PassiveCallback,\n  onPanResponderRelease?: ?PassiveCallback,\n  onPanResponderMove?: ?PassiveCallback,\n  onPanResponderTerminate?: ?PassiveCallback,\n  onPanResponderTerminationRequest?: ?ActiveCallback,\n  onShouldBlockNativeResponder?: ?ActiveCallback,\n}>;\n\nconst PanResponder = {\n  /**\n   *\n   * A graphical explanation of the touch data flow:\n   *\n   * +----------------------------+             +--------------------------------+\n   * | ResponderTouchHistoryStore |             |TouchHistoryMath                |\n   * +----------------------------+             +----------+---------------------+\n   * |Global store of touchHistory|             |Allocation-less math util       |\n   * |including activeness, start |             |on touch history (centroids     |\n   * |position, prev/cur position.|             |and multitouch movement etc)    |\n   * |                            |             |                                |\n   * +----^-----------------------+             +----^---------------------------+\n   *      |                                          |\n   *      | (records relevant history                |\n   *      |  of touches relevant for                 |\n   *      |  implementing higher level               |\n   *      |  gestures)                               |\n   *      |                                          |\n   * +----+-----------------------+             +----|---------------------------+\n   * | ResponderEventPlugin       |             |    |   Your App/Component      |\n   * +----------------------------+             +----|---------------------------+\n   * |Negotiates which view gets  | Low level   |    |             High level    |\n   * |onResponderMove events.     | events w/   |  +-+-------+     events w/     |\n   * |Also records history into   | touchHistory|  |   Pan   |     multitouch +  |\n   * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative|\n   * +----------------------------+ attached to |  |         |     distance and  |\n   *                                 each event |  +---------+     velocity.     |\n   *                                            |                                |\n   *                                            |                                |\n   *                                            +--------------------------------+\n   *\n   *\n   *\n   * Gesture that calculates cumulative movement over time in a way that just\n   * \"does the right thing\" for multiple touches. The \"right thing\" is very\n   * nuanced. When moving two touches in opposite directions, the cumulative\n   * distance is zero in each dimension. When two touches move in parallel five\n   * pixels in the same direction, the cumulative distance is five, not ten. If\n   * two touches start, one moves five in a direction, then stops and the other\n   * touch moves fives in the same direction, the cumulative distance is ten.\n   *\n   * This logic requires a kind of processing of time \"clusters\" of touch events\n   * so that two touch moves that essentially occur in parallel but move every\n   * other frame respectively, are considered part of the same movement.\n   *\n   * Explanation of some of the non-obvious fields:\n   *\n   * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is\n   *   invalid. If a move event has been observed, `(moveX, moveY)` is the\n   *   centroid of the most recently moved \"cluster\" of active touches.\n   *   (Currently all move have the same timeStamp, but later we should add some\n   *   threshold for what is considered to be \"moving\"). If a palm is\n   *   accidentally counted as a touch, but a finger is moving greatly, the palm\n   *   will move slightly, but we only want to count the single moving touch.\n   * - x0/y0: Centroid location (non-cumulative) at the time of becoming\n   *   responder.\n   * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch\n   *   distance. Accounts for touch moves that are clustered together in time,\n   *   moving the same direction. Only valid when currently responder (otherwise,\n   *   it only represents the drag distance below the threshold).\n   * - vx/vy: Velocity.\n   */\n\n  _initializeGestureState(gestureState: PanResponderGestureState) {\n    gestureState.moveX = 0;\n    gestureState.moveY = 0;\n    gestureState.x0 = 0;\n    gestureState.y0 = 0;\n    gestureState.dx = 0;\n    gestureState.dy = 0;\n    gestureState.vx = 0;\n    gestureState.vy = 0;\n    gestureState.numberActiveTouches = 0;\n    // All `gestureState` accounts for timeStamps up until:\n    gestureState._accountsForMovesUpTo = 0;\n  },\n\n  /**\n   * This is nuanced and is necessary. It is incorrect to continuously take all\n   * active *and* recently moved touches, find the centroid, and track how that\n   * result changes over time. Instead, we must take all recently moved\n   * touches, and calculate how the centroid has changed just for those\n   * recently moved touches, and append that change to an accumulator. This is\n   * to (at least) handle the case where the user is moving three fingers, and\n   * then one of the fingers stops but the other two continue.\n   *\n   * This is very different than taking all of the recently moved touches and\n   * storing their centroid as `dx/dy`. For correctness, we must *accumulate\n   * changes* in the centroid of recently moved touches.\n   *\n   * There is also some nuance with how we handle multiple moved touches in a\n   * single event. With the way `ReactNativeEventEmitter` dispatches touches as\n   * individual events, multiple touches generate two 'move' events, each of\n   * them triggering `onResponderMove`. But with the way `PanResponder` works,\n   * all of the gesture inference is performed on the first dispatch, since it\n   * looks at all of the touches (even the ones for which there hasn't been a\n   * native dispatch yet). Therefore, `PanResponder` does not call\n   * `onResponderMove` passed the first dispatch. This diverges from the\n   * typical responder callback pattern (without using `PanResponder`), but\n   * avoids more dispatches than necessary.\n   */\n  _updateGestureStateOnMove(\n    gestureState: PanResponderGestureState,\n    touchHistory: GestureResponderEvent['touchHistory'],\n  ) {\n    gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n    gestureState.moveX = currentCentroidXOfTouchesChangedAfter(\n      touchHistory,\n      gestureState._accountsForMovesUpTo,\n    );\n    gestureState.moveY = currentCentroidYOfTouchesChangedAfter(\n      touchHistory,\n      gestureState._accountsForMovesUpTo,\n    );\n    const movedAfter = gestureState._accountsForMovesUpTo;\n    const prevX = previousCentroidXOfTouchesChangedAfter(\n      touchHistory,\n      movedAfter,\n    );\n    const x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n    const prevY = previousCentroidYOfTouchesChangedAfter(\n      touchHistory,\n      movedAfter,\n    );\n    const y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n    const nextDX = gestureState.dx + (x - prevX);\n    const nextDY = gestureState.dy + (y - prevY);\n\n    // TODO: This must be filtered intelligently.\n    const dt =\n      touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;\n    gestureState.vx = (nextDX - gestureState.dx) / dt;\n    gestureState.vy = (nextDY - gestureState.dy) / dt;\n\n    gestureState.dx = nextDX;\n    gestureState.dy = nextDY;\n    gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;\n  },\n\n  /**\n   * @param {object} config Enhanced versions of all of the responder callbacks\n   * that provide not only the typical `ResponderSyntheticEvent`, but also the\n   * `PanResponder` gesture state.  Simply replace the word `Responder` with\n   * `PanResponder` in each of the typical `onResponder*` callbacks. For\n   * example, the `config` object would look like:\n   *\n   *  - `onMoveShouldSetPanResponder: (e, gestureState) => {...}`\n   *  - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}`\n   *  - `onStartShouldSetPanResponder: (e, gestureState) => {...}`\n   *  - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}`\n   *  - `onPanResponderReject: (e, gestureState) => {...}`\n   *  - `onPanResponderGrant: (e, gestureState) => {...}`\n   *  - `onPanResponderStart: (e, gestureState) => {...}`\n   *  - `onPanResponderEnd: (e, gestureState) => {...}`\n   *  - `onPanResponderRelease: (e, gestureState) => {...}`\n   *  - `onPanResponderMove: (e, gestureState) => {...}`\n   *  - `onPanResponderTerminate: (e, gestureState) => {...}`\n   *  - `onPanResponderTerminationRequest: (e, gestureState) => {...}`\n   *  - `onShouldBlockNativeResponder: (e, gestureState) => {...}`\n   *\n   *  In general, for events that have capture equivalents, we update the\n   *  gestureState once in the capture phase and can use it in the bubble phase\n   *  as well.\n   *\n   *  Be careful with onStartShould* callbacks. They only reflect updated\n   *  `gestureState` for start/end events that bubble/capture to the Node.\n   *  Once the node is the responder, you can rely on every start/end event\n   *  being processed by the gesture and `gestureState` being updated\n   *  accordingly. (numberActiveTouches) may not be totally accurate unless you\n   *  are the responder.\n   */\n  create(config: PanResponderCallbacks): {\n    getInteractionHandle: () => ?number,\n    panHandlers: GestureResponderHandlerMethods,\n  } {\n    const interactionState = {\n      handle: (null: ?number),\n    };\n    const gestureState: PanResponderGestureState = {\n      // Useful for debugging\n      stateID: Math.random(),\n      moveX: 0,\n      moveY: 0,\n      x0: 0,\n      y0: 0,\n      dx: 0,\n      dy: 0,\n      vx: 0,\n      vy: 0,\n      numberActiveTouches: 0,\n      _accountsForMovesUpTo: 0,\n    };\n    const panHandlers = {\n      onStartShouldSetResponder(event: GestureResponderEvent): boolean {\n        return config.onStartShouldSetPanResponder == null\n          ? false\n          : config.onStartShouldSetPanResponder(event, gestureState);\n      },\n      onMoveShouldSetResponder(event: GestureResponderEvent): boolean {\n        return config.onMoveShouldSetPanResponder == null\n          ? false\n          : config.onMoveShouldSetPanResponder(event, gestureState);\n      },\n      onStartShouldSetResponderCapture(event: GestureResponderEvent): boolean {\n        // TODO: Actually, we should reinitialize the state any time\n        // touches.length increases from 0 active to > 0 active.\n        if (event.nativeEvent.touches.length === 1) {\n          PanResponder._initializeGestureState(gestureState);\n        }\n        gestureState.numberActiveTouches =\n          event.touchHistory.numberActiveTouches;\n        return config.onStartShouldSetPanResponderCapture != null\n          ? config.onStartShouldSetPanResponderCapture(event, gestureState)\n          : false;\n      },\n\n      onMoveShouldSetResponderCapture(event: GestureResponderEvent): boolean {\n        const touchHistory = event.touchHistory;\n        // Responder system incorrectly dispatches should* to current responder\n        // Filter out any touch moves past the first one - we would have\n        // already processed multi-touch geometry during the first event.\n        if (\n          gestureState._accountsForMovesUpTo ===\n          touchHistory.mostRecentTimeStamp\n        ) {\n          return false;\n        }\n        PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n        return config.onMoveShouldSetPanResponderCapture\n          ? config.onMoveShouldSetPanResponderCapture(event, gestureState)\n          : false;\n      },\n\n      onResponderGrant(event: GestureResponderEvent): boolean {\n        if (!interactionState.handle) {\n          interactionState.handle =\n            InteractionManager.createInteractionHandle();\n        }\n        gestureState.x0 = currentCentroidX(event.touchHistory);\n        gestureState.y0 = currentCentroidY(event.touchHistory);\n        gestureState.dx = 0;\n        gestureState.dy = 0;\n        if (config.onPanResponderGrant) {\n          config.onPanResponderGrant(event, gestureState);\n        }\n        // TODO: t7467124 investigate if this can be removed\n        return config.onShouldBlockNativeResponder == null\n          ? true\n          : config.onShouldBlockNativeResponder(event, gestureState);\n      },\n\n      onResponderReject(event: GestureResponderEvent): void {\n        clearInteractionHandle(\n          interactionState,\n          config.onPanResponderReject,\n          event,\n          gestureState,\n        );\n      },\n\n      onResponderRelease(event: GestureResponderEvent): void {\n        clearInteractionHandle(\n          interactionState,\n          config.onPanResponderRelease,\n          event,\n          gestureState,\n        );\n        PanResponder._initializeGestureState(gestureState);\n      },\n\n      onResponderStart(event: GestureResponderEvent): void {\n        const touchHistory = event.touchHistory;\n        gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n        if (config.onPanResponderStart) {\n          config.onPanResponderStart(event, gestureState);\n        }\n      },\n\n      onResponderMove(event: GestureResponderEvent): void {\n        const touchHistory = event.touchHistory;\n        // Guard against the dispatch of two touch moves when there are two\n        // simultaneously changed touches.\n        if (\n          gestureState._accountsForMovesUpTo ===\n          touchHistory.mostRecentTimeStamp\n        ) {\n          return;\n        }\n        // Filter out any touch moves past the first one - we would have\n        // already processed multi-touch geometry during the first event.\n        PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n        if (config.onPanResponderMove) {\n          config.onPanResponderMove(event, gestureState);\n        }\n      },\n\n      onResponderEnd(event: GestureResponderEvent): void {\n        const touchHistory = event.touchHistory;\n        gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n        clearInteractionHandle(\n          interactionState,\n          config.onPanResponderEnd,\n          event,\n          gestureState,\n        );\n      },\n\n      onResponderTerminate(event: GestureResponderEvent): void {\n        clearInteractionHandle(\n          interactionState,\n          config.onPanResponderTerminate,\n          event,\n          gestureState,\n        );\n        PanResponder._initializeGestureState(gestureState);\n      },\n\n      onResponderTerminationRequest(event: GestureResponderEvent): boolean {\n        return config.onPanResponderTerminationRequest == null\n          ? true\n          : config.onPanResponderTerminationRequest(event, gestureState);\n      },\n    };\n    return {\n      panHandlers,\n      getInteractionHandle(): ?number {\n        return interactionState.handle;\n      },\n    };\n  },\n};\n\nfunction clearInteractionHandle(\n  interactionState: {handle: ?number, ...},\n  callback: ?(ActiveCallback | PassiveCallback),\n  event: GestureResponderEvent,\n  gestureState: PanResponderGestureState,\n) {\n  if (interactionState.handle) {\n    InteractionManager.clearInteractionHandle(interactionState.handle);\n    interactionState.handle = null;\n  }\n  if (callback) {\n    callback(event, gestureState);\n  }\n}\n\nexport type PanResponderInstance = ReturnType<(typeof PanResponder)['create']>;\n\nexport default PanResponder;\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 * @flow strict-local\n * @format\n */\n\n// $FlowFixMe[definition-cycle]\n// $FlowFixMe[recursive-definition]\nconst TouchHistoryMath = {\n  /**\n   * This code is optimized and not intended to look beautiful. This allows\n   * computing of touch centroids that have moved after `touchesChangedAfter`\n   * timeStamp. You can compute the current centroid involving all touches\n   * moves after `touchesChangedAfter`, or you can compute the previous\n   * centroid of all touches that were moved after `touchesChangedAfter`.\n   *\n   * @param {TouchHistoryMath} touchHistory Standard Responder touch track\n   * data.\n   * @param {number} touchesChangedAfter timeStamp after which moved touches\n   * are considered \"actively moving\" - not just \"active\".\n   * @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension.\n   * @param {boolean} ofCurrent Compute current centroid for actively moving\n   * touches vs. previous centroid of now actively moving touches.\n   * @return {number} value of centroid in specified dimension.\n   */\n  centroidDimension: function (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n    isXAxis: boolean,\n    ofCurrent: boolean,\n  ): number {\n    const touchBank = touchHistory.touchBank;\n    let total = 0;\n    let count = 0;\n\n    const oneTouchData =\n      touchHistory.numberActiveTouches === 1\n        ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch]\n        : null;\n\n    if (oneTouchData !== null) {\n      if (\n        oneTouchData.touchActive &&\n        oneTouchData.currentTimeStamp > touchesChangedAfter\n      ) {\n        total +=\n          ofCurrent && isXAxis\n            ? oneTouchData.currentPageX\n            : ofCurrent && !isXAxis\n              ? oneTouchData.currentPageY\n              : !ofCurrent && isXAxis\n                ? oneTouchData.previousPageX\n                : oneTouchData.previousPageY;\n        count = 1;\n      }\n    } else {\n      for (let i = 0; i < touchBank.length; i++) {\n        const touchTrack = touchBank[i];\n        if (\n          touchTrack !== null &&\n          touchTrack !== undefined &&\n          touchTrack.touchActive &&\n          touchTrack.currentTimeStamp >= touchesChangedAfter\n        ) {\n          let toAdd; // Yuck, program temporarily in invalid state.\n          if (ofCurrent && isXAxis) {\n            toAdd = touchTrack.currentPageX;\n          } else if (ofCurrent && !isXAxis) {\n            toAdd = touchTrack.currentPageY;\n          } else if (!ofCurrent && isXAxis) {\n            toAdd = touchTrack.previousPageX;\n          } else {\n            toAdd = touchTrack.previousPageY;\n          }\n          total += toAdd;\n          count++;\n        }\n      }\n    }\n    return count > 0 ? total / count : TouchHistoryMath.noCentroid;\n  },\n\n  currentCentroidXOfTouchesChangedAfter: function (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n  ): number {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      touchesChangedAfter,\n      true, // isXAxis\n      true, // ofCurrent\n    );\n  },\n\n  currentCentroidYOfTouchesChangedAfter: function (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n  ): number {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      touchesChangedAfter,\n      false, // isXAxis\n      true, // ofCurrent\n    );\n  },\n\n  previousCentroidXOfTouchesChangedAfter: function (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n  ): number {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      touchesChangedAfter,\n      true, // isXAxis\n      false, // ofCurrent\n    );\n  },\n\n  previousCentroidYOfTouchesChangedAfter: function (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n  ): number {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      touchesChangedAfter,\n      false, // isXAxis\n      false, // ofCurrent\n    );\n  },\n\n  currentCentroidX: function (touchHistory: TouchHistoryMath): number {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      0, // touchesChangedAfter\n      true, // isXAxis\n      true, // ofCurrent\n    );\n  },\n\n  currentCentroidY: function (touchHistory: TouchHistoryMath): number {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      0, // touchesChangedAfter\n      false, // isXAxis\n      true, // ofCurrent\n    );\n  },\n\n  noCentroid: -1,\n} as {\n  centroidDimension: (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n    isXAxis: boolean,\n    ofCurrent: boolean,\n  ) => number,\n  currentCentroidXOfTouchesChangedAfter: (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n  ) => number,\n  currentCentroidYOfTouchesChangedAfter: (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n  ) => number,\n  previousCentroidXOfTouchesChangedAfter: (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n  ) => number,\n  previousCentroidYOfTouchesChangedAfter: (\n    touchHistory: TouchHistoryMath,\n    touchesChangedAfter: number,\n  ) => number,\n  currentCentroidX: (touchHistory: TouchHistoryMath) => number,\n  currentCentroidY: (touchHistory: TouchHistoryMath) => number,\n  noCentroid: number,\n};\n\nexport default TouchHistoryMath;\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 * @flow strict\n * @format\n */\n\nimport NativeDialogManagerAndroid from '../NativeModules/specs/NativeDialogManagerAndroid';\nimport NativePermissionsAndroid from './NativePermissionsAndroid';\nimport invariant from 'invariant';\n\nconst Platform = require('../Utilities/Platform').default;\n\nexport type Rationale = {\n  title: string,\n  message: string,\n  buttonPositive?: string,\n  buttonNegative?: string,\n  buttonNeutral?: string,\n  ...\n};\n\nconst PERMISSION_REQUEST_RESULT = Object.freeze({\n  GRANTED: 'granted',\n  DENIED: 'denied',\n  NEVER_ASK_AGAIN: 'never_ask_again',\n});\n\ntype PermissionsType = $ReadOnly<{\n  READ_CALENDAR: 'android.permission.READ_CALENDAR',\n  WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',\n  CAMERA: 'android.permission.CAMERA',\n  READ_CONTACTS: 'android.permission.READ_CONTACTS',\n  WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',\n  GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS',\n  ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',\n  ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',\n  ACCESS_BACKGROUND_LOCATION: 'android.permission.ACCESS_BACKGROUND_LOCATION',\n  RECORD_AUDIO: 'android.permission.RECORD_AUDIO',\n  READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',\n  CALL_PHONE: 'android.permission.CALL_PHONE',\n  READ_CALL_LOG: 'android.permission.READ_CALL_LOG',\n  WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG',\n  ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL',\n  READ_VOICEMAIL: 'com.android.voicemail.permission.READ_VOICEMAIL',\n  WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL',\n  USE_SIP: 'android.permission.USE_SIP',\n  PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS',\n  BODY_SENSORS: 'android.permission.BODY_SENSORS',\n  BODY_SENSORS_BACKGROUND: 'android.permission.BODY_SENSORS_BACKGROUND',\n  SEND_SMS: 'android.permission.SEND_SMS',\n  RECEIVE_SMS: 'android.permission.RECEIVE_SMS',\n  READ_SMS: 'android.permission.READ_SMS',\n  RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH',\n  RECEIVE_MMS: 'android.permission.RECEIVE_MMS',\n  READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',\n  READ_MEDIA_IMAGES: 'android.permission.READ_MEDIA_IMAGES',\n  READ_MEDIA_VIDEO: 'android.permission.READ_MEDIA_VIDEO',\n  READ_MEDIA_AUDIO: 'android.permission.READ_MEDIA_AUDIO',\n  READ_MEDIA_VISUAL_USER_SELECTED: 'android.permission.READ_MEDIA_VISUAL_USER_SELECTED',\n  WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',\n  BLUETOOTH_CONNECT: 'android.permission.BLUETOOTH_CONNECT',\n  BLUETOOTH_SCAN: 'android.permission.BLUETOOTH_SCAN',\n  BLUETOOTH_ADVERTISE: 'android.permission.BLUETOOTH_ADVERTISE',\n  ACCESS_MEDIA_LOCATION: 'android.permission.ACCESS_MEDIA_LOCATION',\n  ACCEPT_HANDOVER: 'android.permission.ACCEPT_HANDOVER',\n  ACTIVITY_RECOGNITION: 'android.permission.ACTIVITY_RECOGNITION',\n  ANSWER_PHONE_CALLS: 'android.permission.ANSWER_PHONE_CALLS',\n  READ_PHONE_NUMBERS: 'android.permission.READ_PHONE_NUMBERS',\n  UWB_RANGING: 'android.permission.UWB_RANGING',\n  POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS',\n  NEARBY_WIFI_DEVICES: 'android.permission.NEARBY_WIFI_DEVICES',\n}>;\n\nexport type PermissionStatus = 'granted' | 'denied' | 'never_ask_again';\nexport type Permission = $Values<PermissionsType>;\n\nconst PERMISSIONS = Object.freeze({\n  READ_CALENDAR: 'android.permission.READ_CALENDAR',\n  WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',\n  CAMERA: 'android.permission.CAMERA',\n  READ_CONTACTS: 'android.permission.READ_CONTACTS',\n  WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',\n  GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS',\n  ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',\n  ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',\n  ACCESS_BACKGROUND_LOCATION: 'android.permission.ACCESS_BACKGROUND_LOCATION',\n  RECORD_AUDIO: 'android.permission.RECORD_AUDIO',\n  READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',\n  CALL_PHONE: 'android.permission.CALL_PHONE',\n  READ_CALL_LOG: 'android.permission.READ_CALL_LOG',\n  WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG',\n  ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL',\n  READ_VOICEMAIL: 'com.android.voicemail.permission.READ_VOICEMAIL',\n  WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL',\n  USE_SIP: 'android.permission.USE_SIP',\n  PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS',\n  BODY_SENSORS: 'android.permission.BODY_SENSORS',\n  BODY_SENSORS_BACKGROUND: 'android.permission.BODY_SENSORS_BACKGROUND',\n  SEND_SMS: 'android.permission.SEND_SMS',\n  RECEIVE_SMS: 'android.permission.RECEIVE_SMS',\n  READ_SMS: 'android.permission.READ_SMS',\n  RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH',\n  RECEIVE_MMS: 'android.permission.RECEIVE_MMS',\n  READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',\n  READ_MEDIA_IMAGES: 'android.permission.READ_MEDIA_IMAGES',\n  READ_MEDIA_VIDEO: 'android.permission.READ_MEDIA_VIDEO',\n  READ_MEDIA_AUDIO: 'android.permission.READ_MEDIA_AUDIO',\n  READ_MEDIA_VISUAL_USER_SELECTED:\n    'android.permission.READ_MEDIA_VISUAL_USER_SELECTED',\n  WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',\n  BLUETOOTH_CONNECT: 'android.permission.BLUETOOTH_CONNECT',\n  BLUETOOTH_SCAN: 'android.permission.BLUETOOTH_SCAN',\n  BLUETOOTH_ADVERTISE: 'android.permission.BLUETOOTH_ADVERTISE',\n  ACCESS_MEDIA_LOCATION: 'android.permission.ACCESS_MEDIA_LOCATION',\n  ACCEPT_HANDOVER: 'android.permission.ACCEPT_HANDOVER',\n  ACTIVITY_RECOGNITION: 'android.permission.ACTIVITY_RECOGNITION',\n  ANSWER_PHONE_CALLS: 'android.permission.ANSWER_PHONE_CALLS',\n  READ_PHONE_NUMBERS: 'android.permission.READ_PHONE_NUMBERS',\n  UWB_RANGING: 'android.permission.UWB_RANGING',\n  POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS',\n  NEARBY_WIFI_DEVICES: 'android.permission.NEARBY_WIFI_DEVICES',\n}) as PermissionsType;\n\n/**\n * `PermissionsAndroid` provides access to Android M's new permissions model.\n *\n * See https://reactnative.dev/docs/permissionsandroid\n */\nclass PermissionsAndroidImpl {\n  PERMISSIONS: PermissionsType = PERMISSIONS;\n  RESULTS: $ReadOnly<{\n    DENIED: 'denied',\n    GRANTED: 'granted',\n    NEVER_ASK_AGAIN: 'never_ask_again',\n  }> = PERMISSION_REQUEST_RESULT;\n\n  /**\n   * DEPRECATED - use check\n   *\n   * Returns a promise resolving to a boolean value as to whether the specified\n   * permissions has been granted\n   *\n   * @deprecated\n   */\n  checkPermission(permission: Permission): Promise<boolean> {\n    console.warn(\n      '\"PermissionsAndroid.checkPermission\" is deprecated. Use \"PermissionsAndroid.check\" instead',\n    );\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve(false);\n    }\n\n    invariant(\n      NativePermissionsAndroid,\n      'PermissionsAndroid is not installed correctly.',\n    );\n\n    return NativePermissionsAndroid.checkPermission(permission);\n  }\n\n  /**\n   * Returns a promise resolving to a boolean value as to whether the specified\n   * permissions has been granted\n   *\n   * See https://reactnative.dev/docs/permissionsandroid#check\n   */\n  check(permission: Permission): Promise<boolean> {\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve(false);\n    }\n\n    invariant(\n      NativePermissionsAndroid,\n      'PermissionsAndroid is not installed correctly.',\n    );\n\n    return NativePermissionsAndroid.checkPermission(permission);\n  }\n\n  /**\n   * DEPRECATED - use request\n   *\n   * Prompts the user to enable a permission and returns a promise resolving to a\n   * boolean value indicating whether the user allowed or denied the request\n   *\n   * If the optional rationale argument is included (which is an object with a\n   * `title` and `message`), this function checks with the OS whether it is\n   * necessary to show a dialog explaining why the permission is needed\n   * (https://developer.android.com/training/permissions/requesting#explain)\n   * and then shows the system permission dialog\n   *\n   * @deprecated\n   */\n  async requestPermission(\n    permission: Permission,\n    rationale?: Rationale,\n  ): Promise<boolean> {\n    console.warn(\n      '\"PermissionsAndroid.requestPermission\" is deprecated. Use \"PermissionsAndroid.request\" instead',\n    );\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve(false);\n    }\n\n    const response = await this.request(permission, rationale);\n    return response === this.RESULTS.GRANTED;\n  }\n\n  /**\n   * Prompts the user to enable a permission and returns a promise resolving to a\n   * string value indicating whether the user allowed or denied the request\n   *\n   * See https://reactnative.dev/docs/permissionsandroid#request\n   */\n  async request(\n    permission: Permission,\n    rationale?: Rationale,\n  ): Promise<PermissionStatus> {\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve(this.RESULTS.DENIED);\n    }\n\n    invariant(\n      NativePermissionsAndroid,\n      'PermissionsAndroid is not installed correctly.',\n    );\n\n    if (rationale) {\n      const shouldShowRationale =\n        await NativePermissionsAndroid.shouldShowRequestPermissionRationale(\n          permission,\n        );\n\n      if (shouldShowRationale && !!NativeDialogManagerAndroid) {\n        return new Promise((resolve, reject) => {\n          const options = {\n            ...rationale,\n          };\n          NativeDialogManagerAndroid.showAlert(\n            /* $FlowFixMe[incompatible-exact] (>=0.111.0 site=react_native_fb)\n             * This comment suppresses an error found when Flow v0.111 was\n             * deployed. To see the error, delete this comment and run Flow.\n             */\n            options,\n            () => reject(new Error('Error showing rationale')),\n            () =>\n              // $FlowFixMe[incompatible-call]\n              resolve(NativePermissionsAndroid.requestPermission(permission)),\n          );\n        });\n      }\n    }\n    // $FlowFixMe[incompatible-return]\n    return NativePermissionsAndroid.requestPermission(permission);\n  }\n\n  /**\n   * Prompts the user to enable multiple permissions in the same dialog and\n   * returns an object with the permissions as keys and strings as values\n   * indicating whether the user allowed or denied the request\n   *\n   * See https://reactnative.dev/docs/permissionsandroid#requestmultiple\n   */\n  requestMultiple(\n    permissions: Array<Permission>,\n  ): Promise<{[permission: Permission]: PermissionStatus, ...}> {\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve({});\n    }\n\n    invariant(\n      NativePermissionsAndroid,\n      'PermissionsAndroid is not installed correctly.',\n    );\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[incompatible-call]\n    return NativePermissionsAndroid.requestMultiplePermissions(permissions);\n  }\n}\n\nconst PermissionsAndroidInstance: PermissionsAndroidImpl =\n  new PermissionsAndroidImpl();\nexport default PermissionsAndroidInstance;\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativePermissionsAndroid';\nimport NativePermissionsAndroid from '../../src/private/specs_DEPRECATED/modules/NativePermissionsAndroid';\n\nexport default NativePermissionsAndroid;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\n// TODO: Use proper enum types.\nexport type PermissionStatus = string;\nexport type PermissionType = string;\n\n/*\nexport type PermissionStatus = 'granted' | 'denied' | 'never_ask_again';\nexport type PermissionType =\n  | 'android.permission.READ_CALENDAR'\n  | 'android.permission.WRITE_CALENDAR'\n  | 'android.permission.CAMERA'\n  | 'android.permission.READ_CONTACTS'\n  | 'android.permission.WRITE_CONTACTS'\n  | 'android.permission.GET_ACCOUNTS'\n  | 'android.permission.ACCESS_BACKGROUND_LOCATION'\n  | 'android.permission.ACCESS_FINE_LOCATION'\n  | 'android.permission.ACCESS_COARSE_LOCATION'\n  | 'android.permission.RECORD_AUDIO'\n  | 'android.permission.READ_PHONE_STATE'\n  | 'android.permission.CALL_PHONE'\n  | 'android.permission.READ_CALL_LOG'\n  | 'android.permission.WRITE_CALL_LOG'\n  | 'com.android.voicemail.permission.ADD_VOICEMAIL'\n  | 'com.android.voicemail.permission.READ_VOICEMAIL'\n  | 'com.android.voicemail.permission.WRITE_VOICEMAIL'\n  | 'android.permission.USE_SIP'\n  | 'android.permission.PROCESS_OUTGOING_CALLS'\n  | 'android.permission.BODY_SENSORS'\n  | 'android.permission.BODY_SENSORS_BACKGROUND'\n  | 'android.permission.SEND_SMS'\n  | 'android.permission.RECEIVE_SMS'\n  | 'android.permission.READ_SMS'\n  | 'android.permission.RECEIVE_WAP_PUSH'\n  | 'android.permission.RECEIVE_MMS'\n  | 'android.permission.READ_EXTERNAL_STORAGE'\n  | 'android.permission.READ_MEDIA_IMAGES'\n  | 'android.permission.READ_MEDIA_VIDEO'\n  | 'android.permission.READ_MEDIA_AUDIO'\n  | 'android.permission.READ_MEDIA_VISUAL_USER_SELECTED'\n  | 'android.permission.WRITE_EXTERNAL_STORAGE'\n  | 'android.permission.BLUETOOTH_CONNECT'\n  | 'android.permission.BLUETOOTH_SCAN'\n  | 'android.permission.BLUETOOTH_ADVERTISE'\n  | 'android.permission.ACCESS_MEDIA_LOCATION'\n  | 'android.permission.ACCEPT_HANDOVER'\n  | 'android.permission.ACTIVITY_RECOGNITION'\n  | 'android.permission.ANSWER_PHONE_CALLS'\n  | 'android.permission.READ_PHONE_NUMBERS'\n  | 'android.permission.UWB_RANGING'\n  | 'android.permission.POST_NOTIFICATIONS'\n  | 'android.permission.NEARBY_WIFI_DEVICES';\n  */\n\nexport interface Spec extends TurboModule {\n  +checkPermission: (permission: PermissionType) => Promise<boolean>;\n  +requestPermission: (permission: PermissionType) => Promise<PermissionStatus>;\n  +shouldShowRequestPermissionRationale: (\n    permission: string,\n  ) => Promise<boolean>;\n  +requestMultiplePermissions: (\n    permissions: Array<PermissionType>,\n  ) => Promise<{[permission: PermissionType]: PermissionStatus, ...}>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('PermissionsAndroid'): ?Spec);\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 * @flow\n * @format\n */\n\nimport type {EventSubscription} from '../vendor/emitter/EventEmitter';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport Platform from '../Utilities/Platform';\nimport NativePushNotificationManagerIOS from './NativePushNotificationManagerIOS';\nimport invariant from 'invariant';\n\nexport type PushNotificationPermissions = {\n  alert: boolean,\n  badge: boolean,\n  sound: boolean,\n  [key: string]: boolean | number,\n};\n\ntype PresentLocalNotificationDetails = {\n  alertBody: string,\n  alertAction?: string,\n  alertTitle?: string,\n  soundName?: string,\n  category?: string,\n  userInfo?: Object,\n  applicationIconBadgeNumber?: number,\n  fireDate?: number,\n  isSilent?: boolean,\n};\n\ntype ScheduleLocalNotificationDetails = {\n  ...PresentLocalNotificationDetails,\n  repeatInterval?: 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute',\n};\n\ntype NativePushNotificationIOSEventDefinitions = {\n  remoteNotificationReceived: [\n    {\n      notificationId: string,\n      remote: boolean,\n      ...\n    },\n  ],\n  remoteNotificationsRegistered: [\n    {\n      deviceToken?: ?string,\n      ...\n    },\n  ],\n  remoteNotificationRegistrationError: [\n    {\n      message: string,\n      code: number,\n      details: {...},\n    },\n  ],\n  localNotificationReceived: [{...}],\n};\n\nconst PushNotificationEmitter =\n  new NativeEventEmitter<NativePushNotificationIOSEventDefinitions>(\n    // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior\n    // If you want to use the native module on other platforms, please remove this condition and test its behavior\n    Platform.OS !== 'ios' ? null : NativePushNotificationManagerIOS,\n  );\n\nconst _notifHandlers = new Map<string, void | EventSubscription>();\n\nconst DEVICE_NOTIF_EVENT = 'remoteNotificationReceived';\nconst NOTIF_REGISTER_EVENT = 'remoteNotificationsRegistered';\nconst NOTIF_REGISTRATION_ERROR_EVENT = 'remoteNotificationRegistrationError';\nconst DEVICE_LOCAL_NOTIF_EVENT = 'localNotificationReceived';\n\nexport type ContentAvailable = 1 | null | void;\n\nexport type FetchResult = {\n  NewData: 'UIBackgroundFetchResultNewData',\n  NoData: 'UIBackgroundFetchResultNoData',\n  ResultFailed: 'UIBackgroundFetchResultFailed',\n  ...\n};\n\n/**\n * An event emitted by PushNotificationIOS.\n */\nexport type PushNotificationEventName = $Keys<{\n  /**\n   * Fired when a remote notification is received. The handler will be invoked\n   * with an instance of `PushNotificationIOS`. This will handle notifications\n   * that arrive in the foreground or were tapped to open the app from the\n   * background.\n   */\n  notification: string,\n  /**\n   * Fired when a local notification is received. The handler will be invoked\n   * with an instance of `PushNotificationIOS`. This will handle notifications\n   * that arrive in the foreground or were tapped to open the app from the\n   * background.\n   */\n  localNotification: string,\n  /**\n   * Fired when the user registers for remote notifications. The handler will be\n   * invoked with a hex string representing the deviceToken.\n   */\n  register: string,\n  /**\n   * Fired when the user fails to register for remote notifications. Typically\n   * occurs due to APNS issues or if the device is a simulator. The handler\n   * will be invoked with {message: string, code: number, details: any}.\n   */\n  registrationError: string,\n  ...\n}>;\n\nexport interface PushNotification {\n  /**\n   * An alias for `getAlert` to get the notification's main message string\n   */\n  getMessage(): ?string | ?Object;\n\n  /**\n   * Gets the sound string from the `aps` object\n   */\n  getSound(): ?string;\n\n  /**\n   * Gets the category string from the `aps` object\n   */\n  getCategory(): ?string;\n\n  /**\n   * Gets the notification's main message from the `aps` object\n   */\n  getAlert(): ?string | ?Object;\n\n  /**\n   * Gets the content-available number from the `aps` object\n   */\n  getContentAvailable(): ContentAvailable;\n\n  /**\n   * Gets the badge count number from the `aps` object\n   */\n  getBadgeCount(): ?number;\n\n  /**\n   * Gets the data object on the notif\n   */\n  getData(): ?Object;\n\n  /**\n   * Gets the thread ID on the notif\n   */\n  getThreadID(): ?string;\n\n  /**\n   * iOS Only\n   * Signifies remote notification handling is complete\n   */\n  finish(result: string): void;\n}\n\n/**\n * Handle notifications for your app, including scheduling and permissions.\n *\n * See https://reactnative.dev/docs/pushnotificationios\n *\n * @deprecated Use [@react-native-community/push-notification-ios](https://www.npmjs.com/package/@react-native-community/push-notification-ios) instead\n */\nclass PushNotificationIOS {\n  _data: Object;\n  _alert: string | Object;\n  _sound: string;\n  _category: string;\n  _contentAvailable: ContentAvailable;\n  _badgeCount: number;\n  _notificationId: string;\n  _isRemote: boolean;\n  _remoteNotificationCompleteCallbackCalled: boolean;\n  _threadID: string;\n\n  static FetchResult: FetchResult = {\n    NewData: 'UIBackgroundFetchResultNewData',\n    NoData: 'UIBackgroundFetchResultNoData',\n    ResultFailed: 'UIBackgroundFetchResultFailed',\n  };\n\n  /**\n   * Schedules the localNotification for immediate presentation.\n   * details is an object containing:\n   * alertBody : The message displayed in the notification alert.\n   * alertAction : The \"action\" displayed beneath an actionable notification. Defaults to \"view\";\n   * soundName : The sound played when the notification is fired (optional).\n   * category : The category of this notification, required for actionable notifications (optional).\n   * userInfo : An optional object containing additional notification data.\n   * applicationIconBadgeNumber (optional) : The number to display as the app's icon badge. The default value of this property is 0, which means that no badge is displayed.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#presentlocalnotification\n   */\n  static presentLocalNotification(\n    details: PresentLocalNotificationDetails,\n  ): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    // $FlowFixMe[prop-missing]\n    NativePushNotificationManagerIOS.presentLocalNotification(details);\n  }\n\n  /**\n   * Schedules a local notification for future presentation.\n   *\n   * details is an object containing:\n   * fireDate : The date and time when the system should deliver the notification.\n   * alertBody : The message displayed in the notification alert.\n   * alertAction : The \"action\" displayed beneath an actionable notification. Defaults to \"view\";\n   * soundName : The sound played when the notification is fired (optional).\n   * category : The category of this notification, required for actionable notifications (optional).\n   * userInfo : An optional object containing additional notification data.\n   * applicationIconBadgeNumber (optional) : The number to display as the app's icon badge. Setting the number to 0 removes the icon badge.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#schedulelocalnotification\n   */\n  static scheduleLocalNotification(\n    details: ScheduleLocalNotificationDetails,\n  ): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    // $FlowFixMe[prop-missing]\n    NativePushNotificationManagerIOS.scheduleLocalNotification(details);\n  }\n\n  /**\n   * Cancels all scheduled local notifications.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#cancelalllocalnotifications\n   */\n  static cancelAllLocalNotifications(): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.cancelAllLocalNotifications();\n  }\n\n  /**\n   * Removes all delivered notifications from Notification Center.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#removealldeliverednotifications\n   */\n  static removeAllDeliveredNotifications(): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.removeAllDeliveredNotifications();\n  }\n\n  /**\n   * Provides a list of the app’s notifications that are currently displayed\n   * in Notification Center.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getdeliverednotifications\n   */\n  static getDeliveredNotifications(\n    callback: (notifications: Array<Object>) => void,\n  ): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.getDeliveredNotifications(callback);\n  }\n\n  /**\n   * Removes the specified notifications from Notification Center.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#removedeliverednotifications\n   */\n  static removeDeliveredNotifications(identifiers: Array<string>): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.removeDeliveredNotifications(identifiers);\n  }\n\n  /**\n   * Sets the badge number for the app icon on the Home Screen.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#setapplicationiconbadgenumber\n   */\n  static setApplicationIconBadgeNumber(number: number): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.setApplicationIconBadgeNumber(number);\n  }\n\n  /**\n   * Gets the current badge number for the app icon on the Home Screen.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getapplicationiconbadgenumber\n   */\n  static getApplicationIconBadgeNumber(callback: Function): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.getApplicationIconBadgeNumber(callback);\n  }\n\n  /**\n   * Cancels any scheduled local notifications which match the fields in the\n   * provided `userInfo`.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#cancellocalnotification\n   */\n  static cancelLocalNotifications(userInfo: Object): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.cancelLocalNotifications(userInfo);\n  }\n\n  /**\n   * Gets the list of local notifications that are currently scheduled.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getscheduledlocalnotifications\n   */\n  static getScheduledLocalNotifications(callback: Function): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.getScheduledLocalNotifications(callback);\n  }\n\n  /**\n   * Attaches a listener to notification events including local notifications,\n   * remote notifications, and notification registration results.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#addeventlistener\n   */\n  static addEventListener(\n    type: PushNotificationEventName,\n    handler: Function,\n  ): void {\n    invariant(\n      type === 'notification' ||\n        type === 'register' ||\n        type === 'registrationError' ||\n        type === 'localNotification',\n      'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events',\n    );\n    let listener;\n    if (type === 'notification') {\n      listener = PushNotificationEmitter.addListener(\n        DEVICE_NOTIF_EVENT,\n        notifData => {\n          handler(new PushNotificationIOS(notifData));\n        },\n      );\n    } else if (type === 'localNotification') {\n      listener = PushNotificationEmitter.addListener(\n        DEVICE_LOCAL_NOTIF_EVENT,\n        notifData => {\n          handler(new PushNotificationIOS(notifData));\n        },\n      );\n    } else if (type === 'register') {\n      listener = PushNotificationEmitter.addListener(\n        NOTIF_REGISTER_EVENT,\n        registrationInfo => {\n          handler(registrationInfo.deviceToken);\n        },\n      );\n    } else if (type === 'registrationError') {\n      listener = PushNotificationEmitter.addListener(\n        NOTIF_REGISTRATION_ERROR_EVENT,\n        errorInfo => {\n          handler(errorInfo);\n        },\n      );\n    }\n    _notifHandlers.set(type, listener);\n  }\n\n  /**\n   * Removes the event listener. Do this in `componentWillUnmount` to prevent\n   * memory leaks.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#removeeventlistener\n   */\n  static removeEventListener(type: PushNotificationEventName): void {\n    invariant(\n      type === 'notification' ||\n        type === 'register' ||\n        type === 'registrationError' ||\n        type === 'localNotification',\n      'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events',\n    );\n    const listener = _notifHandlers.get(type);\n    if (!listener) {\n      return;\n    }\n    listener.remove();\n    _notifHandlers.delete(type);\n  }\n\n  /**\n   * Requests notification permissions from iOS, prompting the user with a\n   * dialog box. By default, it will request all notification permissions, but\n   * you can optionally specify which permissions to request.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#requestpermissions\n   */\n  static requestPermissions(\n    permissions?: PushNotificationPermissions,\n  ): Promise<{\n    alert: boolean,\n    badge: boolean,\n    sound: boolean,\n    ...\n  }> {\n    let requestedPermissions = {\n      alert: true,\n      badge: true,\n      sound: true,\n    };\n    if (permissions) {\n      requestedPermissions = {\n        alert: !!permissions.alert,\n        badge: !!permissions.badge,\n        sound: !!permissions.sound,\n      };\n    }\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    return NativePushNotificationManagerIOS.requestPermissions(\n      requestedPermissions,\n    );\n  }\n\n  /**\n   * Unregister for all remote notifications received via Apple Push Notification\n   * service.\n   * You should call this method in rare circumstances only, such as when\n   * a new version of the app removes support for all types of remote\n   * notifications. Users can temporarily prevent apps from receiving\n   * remote notifications through the Notifications section of the\n   * Settings app. Apps unregistered through this method can always\n   * re-register.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#abandonpermissions\n   */\n  static abandonPermissions(): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.abandonPermissions();\n  }\n\n  /**\n   * Check which push permissions are currently enabled. `callback` will be\n   * invoked with a `Permissions` object.\n   *\n   *  - `alert` :boolean\n   *  - `badge` :boolean\n   *  - `sound` :boolean\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#checkpermissions\n   */\n  static checkPermissions(\n    callback: (permissions: PushNotificationPermissions) => void,\n  ): void {\n    invariant(typeof callback === 'function', 'Must provide a valid callback');\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.checkPermissions(callback);\n  }\n\n  /**\n   * This method returns a promise that resolves to either the notification\n   * object if the app was launched by a push notification, or `null` otherwise.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getinitialnotification\n   */\n  static getInitialNotification(): Promise<?PushNotification> {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    return NativePushNotificationManagerIOS.getInitialNotification().then(\n      notification => {\n        return notification && new PushNotificationIOS(notification);\n      },\n    );\n  }\n\n  /**\n   * This method returns a promise that resolves to the current notification\n   * authorization status. See UNAuthorizationStatus for possible values.\n   */\n  static getAuthorizationStatus(\n    callback: (authorizationStatus: number) => void,\n  ): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n\n    NativePushNotificationManagerIOS.getAuthorizationStatus(callback);\n  }\n\n  /**\n   * You will never need to instantiate `PushNotificationIOS` yourself.\n   * Listening to the `notification` event and invoking\n   * `getInitialNotification` is sufficient.\n   *\n   */\n  constructor(nativeNotif: Object) {\n    this._data = {};\n    this._remoteNotificationCompleteCallbackCalled = false;\n    this._isRemote = nativeNotif.remote;\n    if (this._isRemote) {\n      this._notificationId = nativeNotif.notificationId;\n    }\n\n    if (nativeNotif.remote) {\n      // Extract data from Apple's `aps` dict as defined:\n      // https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService\n      Object.keys(nativeNotif).forEach(notifKey => {\n        const notifVal = nativeNotif[notifKey];\n        if (notifKey === 'aps') {\n          this._alert = notifVal.alert;\n          this._sound = notifVal.sound;\n          this._badgeCount = notifVal.badge;\n          this._category = notifVal.category;\n          this._contentAvailable = notifVal['content-available'];\n          this._threadID = notifVal['thread-id'];\n        } else {\n          this._data[notifKey] = notifVal;\n        }\n      });\n    } else {\n      // Local notifications aren't being sent down with `aps` dict.\n      this._badgeCount = nativeNotif.applicationIconBadgeNumber;\n      this._sound = nativeNotif.soundName;\n      this._alert = nativeNotif.alertBody;\n      this._data = nativeNotif.userInfo;\n      this._category = nativeNotif.category;\n    }\n  }\n\n  /**\n   * This method is available for remote notifications that have been received via:\n   * `application:didReceiveRemoteNotification:fetchCompletionHandler:`. See docs\n   * for more information.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#finish\n   */\n  finish(fetchResult: string): void {\n    if (\n      !this._isRemote ||\n      !this._notificationId ||\n      this._remoteNotificationCompleteCallbackCalled\n    ) {\n      return;\n    }\n    this._remoteNotificationCompleteCallbackCalled = true;\n\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.onFinishRemoteNotification(\n      this._notificationId,\n      fetchResult,\n    );\n  }\n\n  /**\n   * An alias for `getAlert` to get the notification's main message string.\n   */\n  getMessage(): ?string | ?Object {\n    // alias because \"alert\" is an ambiguous name\n    return this._alert;\n  }\n\n  /**\n   * Gets the sound string from the `aps` object. This will be `null` for local\n   * notifications.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getsound\n   */\n  getSound(): ?string {\n    return this._sound;\n  }\n\n  /**\n   * Gets the category string from the `aps` object.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getcategory\n   */\n  getCategory(): ?string {\n    return this._category;\n  }\n\n  /**\n   * Gets the notification's main message from the `aps` object. Also see the\n   * alias: `getMessage()`.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getalert\n   */\n  getAlert(): ?string | ?Object {\n    return this._alert;\n  }\n\n  /**\n   * Gets the content-available number from the `aps` object.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getcontentavailable\n   */\n  getContentAvailable(): ContentAvailable {\n    return this._contentAvailable;\n  }\n\n  /**\n   * Gets the badge count number from the `aps` object.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getbadgecount\n   */\n  getBadgeCount(): ?number {\n    return this._badgeCount;\n  }\n\n  /**\n   * Gets the data object on the notification.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getdata\n   */\n  getData(): ?Object {\n    return this._data;\n  }\n\n  /**\n   * Gets the thread ID on the notification.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios#getthreadid\n   */\n  getThreadID(): ?string {\n    return this._threadID;\n  }\n}\n\nexport default PushNotificationIOS;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS';\nimport NativePushNotificationManagerIOS from '../../src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS';\n\nexport default NativePushNotificationManagerIOS;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\ntype Permissions = {\n  alert: boolean,\n  badge: boolean,\n  sound: boolean,\n};\n\ntype Notification = {\n  +alertTitle?: ?string,\n  +alertBody?: ?string,\n  +userInfo?: ?Object,\n  /**\n   * Identifier for the notification category. See the [Apple documentation](https://developer.apple.com/documentation/usernotifications/declaring_your_actionable_notification_types)\n   * for more details.\n   */\n  +category?: ?string,\n  /**\n   * Actual type: string | number\n   *\n   * Schedule notifications using EITHER `fireDate` or `fireIntervalSeconds`.\n   * If both are specified, `fireDate` takes precedence.\n   * If you use `presentLocalNotification`, both will be ignored\n   * and the notification will be shown immediately.\n   */\n  +fireDate?: ?number,\n  /**\n   * Seconds from now to display the notification.\n   *\n   * Schedule notifications using EITHER `fireDate` or `fireIntervalSeconds`.\n   * If both are specified, `fireDate` takes precedence.\n   * If you use `presentLocalNotification`, both will be ignored\n   * and the notification will be shown immediately.\n   */\n  +fireIntervalSeconds?: ?number,\n  /** Badge count to display on the app icon. */\n  +applicationIconBadgeNumber?: ?number,\n  /** Whether to silence the notification sound. */\n  +isSilent?: ?boolean,\n  /**\n   * Custom notification sound. Can only be set when creating notifications.\n   * This will be null for notifications retrieved via\n   * getScheduledLocalNotifications or getDeliveredNotifications.\n   */\n  +soundName?: ?string,\n};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {};\n  +onFinishRemoteNotification: (\n    notificationId: string,\n    /**\n     * Type:\n     *  'UIBackgroundFetchResultNewData' |\n     *  'UIBackgroundFetchResultNoData' |\n     *  'UIBackgroundFetchResultFailed'\n     */\n    fetchResult: string,\n  ) => void;\n  +setApplicationIconBadgeNumber: (num: number) => void;\n  +getApplicationIconBadgeNumber: (callback: (num: number) => void) => void;\n  +requestPermissions: (permission: {\n    +alert: boolean,\n    +badge: boolean,\n    +sound: boolean,\n  }) => Promise<Permissions>;\n  +abandonPermissions: () => void;\n  +checkPermissions: (callback: (permissions: Permissions) => void) => void;\n  +presentLocalNotification: (notification: Notification) => void;\n  +scheduleLocalNotification: (notification: Notification) => void;\n  +cancelAllLocalNotifications: () => void;\n  +cancelLocalNotifications: (userInfo: Object) => void;\n  +getInitialNotification: () => Promise<?Notification>;\n  +getScheduledLocalNotifications: (\n    callback: (notification: Notification) => void,\n  ) => void;\n  +removeAllDeliveredNotifications: () => void;\n  +removeDeliveredNotifications: (identifiers: Array<string>) => void;\n  +getDeliveredNotifications: (\n    callback: (notification: Array<Notification>) => void,\n  ) => void;\n  +getAuthorizationStatus: (\n    callback: (authorizationStatus: number) => void,\n  ) => void;\n  +addListener: (eventType: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>(\n  'PushNotificationManager',\n): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {ColorValue} from '../StyleSheet/StyleSheet';\n\nimport NativeActionSheetManager from '../ActionSheetIOS/NativeActionSheetManager';\nimport NativeShareModule from './NativeShareModule';\n\nconst processColor = require('../StyleSheet/processColor').default;\nconst Platform = require('../Utilities/Platform').default;\nconst invariant = require('invariant');\n\nexport type ShareContent =\n  | {\n      title?: string,\n      url: string,\n      message?: string,\n    }\n  | {\n      title?: string,\n      url?: string,\n      message: string,\n    };\nexport type ShareOptions = {\n  dialogTitle?: string,\n  excludedActivityTypes?: Array<string>,\n  tintColor?: ColorValue,\n  subject?: string,\n  anchor?: number,\n};\n\nexport type ShareAction = {\n  action: 'sharedAction' | 'dismissedAction',\n  activityType?: string | null,\n};\n\nclass Share {\n  /**\n   * Open a dialog to share text content.\n   *\n   * In iOS, Returns a Promise which will be invoked an object containing `action`, `activityType`.\n   * If the user dismissed the dialog, the Promise will still be resolved with action being `Share.dismissedAction`\n   * and all the other keys being undefined.\n   *\n   * In Android, Returns a Promise which always resolves with action being `Share.sharedAction`.\n   *\n   * ### Content\n   *\n   * #### iOS\n   *\n   *  - `url` - a URL to share\n   *  - `message` - a message to share\n   *\n   * At least one of `URL` or `message` is required.\n   *\n   * #### Android\n   *\n   * - `title` - title of the message (optional)\n   * - `message` - a message to share (often will include a URL).\n   *\n   * ### Options\n   *\n   * #### iOS\n   *\n   *  - `subject` - a subject to share via email\n   *  - `excludedActivityTypes`\n   *  - `tintColor`\n   *\n   * #### Android\n   *\n   *  - `dialogTitle`\n   *\n   */\n  static share(\n    content: ShareContent,\n    options?: ShareOptions = {},\n  ): Promise<{action: string, activityType: ?string}> {\n    invariant(\n      typeof content === 'object' && content !== null,\n      'Content to share must be a valid object',\n    );\n    invariant(\n      typeof content.url === 'string' || typeof content.message === 'string',\n      'At least one of URL or message is required',\n    );\n    invariant(\n      typeof options === 'object' && options !== null,\n      'Options must be a valid object',\n    );\n\n    if (Platform.OS === 'android') {\n      invariant(\n        NativeShareModule,\n        'ShareModule should be registered on Android.',\n      );\n      invariant(\n        content.title == null || typeof content.title === 'string',\n        'Invalid title: title should be a string.',\n      );\n\n      const newContent = {\n        title: content.title,\n        message:\n          typeof content.message === 'string' ? content.message : undefined,\n      };\n\n      return NativeShareModule.share(newContent, options.dialogTitle).then(\n        result => ({\n          activityType: null,\n          ...result,\n        }),\n      );\n    } else if (Platform.OS === 'ios') {\n      return new Promise((resolve, reject) => {\n        const tintColor = processColor(options.tintColor);\n\n        invariant(\n          tintColor == null || typeof tintColor === 'number',\n          'Unexpected color given for options.tintColor',\n        );\n\n        invariant(\n          NativeActionSheetManager,\n          'NativeActionSheetManager is not registered on iOS, but it should be.',\n        );\n\n        NativeActionSheetManager.showShareActionSheetWithOptions(\n          {\n            message:\n              typeof content.message === 'string' ? content.message : undefined,\n            url: typeof content.url === 'string' ? content.url : undefined,\n            subject: options.subject,\n            tintColor: typeof tintColor === 'number' ? tintColor : undefined,\n            anchor:\n              typeof options.anchor === 'number' ? options.anchor : undefined,\n            excludedActivityTypes: options.excludedActivityTypes,\n          },\n          error => reject(error),\n          (success, activityType) => {\n            if (success) {\n              resolve({\n                action: 'sharedAction',\n                activityType: activityType,\n              });\n            } else {\n              resolve({\n                action: 'dismissedAction',\n                activityType: null,\n              });\n            }\n          },\n        );\n      });\n    } else {\n      return Promise.reject(new Error('Unsupported platform'));\n    }\n  }\n\n  /**\n   * The content was successfully shared.\n   */\n  static sharedAction: 'sharedAction' = 'sharedAction';\n\n  /**\n   * The dialog has been dismissed.\n   * @platform ios\n   */\n  static dismissedAction: 'dismissedAction' = 'dismissedAction';\n}\n\nexport default Share;\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeShareModule';\nimport NativeShareModule from '../../src/private/specs_DEPRECATED/modules/NativeShareModule';\n\nexport default NativeShareModule;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {};\n  +share: (\n    content: {title?: string, message?: string},\n    dialogTitle?: string,\n  ) => Promise<{action: string}>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('ShareModule'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport Animated from './Animated';\nimport {useRef} from 'react';\n\nexport default function useAnimatedValue(\n  initialValue: number,\n  config?: ?Animated.AnimatedConfig,\n): Animated.Value {\n  const ref = useRef<null | Animated.Value>(null);\n  if (ref.current == null) {\n    ref.current = new Animated.Value(initialValue, config);\n  }\n  return ref.current;\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {ColorSchemeName} from './NativeAppearance';\n\nimport {addChangeListener, getColorScheme} from './Appearance';\nimport {useSyncExternalStore} from 'react';\n\nconst subscribe = (onStoreChange: () => void) => {\n  const appearanceSubscription = addChangeListener(onStoreChange);\n  return () => appearanceSubscription.remove();\n};\n\nexport default function useColorScheme(): ?ColorSchemeName {\n  return useSyncExternalStore(subscribe, getColorScheme);\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst deepFreezeAndThrowOnMutationInDev =\n  require('./Utilities/deepFreezeAndThrowOnMutationInDev').default;\n\n/**\n * A collection of Unicode sequences for various characters and emoji.\n *\n *  - More explicit than using the sequences directly in code.\n *  - Source code should be limited to ASCII.\n *  - Less chance of typos.\n */\nconst UTFSequence: {\n  BOM: string,\n  BULLET: string,\n  BULLET_SP: string,\n  MDASH: string,\n  MDASH_SP: string,\n  MIDDOT: string,\n  MIDDOT_KATAKANA: string,\n  MIDDOT_SP: string,\n  NBSP: string,\n  NDASH: string,\n  NDASH_SP: string,\n  NEWLINE: string,\n  PIZZA: string,\n  TRIANGLE_LEFT: string,\n  TRIANGLE_RIGHT: string,\n} = deepFreezeAndThrowOnMutationInDev({\n  BOM: '\\ufeff', // byte order mark\n  BULLET: '\\u2022', // bullet: &#8226;\n  BULLET_SP: '\\u00A0\\u2022\\u00A0', // &nbsp;&#8226;&nbsp;\n  MIDDOT: '\\u00B7', // normal middle dot: &middot;\n  MIDDOT_SP: '\\u00A0\\u00B7\\u00A0', // &nbsp;&middot;&nbsp;\n  MIDDOT_KATAKANA: '\\u30FB', // katakana middle dot\n  MDASH: '\\u2014', // em dash: &mdash;\n  MDASH_SP: '\\u00A0\\u2014\\u00A0', // &nbsp;&mdash;&nbsp;\n  NDASH: '\\u2013', // en dash: &ndash;\n  NDASH_SP: '\\u00A0\\u2013\\u00A0', // &nbsp;&ndash;&nbsp;\n  NEWLINE: '\\u000A',\n  NBSP: '\\u00A0', // non-breaking space: &nbsp;\n  PIZZA: '\\uD83C\\uDF55',\n  TRIANGLE_LEFT: '\\u25c0', // black left-pointing triangle\n  TRIANGLE_RIGHT: '\\u25b6', // black right-pointing triangle\n});\n\nexport default UTFSequence;\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 * @flow strict\n * @format\n */\n\nimport NativeVibration from './NativeVibration';\n\nconst Platform = require('../Utilities/Platform').default;\n\n/**\n * Vibration API\n *\n * See https://reactnative.dev/docs/vibration\n */\n\nlet _vibrating: boolean = false;\nlet _id: number = 0; // _id is necessary to prevent race condition.\nconst _default_vibration_length = 400;\n\nfunction vibrateByPattern(pattern: Array<number>, repeat: boolean = false) {\n  if (_vibrating) {\n    return;\n  }\n  _vibrating = true;\n  if (pattern[0] === 0) {\n    NativeVibration.vibrate(_default_vibration_length);\n    // $FlowFixMe[reassign-const]\n    pattern = pattern.slice(1);\n  }\n  if (pattern.length === 0) {\n    _vibrating = false;\n    return;\n  }\n  setTimeout(() => vibrateScheduler(++_id, pattern, repeat, 1), pattern[0]);\n}\n\nfunction vibrateScheduler(\n  id: number,\n  pattern: Array<number>,\n  repeat: boolean,\n  nextIndex: number,\n) {\n  if (!_vibrating || id !== _id) {\n    return;\n  }\n  NativeVibration.vibrate(_default_vibration_length);\n  if (nextIndex >= pattern.length) {\n    if (repeat) {\n      // $FlowFixMe[reassign-const]\n      nextIndex = 0;\n    } else {\n      _vibrating = false;\n      return;\n    }\n  }\n  setTimeout(\n    () => vibrateScheduler(id, pattern, repeat, nextIndex + 1),\n    pattern[nextIndex],\n  );\n}\n\nconst Vibration = {\n  /**\n   * Trigger a vibration with specified `pattern`.\n   *\n   * See https://reactnative.dev/docs/vibration#vibrate\n   */\n  vibrate: function (\n    pattern?: number | Array<number> = _default_vibration_length,\n    repeat?: boolean = false,\n  ) {\n    if (Platform.OS === 'android') {\n      if (typeof pattern === 'number') {\n        NativeVibration.vibrate(pattern);\n      } else if (Array.isArray(pattern)) {\n        NativeVibration.vibrateByPattern(pattern, repeat ? 0 : -1);\n      } else {\n        throw new Error('Vibration pattern should be a number or array');\n      }\n    } else {\n      if (_vibrating) {\n        return;\n      }\n      if (typeof pattern === 'number') {\n        NativeVibration.vibrate(pattern);\n      } else if (Array.isArray(pattern)) {\n        vibrateByPattern(pattern, repeat);\n      } else {\n        throw new Error('Vibration pattern should be a number or array');\n      }\n    }\n  },\n  /**\n   * Stop vibration\n   *\n   * See https://reactnative.dev/docs/vibration#cancel\n   */\n  cancel: function () {\n    if (Platform.OS === 'ios') {\n      _vibrating = false;\n    } else {\n      NativeVibration.cancel();\n    }\n  },\n};\n\nexport default Vibration;\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeVibration';\nimport NativeVibration from '../../src/private/specs_DEPRECATED/modules/NativeVibration';\n\nexport default NativeVibration;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {};\n  +vibrate: (pattern: number) => void;\n\n  // Android only\n  +vibrateByPattern: (pattern: Array<number>, repeat: number) => void;\n  +cancel: () => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('Vibration'): Spec);\n","import './Asset.fx';\nexport * from './Asset';\nexport * from './AssetHooks';\n//# sourceMappingURL=index.js.map","import { Asset, ANDROID_EMBEDDED_URL_BASE_RESOURCE } from './Asset';\nimport { IS_ENV_WITH_LOCAL_ASSETS } from './PlatformUtils';\nimport resolveAssetSource, { setCustomSourceTransformer } from './resolveAssetSource';\n// Override React Native's asset resolution for `Image` components in contexts where it matters\nif (IS_ENV_WITH_LOCAL_ASSETS) {\n    const setTransformer = resolveAssetSource.setCustomSourceTransformer || setCustomSourceTransformer;\n    setTransformer(function expoAssetTransformer(resolver) {\n        try {\n            // Bundler is using the hashAssetFiles plugin if and only if the fileHashes property exists\n            if ('fileHashes' in resolver.asset && resolver.asset.fileHashes) {\n                const asset = Asset.fromMetadata(resolver.asset);\n                if (asset.uri.startsWith(ANDROID_EMBEDDED_URL_BASE_RESOURCE)) {\n                    // TODO(@kitten): See https://github.com/expo/expo/commit/ec940b57a87d99ab4f1d06d87126e662c3f04f04#r155340943\n                    // It's unclear whether this is sound since this may be our own AssetSourceResolver, which doesn't have this method\n                    // Please compare `AssetSourceResolver` type from `react-native/Libraries/Image/AssetSourceResolver` against `./AssetSourceResolver`\n                    return resolver.resourceIdentifierWithoutScale();\n                }\n                return resolver.fromSource(asset.downloaded ? asset.localUri : asset.uri);\n            }\n            else {\n                return resolver.defaultAsset();\n            }\n        }\n        catch {\n            return resolver.defaultAsset();\n        }\n    });\n}\n//# sourceMappingURL=Asset.fx.js.map","import { getAssetByID } from '@react-native/assets-registry/registry';\nimport { Platform } from 'expo-modules-core';\nimport { selectAssetSource } from './AssetSources';\nimport * as AssetUris from './AssetUris';\nimport { downloadAsync } from './ExpoAsset';\nimport * as ImageAssets from './ImageAssets';\nimport { getLocalAssetUri } from './LocalAssets';\nimport { IS_ENV_WITH_LOCAL_ASSETS } from './PlatformUtils';\nimport resolveAssetSource from './resolveAssetSource';\n/**\n * Android resource URL prefix.\n * @hidden\n */\nexport const ANDROID_EMBEDDED_URL_BASE_RESOURCE = 'file:///android_res/';\n/**\n * The `Asset` class represents an asset in your app. It gives metadata about the asset (such as its\n * name and type) and provides facilities to load the asset data.\n */\nexport class Asset {\n    static byHash = {};\n    static byUri = {};\n    /**\n     * The name of the asset file without the extension. Also without the part from `@` onward in the\n     * filename (used to specify scale factor for images).\n     */\n    name;\n    /**\n     * The extension of the asset filename.\n     */\n    type;\n    /**\n     * The MD5 hash of the asset's data.\n     */\n    hash = null;\n    /**\n     * A URI that points to the asset's data on the remote server. When running the published version\n     * of your app, this refers to the location on Expo's asset server where Expo has stored your\n     * asset. When running the app from Expo CLI during development, this URI points to Expo CLI's\n     * server running on your computer and the asset is served directly from your computer. If you\n     * are not using Classic Updates (legacy), this field should be ignored as we ensure your assets\n     * are on device before running your application logic.\n     */\n    uri;\n    /**\n     * If the asset has been downloaded (by calling [`downloadAsync()`](#downloadasync)), the\n     * `file://` URI pointing to the local file on the device that contains the asset data.\n     */\n    localUri = null;\n    /**\n     * If the asset is an image, the width of the image data divided by the scale factor. The scale\n     * factor is the number after `@` in the filename, or `1` if not present.\n     */\n    width = null;\n    /**\n     * If the asset is an image, the height of the image data divided by the scale factor. The scale factor is the number after `@` in the filename, or `1` if not present.\n     */\n    height = null;\n    downloading = false;\n    /**\n     * Whether the asset has finished downloading from a call to [`downloadAsync()`](#downloadasync).\n     */\n    downloaded = false;\n    _downloadCallbacks = [];\n    constructor({ name, type, hash = null, uri, width, height }) {\n        this.name = name;\n        this.type = type;\n        this.hash = hash;\n        this.uri = uri;\n        if (typeof width === 'number') {\n            this.width = width;\n        }\n        if (typeof height === 'number') {\n            this.height = height;\n        }\n        if (hash) {\n            this.localUri = getLocalAssetUri(hash, type);\n            if (this.localUri?.startsWith(ANDROID_EMBEDDED_URL_BASE_RESOURCE)) {\n                // Treat Android embedded resources as not downloaded state, because the uri is not direct accessible.\n                this.uri = this.localUri;\n                this.localUri = null;\n            }\n            else if (this.localUri) {\n                this.downloaded = true;\n            }\n        }\n        if (Platform.OS === 'web') {\n            if (!name) {\n                this.name = AssetUris.getFilename(uri);\n            }\n            if (!type) {\n                this.type = AssetUris.getFileExtension(uri);\n            }\n        }\n    }\n    // @needsAudit\n    /**\n     * A helper that wraps `Asset.fromModule(module).downloadAsync` for convenience.\n     * @param moduleId An array of `require('path/to/file')` or external network URLs. Can also be\n     * just one module or URL without an Array.\n     * @return Returns a Promise that fulfills with an array of `Asset`s when the asset(s) has been\n     * saved to disk.\n     * @example\n     * ```ts\n     * const [{ localUri }] = await Asset.loadAsync(require('./assets/snack-icon.png'));\n     * ```\n     */\n    static loadAsync(moduleId) {\n        const moduleIds = Array.isArray(moduleId) ? moduleId : [moduleId];\n        return Promise.all(moduleIds.map((moduleId) => Asset.fromModule(moduleId).downloadAsync()));\n    }\n    // @needsAudit\n    /**\n     * Returns the [`Asset`](#asset) instance representing an asset given its module or URL.\n     * @param virtualAssetModule The value of `require('path/to/file')` for the asset or external\n     * network URL\n     * @return The [`Asset`](#asset) instance for the asset.\n     */\n    static fromModule(virtualAssetModule) {\n        if (typeof virtualAssetModule === 'string') {\n            return Asset.fromURI(virtualAssetModule);\n        }\n        if (typeof virtualAssetModule === 'object' &&\n            'uri' in virtualAssetModule &&\n            typeof virtualAssetModule.uri === 'string') {\n            const extension = AssetUris.getFileExtension(virtualAssetModule.uri);\n            return new Asset({\n                name: '',\n                type: extension.startsWith('.') ? extension.substring(1) : extension,\n                hash: null,\n                uri: virtualAssetModule.uri,\n                width: virtualAssetModule.width,\n                height: virtualAssetModule.height,\n            });\n        }\n        const meta = getAssetByID(virtualAssetModule);\n        if (!meta) {\n            throw new Error(`Module \"${virtualAssetModule}\" is missing from the asset registry`);\n        }\n        // Outside of the managed env we need the moduleId to initialize the asset\n        // because resolveAssetSource depends on it\n        if (!IS_ENV_WITH_LOCAL_ASSETS) {\n            // null-check is performed above with `getAssetByID`.\n            const { uri } = resolveAssetSource(virtualAssetModule);\n            const asset = new Asset({\n                name: meta.name,\n                type: meta.type,\n                hash: meta.hash,\n                uri,\n                width: meta.width,\n                height: meta.height,\n            });\n            // For images backward compatibility,\n            // keeps localUri the same as uri for React Native's Image that\n            // works fine with drawable resource names.\n            if (Platform.OS === 'android' && !uri.includes(':') && (meta.width || meta.height)) {\n                asset.localUri = asset.uri;\n                asset.downloaded = true;\n            }\n            Asset.byHash[meta.hash] = asset;\n            return asset;\n        }\n        return Asset.fromMetadata(meta);\n    }\n    // @docsMissing\n    static fromMetadata(meta) {\n        // The hash of the whole asset, not to be confused with the hash of a specific file returned\n        // from `selectAssetSource`\n        const metaHash = meta.hash;\n        const assetByHash = Asset.byHash[metaHash];\n        if (assetByHash) {\n            return assetByHash;\n        }\n        const { uri, hash } = selectAssetSource(meta);\n        const asset = new Asset({\n            name: meta.name,\n            type: meta.type,\n            hash,\n            uri,\n            width: meta.width,\n            height: meta.height,\n        });\n        Asset.byHash[metaHash] = asset;\n        return asset;\n    }\n    // @docsMissing\n    static fromURI(uri) {\n        if (Asset.byUri[uri]) {\n            return Asset.byUri[uri];\n        }\n        // Possibly a Base64-encoded URI\n        let type = '';\n        if (uri.indexOf(';base64') > -1) {\n            type = uri.split(';')[0].split('/')[1];\n        }\n        else {\n            const extension = AssetUris.getFileExtension(uri);\n            type = extension.startsWith('.') ? extension.substring(1) : extension;\n        }\n        const asset = new Asset({\n            name: '',\n            type,\n            hash: null,\n            uri,\n        });\n        Asset.byUri[uri] = asset;\n        return asset;\n    }\n    // @needsAudit\n    /**\n     * Downloads the asset data to a local file in the device's cache directory. Once the returned\n     * promise is fulfilled without error, the [`localUri`](#localuri) field of this asset points\n     * to a local file containing the asset data. The asset is only downloaded if an up-to-date local\n     * file for the asset isn't already present due to an earlier download. The downloaded `Asset`\n     * will be returned when the promise is resolved.\n     *\n     * > **Note:** There is no guarantee that files downloaded via `downloadAsync` persist between app sessions.\n     * `downloadAsync` stores files in the caches directory, so it's up to the OS to clear this folder at its\n     * own discretion or when the user manually purges the caches directory. Downloaded assets are stored as\n     * `ExponentAsset-{cacheFileId}.{extension}` within the cache directory.\n     * > To manually clear cached assets, you can use [`expo-file-system`](./filesystem/) to\n     * delete the cache directory: `Paths.cache.delete()` or use the legacy API `deleteAsync(cacheDirectory)`.\n     *\n     * @return Returns a Promise which fulfills with an `Asset` instance.\n     */\n    async downloadAsync() {\n        if (this.downloaded) {\n            return this;\n        }\n        if (this.downloading) {\n            await new Promise((resolve, reject) => {\n                this._downloadCallbacks.push({ resolve, reject });\n            });\n            return this;\n        }\n        this.downloading = true;\n        try {\n            if (Platform.OS === 'web') {\n                if (ImageAssets.isImageType(this.type)) {\n                    const { width, height, name } = await ImageAssets.getImageInfoAsync(this.uri);\n                    this.width = width;\n                    this.height = height;\n                    this.name = name;\n                }\n                else {\n                    this.name = AssetUris.getFilename(this.uri);\n                }\n            }\n            this.localUri = await downloadAsync(this.uri, this.hash, this.type);\n            this.downloaded = true;\n            this._downloadCallbacks.forEach(({ resolve }) => resolve());\n        }\n        catch (e) {\n            this._downloadCallbacks.forEach(({ reject }) => reject(e));\n            throw e;\n        }\n        finally {\n            this.downloading = false;\n            this._downloadCallbacks = [];\n        }\n        return this;\n    }\n}\n//# sourceMappingURL=Asset.js.map","import './sweet/setUpJsLogger.fx';\nimport './polyfill';\n\nexport type * from './ts-declarations/global';\n\nexport { EventEmitter, type EventSubscription } from './EventEmitter';\nexport { NativeModule } from './NativeModule';\nexport { SharedObject } from './SharedObject';\nexport { SharedRef } from './SharedRef';\n\nexport { default as Platform } from './Platform';\nexport { default as uuid } from './uuid';\n\nexport type { ProxyNativeModule } from './NativeModulesProxy.types';\nexport { requireNativeViewManager } from './NativeViewManagerAdapter';\n\nexport * from './requireNativeModule';\nexport * from './registerWebModule';\nexport * from './TypedArrays.types';\n\nexport * from './PermissionsInterface';\nexport * from './PermissionsHook';\n\nexport * from './Refs';\n\nexport * from './hooks/useReleasingSharedObject';\nexport * from './reload';\n\n// Errors\nexport { CodedError } from './errors/CodedError';\nexport { UnavailabilityError } from './errors/UnavailabilityError';\n\n// Deprecated\nexport { LegacyEventEmitter } from './LegacyEventEmitter';\nexport { default as NativeModulesProxy } from './NativeModulesProxy';\n","import NativeJSLogger from './NativeJSLogger';\nimport Platform from '../Platform';\nimport { CodedError } from '../errors/CodedError';\n\ntype LogListener = {\n  action: (...data: any[]) => void;\n  eventName: string;\n};\n\nif (__DEV__ && (Platform.OS === 'android' || Platform.OS === 'ios') && NativeJSLogger) {\n  const onNewException: LogListener = {\n    eventName: 'ExpoModulesCoreJSLogger.onNewError',\n    action: console.error,\n  };\n\n  const onNewWarning: LogListener = {\n    eventName: 'ExpoModulesCoreJSLogger.onNewWarning',\n    action: console.warn,\n  };\n\n  const onNewDebug: LogListener = {\n    eventName: 'ExpoModulesCoreJSLogger.onNewDebug',\n    action: console.debug,\n  };\n\n  const onNewInfo: LogListener = {\n    eventName: 'ExpoModulesCoreJSLogger.onNewInfo',\n    action: console.info,\n  };\n\n  const onNewTrace: LogListener = {\n    eventName: 'ExpoModulesCoreJSLogger.onNewTrace',\n    action: console.trace,\n  };\n\n  const listeners: LogListener[] = [\n    onNewException,\n    onNewWarning,\n    onNewDebug,\n    onNewInfo,\n    onNewTrace,\n  ];\n\n  for (const listener of listeners) {\n    NativeJSLogger.addListener(listener.eventName, ({ message }: { message: string }) => {\n      listener.action(message);\n    });\n  }\n}\n\ndeclare namespace globalThis {\n  let ExpoModulesCore_CodedError: undefined | typeof CodedError;\n}\n\n// We have to export `CodedError` via global object to use in later in the C++ code.\nglobalThis.ExpoModulesCore_CodedError = CodedError;\n","import { requireOptionalNativeModule } from '../requireNativeModule';\n\nexport default requireOptionalNativeModule('ExpoModulesCoreJSLogger');\n","import { TurboModuleRegistry } from 'react-native';\n\nimport NativeModulesProxy from './NativeModulesProxy';\nimport { createTurboModuleToExpoProxy } from './TurboModuleToExpoModuleProxy';\nimport { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\n\n/**\n * Imports the native module registered with given name. In the first place it tries to load\n * the module installed through the JSI host object and then falls back to the bridge proxy module.\n * Notice that the modules loaded from the proxy may not support some features like synchronous functions.\n *\n * @param moduleName Name of the requested native module.\n * @returns Object representing the native module.\n * @throws Error when there is no native module with given name.\n */\nexport function requireNativeModule<ModuleType = any>(moduleName: string): ModuleType {\n  const nativeModule = requireOptionalNativeModule<ModuleType>(moduleName);\n\n  if (!nativeModule) {\n    throw new Error(`Cannot find native module '${moduleName}'`);\n  }\n  return nativeModule;\n}\n\n/**\n * Imports the native module registered with the given name. The same as `requireNativeModule`,\n * but returns `null` when the module cannot be found instead of throwing an error.\n *\n * @param moduleName Name of the requested native module.\n * @returns Object representing the native module or `null` when it cannot be found.\n */\nexport function requireOptionalNativeModule<ModuleType = any>(\n  moduleName: string\n): ModuleType | null {\n  ensureNativeModulesAreInstalled();\n\n  try {\n    return (\n      globalThis.expo?.modules?.[moduleName] ??\n      NativeModulesProxy[moduleName] ??\n      createTurboModuleToExpoProxy(TurboModuleRegistry.get(moduleName), moduleName) ??\n      null\n    );\n  } catch (e) {\n    const error = e as Error;\n    console.warn(`An error occurred while requiring the '${moduleName}' module: ${error.message}`);\n    return null;\n  }\n}\n","// Copyright © 2024 650 Industries.\n// NOTE: Forcing this to be a client boundary so the errors are a bit clearer. In the future we can\n// make this a shim on the server by ignoring the globals that are missing in React Server contexts (Node.js).\n'use client';\n\nimport { NativeModules } from 'react-native';\n\nimport type { ProxyNativeModule } from './NativeModulesProxy.types';\n\nconst LegacyNativeProxy = NativeModules?.NativeUnimoduleProxy;\n// Fixes `cannot find name 'global'.` in tests\n// @ts-ignore\nconst ExpoNativeProxy = global.expo?.modules?.NativeModulesProxy;\n\nconst modulesConstantsKey = 'modulesConstants';\nconst exportedMethodsKey = 'exportedMethods';\n\n/**\n * @deprecated `NativeModulesProxy` is deprecated and might be removed in the future releases.\n * Use `requireNativeModule` or `requireOptionalNativeModule` instead.\n */\nconst NativeModulesProxy: Record<string, ProxyNativeModule> = {};\n\nif (LegacyNativeProxy) {\n  // use JSI proxy if available, fallback to legacy RN proxy\n  const NativeProxy = ExpoNativeProxy ?? LegacyNativeProxy;\n\n  Object.keys(NativeProxy[exportedMethodsKey]).forEach((moduleName) => {\n    // copy constants\n    NativeModulesProxy[moduleName] = NativeProxy[modulesConstantsKey][moduleName] || {};\n\n    // copy methods\n    // TODO(@kitten): Annotate `NativeProxy` with abstract types to avoid implicit `any`\n    NativeProxy[exportedMethodsKey][moduleName].forEach((methodInfo: any) => {\n      NativeModulesProxy[moduleName][methodInfo.name] = (...args: unknown[]): Promise<any> => {\n        // Use the new proxy to call methods on legacy modules, if possible.\n        if (ExpoNativeProxy?.callMethod) {\n          return ExpoNativeProxy.callMethod(moduleName, methodInfo.name, args);\n        }\n\n        // Otherwise fall back to the legacy proxy.\n        // This is deprecated and might be removed in SDK47 or later.\n        const { key, argumentsCount } = methodInfo;\n        if (argumentsCount !== args.length) {\n          return Promise.reject(\n            new Error(\n              `Native method ${moduleName}.${methodInfo.name} expects ${argumentsCount} ${\n                argumentsCount === 1 ? 'argument' : 'arguments'\n              } but received ${args.length}`\n            )\n          );\n        }\n        return LegacyNativeProxy.callMethod(moduleName, key, args);\n      };\n    });\n\n    // These are called by EventEmitter (which is a wrapper for NativeEventEmitter)\n    // only on iOS, and they use iOS-specific native module, EXReactNativeEventEmitter.\n    //\n    // On Android only {start,stop}Observing are called on the native module\n    // and these should be exported as Expo methods.\n    //\n    // Before the RN 65, addListener/removeListeners weren't called on Android. However, it no longer stays true.\n    // See https://github.com/facebook/react-native/commit/f5502fbda9fe271ff6e1d0da773a3a8ee206a453.\n    // That's why, we check if the `EXReactNativeEventEmitter` exists and only if yes, we use it in the listener implementation.\n    // Otherwise, those methods are NOOP.\n    if (NativeModules.EXReactNativeEventEmitter) {\n      NativeModulesProxy[moduleName].addListener = (...args) =>\n        NativeModules.EXReactNativeEventEmitter.addProxiedListener(moduleName, ...args);\n      NativeModulesProxy[moduleName].removeListeners = (...args) =>\n        NativeModules.EXReactNativeEventEmitter.removeProxiedListeners(moduleName, ...args);\n    } else {\n      // Fixes on Android:\n      // WARN  `new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method.\n      // WARN  `new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method.\n      NativeModulesProxy[moduleName].addListener = () => {};\n      NativeModulesProxy[moduleName].removeListeners = () => {};\n    }\n  });\n} else {\n  console.warn(\n    `The \"EXNativeModulesProxy\" native module is not exported through NativeModules; verify that expo-modules-core's native code is linked properly`\n  );\n}\n\nexport default NativeModulesProxy;\n","// Copyright © 2024 650 Industries.\nimport type { TurboModule, EventSubscription } from 'react-native';\n\nexport function createTurboModuleToExpoProxy(turboModule: TurboModule | null, name: string) {\n  if (!turboModule) return null;\n\n  const expoModuleProxy: any = {\n    __turboModule: turboModule,\n  };\n\n  Object.keys(Object.getPrototypeOf(turboModule)).forEach((prop) => {\n    expoModuleProxy[prop] = (turboModule as any)[prop];\n  });\n\n  if (turboModule.getConstants) {\n    const constants = turboModule.getConstants();\n    Object.keys(constants).forEach((prop) => {\n      expoModuleProxy[prop] = (constants as any)[prop];\n    });\n  }\n\n  expoModuleProxy.addListener = (\n    eventName: string,\n    listener: (...args: any[]) => any\n  ): EventSubscription => {\n    const eventEmitter = (turboModule as any)[eventName];\n    return eventEmitter(listener);\n  };\n\n  return expoModuleProxy;\n}\n","import { TurboModuleRegistry } from 'react-native';\n\n/**\n * Ensures that the native modules are installed in the current runtime.\n * Otherwise, it synchronously calls a native function that installs them.\n */\nexport function ensureNativeModulesAreInstalled(): void {\n  if (globalThis.expo) {\n    return;\n  }\n\n  try {\n    // TODO: ExpoModulesCore shouldn't be optional here,\n    // but to keep backwards compatibility let's just ignore it in SDK 50.\n    // In most cases the modules were already installed from the native side.\n    (\n      TurboModuleRegistry.get('ExpoModulesCore') as { installModules: () => void } | null\n    )?.installModules();\n  } catch (error) {\n    console.error(`Unable to install Expo modules: ${error}`);\n  }\n}\n","import { PlatformOSType, Platform as ReactNativePlatform } from 'react-native';\n\nimport {\n  isDOMAvailable,\n  canUseEventListeners,\n  canUseViewport,\n  isAsyncDebugging,\n} from './environment/browser';\n\nexport type PlatformSelectOSType = PlatformOSType | 'native' | 'electron' | 'default';\n\nexport type PlatformSelect = <T>(specifics: { [platform in PlatformSelectOSType]?: T }) => T;\n\nif (__DEV__ && typeof process.env.EXPO_OS === 'undefined') {\n  console.warn(\n    `The global process.env.EXPO_OS is not defined. This should be inlined by babel-preset-expo during transformation.`\n  );\n}\n\nconst nativeSelect =\n  typeof window !== 'undefined'\n    ? ReactNativePlatform.select\n    : // process.env.EXPO_OS is injected by `babel-preset-expo` and available in both client and `react-server` environments.\n      // Opt to use the env var when possible, and fallback to the React Native Platform module when it's not (arbitrary bundlers and transformers).\n      function select<T>(specifics: { [platform in PlatformSelectOSType]?: T }): T | undefined {\n        if (!process.env.EXPO_OS) return undefined;\n        if (specifics.hasOwnProperty(process.env.EXPO_OS)) {\n          return specifics[process.env.EXPO_OS as PlatformSelectOSType]!;\n        } else if (process.env.EXPO_OS !== 'web' && specifics.hasOwnProperty('native')) {\n          return specifics.native!;\n        } else if (specifics.hasOwnProperty('default')) {\n          return specifics.default!;\n        }\n        // do nothing...\n        return undefined;\n      };\n\nconst Platform = {\n  /**\n   * Denotes the currently running platform.\n   * Can be one of ios, android, web.\n   */\n  OS: process.env.EXPO_OS || ReactNativePlatform.OS,\n  /**\n   * Returns the value with the matching platform.\n   * Object keys can be any of ios, android, native, web, default.\n   *\n   * @ios ios, native, default\n   * @android android, native, default\n   * @web web, default\n   */\n  select: nativeSelect as PlatformSelect,\n  /**\n   * Denotes if the DOM API is available in the current environment.\n   * The DOM is not available in native React runtimes and Node.js.\n   */\n  isDOMAvailable,\n  /**\n   * Denotes if the current environment can attach event listeners\n   * to the window. This will return false in native React\n   * runtimes and Node.js.\n   */\n  canUseEventListeners,\n  /**\n   * Denotes if the current environment can inspect properties of the\n   * screen on which the current window is being rendered. This will\n   * return false in native React runtimes and Node.js.\n   */\n  canUseViewport,\n  /**\n   * If the JavaScript is being executed in a remote JavaScript environment.\n   * When `true`, synchronous native invocations cannot be executed.\n   */\n  isAsyncDebugging,\n};\n\nexport default Platform;\n","declare const global: any;\n\n// In standard node environments there is no DOM API\nexport const isDOMAvailable = false;\nexport const canUseEventListeners = false;\nexport const canUseViewport = false;\n\nexport let isAsyncDebugging: boolean = false;\n\nif (__DEV__) {\n  // These native globals are injected by native React runtimes and not standard browsers\n  // we can use them to determine if the JS is being executed in Chrome.\n  isAsyncDebugging =\n    !global.nativeExtensions && !global.nativeCallSyncHook && !global.RN$Bridgeless;\n}\n","/**\n * A general error class that should be used for all errors in Expo modules.\n * Guarantees a `code` field that can be used to differentiate between different\n * types of errors without further subclassing Error.\n */\nexport class CodedError extends Error {\n  code: string;\n  info?: any;\n\n  constructor(code: string, message: string) {\n    super(message);\n    this.code = code;\n  }\n}\n","'use client';\n\nimport { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\nimport { EventsMap } from './ts-declarations/EventEmitter';\nimport type { ExpoGlobal } from './ts-declarations/global';\n\nensureNativeModulesAreInstalled();\n\n/**\n * A subscription object that allows to conveniently remove an event listener from the emitter.\n */\nexport interface EventSubscription {\n  /**\n   * Removes an event listener for which the subscription has been created.\n   * After calling this function, the listener will no longer receive any events from the emitter.\n   */\n  remove(): void;\n}\n\nexport type EventEmitter<TEventsMap extends EventsMap = Record<never, never>> =\n  typeof ExpoGlobal.EventEmitter<TEventsMap>;\nexport const EventEmitter: typeof ExpoGlobal.EventEmitter = globalThis.expo.EventEmitter;\n","'use client';\n\nimport { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\nimport type { EventsMap } from './ts-declarations/EventEmitter';\nimport type { ExpoGlobal } from './ts-declarations/global';\n\nensureNativeModulesAreInstalled();\n\nexport type NativeModule<TEventsMap extends EventsMap = Record<never, never>> =\n  typeof ExpoGlobal.NativeModule<EventsMap>;\nexport const NativeModule: typeof ExpoGlobal.NativeModule = globalThis.expo.NativeModule;\n","'use client';\n\nimport { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\nimport { EventsMap } from './ts-declarations/EventEmitter';\nimport type { ExpoGlobal } from './ts-declarations/global';\n\nensureNativeModulesAreInstalled();\n\nexport type SharedObject<TEventsMap extends EventsMap = Record<never, never>> =\n  typeof ExpoGlobal.SharedObject<TEventsMap>;\nexport const SharedObject: typeof ExpoGlobal.SharedObject = globalThis.expo.SharedObject;\n","'use client';\n\nimport { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\nimport { EventsMap } from './ts-declarations/EventEmitter';\nimport type { ExpoGlobal } from './ts-declarations/global';\n\nensureNativeModulesAreInstalled();\n\nexport type SharedRef<\n  TNativeRefType extends string = 'unknown',\n  TEventsMap extends EventsMap = Record<never, never>,\n> = typeof ExpoGlobal.SharedRef<TNativeRefType, TEventsMap>;\nexport const SharedRef: typeof ExpoGlobal.SharedRef = globalThis.expo.SharedRef;\n","import bytesToUuid from './lib/bytesToUuid';\nimport { UUID, Uuidv5Namespace } from './uuid.types';\n\nfunction uuidv4(): string {\n  const nativeUuidv4 = globalThis?.expo?.uuidv4;\n\n  if (!nativeUuidv4) {\n    throw Error(\n      \"Native UUID version 4 generator implementation wasn't found in `expo-modules-core`\"\n    );\n  }\n\n  return nativeUuidv4();\n}\n\nfunction uuidv5(name: string, namespace: string | number[]) {\n  const parsedNamespace =\n    Array.isArray(namespace) && namespace.length === 16 ? bytesToUuid(namespace) : namespace;\n\n  // If parsed namespace is still an array it means that it wasn't valid\n  if (Array.isArray(parsedNamespace)) {\n    throw new Error('`namespace` must be a valid UUID string or an Array of 16 byte values');\n  }\n\n  const nativeUuidv5 = globalThis?.expo?.uuidv5;\n\n  if (!nativeUuidv5) {\n    throw Error(\"Native UUID type 5 generator implementation wasn't found in `expo-modules-core`\");\n  }\n\n  return nativeUuidv5(name, parsedNamespace);\n}\n\nconst uuid: UUID = {\n  v4: uuidv4,\n  v5: uuidv5,\n  namespace: Uuidv5Namespace,\n};\nexport default uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex: string[] = [];\nfor (let i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf: number[], offset?: number) {\n  let i = offset || 0;\n  const bth = byteToHex;\n  // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n  return [\n    bth[buf[i++]],\n    bth[buf[i++]],\n    bth[buf[i++]],\n    bth[buf[i++]],\n    '-',\n    bth[buf[i++]],\n    bth[buf[i++]],\n    '-',\n    bth[buf[i++]],\n    bth[buf[i++]],\n    '-',\n    bth[buf[i++]],\n    bth[buf[i++]],\n    '-',\n    bth[buf[i++]],\n    bth[buf[i++]],\n    bth[buf[i++]],\n    bth[buf[i++]],\n    bth[buf[i++]],\n    bth[buf[i++]],\n  ].join('');\n}\n\nexport default bytesToUuid;\n","/**\n * Collection of utilities used for generating Universally Unique Identifiers.\n */\nexport type UUID = {\n  /**\n   * A UUID generated randomly.\n   */\n  v4: () => string;\n  /**\n   * A UUID generated based on the `value` and `namespace` parameters, which always produces the same result for the same inputs.\n   */\n  v5: (name: string, namespace: string | number[]) => string;\n  namespace: typeof Uuidv5Namespace;\n};\n\n/**\n * Default namespaces for UUID v5 defined in RFC 4122\n */\nexport enum Uuidv5Namespace {\n  // Source of the UUIDs: https://datatracker.ietf.org/doc/html/rfc4122\n  dns = '6ba7b810-9dad-11d1-80b4-00c04fd430c8',\n  url = '6ba7b811-9dad-11d1-80b4-00c04fd430c8',\n  oid = '6ba7b812-9dad-11d1-80b4-00c04fd430c8',\n  x500 = '6ba7b814-9dad-11d1-80b4-00c04fd430c8',\n}\n","// Copyright © 2024 650 Industries.\n\n/// <reference path=\"ts-declarations/NativeComponentRegistry.d.ts\" />\n\n'use client';\n\nimport { type Component, type ComponentType, createRef, PureComponent } from 'react';\nimport {\n  findNodeHandle,\n  type HostComponent,\n  type NativeMethods,\n  NativeModules,\n} from 'react-native';\nimport { get as componentRegistryGet } from 'react-native/Libraries/NativeComponent/NativeComponentRegistry';\n\nimport { requireNativeModule } from './requireNativeModule';\n\n// To make the transition from React Native's `requireNativeComponent` to Expo's\n// `requireNativeViewManager` as easy as possible, `requireNativeViewManager` is a drop-in\n// replacement for `requireNativeComponent`.\n//\n// For each view manager, we create a wrapper component that accepts all the props available to\n// the author of the universal module. This wrapper component splits the props into two sets: props\n// passed to React Native's View (ex: style, testID) and custom view props, which are passed to the\n// adapter view component in a prop called `proxiedProperties`.\n\n/**\n * A map that caches registered native components.\n */\nconst nativeComponentsCache = new Map<string, HostComponent<any>>();\n\n// TODO(@kitten): Optimally, this is defined on ExpoGlobal, but we treat `__expo_app_identifier__` as internal\ndeclare namespace globalThis {\n  const expo:\n    | undefined\n    | {\n        __expo_app_identifier__?: string;\n        getViewConfig(\n          moduleName: string,\n          viewName?: string\n        ): {\n          validAttributes: Record<string, any>;\n          directEventTypes: Record<string, { registrationName: string }>;\n        } | null;\n      };\n}\n\n/**\n * Requires a React Native component using the static view config from an Expo module.\n */\nfunction requireNativeComponent<Props>(\n  moduleName: string,\n  viewName?: string\n): HostComponent<Props> {\n  const appIdentifier = globalThis.expo?.['__expo_app_identifier__'] ?? '';\n  const viewNameSuffix = appIdentifier ? `_${appIdentifier}` : '';\n\n  const nativeViewName = viewName\n    ? `ViewManagerAdapter_${moduleName}_${viewName}${viewNameSuffix}`\n    : `ViewManagerAdapter_${moduleName}${viewNameSuffix}`;\n\n  return componentRegistryGet<Props>(nativeViewName, () => {\n    const expoViewConfig = globalThis.expo?.getViewConfig(moduleName, viewName);\n\n    if (!expoViewConfig) {\n      console.warn(\n        'Unable to get the view config for %s from module &s',\n        viewName ?? 'default view',\n        moduleName\n      );\n    }\n\n    return {\n      uiViewClassName: nativeViewName,\n      ...expoViewConfig,\n    };\n  });\n}\n\n/**\n * Requires a React Native component from cache if possible. This prevents\n * \"Tried to register two views with the same name\" errors on fast refresh, but\n * also when there are multiple versions of the same package with native component.\n */\nfunction requireCachedNativeComponent<Props>(\n  moduleName: string,\n  viewName?: string\n): HostComponent<Props> {\n  const cacheKey = `${moduleName}_${viewName}`;\n  const cachedNativeComponent = nativeComponentsCache.get(cacheKey);\n\n  if (!cachedNativeComponent) {\n    const nativeComponent = requireNativeComponent<Props>(moduleName, viewName);\n    nativeComponentsCache.set(cacheKey, nativeComponent);\n    return nativeComponent;\n  }\n  return cachedNativeComponent;\n}\n\n/**\n * A drop-in replacement for `requireNativeComponent`.\n */\nexport function requireNativeViewManager<P>(\n  moduleName: string,\n  viewName?: string\n): ComponentType<P> {\n  const { viewManagersMetadata } = NativeModules.NativeUnimoduleProxy;\n\n  const viewManagerConfig = viewManagersMetadata?.[moduleName];\n\n  if (__DEV__ && !viewManagerConfig) {\n    const exportedViewManagerNames = Object.keys(viewManagersMetadata).join(', ');\n    console.warn(\n      `The native view manager for module(${moduleName}) ${viewName ? ` required by name (${viewName})` : ''}) from NativeViewManagerAdapter isn't exported by expo-modules-core. Views of this type may not render correctly. Exported view managers: [${exportedViewManagerNames}].`\n    );\n  }\n\n  const ReactNativeComponent = requireCachedNativeComponent(moduleName, viewName);\n\n  class NativeComponent extends PureComponent<P> {\n    static displayName = viewName ? viewName : moduleName;\n\n    nativeRef = createRef<Component & NativeMethods>();\n\n    // This will be accessed from native when the prototype functions are called,\n    // in order to find the associated native view.\n    nativeTag: number | null = null;\n\n    componentDidMount(): void {\n      this.nativeTag = findNodeHandle(this.nativeRef.current);\n    }\n\n    render() {\n      return <ReactNativeComponent {...this.props} ref={this.nativeRef} />;\n    }\n  }\n\n  try {\n    const nativeModule = requireNativeModule(moduleName);\n    const nativeViewPrototype =\n      nativeModule.ViewPrototypes[viewName ? `${moduleName}_${viewName}` : moduleName];\n    if (nativeViewPrototype) {\n      // Assign native view functions to the component prototype, so they can be accessed from the ref.\n      Object.assign(NativeComponent.prototype, nativeViewPrototype);\n    }\n  } catch {\n    // `requireNativeModule` may throw an error when the native module cannot be found.\n    // In some tests we don't mock the entire modules, but we do want to mock native views. For now,\n    // until we still have to support the legacy modules proxy and don't have better ways to mock,\n    // let's just gracefully skip assigning the prototype functions.\n    // See: https://github.com/expo/expo/blob/main/packages/expo-modules-core/src/__tests__/NativeViewManagerAdapter-test.native.tsx\n  }\n\n  return NativeComponent;\n}\n","import { ensureNativeModulesAreInstalled } from './ensureNativeModulesAreInstalled';\nimport type { NativeModule } from './ts-declarations/NativeModule';\n\n/**\n * Registers a web module.\n * @param moduleImplementation A class that extends `NativeModule`. The class is registered under `globalThis.expo.modules[className]`.\n * @param moduleName – a name to register the module under `globalThis.expo.modules[className]`.\n * @returns A singleton instance of the class passed into arguments.\n */\n\nexport function registerWebModule<\n  EventsMap extends Record<never, never>,\n  ModuleType extends typeof NativeModule<EventsMap>,\n>(moduleImplementation: ModuleType, moduleName: string): ModuleType {\n  ensureNativeModulesAreInstalled();\n\n  moduleName = moduleName ?? moduleImplementation.name;\n  if (!moduleName) {\n    throw new Error(\n      'Web module implementation is missing a name - it is either not a class or has been minified. Pass the name as a second argument to the `registerWebModule` function.'\n    );\n  }\n  if (!globalThis?.expo?.modules) {\n    globalThis.expo.modules = {};\n  }\n  if (globalThis.expo.modules[moduleName]) {\n    return globalThis.expo.modules[moduleName];\n  }\n  globalThis.expo.modules[moduleName] = new moduleImplementation();\n  return globalThis.expo.modules[moduleName];\n}\n","export enum PermissionStatus {\n  /**\n   * User has granted the permission.\n   */\n  GRANTED = 'granted',\n  /**\n   * User hasn't granted or denied the permission yet.\n   */\n  UNDETERMINED = 'undetermined',\n  /**\n   * User has denied the permission.\n   */\n  DENIED = 'denied',\n}\n\n/**\n * Permission expiration time. Currently, all permissions are granted permanently.\n */\nexport type PermissionExpiration = 'never' | number;\n\n/**\n * An object obtained by permissions get and request functions.\n */\nexport type PermissionResponse = {\n  /**\n   * Determines the status of the permission.\n   */\n  status: PermissionStatus;\n  /**\n   * Determines time when the permission expires.\n   */\n  expires: PermissionExpiration;\n  /**\n   * A convenience boolean that indicates if the permission is granted.\n   */\n  granted: boolean;\n  /**\n   * Indicates if user can be asked again for specific permission.\n   * If not, one should be directed to the Settings app\n   * in order to enable/disable the permission.\n   */\n  canAskAgain: boolean;\n};\n","// Copyright © 2024 650 Industries.\n\n'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { PermissionResponse } from './PermissionsInterface';\n\n// These types are identical, but improves the readability for suggestions in editors\ntype RequestPermissionMethod<Permission extends PermissionResponse> = () => Promise<Permission>;\ntype GetPermissionMethod<Permission extends PermissionResponse> = () => Promise<Permission>;\n\ntype PermissionHookMethods<Permission extends PermissionResponse, Options = never> = {\n  /** The permission method that requests the user to grant permission. */\n  requestMethod: (options?: Options) => Promise<Permission>;\n  /** The permission method that only fetches the current permission status. */\n  getMethod: (options?: Options) => Promise<Permission>;\n};\n\ntype PermissionHookBehavior = {\n  /** If the hook should automatically fetch the current permission status, without asking the user. */\n  get?: boolean;\n  /** If the hook should automatically request the user to grant permission. */\n  request?: boolean;\n};\n\nexport type PermissionHookOptions<Options extends object> = PermissionHookBehavior & Options;\n\n/**\n * Get or request permission for protected functionality within the app.\n * It uses separate permission requesters to interact with a single permission.\n * By default, the hook will only retrieve the permission status.\n */\nfunction usePermission<Permission extends PermissionResponse, Options extends object>(\n  methods: PermissionHookMethods<Permission, Options>,\n  options?: PermissionHookOptions<Options>\n): [Permission | null, RequestPermissionMethod<Permission>, GetPermissionMethod<Permission>] {\n  const isMounted = useRef(true);\n  const [status, setStatus] = useState<Permission | null>(null);\n  const { get = true, request = false, ...permissionOptions } = options || {};\n\n  const getPermission = useCallback(async () => {\n    let response: Permission;\n    if (Object.keys(permissionOptions).length > 0) {\n      response = await methods.getMethod(permissionOptions as Options);\n    } else {\n      response = await methods.getMethod();\n    }\n    if (isMounted.current) setStatus(response);\n    return response;\n  }, [methods.getMethod]);\n\n  const requestPermission = useCallback(async () => {\n    let response: Permission;\n    if (Object.keys(permissionOptions).length > 0) {\n      response = await methods.requestMethod(permissionOptions as Options);\n    } else {\n      response = await methods.requestMethod();\n    }\n    if (isMounted.current) setStatus(response);\n    return response;\n  }, [methods.requestMethod]);\n\n  useEffect(\n    function runMethods() {\n      if (request) requestPermission();\n      if (!request && get) getPermission();\n    },\n    [get, request, requestPermission, getPermission]\n  );\n\n  // Workaround for unmounting components receiving state updates\n  useEffect(function didMount() {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n\n  return [status, requestPermission, getPermission];\n}\n\n/**\n * Create a new permission hook with the permission methods built-in.\n * This can be used to quickly create specific permission hooks in every module.\n */\nexport function createPermissionHook<Permission extends PermissionResponse, Options extends object>(\n  methods: PermissionHookMethods<Permission, Options>\n) {\n  return (options?: PermissionHookOptions<Options>) =>\n    usePermission<Permission, Options>(methods, options);\n}\n","import { createRef, type RefObject } from 'react';\n\n/**\n * Create a React ref object that is friendly for snapshots.\n * It will be represented as `[React.ref]` in snapshots.\n * @returns A React ref object.\n */\nexport function createSnapshotFriendlyRef<T>(): RefObject<T | null> {\n  return createRef<T>();\n}\n","'use client';\n\nimport { DependencyList, useRef, useMemo, useEffect } from 'react';\n\nimport type { SharedObject } from '../ts-declarations/SharedObject';\n\n/**\n * Returns a shared object, which is automatically cleaned up when the component is unmounted.\n */\nexport function useReleasingSharedObject<TSharedObject extends SharedObject>(\n  factory: () => TSharedObject,\n  dependencies: DependencyList\n): TSharedObject {\n  const objectRef = useRef<TSharedObject | null>(null);\n  const isFastRefresh = useRef(false);\n  const previousDependencies = useRef<DependencyList>(dependencies);\n\n  if (objectRef.current == null) {\n    objectRef.current = factory();\n  }\n\n  const object = useMemo(() => {\n    let newObject = objectRef.current;\n    const dependenciesAreEqual =\n      previousDependencies.current?.length === dependencies.length &&\n      dependencies.every((value, index) => value === previousDependencies.current[index]);\n\n    // If the dependencies have changed, release the previous object and create a new one, otherwise this has been called\n    // because of an unrelated fast refresh, and we don't want to release the object.\n    if (!newObject || !dependenciesAreEqual) {\n      objectRef.current?.release();\n      newObject = factory();\n      objectRef.current = newObject;\n      previousDependencies.current = dependencies;\n    }\n    return newObject;\n  }, dependencies);\n\n  useMemo(() => {\n    isFastRefresh.current = true;\n  }, []);\n\n  useEffect(() => {\n    isFastRefresh.current = false;\n\n    return () => {\n      // This will be called on every fast refresh and on unmount, but we only want to release the object on unmount.\n      if (!isFastRefresh.current && objectRef.current) {\n        objectRef.current.release();\n      }\n    };\n  }, []);\n\n  return object;\n}\n","/**\n * Reloads the app. This method works for both release and debug builds.\n *\n * Unlike [`Updates.reloadAsync()`](/versions/latest/sdk/updates/#updatesreloadasync),\n * this function does not use a new update even if one is available. It only reloads the app using the same JavaScript bundle that is currently running.\n *\n * @param reason The reason for reloading the app. This is used only for some platforms.\n */\nexport async function reloadAppAsync(reason: string = 'Reloaded from JS call'): Promise<void> {\n  await globalThis.expo?.reloadAppAsync(reason);\n}\n","import { CodedError } from './CodedError';\nimport Platform from '../Platform';\n\n/**\n * A class for errors to be thrown when a property is accessed which is\n * unavailable, unsupported, or not currently implemented on the running\n * platform.\n */\nexport class UnavailabilityError extends CodedError {\n  constructor(moduleName: string, propertyName: string) {\n    super(\n      'ERR_UNAVAILABLE',\n      `The method or property ${moduleName}.${propertyName} is not available on ${Platform.OS}, are you sure you've linked all the native dependencies properly?`\n    );\n  }\n}\n","import invariant from 'invariant';\nimport { NativeEventEmitter, Platform } from 'react-native';\n\nimport { EventSubscription } from './EventEmitter';\n\nconst nativeEmitterSubscriptionKey = '@@nativeEmitterSubscription@@' as const;\n\ntype SubscriptionState = {\n  // NOTE(@kitten): Since this is legacy/deprecated, we don't need to be exact about types here\n  [Key in typeof nativeEmitterSubscriptionKey]?: {\n    remove?(): void;\n  };\n} & EventSubscription;\n\ntype NativeModule = {\n  __expo_module_name__?: string;\n  startObserving?: () => void;\n  stopObserving?: () => void;\n\n  // Erase these types as they would conflict with the new NativeModule type.\n  // This EventEmitter is deprecated anyway.\n  addListener?: any;\n  removeListeners?: any;\n};\n\n/**\n * @deprecated Deprecated in favor of `EventEmitter`.\n */\nexport class LegacyEventEmitter {\n  _listenerCount = 0;\n\n  // @ts-expect-error\n  _nativeModule: NativeModule;\n\n  // @ts-expect-error\n  _eventEmitter: NativeEventEmitter;\n\n  constructor(nativeModule: NativeModule) {\n    // If the native module is a new module, just return it back as it's already an event emitter.\n    // This is for backwards compatibility until we stop using this legacy class in other packages.\n    if (nativeModule.__expo_module_name__) {\n      // @ts-expect-error\n      return nativeModule;\n    }\n    this._nativeModule = nativeModule;\n    this._eventEmitter = new NativeEventEmitter(nativeModule as any);\n  }\n\n  addListener<T>(eventName: string, listener: (event: T) => void): EventSubscription {\n    if (!this._listenerCount && Platform.OS !== 'ios' && this._nativeModule.startObserving) {\n      this._nativeModule.startObserving();\n    }\n\n    this._listenerCount++;\n    const nativeEmitterSubscription = this._eventEmitter.addListener(eventName, listener);\n    const subscription: SubscriptionState = {\n      [nativeEmitterSubscriptionKey]: nativeEmitterSubscription,\n      remove: () => {\n        this.removeSubscription(subscription);\n      },\n    };\n    return subscription;\n  }\n\n  removeAllListeners(eventName: string): void {\n    // @ts-ignore: the EventEmitter interface has been changed in react-native@0.64.0\n    const removedListenerCount = this._eventEmitter.listenerCount\n      ? // @ts-ignore: this is available since 0.64\n        this._eventEmitter.listenerCount(eventName)\n      : // @ts-ignore: this is available in older versions\n        this._eventEmitter.listeners(eventName).length;\n    this._eventEmitter.removeAllListeners(eventName);\n    this._listenerCount -= removedListenerCount;\n    invariant(\n      this._listenerCount >= 0,\n      `EventEmitter must have a non-negative number of listeners`\n    );\n\n    if (!this._listenerCount && Platform.OS !== 'ios' && this._nativeModule.stopObserving) {\n      this._nativeModule.stopObserving();\n    }\n  }\n\n  removeSubscription(subscription: EventSubscription): void {\n    const state = subscription as SubscriptionState;\n    const nativeEmitterSubscription = state[nativeEmitterSubscriptionKey];\n    if (!nativeEmitterSubscription) {\n      return;\n    }\n\n    if ('remove' in nativeEmitterSubscription) {\n      nativeEmitterSubscription.remove?.();\n    }\n    this._listenerCount--;\n\n    // Ensure that the emitter's internal state remains correct even if `removeSubscription` is\n    // called again with the same subscription\n    delete state[nativeEmitterSubscriptionKey];\n\n    // Release closed-over references to the emitter\n    subscription.remove = () => {};\n\n    if (!this._listenerCount && Platform.OS !== 'ios' && this._nativeModule.stopObserving) {\n      this._nativeModule.stopObserving();\n    }\n  }\n\n  emit(eventName: string, ...params: any[]): void {\n    this._eventEmitter.emit(eventName, ...params);\n  }\n}\n","import { Platform } from 'expo-modules-core';\nimport { PixelRatio, NativeModules } from 'react-native';\nimport AssetSourceResolver from './AssetSourceResolver';\nimport { getManifest2, manifestBaseUrl } from './PlatformUtils';\n/**\n * Selects the best file for the given asset (ex: choosing the best scale for images) and returns\n * a { uri, hash } pair for the specific asset file.\n *\n * If the asset isn't an image with multiple scales, the first file is selected.\n */\nexport function selectAssetSource(meta) {\n    // This logic is based on that of AssetSourceResolver, with additional support for file hashes and\n    // explicitly provided URIs\n    const scale = AssetSourceResolver.pickScale(meta.scales, PixelRatio.get());\n    const index = meta.scales.findIndex((s) => s === scale);\n    const hash = meta.fileHashes ? (meta.fileHashes[index] ?? meta.fileHashes[0]) : meta.hash;\n    // Allow asset processors to directly provide the URL to load\n    const uri = meta.fileUris ? (meta.fileUris[index] ?? meta.fileUris[0]) : meta.uri;\n    if (uri) {\n        return { uri: resolveUri(uri), hash };\n    }\n    const fileScale = scale === 1 ? '' : `@${scale}x`;\n    const fileExtension = meta.type ? `.${encodeURIComponent(meta.type)}` : '';\n    const suffix = `/${encodeURIComponent(meta.name)}${fileScale}${fileExtension}`;\n    const params = new URLSearchParams({\n        platform: Platform.OS,\n        hash: meta.hash,\n    });\n    // For assets with a specified absolute URL, we use the existing origin instead of prepending the\n    // development server or production CDN URL origin\n    if (/^https?:\\/\\//.test(meta.httpServerLocation)) {\n        const uri = meta.httpServerLocation + suffix + '?' + params;\n        return { uri, hash };\n    }\n    // For assets during development using manifest2, we use the development server's URL origin\n    const manifest2 = getManifest2();\n    const devServerUrl = manifest2?.extra?.expoGo?.developer\n        ? 'http://' + manifest2.extra.expoGo.debuggerHost\n        : null;\n    if (devServerUrl) {\n        const baseUrl = new URL(meta.httpServerLocation + suffix, devServerUrl);\n        baseUrl.searchParams.set('platform', Platform.OS);\n        baseUrl.searchParams.set('hash', meta.hash);\n        return {\n            uri: baseUrl.href,\n            hash,\n        };\n    }\n    // Temporary fallback for loading assets in Expo Go home\n    if (NativeModules['ExponentKernel']) {\n        return { uri: `https://classic-assets.eascdn.net/~assets/${encodeURIComponent(hash)}`, hash };\n    }\n    // In correctly configured apps, we arrive here if the asset is locally available on disk due to\n    // being managed by expo-updates, and `getLocalAssetUri(hash)` must return a local URI for this\n    // hash. Since the asset is local, we don't have a remote URL and specify an invalid URL (an empty\n    // string) as a placeholder.\n    return { uri: '', hash };\n}\n/**\n * Resolves the given URI to an absolute URI. If the given URI is already an absolute URI, it is\n * simply returned. Otherwise, if it is a relative URI, it is resolved relative to the manifest's\n * base URI.\n */\nexport function resolveUri(uri) {\n    // `manifestBaseUrl` is always an absolute URL or `null`.\n    return manifestBaseUrl ? new URL(uri, manifestBaseUrl).href : uri;\n}\n//# sourceMappingURL=AssetSources.js.map","import AssetSourceResolver from 'react-native/Libraries/Image/AssetSourceResolver';\nexport default AssetSourceResolver;\nexport * from 'react-native/Libraries/Image/AssetSourceResolver';\n//# sourceMappingURL=AssetSourceResolver.native.js.map","import Constants from 'expo-constants';\nimport { requireNativeModule, requireOptionalNativeModule } from 'expo-modules-core';\nimport { getManifestBaseUrl } from './AssetUris';\nconst ExpoUpdates = requireOptionalNativeModule('ExpoUpdates');\nconst NativeExpoGoModule = (() => {\n    try {\n        return requireNativeModule('ExpoGo');\n    }\n    catch {\n        return null;\n    }\n})();\nfunction isRunningInExpoGo() {\n    return NativeExpoGoModule != null;\n}\n// expo-updates (and Expo Go expo-updates override) manages assets from updates and exposes\n// the ExpoUpdates.localAssets constant containing information about the assets.\nconst expoUpdatesIsInstalledAndEnabled = !!ExpoUpdates?.isEnabled;\nconst expoUpdatesIsUsingEmbeddedAssets = ExpoUpdates?.isUsingEmbeddedAssets;\n// if expo-updates is installed but we're running directly from the embedded bundle, we don't want\n// to override the AssetSourceResolver.\nconst shouldUseUpdatesAssetResolution = expoUpdatesIsInstalledAndEnabled && !expoUpdatesIsUsingEmbeddedAssets;\n// Expo Go always uses the updates module for asset resolution (local assets) since it\n// overrides the expo-updates module.\nexport const IS_ENV_WITH_LOCAL_ASSETS = isRunningInExpoGo() || shouldUseUpdatesAssetResolution;\n// Get the localAssets property from the ExpoUpdates native module so that we do\n// not need to include expo-updates as a dependency of expo-asset\nexport function getLocalAssets() {\n    return ExpoUpdates?.localAssets ?? {};\n}\nexport function getManifest2() {\n    return Constants.__unsafeNoWarnManifest2;\n}\n// Compute manifest base URL if available\nexport const manifestBaseUrl = Constants.experienceUrl\n    ? getManifestBaseUrl(Constants.experienceUrl)\n    : null;\n//# sourceMappingURL=PlatformUtils.js.map","import { CodedError, requireOptionalNativeModule } from 'expo-modules-core';\nimport { Platform, NativeModules } from 'react-native';\nimport { AppOwnership, ExecutionEnvironment, UserInterfaceIdiom, } from './Constants.types';\nimport ExponentConstants from './ExponentConstants';\nexport { AppOwnership, ExecutionEnvironment, UserInterfaceIdiom, };\nif (!ExponentConstants) {\n    console.warn(\"No native ExponentConstants module found, are you sure the expo-constants's module is linked properly?\");\n}\nconst ExpoUpdates = requireOptionalNativeModule('ExpoUpdates');\nlet rawUpdatesManifest = null;\n// If expo-updates defines a non-empty manifest, prefer that one\nif (ExpoUpdates) {\n    let updatesManifest;\n    if (ExpoUpdates.manifest) {\n        updatesManifest = ExpoUpdates.manifest;\n    }\n    else if (ExpoUpdates.manifestString) {\n        updatesManifest = JSON.parse(ExpoUpdates.manifestString);\n    }\n    if (updatesManifest && Object.keys(updatesManifest).length > 0) {\n        rawUpdatesManifest = updatesManifest;\n    }\n}\n// If dev-launcher defines a non-empty manifest, prefer that one\nlet rawDevLauncherManifest = null;\nif (NativeModules.EXDevLauncher) {\n    let devLauncherManifest;\n    if (NativeModules.EXDevLauncher.manifestString) {\n        devLauncherManifest = JSON.parse(NativeModules.EXDevLauncher.manifestString);\n    }\n    if (devLauncherManifest && Object.keys(devLauncherManifest).length > 0) {\n        rawDevLauncherManifest = devLauncherManifest;\n    }\n}\n// Fall back to ExponentConstants.manifest if we don't have one from Updates\nlet rawAppConfig = null;\nif (ExponentConstants && ExponentConstants.manifest) {\n    const appConfig = ExponentConstants.manifest;\n    // On Android we pass the manifest in JSON form so this step is necessary\n    if (typeof appConfig === 'string') {\n        rawAppConfig = JSON.parse(appConfig);\n    }\n    else {\n        rawAppConfig = appConfig;\n    }\n}\nlet rawManifest = rawUpdatesManifest ?? rawDevLauncherManifest ?? rawAppConfig;\nconst { name, appOwnership, ...nativeConstants } = (ExponentConstants || {});\nconst constants = {\n    ...nativeConstants,\n    // Ensure this is null in bare workflow\n    appOwnership: appOwnership ?? null,\n};\nObject.defineProperties(constants, {\n    /**\n     * Use `manifest` property by default.\n     * This property is only used for internal purposes.\n     * It behaves similarly to the original one, but suppresses warning upon no manifest available.\n     * `expo-asset` uses it to prevent users from seeing mentioned warning.\n     */\n    __unsafeNoWarnManifest: {\n        get() {\n            const maybeManifest = getManifest(true);\n            if (!maybeManifest || !isEmbeddedManifest(maybeManifest)) {\n                return null;\n            }\n            return maybeManifest;\n        },\n        enumerable: false,\n    },\n    __unsafeNoWarnManifest2: {\n        get() {\n            const maybeManifest = getManifest(true);\n            if (!maybeManifest || !isExpoUpdatesManifest(maybeManifest)) {\n                return null;\n            }\n            return maybeManifest;\n        },\n        enumerable: false,\n    },\n    manifest: {\n        get() {\n            const maybeManifest = getManifest();\n            if (!maybeManifest || !isEmbeddedManifest(maybeManifest)) {\n                return null;\n            }\n            return maybeManifest;\n        },\n        enumerable: true,\n    },\n    manifest2: {\n        get() {\n            const maybeManifest = getManifest();\n            if (!maybeManifest || !isExpoUpdatesManifest(maybeManifest)) {\n                return null;\n            }\n            return maybeManifest;\n        },\n        enumerable: true,\n    },\n    expoConfig: {\n        get() {\n            const maybeManifest = getManifest(true);\n            if (!maybeManifest) {\n                return null;\n            }\n            // if running an embedded update, maybeManifest is a EmbeddedManifest which doesn't have\n            // the expo config. Instead, the embedded expo-constants app.config should be used.\n            if (ExpoUpdates && ExpoUpdates.isEmbeddedLaunch) {\n                return rawAppConfig;\n            }\n            if (isExpoUpdatesManifest(maybeManifest)) {\n                return maybeManifest.extra?.expoClient ?? null;\n            }\n            else if (isEmbeddedManifest(maybeManifest)) {\n                return maybeManifest;\n            }\n            return null;\n        },\n        enumerable: true,\n    },\n    expoGoConfig: {\n        get() {\n            const maybeManifest = getManifest(true);\n            if (!maybeManifest) {\n                return null;\n            }\n            if (isExpoUpdatesManifest(maybeManifest)) {\n                return maybeManifest.extra?.expoGo ?? null;\n            }\n            else if (isEmbeddedManifest(maybeManifest)) {\n                return maybeManifest;\n            }\n            return null;\n        },\n        enumerable: true,\n    },\n    easConfig: {\n        get() {\n            const maybeManifest = getManifest(true);\n            if (!maybeManifest) {\n                return null;\n            }\n            if (isExpoUpdatesManifest(maybeManifest)) {\n                return maybeManifest.extra?.eas ?? null;\n            }\n            else if (isEmbeddedManifest(maybeManifest)) {\n                return maybeManifest;\n            }\n            return null;\n        },\n        enumerable: true,\n    },\n    __rawManifest_TEST: {\n        get() {\n            return rawManifest;\n        },\n        set(value) {\n            rawManifest = value;\n        },\n        enumerable: false,\n    },\n});\nfunction isEmbeddedManifest(manifest) {\n    return !isExpoUpdatesManifest(manifest);\n}\nfunction isExpoUpdatesManifest(manifest) {\n    return 'metadata' in manifest;\n}\nfunction getManifest(suppressWarning = false) {\n    if (!rawManifest) {\n        const invalidManifestType = rawManifest === null ? 'null' : 'undefined';\n        if (nativeConstants.executionEnvironment === ExecutionEnvironment.Bare &&\n            Platform.OS !== 'web') {\n            if (!suppressWarning) {\n                console.warn(`Constants.manifest is ${invalidManifestType} because the embedded app.config could not be read. Ensure that you have installed the expo-constants build scripts if you need to read from Constants.manifest.`);\n            }\n        }\n        else if (nativeConstants.executionEnvironment === ExecutionEnvironment.StoreClient ||\n            nativeConstants.executionEnvironment === ExecutionEnvironment.Standalone) {\n            // If we somehow get here, this is a truly exceptional state to be in.\n            // Constants.manifest should *always* be defined in those contexts.\n            throw new CodedError('ERR_CONSTANTS_MANIFEST_UNAVAILABLE', `Constants.manifest is ${invalidManifestType}, must be an object.`);\n        }\n    }\n    return rawManifest;\n}\nexport default constants;\n//# sourceMappingURL=Constants.js.map","export var AppOwnership;\n(function (AppOwnership) {\n    /**\n     * The experience is running inside the Expo Go app.\n     * @deprecated Use [`Constants.executionEnvironment`](#executionenvironment) instead.\n     */\n    AppOwnership[\"Expo\"] = \"expo\";\n})(AppOwnership || (AppOwnership = {}));\n// @docsMissing\nexport var ExecutionEnvironment;\n(function (ExecutionEnvironment) {\n    ExecutionEnvironment[\"Bare\"] = \"bare\";\n    ExecutionEnvironment[\"Standalone\"] = \"standalone\";\n    ExecutionEnvironment[\"StoreClient\"] = \"storeClient\";\n})(ExecutionEnvironment || (ExecutionEnvironment = {}));\n// @needsAudit\n/**\n * Current supported values are `handset`, `tablet`, `desktop` and `tv`. CarPlay will show up\n * as `unsupported`.\n */\nexport var UserInterfaceIdiom;\n(function (UserInterfaceIdiom) {\n    UserInterfaceIdiom[\"Handset\"] = \"handset\";\n    UserInterfaceIdiom[\"Tablet\"] = \"tablet\";\n    UserInterfaceIdiom[\"Desktop\"] = \"desktop\";\n    UserInterfaceIdiom[\"TV\"] = \"tv\";\n    UserInterfaceIdiom[\"Unsupported\"] = \"unsupported\";\n})(UserInterfaceIdiom || (UserInterfaceIdiom = {}));\n//# sourceMappingURL=Constants.types.js.map","import { requireOptionalNativeModule } from 'expo-modules-core';\nexport default requireOptionalNativeModule('ExponentConstants');\n//# sourceMappingURL=ExponentConstants.js.map","export function getFilename(url) {\n    const { pathname, searchParams } = new URL(url, 'https://e');\n    // When attached to a dev server, we use `unstable_path` to represent the file path. This ensures\n    // the file name is not canonicalized by the browser.\n    // NOTE(EvanBacon): This is technically not tied to `__DEV__` as it's possible to use this while bundling in production\n    // mode.\n    if (__DEV__) {\n        if (searchParams.has('unstable_path')) {\n            const encodedFilePath = decodeURIComponent(searchParams.get('unstable_path'));\n            return getBasename(encodedFilePath);\n        }\n    }\n    return getBasename(pathname);\n}\nfunction getBasename(pathname) {\n    return pathname.substring(pathname.lastIndexOf('/') + 1);\n}\nexport function getFileExtension(url) {\n    const filename = getFilename(url);\n    const dotIndex = filename.lastIndexOf('.');\n    // Ignore leading dots for hidden files\n    return dotIndex > 0 ? filename.substring(dotIndex) : '';\n}\n/**\n * Returns the base URL from a manifest's URL. For example, given a manifest hosted at\n * https://example.com/app/manifest.json, the base URL would be https://example.com/app/. Query\n * parameters and fragments also are removed.\n *\n * For an Expo-hosted project with a manifest hosted at https://exp.host/@user/project/index.exp, the\n * base URL would be https://exp.host/@user/project.\n *\n * We also normalize the \"exp\" protocol to \"http\" to handle internal URLs with the Expo schemes used\n * to tell the OS to open the URLs in the the Expo client.\n */\nexport function getManifestBaseUrl(manifestUrl) {\n    const urlObject = new URL(manifestUrl);\n    let nextProtocol = urlObject.protocol;\n    // Change the scheme to http(s) if it is exp(s)\n    if (nextProtocol === 'exp:') {\n        nextProtocol = 'http:';\n    }\n    else if (nextProtocol === 'exps:') {\n        nextProtocol = 'https:';\n    }\n    urlObject.protocol = nextProtocol;\n    // Trim filename, query parameters, and fragment, if any\n    const directory = urlObject.pathname.substring(0, urlObject.pathname.lastIndexOf('/') + 1);\n    urlObject.pathname = directory;\n    urlObject.search = '';\n    urlObject.hash = '';\n    // The URL spec doesn't allow for changing the protocol to `http` or `https`\n    // without a port set so instead, we'll just swap the protocol manually.\n    return urlObject.protocol !== nextProtocol\n        ? urlObject.href.replace(urlObject.protocol, nextProtocol)\n        : urlObject.href;\n}\n//# sourceMappingURL=AssetUris.js.map","import { requireNativeModule } from 'expo-modules-core';\nconst AssetModule = requireNativeModule('ExpoAsset');\n/**\n * Downloads the asset from the given URL to a local cache and returns the local URL of the cached\n * file.\n *\n * If there is already a locally cached file and its MD5 hash matches the given `md5Hash` parameter,\n * if present, the remote asset is not downloaded. The `hash` property is included in Metro's asset\n * metadata objects when this module's `hashAssetFiles` plugin is used, which is the typical way the\n * `md5Hash` parameter of this function is provided.\n */\nexport async function downloadAsync(url, md5Hash, type) {\n    return AssetModule.downloadAsync(url, md5Hash, type);\n}\n//# sourceMappingURL=ExpoAsset.js.map","/* eslint-env browser */\nimport { getFilename } from './AssetUris';\nexport function isImageType(type) {\n    return /^(jpeg|jpg|gif|png|bmp|webp|heic)$/i.test(type);\n}\nexport function getImageInfoAsync(url) {\n    if (typeof window === 'undefined') {\n        return Promise.resolve({ name: getFilename(url), width: 0, height: 0 });\n    }\n    return new Promise((resolve, reject) => {\n        const img = new Image();\n        img.onerror = reject;\n        img.onload = () => {\n            resolve({\n                name: getFilename(url),\n                width: img.naturalWidth,\n                height: img.naturalHeight,\n            });\n        };\n        img.src = url;\n    });\n}\n//# sourceMappingURL=ImageAssets.js.map","import { getLocalAssets } from './PlatformUtils';\n// localAssets are provided by the expo-updates module\nconst localAssets = getLocalAssets();\n/**\n * Returns the URI of a local asset from its hash, or null if the asset is not available locally\n */\nexport function getLocalAssetUri(hash, type) {\n    const localAssetsKey = hash;\n    const legacyLocalAssetsKey = `${hash}.${type ?? ''}`;\n    switch (true) {\n        case localAssetsKey in localAssets: {\n            return localAssets[localAssetsKey];\n        }\n        case legacyLocalAssetsKey in localAssets: {\n            // legacy updates store assets with an extension\n            return localAssets[legacyLocalAssetsKey];\n        }\n        default:\n            return null;\n    }\n}\n//# sourceMappingURL=LocalAssets.js.map","import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource';\nexport default resolveAssetSource;\nexport * from 'react-native/Libraries/Image/resolveAssetSource';\n//# sourceMappingURL=resolveAssetSource.native.js.map","import { useEffect, useState } from 'react';\nimport { Asset } from './Asset';\n// @needsAudit\n/**\n * Downloads and stores one or more assets locally.\n * After the assets are loaded, this hook returns a list of asset instances.\n * If something went wrong when loading the assets, an error is returned.\n *\n * > Note, the assets are not \"reloaded\" when you dynamically change the asset list.\n *\n * @return Returns an array containing:\n * - on the first position, a list of all loaded assets. If they aren't loaded yet, this value is\n *   `undefined`.\n * - on the second position, an error which encountered when loading the assets. If there was no\n *   error, this value is `undefined`.\n *\n * @example\n * ```tsx\n * const [assets, error] = useAssets([require('path/to/asset.jpg'), require('path/to/other.png')]);\n *\n * return assets ? <Image source={assets[0]} /> : null;\n * ```\n */\nexport function useAssets(moduleIds) {\n    const [assets, setAssets] = useState();\n    const [error, setError] = useState();\n    useEffect(() => {\n        Asset.loadAsync(moduleIds).then(setAssets).catch(setError);\n    }, []);\n    return [assets, error];\n}\n//# sourceMappingURL=AssetHooks.js.map","import { requireNativeModule } from 'expo-modules-core';\n\ntype ExpoGoModule = {\n  expoVersion: string;\n  projectConfig: ExpoGoProjectConfig;\n};\n\ntype ExpoGoProjectConfig = {\n  mainModuleName?: string;\n  debuggerHost?: string;\n  logUrl?: string;\n  developer?: {\n    tool?: string;\n    [key: string]: any;\n  };\n  packagerOpts?: ExpoGoPackagerOpts;\n};\n\nexport type ExpoGoPackagerOpts = {\n  hostType?: string;\n  dev?: boolean;\n  strict?: boolean;\n  minify?: boolean;\n  urlType?: string;\n  urlRandomness?: string;\n  lanType?: string;\n  [key: string]: any;\n};\n\n// ExpoGo module is available only when the app is run in Expo Go,\n// otherwise we use `null` instead of throwing an error.\nconst NativeExpoGoModule = ((): ExpoGoModule | null => {\n  try {\n    return requireNativeModule('ExpoGo');\n  } catch {\n    return null;\n  }\n})();\n\n/**\n * Returns a boolean value whether the app is running in Expo Go.\n */\nexport function isRunningInExpoGo(): boolean {\n  return NativeExpoGoModule != null;\n}\n\n/**\n * @hidden\n * Returns an Expo Go project config from the manifest or `null` if the app is not running in Expo Go.\n */\nexport function getExpoGoProjectConfig(): ExpoGoProjectConfig | null {\n  return NativeExpoGoModule?.projectConfig ?? null;\n}\n","import { StyleSheet, Text, View } from 'react-native';\n\nexport function AppEntryNotFound() {\n  return (\n    <View style={styles.container}>\n      <Text style={styles.errorTitle}>App entry not found</Text>\n      <Text style={styles.errorDescription}>\n        The app entry point named \"main\" was not registered. This may be due to an uncaught error\n        thrown from a module's top-level code. Refer to the CLI logs and the native device logs for\n        more detail.\n      </Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    justifyContent: 'center',\n    padding: 20,\n    backgroundColor: '#f2f2f2',\n  },\n  errorTitle: {\n    fontSize: 24,\n    fontWeight: 'bold',\n    color: '#d32f2f',\n    textAlign: 'center',\n    marginBottom: 24,\n  },\n  errorDescription: {\n    fontSize: 16,\n    color: '#333',\n    textAlign: 'center',\n  },\n});\n","import type { ErrorHandlerCallback } from 'react-native';\n\n// Similar interface to the one used in expo modules.\ntype CodedError = Error & { code?: string };\n\nlet isErrorHandlingEnabled = true;\n\nconst developmentBuildMessage = `If you're trying to use a module that is not supported in Expo Go, you need to create a development build of your app. See https://docs.expo.dev/development/introduction/ for more info.`;\n\nfunction customizeUnavailableMessage(error: CodedError) {\n  error.message += '\\n\\n' + developmentBuildMessage;\n}\n\nfunction customizeModuleIsMissingMessage(error: Error) {\n  error.message = `Your JavaScript code tried to access a native module that doesn't exist. \n\n${developmentBuildMessage}`;\n}\n\nfunction customizeError(error: Error | CodedError) {\n  if ('code' in error && error.code === 'ERR_UNAVAILABLE') {\n    customizeUnavailableMessage(error);\n  } else if (\n    error.message.includes('Native module cannot be null') || // RN 0.64 and below message\n    error.message.includes('`new NativeEventEmitter()` requires a non-null argument.') // RN 0.65+ message\n  ) {\n    customizeModuleIsMissingMessage(error);\n  }\n}\n\nfunction errorHandler(originalHandler: ErrorHandlerCallback, error: any, isFatal?: boolean): void {\n  if (error instanceof Error) {\n    customizeError(error);\n  }\n  originalHandler(error, isFatal);\n}\n\nexport function createErrorHandler(originalHandler: ErrorHandlerCallback): ErrorHandlerCallback {\n  return (error, isFatal) => {\n    if (isErrorHandlingEnabled) {\n      errorHandler(originalHandler, error, isFatal);\n      return;\n    }\n\n    originalHandler(error, isFatal);\n  };\n}\n\nexport function disableErrorHandling() {\n  isErrorHandlingEnabled = false;\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { ActivityIndicator, Alert, AppState, type AppStateStatus, StyleSheet, Text, View } from \"react-native\";\nimport { StatusBar } from \"expo-status-bar\";\nimport * as Notifications from \"expo-notifications\";\nimport { NavigationContainer } from \"@react-navigation/native\";\nimport { createNativeStackNavigator, type NativeStackScreenProps } from \"@react-navigation/native-stack\";\n// SafeAreaView depuis safe-area-context (pas react-native) : le RN built-in\n// n'applique pas les insets sur Android, donc la barre de navigation systeme\n// bouffait les boutons de l'app en bas de l'ecran.\nimport { SafeAreaProvider, SafeAreaView } from \"react-native-safe-area-context\";\nimport type { MobileUser } from \"./src/types/auth\";\nimport type { MobileIntervention } from \"./src/types/intervention\";\nimport { clearSession, readSession, saveSession } from \"./src/services/tokenStorage\";\nimport * as authApi from \"./src/services/authApi\";\nimport * as interventionsApi from \"./src/services/interventionsApi\";\nimport { clearAllPrecheckDrafts } from \"./src/services/precheckDraftStorage\";\nimport {\n  clearOfflineCredential,\n  saveOfflineCredential,\n  verifyOfflineCredential,\n} from \"./src/services/offlineCredentialStore\";\nimport {\n  defineBackgroundNotificationTask,\n  registerBackgroundNotificationTask,\n} from \"./src/services/backgroundSync\";\nimport {\n  clearApiAuthTokens,\n  initializeApiClientAuth,\n  isApiClientError,\n  registerSessionRevokedHandler,\n  setApiAuthTokens,\n} from \"./src/services/apiClient\";\nimport {\n  clearEnvironmentConfig,\n  getEnvironmentBaseUrl,\n  getInviteToken,\n  saveInviteToken,\n  setEnvironmentBaseUrl,\n} from \"./src/core/environmentService\";\nimport {\n  clearMobileConfig,\n  getMobileConfigForBaseUrl,\n  saveMobileConfig,\n} from \"./src/core/mobileConfigService\";\nimport {\n  configFromInstance,\n  listInstances,\n  removeInstance,\n  upsertInstance,\n  type SavedInstance,\n} from \"./src/core/instancesService\";\nimport { fetchMobileConfig } from \"./src/services/mobileConfigApi\";\nimport type { MobileConfig } from \"./src/types/mobileConfig\";\nimport {\n  clearLocalDatabase,\n  getInterventionsSnapshot,\n  getLocalDbOwnerId,\n  getPendingQueueItems,\n  initializeLocalDatabase,\n  setLocalDbOwnerId,\n} from \"./src/core/localDatabase\";\nimport {\n  isNetworkOnline,\n  registerBillingWallHandler,\n  subscribeNetworkChanges,\n  syncOnReconnect,\n} from \"./src/services/syncService\";\nimport { configureNotificationHandler, syncPushRegistration } from \"./src/services/pushNotifications\";\nimport MissionsDashboard from \"./src/features/missions/MissionsDashboard\";\nimport MissionDetailScreen from \"./src/features/missions/MissionDetailScreen\";\nimport WorkflowInterventionScreen from \"./src/features/missions/WorkflowInterventionScreen\";\nimport HomeHub, { type HomeCard } from \"./src/features/home/HomeHub\";\nimport StatsScreen from \"./src/features/home/StatsScreen\";\nimport PlanningScreen from \"./src/features/home/PlanningScreen\";\nimport MyInfoScreen from \"./src/features/home/MyInfoScreen\";\nimport SupportScreen from \"./src/features/home/SupportScreen\";\nimport BottlesScreen from \"./src/features/home/BottlesScreen\";\nimport OnboardingScreen from \"./src/features/onboarding/OnboardingScreen\";\nimport LoginScreen from \"./src/features/auth/LoginScreen\";\nimport type { AppStackParamList, RootStackParamList } from \"./src/navigation/types\";\nimport { navigationRef, navigateToPlanning, type PlanningDay } from \"./src/navigation/navigationRef\";\nimport ErrorBoundary from \"./src/shared/ErrorBoundary\";\nimport UpdateGate from \"./src/features/updates/UpdateGate\";\nimport { isTodoStatus } from \"./src/shared/interventionUtils\";\nimport { installCrashHandlers } from \"./src/core/crashHandlers\";\nimport { setCrashContext } from \"./src/core/crashLog\";\n\n// Capteurs globaux d'erreurs JS (fatales + rejets de promesse) installes au\n// chargement du module, avant tout rendu, pour capter les crashs au plus tot.\n// Voir OBSERVABILITE_CRASH.md (approche A).\ninstallCrashHandlers();\n\nconst RootStack = createNativeStackNavigator<RootStackParamList>();\nconst AppStack = createNativeStackNavigator<AppStackParamList>();\n\n// Badge du hub d'accueil : nombre d'interventions \"a faire / en cours\".\n// On reutilise la source unique du vocabulaire de statuts (interventionUtils)\n// au lieu de redupliquer le Set ici.\n// Definit la tache de fond de pre-cache (couche 2) AU SCOPE MODULE : doit etre\n// connue d'expo-task-manager au demarrage, avant le rendu React, pour pouvoir\n// etre reveillee par un data push meme app fermee. L'enregistrement aupres de\n// l'OS (registerBackgroundNotificationTask) se fait au boot.\ndefineBackgroundNotificationTask();\n\nfunction countTodo(interventions: MobileIntervention[]): number {\n  return interventions.filter((i) => isTodoStatus(i.statut)).length;\n}\n\ntype MissionsScreenProps = NativeStackScreenProps<AppStackParamList, \"Missions\"> & {\n  brandColor: string;\n  interventions: MobileIntervention[];\n  loadingInterventions: boolean;\n  interventionsError: string | null;\n  isOnline: boolean;\n  syncingQueue: boolean;\n  statusMessage: string | null;\n  activeMissionsTab: \"todo\" | \"done\";\n  setActiveMissionsTab: (tab: \"todo\" | \"done\") => void;\n  onRefreshInterventions: () => void;\n};\n\n// Liste des interventions. N'est plus l'accueil : on y arrive depuis le hub via\n// une carte. Le header natif (titre + bouton retour) remplace l'ancien header\n// custom, d'ou le simple conteneur ici.\nfunction MissionsScreen({\n  navigation,\n  brandColor,\n  interventions,\n  loadingInterventions,\n  interventionsError,\n  isOnline,\n  syncingQueue,\n  statusMessage,\n  activeMissionsTab,\n  setActiveMissionsTab,\n  onRefreshInterventions,\n}: Readonly<MissionsScreenProps>) {\n  return (\n    <View style={styles.subScreen}>\n      <MissionsDashboard\n        interventions={interventions}\n        loadingInterventions={loadingInterventions}\n        interventionsError={interventionsError}\n        isOnline={isOnline}\n        syncingQueue={syncingQueue}\n        brandColor={brandColor}\n        activeTab={activeMissionsTab}\n        onChangeTab={setActiveMissionsTab}\n        onRefresh={onRefreshInterventions}\n        onOpenDetail={(id) => {\n          navigation.navigate(\"MissionDetail\", { interventionId: id, brandColor });\n        }}\n      />\n      {statusMessage ? <Text style={styles.status}>{statusMessage}</Text> : null}\n    </View>\n  );\n}\n\ntype AppScreenRenderers = {\n  renderHome: (props: NativeStackScreenProps<AppStackParamList, \"Home\">) => React.ReactElement;\n  renderMissions: (props: NativeStackScreenProps<AppStackParamList, \"Missions\">) => React.ReactElement;\n  renderStats: (props: NativeStackScreenProps<AppStackParamList, \"Stats\">) => React.ReactElement;\n  renderMyInfo: (props: NativeStackScreenProps<AppStackParamList, \"MyInfo\">) => React.ReactElement;\n  renderSupport: (props: NativeStackScreenProps<AppStackParamList, \"Support\">) => React.ReactElement;\n  renderBottles: (props: NativeStackScreenProps<AppStackParamList, \"Bottles\">) => React.ReactElement;\n  renderPlanning: (props: NativeStackScreenProps<AppStackParamList, \"Planning\">) => React.ReactElement;\n};\n\nfunction AppNavigatorStack({\n  renderHome,\n  renderMissions,\n  renderStats,\n  renderMyInfo,\n  renderSupport,\n  renderBottles,\n  renderPlanning,\n}: Readonly<AppScreenRenderers>) {\n  return (\n    <AppStack.Navigator>\n      <AppStack.Screen name=\"Home\" options={{ headerShown: false }}>\n        {renderHome}\n      </AppStack.Screen>\n      <AppStack.Screen name=\"Missions\" options={{ title: \"Mes interventions\" }}>\n        {renderMissions}\n      </AppStack.Screen>\n      <AppStack.Screen name=\"Stats\" options={{ title: \"Statistiques\" }}>\n        {renderStats}\n      </AppStack.Screen>\n      <AppStack.Screen name=\"MyInfo\" options={{ title: \"Mes informations\" }}>\n        {renderMyInfo}\n      </AppStack.Screen>\n      <AppStack.Screen name=\"Support\" options={{ title: \"Support\" }}>\n        {renderSupport}\n      </AppStack.Screen>\n      <AppStack.Screen name=\"Bottles\" options={{ title: \"Mes bouteilles de gaz\" }}>\n        {renderBottles}\n      </AppStack.Screen>\n      <AppStack.Screen name=\"Planning\" options={{ title: \"Calendrier d'intervention\" }}>\n        {renderPlanning}\n      </AppStack.Screen>\n      <AppStack.Screen\n        name=\"MissionDetail\"\n        component={MissionDetailScreen}\n        options={{ title: \"Detail mission\" }}\n      />\n      <AppStack.Screen\n        name=\"WorkflowIntervention\"\n        component={WorkflowInterventionScreen}\n        options={{ title: \"Workflow intervention\" }}\n      />\n    </AppStack.Navigator>\n  );\n}\n\n\ntype OnboardingPayload = {\n  url: string | null;\n  inviteToken: string | null;\n  email: string | null;\n};\n\nfunction parseOnboardingPayload(raw: string): OnboardingPayload {\n  const trimmed = String(raw || \"\").trim();\n  const empty: OnboardingPayload = { url: null, inviteToken: null, email: null };\n  if (!trimmed) {\n    return empty;\n  }\n\n  const pickString = (obj: Record<string, unknown>, keys: string[]): string | null => {\n    for (const key of keys) {\n      const v = obj[key];\n      if (typeof v === \"string\") return v;\n    }\n    return null;\n  };\n\n  try {\n    const parsedJson = JSON.parse(trimmed) as Record<string, unknown>;\n    return {\n      url: pickString(parsedJson, [\"url\", \"base_url\", \"instance_url\"]),\n      inviteToken: pickString(parsedJson, [\"invite_token\", \"token\"]),\n      email: pickString(parsedJson, [\"email\"]),\n    };\n  } catch {\n    // Continue with URL parsing.\n  }\n\n  try {\n    const urlObj = new URL(trimmed);\n    const queryUrl =\n      urlObj.searchParams.get(\"url\") ||\n      urlObj.searchParams.get(\"base_url\") ||\n      urlObj.searchParams.get(\"instance_url\");\n\n    return {\n      url: queryUrl || trimmed,\n      inviteToken: urlObj.searchParams.get(\"invite_token\") || urlObj.searchParams.get(\"token\"),\n      email: urlObj.searchParams.get(\"email\"),\n    };\n  } catch {\n    return empty;\n  }\n}\n\n// Configure une seule fois la presentation des notifications au premier plan.\nconfigureNotificationHandler();\n\nfunction AppInner() {\n  const [booting, setBooting] = useState(true);\n  const [isOnline, setIsOnline] = useState(true);\n  const [syncingQueue, setSyncingQueue] = useState(false);\n  const [validatingInstance, setValidatingInstance] = useState(false);\n  const [submitting, setSubmitting] = useState(false);\n\n  const [instanceUrl, setInstanceUrl] = useState(\"\");\n  const [configuredBaseUrl, setConfiguredBaseUrl] = useState<string | null>(null);\n  const [mobileConfig, setMobileConfig] = useState<MobileConfig | null>(null);\n  const [inviteToken, setInviteToken] = useState<string | null>(null);\n  // Instances enregistrees (multi-entreprises) : permet de rebasculer sans\n  // re-scanner le QR ni retaper l'email.\n  const [savedInstances, setSavedInstances] = useState<SavedInstance[]>([]);\n\n  const [onboardingError, setOnboardingError] = useState<string | null>(null);\n  const [email, setEmail] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n  const [error, setError] = useState<string | null>(null);\n  const [statusMessage, setStatusMessage] = useState<string | null>(null);\n\n  const [user, setUser] = useState<MobileUser | null>(null);\n  const [interventions, setInterventions] = useState<MobileIntervention[]>([]);\n  const [loadingInterventions, setLoadingInterventions] = useState(false);\n  const [interventionsError, setInterventionsError] = useState<string | null>(null);\n  // Tab courante remontee ici pour survivre aux remounts de MissionsDashboard\n  // declenches par les re-renders d'App (DashboardRoute est redefini a\n  // chaque render, donc l'enfant MissionsDashboard est remonte et perd\n  // son state local — d'ou le \"ça refresh et reste sur À faire\" sans\n  // cette lift-up).\n  const [activeMissionsTab, setActiveMissionsTab] = useState<\"todo\" | \"done\">(\"todo\");\n\n  const appDisplayName = mobileConfig?.app_name || \"MissioFlow Mobile\";\n  const brandColor = mobileConfig?.primary_color || \"#1e56a8\";\n  const logoUrl = mobileConfig?.logo_url || null;\n\n  // Situe les incidents (instance + tenant) sans donnee sensible, pour le log de\n  // crash. Voir OBSERVABILITE_CRASH.md (approche A, §6).\n  useEffect(() => {\n    setCrashContext({\n      instanceUrl: configuredBaseUrl,\n      tenantId: mobileConfig?.tenant_id ?? null,\n    });\n  }, [configuredBaseUrl, mobileConfig?.tenant_id]);\n\n  // Session evincee (Lot 5, verrouillage per-seat) : quand le compte se\n  // reconnecte ailleurs (web ou autre appareil), le backend renvoie un 401\n  // code=SESSION_REVOKED. L'apiClient a deja purge les tokens ; ici on ramene\n  // l'utilisateur a l'ecran de login avec un message dedie. Mount-once : les\n  // setters de useState ont une identite stable, pas besoin de les lister.\n  useEffect(() => {\n    registerSessionRevokedHandler(() => {\n      setUser(null);\n      setInterventions([]);\n      setPassword(\"\");\n      setStatusMessage(null);\n      setError(\"Vous avez ete deconnecte car votre compte a ete utilise sur un autre appareil.\");\n    });\n    return () => registerSessionRevokedHandler(null);\n  }, []);\n\n  // Mur de facturation (cote serveur, Lot 1) : une ecriture de completion\n  // synchronisee en fond est refusee (402 BILLING_WALL) quand l'abonnement du\n  // tenant n'est plus actif. La sync garde l'item en file (re-pousse a la\n  // reactivation) ; ici on informe juste le tech, SANS logout (le mur n'est pas\n  // une session invalide). Une seule alerte par episode (cf. billingWallNotified\n  // cote syncService). Mount-once.\n  useEffect(() => {\n    registerBillingWallHandler((message) => {\n      Alert.alert(\n        \"Abonnement requis\",\n        message ||\n          \"Abonnement requis. Seules les interventions deja en cours du jour peuvent etre finalisees. Vos saisies sont conservees et seront envoyees des la reactivation.\",\n        [{ text: \"Compris\" }]\n      );\n    });\n    return () => registerBillingWallHandler(null);\n  }, []);\n\n  const loadInterventions = async (): Promise<number> => {\n    setLoadingInterventions(true);\n    setInterventionsError(null);\n\n    try {\n      // Fenetre LARGE volontaire : le backend mobile defaut a -7/+7 jours, ce\n      // qui masquait au tech ses interventions futures (mois prochain absent du\n      // calendrier/des stats). Objectif produit : le tech voit 100% de ses\n      // interventions planifiees. On couvre l'annee passee -> +2 ans.\n      const nowYear = new Date().getFullYear();\n      const payload = await interventionsApi.getMyInterventions({\n        date_debut: `${nowYear - 1}-01-01`,\n        date_fin: `${nowYear + 2}-12-31`,\n      });\n      setInterventions(payload.items);\n      return payload.count;\n    } catch (e) {\n      const message = e instanceof Error ? e.message : \"Chargement des interventions impossible\";\n      setInterventionsError(message);\n      return 0;\n    } finally {\n      setLoadingInterventions(false);\n    }\n  };\n\n  // Precharge les workflows (etapes) des interventions \"a faire\" pour le mode\n  // hors-ligne. Les etapes ne sont PAS dans la liste et sont materialisees\n  // paresseusement cote serveur a la 1ere lecture : sans ce prechargement, un\n  // tech qui ouvre une intervention pour la 1ere fois hors-ligne (ex: descend a\n  // la cave sans l'avoir ouverte en ligne) voit \"aucune etape\". Best-effort, en\n  // tache de fond : ne bloque jamais l'UI. A appeler EN LIGNE (login / boot).\n  const prefetchTodoWorkflows = async () => {\n    try {\n      const snap = await getInterventionsSnapshot();\n      const ids = snap.items.filter((i) => isTodoStatus(i.statut)).map((i) => i.id);\n      if (ids.length === 0) {\n        return;\n      }\n      const n = await interventionsApi.prefetchWorkflows(ids);\n      if (n > 0) {\n        setStatusMessage(`${n} intervention(s) prêtes hors-ligne.`);\n      }\n    } catch {\n      // best-effort : pas de prechargement si offline / erreur.\n    }\n  };\n\n  // Refs \"derniere valeur\" pour les listeners de notification (effet mount-once)\n  // sans recreer les abonnements a chaque render.\n  const loadInterventionsRef = useRef(loadInterventions);\n  loadInterventionsRef.current = loadInterventions;\n  const userRef = useRef<MobileUser | null>(user);\n  userRef.current = user;\n  // Vrai quand la session courante a ete restauree HORS-LIGNE sans token valide\n  // (reconnexion offline apres deconnexion). Au retour du reseau, on invite a se\n  // reconnecter pour synchroniser (le travail en file est preserve).\n  const offlineTokenlessRef = useRef(false);\n  // Deep-link calendrier en attente : si la notif \"resume quotidien\" est tapee\n  // avant que l'app soit prete (cold start, session pas encore restauree), on\n  // memorise le jour cible ici et on rejoue des que `user` est charge.\n  const pendingPlanningDayRef = useRef<PlanningDay | null>(null);\n\n  // Une notification push signifie qu'un admin a modifie une mission. Si le\n  // technicien est connecte, on recharge la liste pour refleter le changement\n  // immediatement (reception au premier plan + tap sur la notification).\n  useEffect(() => {\n    const reloadIfLogged = () => {\n      if (userRef.current) {\n        void loadInterventionsRef.current();\n      }\n    };\n\n    // Tap sur une notification : on recharge la liste, et si c'est le resume\n    // quotidien (data.type === \"daily_summary\") on ouvre le calendrier sur le\n    // bon jour. Si l'app n'est pas encore prete (session non restauree), on\n    // memorise la cible pour la rejouer (cf. effet ci-dessous).\n    const onTap = (response: Notifications.NotificationResponse) => {\n      reloadIfLogged();\n      const data = response.notification.request.content.data as\n        | { type?: string; day?: string }\n        | undefined;\n      if (data?.type !== \"daily_summary\") {\n        return;\n      }\n      const day: PlanningDay = data.day === \"tomorrow\" ? \"tomorrow\" : \"today\";\n      if (!(userRef.current && navigateToPlanning(day))) {\n        pendingPlanningDayRef.current = day;\n      }\n    };\n\n    const receivedSub = Notifications.addNotificationReceivedListener(reloadIfLogged);\n    const responseSub = Notifications.addNotificationResponseReceivedListener(onTap);\n    return () => {\n      receivedSub.remove();\n      responseSub.remove();\n    };\n  }, []);\n\n  // Rejoue un deep-link calendrier en attente une fois la session restauree :\n  // l'ecran \"AppNavigator\" (qui contient \"Planning\") n'est monte qu'avec un\n  // user, donc la navigation au moment du tap pouvait echouer.\n  useEffect(() => {\n    if (!user || !pendingPlanningDayRef.current) {\n      return;\n    }\n    const day = pendingPlanningDayRef.current;\n    // setTimeout(0) : laisse l'AppNavigator se monter avant de naviguer.\n    const timer = setTimeout(() => {\n      if (navigateToPlanning(day)) {\n        pendingPlanningDayRef.current = null;\n      }\n    }, 0);\n    return () => clearTimeout(timer);\n  }, [user]);\n\n  const applyEnvironmentFromValue = async (value: string): Promise<boolean> => {\n    setOnboardingError(null);\n    setValidatingInstance(true);\n\n    try {\n      const normalized = await setEnvironmentBaseUrl(value);\n      const remoteConfig = await fetchMobileConfig(normalized);\n      await saveMobileConfig(normalized, remoteConfig);\n\n      // Memorise l'instance dans le registre local (multi-entreprises).\n      const updatedInstances = await upsertInstance({\n        base_url: normalized,\n        app_name: remoteConfig.app_name,\n        primary_color: remoteConfig.primary_color,\n        logo_url: remoteConfig.logo_url,\n        tenant_id: remoteConfig.tenant_id,\n        support_email: remoteConfig.support_email,\n        support_phone: remoteConfig.support_phone,\n        last_email: email.trim() || null,\n        saved_at: new Date().toISOString(),\n      });\n      setSavedInstances(updatedInstances);\n\n      setConfiguredBaseUrl(normalized);\n      setMobileConfig(remoteConfig);\n      setInstanceUrl(normalized);\n      setStatusMessage(\"Instance configuree.\");\n      return true;\n    } catch (e) {\n      const message = e instanceof Error ? e.message : \"Instance inaccessible ou invalide\";\n      await clearEnvironmentConfig();\n      await clearMobileConfig();\n      setOnboardingError(message);\n      setConfiguredBaseUrl(null);\n      setMobileConfig(null);\n      return false;\n    } finally {\n      setValidatingInstance(false);\n    }\n  };\n\n  const onSaveEnvironment = async () => {\n    await saveInviteToken(null);\n    setInviteToken(null);\n    await applyEnvironmentFromValue(instanceUrl);\n  };\n\n  const onScanPayload = async (raw: string) => {\n    const parsed = parseOnboardingPayload(raw);\n    if (!parsed.url) {\n      setOnboardingError(\"QR invalide: URL d'instance introuvable.\");\n      return;\n    }\n\n    if (parsed.email) {\n      setEmail(parsed.email);\n    }\n\n    if (parsed.inviteToken) {\n      setInviteToken(parsed.inviteToken);\n    }\n\n    const valid = await applyEnvironmentFromValue(parsed.url);\n    if (valid && parsed.inviteToken) {\n      await saveInviteToken(parsed.inviteToken);\n    }\n  };\n\n  // Bascule vers une instance deja enregistree : pas de QR ni d'URL a retaper,\n  // email pre-rempli. On arrive sur l'ecran de connexion de cette instance.\n  const onSelectSavedInstance = async (entry: SavedInstance) => {\n    setOnboardingError(null);\n    setValidatingInstance(true);\n    try {\n      const normalized = await setEnvironmentBaseUrl(entry.base_url);\n      // Re-fetch best-effort de la config (capte un changement de nom/branding),\n      // fallback sur la config enregistree si hors-ligne.\n      let config = configFromInstance(entry);\n      try {\n        config = await fetchMobileConfig(normalized);\n        const refreshed = await upsertInstance({\n          base_url: normalized,\n          app_name: config.app_name,\n          primary_color: config.primary_color,\n          logo_url: config.logo_url,\n          tenant_id: config.tenant_id,\n          support_email: config.support_email,\n          support_phone: config.support_phone,\n          saved_at: new Date().toISOString(),\n        });\n        setSavedInstances(refreshed);\n      } catch {\n        // hors-ligne : on garde la config du registre.\n      }\n      await saveMobileConfig(normalized, config);\n      setConfiguredBaseUrl(normalized);\n      setMobileConfig(config);\n      setInstanceUrl(normalized);\n      setEmail(entry.last_email ?? \"\");\n      setPassword(\"\");\n    } catch (e) {\n      setOnboardingError(e instanceof Error ? e.message : \"Instance inaccessible\");\n    } finally {\n      setValidatingInstance(false);\n    }\n  };\n\n  const onRemoveSavedInstance = async (baseUrl: string) => {\n    const updated = await removeInstance(baseUrl);\n    setSavedInstances(updated);\n  };\n\n  const onChangeInstance = async () => {\n    // Garde-fou : changer d'instance efface les donnees locales de l'instance\n    // courante (y compris la file d'actions hors-ligne non synchronisees). On\n    // previent l'utilisateur si du travail risque d'etre perdu / s'il est\n    // hors-ligne (il ne pourra pas se reconnecter ailleurs sans reseau).\n    let pendingCount = 0;\n    try {\n      const pending = await getPendingQueueItems();\n      pendingCount = pending.length;\n    } catch {\n      // best-effort : si on ne peut pas lire la file, on avertit quand meme.\n    }\n\n    const lines = [\n      \"Cette action efface les donnees locales de cette instance et revient a la liste des instances.\",\n    ];\n    if (pendingCount > 0) {\n      lines.push(\n        `\\n⚠️ ${pendingCount} action(s) non synchronisee(s) seront definitivement perdues.`\n      );\n    }\n    if (!isOnline) {\n      lines.push(\n        \"\\n⚠️ Tu es hors-ligne : tu ne pourras pas te reconnecter a une autre instance sans reseau.\"\n      );\n    }\n\n    Alert.alert(\n      \"Changer d'instance\",\n      lines.join(\"\\n\"),\n      [\n        { text: \"Annuler\", style: \"cancel\" },\n        {\n          text: \"Changer quand meme\",\n          style: \"destructive\",\n          onPress: () => {\n            (async () => {\n              await clearSession();\n              clearApiAuthTokens();\n              await clearAllPrecheckDrafts();\n              await clearOfflineCredential();\n              await clearLocalDatabase();\n              await clearMobileConfig();\n              await clearEnvironmentConfig();\n              setConfiguredBaseUrl(null);\n              setMobileConfig(null);\n              setInstanceUrl(\"\");\n              setInviteToken(null);\n              setUser(null);\n              setEmail(\"\");\n              setPassword(\"\");\n              setStatusMessage(null);\n              setError(null);\n              setOnboardingError(null);\n            })();\n          },\n        },\n      ]\n    );\n  };\n\n  const onLogin = async () => {\n    if (!email.trim() || !password) {\n      setError(\"Email et mot de passe sont requis.\");\n      return;\n    }\n\n    setSubmitting(true);\n    setError(null);\n\n    try {\n      const result = await authApi.login(email.trim(), password, inviteToken);\n      await saveSession(result.access_token, result.refresh_token, result.user);\n      // Notifier l'apiClient du nouveau token : sans ca, le cache memoire\n      // reste a null (car hydrated=true apres le boot initial) et les\n      // requetes suivantes partent sans header Authorization.\n      setApiAuthTokens(result.access_token, result.refresh_token);\n      offlineTokenlessRef.current = false;\n\n      // Memorise le credential pour la reconnexion HORS-LIGNE (point D) : hash\n      // Argon2id en SecureStore, best-effort (ne doit jamais bloquer le login).\n      if (configuredBaseUrl) {\n        try {\n          await saveOfflineCredential(configuredBaseUrl, email.trim(), password, result.user);\n        } catch {\n          // best-effort : pas de reconnexion offline si l'enregistrement echoue.\n        }\n      }\n\n      // Garde anti-fuite inter-comptes : si le cache local appartient a un\n      // AUTRE technicien (device partage), on le purge avant de charger les\n      // interventions du nouvel utilisateur. On ne purge PAS quand c'est le\n      // meme compte qui se reconnecte -> sa file de sync hors-ligne survit.\n      const previousOwner = await getLocalDbOwnerId();\n      if (previousOwner !== null && previousOwner !== result.user.id) {\n        await clearLocalDatabase();\n        await clearAllPrecheckDrafts();\n      }\n      await setLocalDbOwnerId(result.user.id);\n\n      await saveInviteToken(null);\n      setInviteToken(null);\n      setUser(result.user);\n      setPassword(\"\");\n\n      // Memorise l'email pour cette instance (plus a retaper la prochaine fois).\n      if (configuredBaseUrl) {\n        const updatedInstances = await upsertInstance({\n          base_url: configuredBaseUrl,\n          last_email: email.trim(),\n          saved_at: new Date().toISOString(),\n        });\n        setSavedInstances(updatedInstances);\n      }\n\n      const count = await loadInterventions();\n      setStatusMessage(`Connecte. ${count} intervention(s) chargee(s).`);\n      // Enregistrement push best-effort : ne doit jamais bloquer le login.\n      void syncPushRegistration();\n      // Precharge les workflows pour le hors-ligne (tache de fond).\n      void prefetchTodoWorkflows();\n    } catch (e) {\n      // Echec du login en ligne. Si c'est une erreur RESEAU (pas une vraie 401\n      // serveur), on tente la reconnexion HORS-LIGNE (point D) via le credential\n      // cache. Une 401 reelle (mauvais identifiants) ne declenche PAS l'offline.\n      const isNetworkErr = isApiClientError(e) && e.status === undefined;\n      if (isNetworkErr && configuredBaseUrl) {\n        const cachedUser = await verifyOfflineCredential(\n          configuredBaseUrl,\n          email.trim(),\n          password\n        );\n        if (cachedUser) {\n          const session = await readSession();\n          const hasTokens = Boolean(session.accessToken && session.refreshToken);\n          setApiAuthTokens(session.accessToken ?? null, session.refreshToken ?? null);\n          // Sans tokens (apres deconnexion), la session est offline-only : on\n          // marque pour inviter a se reconnecter au retour du reseau.\n          offlineTokenlessRef.current = !hasTokens;\n          await setLocalDbOwnerId(cachedUser.id);\n          setUser(cachedUser);\n          setPassword(\"\");\n          await loadInterventions();\n          setStatusMessage(\n            hasTokens\n              ? \"Connecte hors-ligne. Donnees en cache disponibles.\"\n              : \"Connecte hors-ligne. Reconnecte-toi au retour du reseau pour synchroniser.\"\n          );\n        } else {\n          setError(\n            \"Connexion impossible hors-ligne : identifiants non reconnus pour cette instance, ou aucune session en cache. Connecte-toi une fois en ligne d'abord.\"\n          );\n        }\n      } else {\n        const message = e instanceof Error ? e.message : \"Erreur de connexion\";\n        setError(message);\n      }\n    } finally {\n      setSubmitting(false);\n    }\n  };\n\n  const onLogout = async () => {\n    try {\n      const session = await readSession();\n      if (session.refreshToken) {\n        await authApi.logout(session.refreshToken);\n      }\n    } catch {\n      // ignore\n    }\n\n    await clearSession();\n    clearApiAuthTokens();\n    setUser(null);\n    setInterventions([]);\n    setStatusMessage(\"Deconnexion effectuee.\");\n  };\n\n  const onRefreshInterventions = async () => {\n    const count = await loadInterventions();\n    setStatusMessage(`Interventions rafraichies (${count}).`);\n  };\n\n  // Recharge le profil (apres edition telephone/mot de passe) pour refleter les\n  // champs enrichis renvoyes par /mobile/me.php.\n  const refreshUser = async () => {\n    try {\n      const current = await authApi.me();\n      setUser(current);\n    } catch {\n      // best-effort : on garde l'utilisateur courant si le refresh echoue.\n    }\n  };\n\n  useEffect(() => {\n    let isMounted = true;\n    let unsubscribeNetwork: (() => void) | null = null;\n    let appStateSub: { remove: () => void } | null = null;\n\n    // Synchronisation incrementale : pousse la file hors-ligne puis tire le\n    // delta serveur (sync_pull.php) qui fusionne le cache local. On rafraichit\n    // ENSUITE l'affichage depuis le snapshot fusionne — toujours, et non plus\n    // conditionne a pushed||pulled (avant : un retour online sans modif locale\n    // ne rafraichissait jamais -> donnees perimees jusqu'au cold start).\n    const triggerReconnectSync = async () => {\n      // Pas d'utilisateur, ou session offline-only sans token (rien a pousser\n      // avec un token revoque) -> on ne tente pas de sync.\n      if (!userRef.current || offlineTokenlessRef.current) {\n        return;\n      }\n      setSyncingQueue(true);\n      const result = await syncOnReconnect();\n      setSyncingQueue(false);\n\n      const snapshot = await getInterventionsSnapshot();\n      if (isMounted) {\n        setInterventions(snapshot.items);\n      }\n      if (result.pushed > 0) {\n        setStatusMessage(`${result.pushed} action(s) hors-ligne synchronisée(s).`);\n      }\n    };\n\n    const handleNetworkChange = (onlineState: boolean) => {\n      if (!isMounted) {\n        return;\n      }\n      setIsOnline(onlineState);\n      if (!onlineState) {\n        return;\n      }\n      // Session restauree hors-ligne sans token : au retour du reseau on ne peut\n      // pas synchroniser (tokens revoques a la deconnexion). On invite a se\n      // reconnecter ; le travail en file (SQLite) est preserve et repartira\n      // apres le re-login.\n      if (offlineTokenlessRef.current) {\n        offlineTokenlessRef.current = false;\n        Alert.alert(\n          \"De retour en ligne\",\n          \"Reconnecte-toi pour synchroniser ton travail effectue hors-ligne.\",\n          [{ text: \"OK\", onPress: () => setUser(null) }]\n        );\n        return;\n      }\n      void triggerReconnectSync();\n    };\n\n    // Retour au premier plan = \"redemarrage\" pour une app en arriere-plan :\n    // on resynchronise (delta) pour rattraper les modifs serveur survenues\n    // pendant la veille (push manquee, longue mise en arriere-plan).\n    const handleAppStateChange = async (state: AppStateStatus) => {\n      if (state !== \"active\" || !userRef.current) {\n        return;\n      }\n      const online = await isNetworkOnline();\n      if (isMounted && online) {\n        setIsOnline(true);\n        void triggerReconnectSync();\n      }\n    };\n\n    const bootstrap = async () => {\n      try {\n        await initializeLocalDatabase();\n        // Enregistre la tache de fond de pre-cache (couche 2). Best-effort,\n        // independant de la session : la tache gere sa propre auth au reveil.\n        void registerBackgroundNotificationTask();\n\n        const online = await isNetworkOnline();\n        if (isMounted) {\n          setIsOnline(online);\n        }\n\n        unsubscribeNetwork = subscribeNetworkChanges(handleNetworkChange);\n        appStateSub = AppState.addEventListener(\"change\", handleAppStateChange);\n\n        await initializeApiClientAuth();\n\n        const configuredUrl = await getEnvironmentBaseUrl();\n        const storedInviteToken = await getInviteToken();\n        setInviteToken(storedInviteToken);\n\n        const instances = await listInstances();\n        if (isMounted) {\n          setSavedInstances(instances);\n        }\n\n        if (!configuredUrl) {\n          setBooting(false);\n          return;\n        }\n\n        setInstanceUrl(configuredUrl);\n        // Pre-remplit l'email memorise pour l'instance active.\n        const activeEntry = instances.find((i) => i.base_url === configuredUrl);\n        if (activeEntry?.last_email && isMounted) {\n          setEmail(activeEntry.last_email);\n        }\n\n        const cachedConfig = await getMobileConfigForBaseUrl(configuredUrl);\n        if (!cachedConfig) {\n          setBooting(false);\n          return;\n        }\n\n        setConfiguredBaseUrl(configuredUrl);\n        setMobileConfig(cachedConfig.config);\n\n        // Rafraichit le branding (logo, couleur, nom, support) en fond : le\n        // mobileConfig est cache localement, donc un changement cote tenant\n        // (ex. nouveau logo_url, primary_color) n'arrivait jamais a un user\n        // deja onboarde sans qu'il re-selectionne son instance. Best-effort,\n        // ne bloque pas le boot, ignore les erreurs (hors-ligne -> on garde le\n        // cache). On persiste pour que le prochain cold start parte a jour.\n        void (async () => {\n          try {\n            const freshConfig = await fetchMobileConfig(configuredUrl);\n            await saveMobileConfig(configuredUrl, freshConfig);\n            if (isMounted) {\n              setMobileConfig(freshConfig);\n            }\n          } catch {\n            // Hors-ligne ou endpoint indispo : on conserve la config en cache.\n          }\n        })();\n\n        // Sème l'instance active dans le registre si elle n'y est pas encore.\n        // Indispensable pour les utilisateurs deja connectes AVANT l'arrivee de\n        // cette fonctionnalite : leur instance courante apparait aussitot dans\n        // \"Mes instances\" sans avoir a re-scanner le QR / retaper le lien.\n        const seededInstances = await upsertInstance({\n          base_url: configuredUrl,\n          app_name: cachedConfig.config.app_name,\n          primary_color: cachedConfig.config.primary_color,\n          logo_url: cachedConfig.config.logo_url,\n          tenant_id: cachedConfig.config.tenant_id,\n          support_email: cachedConfig.config.support_email,\n          support_phone: cachedConfig.config.support_phone,\n          last_email: activeEntry?.last_email ?? null,\n          saved_at: new Date().toISOString(),\n        });\n        if (isMounted) {\n          setSavedInstances(seededInstances);\n        }\n\n        const session = await readSession();\n        if (!session.accessToken || !session.refreshToken) {\n          setBooting(false);\n          return;\n        }\n\n        try {\n          const currentUser = await authApi.me();\n          setUser(currentUser);\n          await loadInterventions();\n          // Session restauree : re-enregistrer le token push (best-effort).\n          void syncPushRegistration();\n          // Precharge les workflows pour le hors-ligne (tache de fond).\n          void prefetchTodoWorkflows();\n        } catch (meError) {\n          // Distinction cruciale pour l'usage terrain hors-ligne : une erreur\n          // RESEAU (serveur injoignable / timeout) leve une ApiClientError SANS\n          // status, alors qu'une vraie 401 (token revoque/invalide) porte\n          // status=401 (et la session est deja purgee par le flux refresh /\n          // SESSION_REVOKED). Sans ce garde-fou, relancer l'app sans reseau\n          // appelait me() -> echec -> clearSession -> retour login : l'app\n          // etait 100% en ligne.\n          const isOffline = isApiClientError(meError) && meError.status === undefined;\n          if (isOffline && session.user) {\n            // Session optimiste : on ouvre l'app sur les donnees en cache\n            // (snapshot SQLite). Les tokens restent valides cote SecureStore ;\n            // la prochaine requete EN LIGNE re-validera, et un 401 reel\n            // renverra alors au login via le flux normal.\n            setApiAuthTokens(session.accessToken, session.refreshToken);\n            setUser(session.user);\n            await loadInterventions(); // best-effort: lit le snapshot local\n            void syncPushRegistration();\n          } else {\n            await clearSession();\n            clearApiAuthTokens();\n          }\n        }\n      } catch {\n        await clearSession();\n        clearApiAuthTokens();\n      }\n\n      if (isMounted) {\n        setBooting(false);\n      }\n    };\n\n    bootstrap();\n\n    return () => {\n      isMounted = false;\n      if (unsubscribeNetwork) {\n        unsubscribeNetwork();\n      }\n      if (appStateSub) {\n        appStateSub.remove();\n      }\n    };\n  }, []);\n\n  // On passe un render prop 'children' (et non 'component') a AppStack.Screen :\n  // avec 'component={X}', React Navigation remonte l'ecran a chaque re-render\n  // d'App -> useFocusEffect refire a l'infini. 'children' accepte un callback\n  // stable sans declencher de remount.\n  const renderHome = (\n    screenProps: NativeStackScreenProps<AppStackParamList, \"Home\">\n  ) => {\n    const { navigation } = screenProps;\n    // Ordre = disposition de la grille 2 colonnes :\n    //   Interventions | Bouteilles\n    //   Calendrier    | Mes informations\n    //   Statistiques  | Support\n    const cards: HomeCard[] = [\n      {\n        key: \"missions\",\n        icon: \"📋\",\n        title: \"Mes interventions\",\n        subtitle: \"A faire et terminees\",\n        badge: countTodo(interventions),\n        onPress: () => navigation.navigate(\"Missions\"),\n      },\n      {\n        key: \"bottles\",\n        icon: \"🛢️\",\n        title: \"Mes bouteilles de gaz\",\n        subtitle: \"Bouteilles attribuees\",\n        onPress: () => navigation.navigate(\"Bottles\"),\n      },\n      {\n        key: \"calendar\",\n        icon: \"📅\",\n        title: \"Calendrier d'intervention\",\n        subtitle: \"Planning a venir\",\n        onPress: () => navigation.navigate(\"Planning\"),\n      },\n      {\n        key: \"info\",\n        icon: \"👨‍🔧\",\n        title: \"Mes informations\",\n        subtitle: \"Profil et instance\",\n        onPress: () => navigation.navigate(\"MyInfo\"),\n      },\n      {\n        key: \"stats\",\n        icon: \"📊\",\n        title: \"Statistiques\",\n        subtitle: \"Mon activite\",\n        onPress: () => navigation.navigate(\"Stats\"),\n      },\n      {\n        key: \"support\",\n        icon: \"💬\",\n        title: \"Support\",\n        subtitle: \"Aide et a propos\",\n        onPress: () => navigation.navigate(\"Support\"),\n      },\n    ];\n    return (\n      <HomeHub\n        appDisplayName={appDisplayName}\n        brandColor={brandColor}\n        logoUrl={logoUrl}\n        userName={user?.name ?? null}\n        isOnline={isOnline}\n        cards={cards}\n        onChangeInstance={onChangeInstance}\n        onLogout={onLogout}\n      />\n    );\n  };\n\n  const renderMissions = (\n    screenProps: NativeStackScreenProps<AppStackParamList, \"Missions\">\n  ) => (\n    <MissionsScreen\n      {...screenProps}\n      brandColor={brandColor}\n      interventions={interventions}\n      loadingInterventions={loadingInterventions}\n      interventionsError={interventionsError}\n      isOnline={isOnline}\n      syncingQueue={syncingQueue}\n      statusMessage={statusMessage}\n      activeMissionsTab={activeMissionsTab}\n      setActiveMissionsTab={setActiveMissionsTab}\n      onRefreshInterventions={onRefreshInterventions}\n    />\n  );\n\n  const renderStats = (\n    _screenProps: NativeStackScreenProps<AppStackParamList, \"Stats\">\n  ) => <StatsScreen interventions={interventions} brandColor={brandColor} />;\n\n  const renderMyInfo = (\n    _screenProps: NativeStackScreenProps<AppStackParamList, \"MyInfo\">\n  ) => (\n    <MyInfoScreen\n      user={user}\n      instanceUrl={configuredBaseUrl}\n      brandColor={brandColor}\n      onUserRefreshed={refreshUser}\n    />\n  );\n\n  const renderSupport = (\n    _screenProps: NativeStackScreenProps<AppStackParamList, \"Support\">\n  ) => (\n    <SupportScreen\n      appDisplayName={appDisplayName}\n      instanceUrl={configuredBaseUrl}\n      tenantId={mobileConfig?.tenant_id ?? null}\n      supportEmail={mobileConfig?.support_email ?? null}\n      supportPhone={mobileConfig?.support_phone ?? null}\n    />\n  );\n\n  const renderBottles = (\n    _screenProps: NativeStackScreenProps<AppStackParamList, \"Bottles\">\n  ) => <BottlesScreen brandColor={brandColor} />;\n\n  const renderPlanning = (\n    screenProps: NativeStackScreenProps<AppStackParamList, \"Planning\">\n  ) => (\n    <PlanningScreen\n      interventions={interventions}\n      brandColor={brandColor}\n      initialDay={screenProps.route?.params?.initialDay}\n      onOpenDetail={(id) =>\n        screenProps.navigation.navigate(\"MissionDetail\", { interventionId: id, brandColor })\n      }\n    />\n  );\n\n  const renderAppNavigator = () => (\n    <AppNavigatorStack\n      renderHome={renderHome}\n      renderMissions={renderMissions}\n      renderStats={renderStats}\n      renderMyInfo={renderMyInfo}\n      renderSupport={renderSupport}\n      renderBottles={renderBottles}\n      renderPlanning={renderPlanning}\n    />\n  );\n\n  if (booting) {\n    return (\n      <SafeAreaProvider>\n        <SafeAreaView style={styles.centered}>\n          <StatusBar style=\"dark\" />\n          <ActivityIndicator size=\"large\" />\n          <Text style={styles.muted}>Chargement...</Text>\n        </SafeAreaView>\n      </SafeAreaProvider>\n    );\n  }\n\n  const renderOnboardingScreen = () => (\n    <RootStack.Screen name=\"Onboarding\">\n      {() => (\n        <OnboardingScreen\n          appDisplayName={appDisplayName}\n          brandColor={brandColor}\n          logoUrl={logoUrl}\n          instanceUrl={instanceUrl}\n          onboardingError={onboardingError}\n          validatingInstance={validatingInstance}\n          onChangeInstanceUrl={setInstanceUrl}\n          onSaveEnvironment={() => {\n            onSaveEnvironment();\n          }}\n          onScanPayload={onScanPayload}\n          savedInstances={savedInstances}\n          onSelectInstance={onSelectSavedInstance}\n          onRemoveInstance={onRemoveSavedInstance}\n        />\n      )}\n    </RootStack.Screen>\n  );\n\n  const renderLoginScreen = () => (\n    <RootStack.Screen name=\"Login\">\n      {() => (\n        <LoginScreen\n          appDisplayName={appDisplayName}\n          brandColor={brandColor}\n          logoUrl={logoUrl}\n          configuredBaseUrl={configuredBaseUrl ?? \"\"}\n          inviteToken={inviteToken}\n          email={email}\n          password={password}\n          submitting={submitting}\n          error={error}\n          statusMessage={statusMessage}\n          onChangeEmail={setEmail}\n          onChangePassword={setPassword}\n          onLogin={() => {\n            onLogin();\n          }}\n          onChangeInstance={onChangeInstance}\n        />\n      )}\n    </RootStack.Screen>\n  );\n\n  const renderRootScreen = () => {\n    if (configuredBaseUrl && user) {\n      return <RootStack.Screen name=\"AppNavigator\">{renderAppNavigator}</RootStack.Screen>;\n    }\n    if (configuredBaseUrl) {\n      return renderLoginScreen();\n    }\n    return renderOnboardingScreen();\n  };\n\n  return (\n    <SafeAreaProvider>\n      <NavigationContainer ref={navigationRef}>\n        <RootStack.Navigator screenOptions={{ headerShown: false }}>\n          {renderRootScreen()}\n        </RootStack.Navigator>\n      </NavigationContainer>\n    </SafeAreaProvider>\n  );\n}\n\n// Racine : garde-fou de rendu autour de toute l'app. Une erreur levee pendant le\n// rendu affiche un ecran de repli (cf. ErrorBoundary) au lieu d'un ecran blanc.\nexport default function App() {\n  return (\n    <ErrorBoundary>\n      <UpdateGate>\n        <AppInner />\n      </UpdateGate>\n    </ErrorBoundary>\n  );\n}\n\nconst styles = StyleSheet.create({\n  centered: {\n    flex: 1,\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    gap: 10,\n    backgroundColor: \"#edf2f8\",\n  },\n  muted: {\n    color: \"#6a7a96\",\n  },\n  subScreen: {\n    flex: 1,\n    backgroundColor: \"#edf2f8\",\n    padding: 16,\n    gap: 10,\n  },\n  status: {\n    color: \"#1c7f45\",\n    marginTop: 4,\n  },\n});\n","export {\n  StatusBar,\n  setStatusBarStyle,\n  setStatusBarHidden,\n  setStatusBarBackgroundColor,\n  setStatusBarNetworkActivityIndicatorVisible,\n  setStatusBarTranslucent,\n} from './NativeStatusBarWrapper';\n\nexport { StatusBarStyle, StatusBarAnimation, StatusBarProps } from './types';\n","import React from 'react';\nimport {\n  Appearance,\n  StatusBar as NativeStatusBar,\n  useColorScheme,\n  type ColorSchemeName,\n  type ColorValue,\n} from 'react-native';\n\nimport { StatusBarProps, StatusBarStyle, StatusBarAnimation } from './types';\n\n/**\n * A component that allows you to configure your status bar without directly calling imperative\n * methods like `setBarStyle`.\n *\n * You will likely have multiple `StatusBar` components mounted in the same app at the same time.\n * For example, if you have multiple screens in your app, you may end up using one per screen.\n * The props of each `StatusBar` component will be merged in the order that they were mounted.\n * This component is built on top of the [StatusBar](https://reactnative.dev/docs/statusbar)\n * component exported from React Native, and it provides defaults that work better for Expo users.\n */\nexport function StatusBar({\n  style,\n  hideTransitionAnimation,\n  translucent = true,\n  backgroundColor: backgroundColorProp,\n  ...props\n}: StatusBarProps) {\n  // Pick appropriate default value depending on current theme, so if we are\n  // locked to light mode we don't end up with a light status bar\n  const colorScheme = useColorScheme();\n  const barStyle = React.useMemo(() => styleToBarStyle(style, colorScheme), [style, colorScheme]);\n\n  // If translucent and no backgroundColor is provided, then use transparent\n  // background\n  let backgroundColor = backgroundColorProp;\n  if (translucent && !backgroundColor) {\n    backgroundColor = 'transparent';\n  }\n\n  return (\n    <NativeStatusBar\n      {...props}\n      translucent={translucent}\n      barStyle={barStyle}\n      backgroundColor={backgroundColor}\n      showHideTransition={hideTransitionAnimation === 'none' ? undefined : hideTransitionAnimation}\n    />\n  );\n}\n\n// @needsAudit\n/**\n * Set the bar style of the status bar.\n * @param style The color of the status bar text.\n * @param animated If the transition should be animated.\n */\nexport function setStatusBarStyle(style: StatusBarStyle, animated?: boolean) {\n  NativeStatusBar.setBarStyle(styleToBarStyle(style), animated);\n}\n\n// @needsAudit\n/**\n * Toggle visibility of the status bar.\n * @param hidden If the status bar should be hidden.\n * @param animation Animation to use when toggling hidden, defaults to `'none'`.\n */\nexport function setStatusBarHidden(hidden: boolean, animation?: StatusBarAnimation) {\n  NativeStatusBar.setHidden(hidden, animation);\n}\n\n// @needsAudit\n/**\n * Set the background color of the status bar.\n * @param backgroundColor The background color of the status bar.\n * @param animated `true` to animate the background color change, `false` to change immediately.\n * @platform android\n */\nexport function setStatusBarBackgroundColor(backgroundColor: ColorValue, animated?: boolean) {\n  NativeStatusBar.setBackgroundColor(backgroundColor, animated);\n}\n\n// @needsAudit\n/**\n * Toggle visibility of the network activity indicator.\n * @param visible If the network activity indicator should be visible.\n * @platform ios\n */\nexport function setStatusBarNetworkActivityIndicatorVisible(visible: boolean) {\n  NativeStatusBar.setNetworkActivityIndicatorVisible(visible);\n}\n\n// @needsAudit\n/**\n * Set the translucency of the status bar.\n * @param translucent Whether the app can draw under the status bar. When `true`, content will be\n * rendered under the status bar. This is always `true` on iOS and cannot be changed.\n * @platform android\n */\nexport function setStatusBarTranslucent(translucent: boolean) {\n  NativeStatusBar.setTranslucent(translucent);\n}\n\nfunction styleToBarStyle(\n  style: StatusBarStyle = 'auto',\n  colorScheme: ColorSchemeName = Appearance?.getColorScheme() ?? 'light'\n): 'light-content' | 'dark-content' {\n  if (!colorScheme) {\n    colorScheme = 'light';\n  }\n\n  let resolvedStyle = style;\n  if (style === 'auto') {\n    resolvedStyle = colorScheme === 'light' ? 'dark' : 'light';\n  } else if (style === 'inverted') {\n    resolvedStyle = colorScheme === 'light' ? 'light' : 'dark';\n  }\n\n  return resolvedStyle === 'light' ? 'light-content' : 'dark-content';\n}\n","import { isRunningInExpoGo } from 'expo';\nfunction areWeTestingWithJest() {\n    return process.env.JEST_WORKER_ID !== undefined || process.env.NODE_ENV?.toLowerCase() === 'test';\n}\nif (isRunningInExpoGo() && !areWeTestingWithJest()) {\n    const message = '`expo-notifications` functionality is not fully supported in Expo Go:\\n' +\n        'We recommend you instead use a development build to avoid limitations. Learn more: https://expo.fyi/dev-client.';\n    console.warn(message);\n}\nexport { default as getDevicePushTokenAsync } from './getDevicePushTokenAsync';\nexport { default as unregisterForNotificationsAsync } from './unregisterForNotificationsAsync';\nexport { default as getExpoPushTokenAsync } from './getExpoPushTokenAsync';\nexport { default as getPresentedNotificationsAsync } from './getPresentedNotificationsAsync';\nexport { default as dismissNotificationAsync } from './dismissNotificationAsync';\nexport { default as dismissAllNotificationsAsync } from './dismissAllNotificationsAsync';\nexport { default as getNotificationChannelsAsync } from './getNotificationChannelsAsync';\nexport { default as getNotificationChannelAsync } from './getNotificationChannelAsync';\nexport { default as setNotificationChannelAsync } from './setNotificationChannelAsync';\nexport { default as deleteNotificationChannelAsync } from './deleteNotificationChannelAsync';\nexport { default as getNotificationChannelGroupsAsync } from './getNotificationChannelGroupsAsync';\nexport { default as getNotificationChannelGroupAsync } from './getNotificationChannelGroupAsync';\nexport { default as setNotificationChannelGroupAsync } from './setNotificationChannelGroupAsync';\nexport { default as deleteNotificationChannelGroupAsync } from './deleteNotificationChannelGroupAsync';\nexport { default as getBadgeCountAsync } from './getBadgeCountAsync';\nexport { default as setBadgeCountAsync } from './setBadgeCountAsync';\nexport { default as getAllScheduledNotificationsAsync } from './getAllScheduledNotificationsAsync';\nexport { default as scheduleNotificationAsync } from './scheduleNotificationAsync';\nexport { default as cancelScheduledNotificationAsync } from './cancelScheduledNotificationAsync';\nexport { default as cancelAllScheduledNotificationsAsync } from './cancelAllScheduledNotificationsAsync';\nexport { default as getNotificationCategoriesAsync } from './getNotificationCategoriesAsync';\nexport { default as setNotificationCategoryAsync } from './setNotificationCategoryAsync';\nexport { default as deleteNotificationCategoryAsync } from './deleteNotificationCategoryAsync';\nexport { default as getNextTriggerDateAsync } from './getNextTriggerDateAsync';\nexport { default as useLastNotificationResponse } from './useLastNotificationResponse';\nexport { setAutoServerRegistrationEnabledAsync } from './DevicePushTokenAutoRegistration.fx';\nexport { default as registerTaskAsync } from './registerTaskAsync';\nexport { default as unregisterTaskAsync } from './unregisterTaskAsync';\nexport * from './TokenEmitter';\nexport * from './NotificationsEmitter';\nexport * from './NotificationsHandler';\nexport * from './NotificationPermissions';\nexport * from './NotificationChannelGroupManager.types';\nexport * from './NotificationChannelManager.types';\nexport * from './NotificationPermissions.types';\nexport * from './Notifications.types';\nexport * from './Tokens.types';\n//# sourceMappingURL=index.js.map","import './Expo.fx';\n\nexport { disableErrorHandling } from './errors/ExpoErrorManager';\nexport { default as registerRootComponent } from './launch/registerRootComponent';\n\nexport { isRunningInExpoGo, getExpoGoProjectConfig } from './environment/ExpoGo';\n\nexport {\n  // Core classes\n  EventEmitter,\n  SharedObject,\n  SharedRef,\n  NativeModule,\n\n  // Methods\n  requireNativeModule,\n  requireOptionalNativeModule,\n  requireNativeViewManager as requireNativeView,\n  registerWebModule,\n  reloadAppAsync,\n} from 'expo-modules-core';\n\nexport type {\n  /** @deprecated Move to `SharedRef` with a type-only import instead */\n  SharedRef as SharedRefType,\n  /** @deprecated Move to `EventEmitter` with a type-only import instead */\n  EventEmitter as EventEmitterType,\n  /** @deprecated Move to `NativeModule` with a type-only import instead */\n  NativeModule as NativeModuleType,\n  /** @deprecated Move to `SharedObject` with a type-only import instead */\n  SharedObject as SharedObjectType,\n} from 'expo-modules-core/types';\n\nexport { useEvent, useEventListener } from './hooks/useEvent';\n","import type { EventEmitter } from 'expo-modules-core/types';\nimport { useEffect, useRef, useState } from 'react';\n\ntype AnyEventListener = (...args: any[]) => any;\n\n/**\n * Type helper that infers the event name from the emitter's events map.\n */\ntype InferEventName<TEventsMap> =\n  TEventsMap extends Record<infer TEventName extends keyof TEventsMap, AnyEventListener>\n    ? TEventName\n    : never;\n\n/**\n * Type helper that infers the event listener from the emitter's events map.\n */\ntype InferEventListener<TEventsMap, TEventName extends keyof TEventsMap> =\n  TEventsMap extends Record<TEventName, infer TEventListener extends AnyEventListener>\n    ? TEventListener\n    : never;\n\n/**\n * Type helper that infers the first parameter of the event listener.\n */\ntype InferEventParameter<\n  TEventListener extends AnyEventListener,\n  TInitialValue,\n> = TInitialValue extends Parameters<TEventListener>[0]\n  ? Parameters<TEventListener>[0]\n  : Parameters<TEventListener>[0] | TInitialValue | null;\n\n/**\n * React hook that listens to events emitted by the given object. The returned value is an event parameter\n * that gets updated whenever a new event is dispatched.\n * @param eventEmitter An object that emits events. For example, a native module or shared object or an instance of [`EventEmitter`](#eventemitter).\n * @param eventName Name of the event to listen to.\n * @param initialValue An event parameter to use until the event is called for the first time.\n * @returns A parameter of the event listener.\n * @example\n * ```tsx\n * import { useEvent } from 'expo';\n * import { VideoPlayer } from 'expo-video';\n *\n * export function PlayerStatus({ videoPlayer }: { videoPlayer: VideoPlayer }) {\n *   const { status } = useEvent(videoPlayer, 'statusChange', { status: videoPlayer.status });\n *\n *   return <Text>{`Player status: ${status}`}</Text>;\n * }\n * ```\n */\nexport function useEvent<\n  TEventsMap extends Record<string, AnyEventListener>,\n  TEventName extends InferEventName<TEventsMap>,\n  TEventListener extends InferEventListener<TEventsMap, TEventName>,\n  TInitialValue extends Parameters<TEventListener>[0] | null,\n>(\n  eventEmitter: EventEmitter<TEventsMap>,\n  eventName: TEventName,\n  initialValue: TInitialValue | null = null\n): InferEventParameter<TEventListener, TInitialValue> {\n  const [event, setEvent] = useState<Parameters<TEventListener>[0] | TInitialValue | null>(\n    initialValue\n  );\n  const listener = (event: Parameters<TEventListener>[0]) => setEvent(event);\n\n  useEventListener(eventEmitter, eventName, listener as InferEventListener<TEventsMap, TEventName>);\n\n  return event as InferEventParameter<TEventListener, TInitialValue>;\n}\n\n/**\n * React hook that listens to events emitted by the given object and calls the listener function whenever a new event is dispatched.\n * The event listener is automatically added during the first render and removed when the component unmounts.\n * @param eventEmitter An object that emits events. For example, a native module or shared object or an instance of [`EventEmitter`](#eventemitter).\n * @param eventName Name of the event to listen to.\n * @param listener A function to call when the event is dispatched.\n * @example\n * ```tsx\n * import { useEventListener } from 'expo';\n * import { useVideoPlayer, VideoView } from 'expo-video';\n *\n * export function VideoPlayerView() {\n *   const player = useVideoPlayer(videoSource);\n *\n *   useEventListener(player, 'playingChange', ({ isPlaying }) => {\n *     console.log('Player is playing:', isPlaying);\n *   });\n *\n *   return <VideoView player={player} />;\n * }\n * ```\n */\nexport function useEventListener<\n  TEventsMap extends Record<string, AnyEventListener>,\n  TEventName extends InferEventName<TEventsMap>,\n  TEventListener extends InferEventListener<TEventsMap, TEventName>,\n>(eventEmitter: EventEmitter<TEventsMap>, eventName: TEventName, listener: TEventListener): void {\n  // Always use the most recent version of the listener inside the effect,\n  // without memoization so the listeners don't have to be swapped with every render.\n  const listenerRef = useRef<TEventListener>(listener);\n  listenerRef.current = listener;\n\n  useEffect(() => {\n    const callback = (...args: any[]) => listenerRef.current(...args);\n    const subscription = eventEmitter.addListener<TEventName>(\n      eventName,\n      callback as TEventsMap[TEventName]\n    );\n\n    return () => subscription.remove();\n  }, [eventEmitter, eventName, listenerRef]);\n}\n","import { UnavailabilityError, Platform } from 'expo-modules-core';\nimport PushTokenManager from './PushTokenManager';\nimport { warnOfExpoGoPushUsage } from './warnOfExpoGoPushUsage';\nlet nativeTokenPromise = null;\n/**\n * Returns a native FCM, APNs token or a [`PushSubscription` data](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription)\n * that can be used with another push notification service.\n * @header fetch\n */\nexport default async function getDevicePushTokenAsync() {\n    if (!PushTokenManager.getDevicePushTokenAsync) {\n        throw new UnavailabilityError('ExpoNotifications', 'getDevicePushTokenAsync');\n    }\n    warnOfExpoGoPushUsage();\n    let devicePushToken;\n    if (nativeTokenPromise) {\n        // Reuse existing Promise\n        devicePushToken = await nativeTokenPromise;\n    }\n    else {\n        // Create a new Promise and clear it afterwards\n        nativeTokenPromise = PushTokenManager.getDevicePushTokenAsync();\n        devicePushToken = await nativeTokenPromise;\n        nativeTokenPromise = null;\n    }\n    // @ts-ignore: TS thinks Platform.OS could be anything and can't decide what type is it\n    return { type: Platform.OS, data: devicePushToken };\n}\n//# sourceMappingURL=getDevicePushTokenAsync.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoPushTokenManager');\n//# sourceMappingURL=PushTokenManager.native.js.map","import { isRunningInExpoGo } from 'expo';\nimport { Platform } from 'expo-modules-core';\nlet didWarn = false;\nexport const warnOfExpoGoPushUsage = () => {\n    if (__DEV__ && isRunningInExpoGo() && !didWarn) {\n        didWarn = true;\n        const message = `expo-notifications: Android Push notifications (remote notifications) functionality provided by expo-notifications was removed from Expo Go with the release of SDK 53. Use a development build instead of Expo Go. Read more at https://docs.expo.dev/develop/development-builds/introduction/.`;\n        if (Platform.OS === 'android') {\n            console.error(message);\n        }\n        else {\n            console.warn(message);\n        }\n    }\n};\n//# sourceMappingURL=warnOfExpoGoPushUsage.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport PushTokenManager from './PushTokenManager';\n// @docsMissing\nexport default async function unregisterForNotificationsAsync() {\n    if (!PushTokenManager.unregisterForNotificationsAsync) {\n        throw new UnavailabilityError('ExpoNotifications', 'unregisterForNotificationsAsync');\n    }\n    return PushTokenManager.unregisterForNotificationsAsync();\n}\n//# sourceMappingURL=unregisterForNotificationsAsync.js.map","import * as Application from 'expo-application';\nimport Constants from 'expo-constants';\nimport { Platform, CodedError, UnavailabilityError } from 'expo-modules-core';\nimport { setAutoServerRegistrationEnabledAsync } from './DevicePushTokenAutoRegistration.fx';\nimport ServerRegistrationModule from './ServerRegistrationModule';\nimport getDevicePushTokenAsync from './getDevicePushTokenAsync';\nconst productionBaseUrl = 'https://exp.host/--/api/v2/';\n/**\n * Returns an Expo token that can be used to send a push notification to the device using Expo's push notifications service.\n *\n * This method makes requests to the Expo's servers. It can get rejected in cases where the request itself fails\n * (for example, due to the device being offline, experiencing a network timeout, or other HTTPS request failures).\n * To provide offline support to your users, you should `try/catch` this method and implement retry logic to attempt\n * to get the push token later, once the device is back online.\n *\n * > For Expo's backend to be able to send notifications to your app, you will need to provide it with push notification keys.\n * For more information, see [credentials](/push-notifications/push-notifications-setup/#get-credentials-for-development-builds) in the push notifications setup.\n *\n * @param options Object allowing you to pass in push notification configuration.\n * @return Returns a `Promise` that resolves to an object representing acquired push token.\n * @header fetch\n *\n * @example\n * ```ts\n * import * as Notifications from 'expo-notifications';\n *\n * export async function registerForPushNotificationsAsync(userId: string) {\n *   const expoPushToken = await Notifications.getExpoPushTokenAsync({\n *    projectId: 'your-project-id',\n *   });\n *\n *   await fetch('https://example.com/', {\n *     method: 'POST',\n *     headers: {\n *       'Content-Type': 'application/json',\n *     },\n *     body: JSON.stringify({\n *       userId,\n *       expoPushToken,\n *     }),\n *   });\n * }\n * ```\n */\nexport default async function getExpoPushTokenAsync(options = {}) {\n    const devicePushToken = options.devicePushToken || (await getDevicePushTokenAsync());\n    const deviceId = options.deviceId || (await getDeviceIdAsync());\n    // Depending on the runtime environment, the default may be located in various places.\n    const projectId = options.projectId ||\n        Constants.easConfig?.projectId ||\n        Constants.expoConfig?.extra?.eas?.projectId;\n    if (!projectId) {\n        throw new CodedError('ERR_NOTIFICATIONS_NO_EXPERIENCE_ID', `No \"projectId\" found. If \"projectId\" can't be inferred from the manifest (for instance, in bare workflow), you have to pass it in yourself.`);\n    }\n    const applicationId = options.applicationId || Application.applicationId;\n    if (!applicationId) {\n        throw new CodedError('ERR_NOTIFICATIONS_NO_APPLICATION_ID', `No \"applicationId\" found. If it can't be inferred from native configuration by expo-application, you have to pass it in yourself.`);\n    }\n    const type = options.type || getTypeOfToken(devicePushToken);\n    const development = options.development || (await shouldUseDevelopmentNotificationService());\n    const baseUrl = options.baseUrl ?? productionBaseUrl;\n    const url = options.url ?? `${baseUrl}push/getExpoPushToken`;\n    const body = {\n        type,\n        deviceId: deviceId.toLowerCase(),\n        development,\n        appId: applicationId,\n        deviceToken: getDeviceToken(devicePushToken),\n        projectId,\n    };\n    const response = await fetch(url, {\n        method: 'POST',\n        headers: {\n            'content-type': 'application/json',\n        },\n        body: JSON.stringify(body),\n    }).catch((error) => {\n        throw new CodedError('ERR_NOTIFICATIONS_NETWORK_ERROR', `Error encountered while fetching Expo token: ${error}.`);\n    });\n    if (!response.ok) {\n        const statusInfo = response.statusText || response.status;\n        let body = undefined;\n        try {\n            body = await response.text();\n        }\n        catch {\n            // do nothing\n        }\n        throw new CodedError('ERR_NOTIFICATIONS_SERVER_ERROR', `Error encountered while fetching Expo token, expected an OK response, received: ${statusInfo} (body: \"${body}\").`);\n    }\n    const expoPushToken = getExpoPushToken(await parseResponse(response));\n    try {\n        if (options.url || options.baseUrl) {\n            console.debug(`[expo-notifications] Since the URL endpoint to register in has been customized in the options, expo-notifications won't try to auto-update the device push token on the server.`);\n        }\n        else {\n            await setAutoServerRegistrationEnabledAsync(true);\n        }\n    }\n    catch (e) {\n        console.warn('[expo-notifications] Could not enable automatically registering new device tokens with the Expo notification service', e);\n    }\n    return {\n        type: 'expo',\n        data: expoPushToken,\n    };\n}\nasync function parseResponse(response) {\n    try {\n        return await response.json();\n    }\n    catch {\n        try {\n            throw new CodedError('ERR_NOTIFICATIONS_SERVER_ERROR', `Expected a JSON response from server when fetching Expo token, received body: ${JSON.stringify(await response.text())}.`);\n        }\n        catch {\n            throw new CodedError('ERR_NOTIFICATIONS_SERVER_ERROR', `Expected a JSON response from server when fetching Expo token, received response: ${JSON.stringify(response)}.`);\n        }\n    }\n}\nfunction getExpoPushToken(data) {\n    if (!data ||\n        !(typeof data === 'object') ||\n        !data.data ||\n        !(typeof data.data === 'object') ||\n        !data.data.expoPushToken ||\n        !(typeof data.data.expoPushToken === 'string')) {\n        throw new CodedError('ERR_NOTIFICATIONS_SERVER_ERROR', `Malformed response from server, expected \"{ data: { expoPushToken: string } }\", received: ${JSON.stringify(data, null, 2)}.`);\n    }\n    return data.data.expoPushToken;\n}\n// Same as in DevicePushTokenAutoRegistration\nasync function getDeviceIdAsync() {\n    try {\n        if (!ServerRegistrationModule.getInstallationIdAsync) {\n            throw new UnavailabilityError('ExpoServerRegistrationModule', 'getInstallationIdAsync');\n        }\n        return await ServerRegistrationModule.getInstallationIdAsync();\n    }\n    catch (e) {\n        throw new CodedError('ERR_NOTIF_DEVICE_ID', `Could not have fetched installation ID of the application: ${e}.`);\n    }\n}\nfunction getDeviceToken(devicePushToken) {\n    if (typeof devicePushToken.data === 'string') {\n        return devicePushToken.data;\n    }\n    return JSON.stringify(devicePushToken.data);\n}\n// Same as in DevicePushTokenAutoRegistration\nasync function shouldUseDevelopmentNotificationService() {\n    if (Platform.OS === 'ios') {\n        try {\n            const notificationServiceEnvironment = await Application.getIosPushNotificationServiceEnvironmentAsync();\n            if (notificationServiceEnvironment === 'development') {\n                return true;\n            }\n        }\n        catch {\n            // We can't do anything here, we'll fallback to false then.\n        }\n    }\n    return false;\n}\n// Same as in DevicePushTokenAutoRegistration\nfunction getTypeOfToken(devicePushToken) {\n    switch (devicePushToken.type) {\n        case 'ios':\n            return 'apns';\n        case 'android':\n            return 'fcm';\n        // This probably will error on server, but let's make this function future-safe.\n        default:\n            return devicePushToken.type;\n    }\n}\n//# sourceMappingURL=getExpoPushTokenAsync.js.map","import { Platform, UnavailabilityError } from 'expo-modules-core';\nimport { ApplicationReleaseType } from './Application.types';\nimport ExpoApplication from './ExpoApplication';\n// @needsAudit\n/**\n * The human-readable version of the native application that may be displayed in the app store.\n * At time when native app is built, on Android, this is the version name set by `version`\n * in app config, and on iOS, the `Info.plist` value for `CFBundleShortVersionString`.\n * On web, this value is `null`.\n * @example\n * `\"2.11.0\"`\n */\nexport const nativeApplicationVersion = ExpoApplication\n    ? ExpoApplication.nativeApplicationVersion || null\n    : null;\n// @needsAudit\n/**\n * The internal build version of the native application that the app stores may use to distinguish\n * between different binaries. At the time when native app is built, On Android, this is the version\n * code set by `android.versionCode` in app config, and on iOS, the `Info.plist` value for\n * `CFBundleVersion` (set with `ios.buildNumber` value in app config in a standalone app).\n * On web, this value is `null`. The return type on Android and iOS is `string`.\n * @example\n * `\"114\"`\n */\nexport const nativeBuildVersion = ExpoApplication\n    ? ExpoApplication.nativeBuildVersion || null\n    : null;\n// @needsAudit\n/**\n * The human-readable name of the application that is displayed with the app's icon on the device's\n * home screen or desktop. On Android and iOS, this value is a `string` unless the name could not be\n * retrieved, in which case this value will be `null`. On web this value is `null`.\n * @example\n * `\"Expo\"`, `\"Yelp\"`, `\"Instagram\"`\n */\nexport const applicationName = ExpoApplication\n    ? ExpoApplication.applicationName || null\n    : null;\n// @needsAudit\n/**\n * The ID of the application. On Android, this is the application ID. On iOS, this is the bundle ID.\n * On web, this is `null`.\n * @example\n * `\"com.cocoacasts.scribbles\"`, `\"com.apple.Pages\"`\n */\nexport const applicationId = ExpoApplication\n    ? ExpoApplication.applicationId || null\n    : null;\n// @needsAudit\n/**\n * Gets the value of [`Settings.Secure.ANDROID_ID`](https://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID).\n * This is a hexadecimal `string` unique to each combination of app-signing key, user, and device.\n * The value may change if a factory reset is performed on the device or if an APK signing key changes.\n * For more information about how the platform handles `ANDROID_ID` in Android 8.0 (API level 26)\n * and higher, see [Android 8.0 Behavior Changes](https://developer.android.com/about/versions/oreo/android-8.0-changes.html#privacy-all).\n * On iOS and web, this function is unavailable.\n * > In versions of the platform lower than Android 8.0 (API level 26), this value remains constant\n * > for the lifetime of the user's device. See the [ANDROID_ID](https://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID)\n * > official docs for more information.\n * @example\n * `\"dd96dec43fb81c97\"`\n * @platform android\n */\nexport function getAndroidId() {\n    if (Platform.OS !== 'android') {\n        throw new UnavailabilityError('expo-application', 'androidId');\n    }\n    return ExpoApplication.androidId;\n}\n// @needsAudit\n/**\n * Gets the referrer URL of the installed app with the [`Install Referrer API`](https://developer.android.com/google/play/installreferrer)\n * from the Google Play Store. In practice, the referrer URL may not be a complete, absolute URL.\n * @return A `Promise` that fulfills with a `string` of the referrer URL of the installed app.\n *\n * @example\n * ```ts\n * await Application.getInstallReferrerAsync();\n * // \"utm_source=google-play&utm_medium=organic\"\n * ```\n * @platform android\n */\nexport async function getInstallReferrerAsync() {\n    if (!ExpoApplication.getInstallReferrerAsync) {\n        throw new UnavailabilityError('expo-application', 'getInstallReferrerAsync');\n    }\n    return await ExpoApplication.getInstallReferrerAsync();\n}\n// @needsAudit\n/**\n * Gets the iOS \"identifier for vendor\" ([IDFV](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor))\n * value, a string ID that uniquely identifies a device to the app’s vendor. This method may\n * sometimes return `nil`, in which case wait and call the method again later. This might happen\n * when the device has been restarted before the user has unlocked the device.\n *\n * The OS will change the vendor identifier if all apps from the current app's vendor have been\n * uninstalled.\n *\n * @return A `Promise` that fulfills with a `string` specifying the app's vendor ID. Apps from the\n * same vendor will return the same ID. See Apple's documentation for more information about the\n * vendor ID's semantics.\n *\n * @example\n * ```ts\n * await Application.getIosIdForVendorAsync();\n * // \"68753A44-4D6F-1226-9C60-0050E4C00067\"\n * ```\n * @platform ios\n */\nexport async function getIosIdForVendorAsync() {\n    if (!ExpoApplication.getIosIdForVendorAsync) {\n        throw new UnavailabilityError('expo-application', 'getIosIdForVendorAsync');\n    }\n    return await ExpoApplication.getIosIdForVendorAsync();\n}\n// @needsAudit\n/**\n * Gets the iOS application release type.\n * @return A `Promise` which fulfills with an [`ApplicationReleaseType`](#applicationreleasetype).\n * @platform ios\n */\nexport async function getIosApplicationReleaseTypeAsync() {\n    if (!ExpoApplication.getApplicationReleaseTypeAsync) {\n        throw new UnavailabilityError('expo-application', 'getApplicationReleaseTypeAsync');\n    }\n    return await ExpoApplication.getApplicationReleaseTypeAsync();\n}\n// @needsAudit\n/**\n * Gets the current [Apple Push Notification (APN)](https://developer.apple.com/documentation/bundleresources/entitlements/aps-environment?language=objc)\n * service environment.\n * @return A `Promise` that fulfills with the string, either `'development'` or `'production'`,\n * based on the current APN environment, or `null` on the simulator as it does not support registering with APNs.\n * @platform ios\n */\nexport async function getIosPushNotificationServiceEnvironmentAsync() {\n    if (!ExpoApplication.getPushNotificationServiceEnvironmentAsync) {\n        throw new UnavailabilityError('expo-application', 'getPushNotificationServiceEnvironmentAsync');\n    }\n    return await ExpoApplication.getPushNotificationServiceEnvironmentAsync();\n}\n// @needsAudit\n/**\n * Gets the time the app was installed onto the device, not counting subsequent updates. If the app\n * is uninstalled and reinstalled, this method returns the time the app was reinstalled.\n * - On Android, this method uses [`PackageInfo.firstInstallTime`](https://developer.android.com/reference/android/content/pm/PackageInfo.html#firstInstallTime).\n * - On iOS, this method uses the [`NSFileCreationDate`](https://developer.apple.com/documentation/foundation/nsfilecreationdate?language=objc)\n * of the app's document root directory.\n * - On web, this method returns `null`.\n *\n * @return A `Promise` that fulfills with a `Date` object that specifies the time the app\n * was installed on the device.\n *\n * @example\n * ```ts\n * await Application.getInstallationTimeAsync();\n * // 2019-07-18T18:08:26.121Z\n * ```\n */\nexport async function getInstallationTimeAsync() {\n    if (!ExpoApplication.getInstallationTimeAsync) {\n        throw new UnavailabilityError('expo-application', 'getInstallationTimeAsync');\n    }\n    const installationTime = await ExpoApplication.getInstallationTimeAsync();\n    return new Date(installationTime);\n}\n// @needsAudit\n/**\n * Gets the last time the app was updated from the Google Play Store.\n * @return A `Promise` that fulfills with a `Date` object that specifies the last time\n * the app was updated via the Google Play Store.\n *\n * @example\n * ```ts\n * await Application.getLastUpdateTimeAsync();\n * // 2019-07-18T21:20:16.887Z\n * ```\n * @platform android\n */\nexport async function getLastUpdateTimeAsync() {\n    if (!ExpoApplication.getLastUpdateTimeAsync) {\n        throw new UnavailabilityError('expo-application', 'getLastUpdateTimeAsync');\n    }\n    const lastUpdateTime = await ExpoApplication.getLastUpdateTimeAsync();\n    return new Date(lastUpdateTime);\n}\nexport { ApplicationReleaseType };\n//# sourceMappingURL=Application.js.map","// @docsMissing\n/**\n * @platform ios\n */\nexport var ApplicationReleaseType;\n(function (ApplicationReleaseType) {\n    ApplicationReleaseType[ApplicationReleaseType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    ApplicationReleaseType[ApplicationReleaseType[\"SIMULATOR\"] = 1] = \"SIMULATOR\";\n    ApplicationReleaseType[ApplicationReleaseType[\"ENTERPRISE\"] = 2] = \"ENTERPRISE\";\n    ApplicationReleaseType[ApplicationReleaseType[\"DEVELOPMENT\"] = 3] = \"DEVELOPMENT\";\n    ApplicationReleaseType[ApplicationReleaseType[\"AD_HOC\"] = 4] = \"AD_HOC\";\n    ApplicationReleaseType[ApplicationReleaseType[\"APP_STORE\"] = 5] = \"APP_STORE\";\n})(ApplicationReleaseType || (ApplicationReleaseType = {}));\n//# sourceMappingURL=Application.types.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoApplication');\n//# sourceMappingURL=ExpoApplication.js.map","import 'abort-controller/polyfill';\nimport { UnavailabilityError } from 'expo-modules-core';\nimport ServerRegistrationModule from './ServerRegistrationModule';\nimport { addPushTokenListener } from './TokenEmitter';\nimport getDevicePushTokenAsync from './getDevicePushTokenAsync';\nimport { updateDevicePushTokenAsync as updateDevicePushTokenAsyncWithSignal, hasDeviceTokenChangedAsync, } from './utils/updateDevicePushTokenAsync';\nlet lastAbortController = null;\nasync function updatePushTokenAsync(token) {\n    const changed = await hasDeviceTokenChangedAsync(token);\n    if (!changed) {\n        return;\n    }\n    // Abort current update process\n    lastAbortController?.abort();\n    lastAbortController = new AbortController();\n    return await updateDevicePushTokenAsyncWithSignal(lastAbortController.signal, token);\n}\n/**\n * @hidden - the comment is misleading and the purpose of the function needs to be reevaluated\n *\n * Sets the registration information so that the device push token gets pushed\n * to the given registration endpoint\n * @param enabled\n */\nexport async function setAutoServerRegistrationEnabledAsync(enabled) {\n    // We are overwriting registration, so we shouldn't let\n    // any pending request complete.\n    lastAbortController?.abort();\n    if (!ServerRegistrationModule.setRegistrationInfoAsync) {\n        throw new UnavailabilityError('ServerRegistrationModule', 'setRegistrationInfoAsync');\n    }\n    if (!enabled) {\n        await ServerRegistrationModule.setRegistrationInfoAsync(null);\n    }\n    else {\n        let existing = {};\n        try {\n            const info = await ServerRegistrationModule.getRegistrationInfoAsync?.();\n            if (info) {\n                existing = JSON.parse(info);\n            }\n        }\n        catch { }\n        existing.isEnabled = true;\n        await ServerRegistrationModule.setRegistrationInfoAsync(JSON.stringify(existing));\n    }\n}\n// note(Chmiela): This function is exported only for testing purposes.\nexport async function __handlePersistedRegistrationInfoAsync(registrationInfo) {\n    if (!registrationInfo) {\n        // No registration info, nothing to do\n        return;\n    }\n    let registration = null;\n    try {\n        registration = JSON.parse(registrationInfo);\n    }\n    catch (e) {\n        console.warn('[expo-notifications] Error encountered while fetching registration information for auto token updates.', e);\n    }\n    if (!registration?.isEnabled) {\n        // Registration is invalid or not enabled, nothing more to do\n        return;\n    }\n    try {\n        // Since the registration is enabled, fetching a \"new\" device token\n        // shouldn't be a problem.\n        const latestDevicePushToken = await getDevicePushTokenAsync();\n        await updatePushTokenAsync(latestDevicePushToken);\n    }\n    catch (e) {\n        console.warn('[expo-notifications] Error encountered while updating server registration with latest device push token.', e);\n    }\n}\nif (ServerRegistrationModule.getRegistrationInfoAsync) {\n    // A global scope (to get all the updates) device push token\n    // subscription, never cleared.\n    addPushTokenListener(async (token) => {\n        try {\n            // Before updating the push token on server we always check if we should\n            // Since modules can't change their method availability while running, we\n            // can assert it's defined.\n            const registrationInfo = await ServerRegistrationModule.getRegistrationInfoAsync();\n            if (!registrationInfo) {\n                // Registration is not enabled\n                return;\n            }\n            const registration = JSON.parse(registrationInfo);\n            if (registration?.isEnabled) {\n                // Dispatch an abortable task to update\n                // registration with new token.\n                await updatePushTokenAsync(token);\n            }\n        }\n        catch (e) {\n            console.warn('[expo-notifications] Error encountered while updating server registration with latest device push token.', e);\n        }\n    });\n    // Verify if persisted registration\n    // has successfully uploaded last known\n    // device push token. If not, retry.\n    ServerRegistrationModule.getRegistrationInfoAsync().then(__handlePersistedRegistrationInfoAsync, (e) => {\n        console.error('[expo-notifications] Error reading persisted server registration info: ', e);\n    });\n}\nelse {\n    console.warn(`[expo-notifications] Error encountered while fetching auto-registration state, new tokens will not be automatically registered on server.`, new UnavailabilityError('ServerRegistrationModule', 'getRegistrationInfoAsync'));\n}\n//# sourceMappingURL=DevicePushTokenAutoRegistration.fx.js.map","/*globals self, window */\nimport * as ac from \"./dist/abort-controller\"\n\n/*eslint-disable @mysticatea/prettier */\nconst g =\n    typeof self !== \"undefined\" ? self :\n    typeof window !== \"undefined\" ? window :\n    typeof global !== \"undefined\" ? global :\n    /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nif (g) {\n    if (typeof g.AbortController === \"undefined\") {\n        g.AbortController = ac.AbortController\n    }\n    if (typeof g.AbortSignal === \"undefined\") {\n        g.AbortSignal = ac.AbortSignal\n    }\n}\n","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('NotificationsServerRegistrationModule');\n//# sourceMappingURL=ServerRegistrationModule.native.js.map","import { Platform } from 'expo-modules-core';\nimport PushTokenManager from './PushTokenManager';\nimport { warnOfExpoGoPushUsage } from './warnOfExpoGoPushUsage';\n// Web uses SyntheticEventEmitter\nconst newTokenEventName = 'onDevicePushToken';\n/**\n * In rare situations, a push token may be changed by the push notification service while the app is running.\n * When a token is rolled, the old one becomes invalid and sending notifications to it will fail.\n * A push token listener will let you handle this situation gracefully by registering the new token with your backend right away.\n * @param listener A function accepting a push token as an argument, it will be called whenever the push token changes.\n * @return An [`EventSubscription`](#eventsubscription) object represents the subscription of the provided listener.\n * @header fetch\n * @example Registering a push token listener using a React hook.\n * ```jsx\n * import React from 'react';\n * import * as Notifications from 'expo-notifications';\n *\n * import { registerDevicePushTokenAsync } from '../api';\n *\n * export default function App() {\n *   React.useEffect(() => {\n *     const subscription = Notifications.addPushTokenListener(registerDevicePushTokenAsync);\n *     return () => subscription.remove();\n *   }, []);\n *\n *   return (\n *     // Your app content\n *   );\n * }\n * ```\n */\nexport function addPushTokenListener(listener) {\n    warnOfExpoGoPushUsage();\n    return PushTokenManager.addListener(newTokenEventName, ({ devicePushToken }) => listener({ data: devicePushToken, type: Platform.OS }));\n}\n//# sourceMappingURL=TokenEmitter.js.map","import { computeNextBackoffInterval } from '@ide/backoff';\nimport * as Application from 'expo-application';\nimport { CodedError, Platform, UnavailabilityError } from 'expo-modules-core';\nimport ServerRegistrationModule from '../ServerRegistrationModule';\nconst updateDevicePushTokenUrl = 'https://exp.host/--/api/v2/push/updateDeviceToken';\nconst LAST_TOKEN_KEY = 'lastRegisteredDeviceToken';\n// Force re-registration after 7 days even if nothing changed, in case the\n// server lost the device record (cleanup, migration, etc.).\nconst REGISTRATION_TTL_MS = 7 * 24 * 60 * 60 * 1000;\nasync function getLastRegisteredTokenDataAsync() {\n    try {\n        if (!ServerRegistrationModule.getRegistrationInfoAsync) {\n            return null;\n        }\n        const info = await ServerRegistrationModule.getRegistrationInfoAsync();\n        if (!info) {\n            return null;\n        }\n        const parsed = JSON.parse(info);\n        return parsed?.[LAST_TOKEN_KEY] ?? null;\n    }\n    catch {\n        return null;\n    }\n}\nasync function setLastRegisteredTokenDataAsync(tokenData) {\n    try {\n        if (!ServerRegistrationModule.getRegistrationInfoAsync ||\n            !ServerRegistrationModule.setRegistrationInfoAsync) {\n            return;\n        }\n        const info = await ServerRegistrationModule.getRegistrationInfoAsync();\n        const existing = info ? JSON.parse(info) : {};\n        existing[LAST_TOKEN_KEY] = tokenData;\n        await ServerRegistrationModule.setRegistrationInfoAsync(JSON.stringify(existing));\n    }\n    catch {\n        // Best-effort — next app open will re-register\n    }\n}\n/**\n * Returns `true` if the device token or metadata has changed since the last\n * successful registration, or if the check cannot be performed (fail-open).\n */\nexport async function hasDeviceTokenChangedAsync(token) {\n    try {\n        const development = await shouldUseDevelopmentNotificationService();\n        const lastTokenData = await getLastRegisteredTokenDataAsync();\n        if (lastTokenData == null) {\n            return true;\n        }\n        const age = Date.now() - (lastTokenData.registeredAt ?? 0);\n        if (age < 0 || age >= REGISTRATION_TTL_MS) {\n            return true;\n        }\n        return (token.data !== lastTokenData.deviceToken ||\n            Application.applicationId !== lastTokenData.appId ||\n            development !== lastTokenData.development ||\n            getTypeOfToken(token) !== lastTokenData.type);\n    }\n    catch {\n        return true;\n    }\n}\nexport async function updateDevicePushTokenAsync(signal, token) {\n    const doUpdateDevicePushTokenAsync = async (retry) => {\n        const [development, deviceId] = await Promise.all([\n            shouldUseDevelopmentNotificationService(),\n            getDeviceIdAsync(),\n        ]);\n        const body = {\n            deviceId: deviceId.toLowerCase(),\n            development,\n            deviceToken: token.data,\n            appId: Application.applicationId,\n            type: getTypeOfToken(token),\n        };\n        try {\n            const response = await fetch(updateDevicePushTokenUrl, {\n                method: 'POST',\n                headers: {\n                    'content-type': 'application/json',\n                },\n                body: JSON.stringify(body),\n                signal,\n            });\n            // Help debug erroring servers\n            if (!response.ok) {\n                console.debug('[expo-notifications] Error encountered while updating the device push token with the server:', await response.text());\n            }\n            if (response.ok) {\n                await setLastRegisteredTokenDataAsync({\n                    deviceToken: token.data,\n                    appId: Application.applicationId,\n                    development,\n                    type: getTypeOfToken(token),\n                    registeredAt: Date.now(),\n                });\n            }\n            // Retry if request failed\n            if (!response.ok) {\n                retry();\n            }\n        }\n        catch (error) {\n            // Error returned if the request is aborted should be an 'AbortError'. In\n            // React Native fetch is polyfilled using `whatwg-fetch` which:\n            // - creates `AbortError`s like this\n            //   https://github.com/github/fetch/blob/75d9455d380f365701151f3ac85c5bda4bbbde76/fetch.js#L505\n            // - which creates exceptions like\n            //   https://github.com/github/fetch/blob/75d9455d380f365701151f3ac85c5bda4bbbde76/fetch.js#L490-L494\n            if (typeof error === 'object' && error?.name === 'AbortError') {\n                // We don't consider AbortError a failure, it's a sign somewhere else the\n                // request is expected to succeed and we don't need this one, so let's\n                // just return.\n                return;\n            }\n            console.warn('[expo-notifications] Error thrown while updating the device push token with the server:', error);\n            retry();\n        }\n    };\n    let shouldTry = true;\n    const retry = () => {\n        shouldTry = true;\n    };\n    let retriesCount = 0;\n    const initialBackoff = 500; // 0.5 s\n    const backoffOptions = {\n        maxBackoff: 2 * 60 * 1000, // 2 minutes\n    };\n    let nextBackoffInterval = computeNextBackoffInterval(initialBackoff, retriesCount, backoffOptions);\n    while (shouldTry && !signal.aborted) {\n        // Will be set to true by `retry` if it's called\n        shouldTry = false;\n        await doUpdateDevicePushTokenAsync(retry);\n        // Do not wait if we won't retry\n        if (shouldTry && !signal.aborted) {\n            nextBackoffInterval = computeNextBackoffInterval(initialBackoff, retriesCount, backoffOptions);\n            retriesCount += 1;\n            await new Promise((resolve) => setTimeout(resolve, nextBackoffInterval));\n        }\n    }\n}\n// Same as in getExpoPushTokenAsync\nasync function getDeviceIdAsync() {\n    try {\n        if (!ServerRegistrationModule.getInstallationIdAsync) {\n            throw new UnavailabilityError('ExpoServerRegistrationModule', 'getInstallationIdAsync');\n        }\n        return await ServerRegistrationModule.getInstallationIdAsync();\n    }\n    catch (e) {\n        throw new CodedError('ERR_NOTIFICATIONS_DEVICE_ID', `Could not fetch the installation ID of the application: ${e}.`);\n    }\n}\n// Same as in getExpoPushTokenAsync\nfunction getTypeOfToken(devicePushToken) {\n    switch (devicePushToken.type) {\n        case 'ios':\n            return 'apns';\n        case 'android':\n            return 'fcm';\n        // This probably will error on server, but let's make this function future-safe.\n        default:\n            return devicePushToken.type;\n    }\n}\n// Same as in getExpoPushTokenAsync\nasync function shouldUseDevelopmentNotificationService() {\n    if (Platform.OS === 'ios') {\n        try {\n            const notificationServiceEnvironment = await Application.getIosPushNotificationServiceEnvironmentAsync();\n            if (notificationServiceEnvironment === 'development') {\n                return true;\n            }\n        }\n        catch {\n            // We can't do anything here, we'll fallback to false then.\n        }\n    }\n    return false;\n}\n//# sourceMappingURL=updateDevicePushTokenAsync.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert_1 = __importDefault(require(\"assert\"));\nfunction computeNextBackoffInterval(initialBackoff, previousRetryCount, { multiplier = 1.5, randomizationFactor = 0.25, minBackoff = initialBackoff, maxBackoff = Infinity, } = {}) {\n    assert_1.default(initialBackoff > 0, `The initial backoff interval must be positive`);\n    assert_1.default(previousRetryCount >= 0, `The previous retry count must not be negative`);\n    assert_1.default(multiplier >= 1, `The backoff multiplier must be greater than or equal to 1`);\n    assert_1.default(0 <= randomizationFactor && randomizationFactor <= 1, `The randomization factor must be between 0 and 1, inclusive`);\n    assert_1.default(minBackoff >= 0, `The minimum backoff interval must be positive`);\n    let nextBackoff = initialBackoff * multiplier ** previousRetryCount;\n    // Apply jitter within the negative to positive range of the randomization factor\n    let jitterFactor = 1 - randomizationFactor + 2 * randomizationFactor * Math.random();\n    return Math.min(Math.max(nextBackoff * jitterFactor, minBackoff), maxBackoff);\n}\nexports.computeNextBackoffInterval = computeNextBackoffInterval;\n//# sourceMappingURL=backoff.js.map","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nvar _require = require('./internal/errors'),\n  _require$codes = _require.codes,\n  ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n  ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\nvar AssertionError = require('./internal/assert/assertion_error');\nvar _require2 = require('util/'),\n  inspect = _require2.inspect;\nvar _require$types = require('util/').types,\n  isPromise = _require$types.isPromise,\n  isRegExp = _require$types.isRegExp;\nvar objectAssign = require('object.assign/polyfill')();\nvar objectIs = require('object-is/polyfill')();\nvar RegExpPrototypeTest = require('call-bind/callBound')('RegExp.prototype.test');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\nfunction lazyLoadComparison() {\n  var comparison = require('./internal/util/comparisons');\n  isDeepEqual = comparison.isDeepEqual;\n  isDeepStrictEqual = comparison.isDeepStrictEqual;\n}\n\n// Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\nvar escapeFn = function escapeFn(str) {\n  return meta[str.charCodeAt(0)];\n};\nvar warned = false;\n\n// The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {};\n\n// All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n  if (obj.message instanceof Error) throw obj.message;\n  throw new AssertionError(obj);\n}\nfunction fail(actual, expected, message, operator, stackStartFn) {\n  var argsLen = arguments.length;\n  var internalMessage;\n  if (argsLen === 0) {\n    internalMessage = 'Failed';\n  } else if (argsLen === 1) {\n    message = actual;\n    actual = undefined;\n  } else {\n    if (warned === false) {\n      warned = true;\n      var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n      warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n    }\n    if (argsLen === 2) operator = '!=';\n  }\n  if (message instanceof Error) throw message;\n  var errArgs = {\n    actual: actual,\n    expected: expected,\n    operator: operator === undefined ? 'fail' : operator,\n    stackStartFn: stackStartFn || fail\n  };\n  if (message !== undefined) {\n    errArgs.message = message;\n  }\n  var err = new AssertionError(errArgs);\n  if (internalMessage) {\n    err.message = internalMessage;\n    err.generatedMessage = true;\n  }\n  throw err;\n}\nassert.fail = fail;\n\n// The AssertionError is defined in internal/error.\nassert.AssertionError = AssertionError;\nfunction innerOk(fn, argLen, value, message) {\n  if (!value) {\n    var generatedMessage = false;\n    if (argLen === 0) {\n      generatedMessage = true;\n      message = 'No value argument passed to `assert.ok()`';\n    } else if (message instanceof Error) {\n      throw message;\n    }\n    var err = new AssertionError({\n      actual: value,\n      expected: true,\n      message: message,\n      operator: '==',\n      stackStartFn: fn\n    });\n    err.generatedMessage = generatedMessage;\n    throw err;\n  }\n}\n\n// Pure assertion tests whether a value is truthy, as determined\n// by !!value.\nfunction ok() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  innerOk.apply(void 0, [ok, args.length].concat(args));\n}\nassert.ok = ok;\n\n// The equality assertion tests shallow, coercive equality with ==.\n/* eslint-disable no-restricted-properties */\nassert.equal = function equal(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n  // eslint-disable-next-line eqeqeq\n  if (actual != expected) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: '==',\n      stackStartFn: equal\n    });\n  }\n};\n\n// The non-equality assertion tests for whether two objects are not\n// equal with !=.\nassert.notEqual = function notEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n  // eslint-disable-next-line eqeqeq\n  if (actual == expected) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: '!=',\n      stackStartFn: notEqual\n    });\n  }\n};\n\n// The equivalence assertion tests a deep equality relation.\nassert.deepEqual = function deepEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n  if (isDeepEqual === undefined) lazyLoadComparison();\n  if (!isDeepEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'deepEqual',\n      stackStartFn: deepEqual\n    });\n  }\n};\n\n// The non-equivalence assertion tests for any deep inequality.\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n  if (isDeepEqual === undefined) lazyLoadComparison();\n  if (isDeepEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notDeepEqual',\n      stackStartFn: notDeepEqual\n    });\n  }\n};\n/* eslint-enable */\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n  if (isDeepEqual === undefined) lazyLoadComparison();\n  if (!isDeepStrictEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'deepStrictEqual',\n      stackStartFn: deepStrictEqual\n    });\n  }\n};\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n  if (isDeepEqual === undefined) lazyLoadComparison();\n  if (isDeepStrictEqual(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notDeepStrictEqual',\n      stackStartFn: notDeepStrictEqual\n    });\n  }\n}\nassert.strictEqual = function strictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n  if (!objectIs(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'strictEqual',\n      stackStartFn: strictEqual\n    });\n  }\n};\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n  if (arguments.length < 2) {\n    throw new ERR_MISSING_ARGS('actual', 'expected');\n  }\n  if (objectIs(actual, expected)) {\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: 'notStrictEqual',\n      stackStartFn: notStrictEqual\n    });\n  }\n};\nvar Comparison = /*#__PURE__*/_createClass(function Comparison(obj, keys, actual) {\n  var _this = this;\n  _classCallCheck(this, Comparison);\n  keys.forEach(function (key) {\n    if (key in obj) {\n      if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {\n        _this[key] = actual[key];\n      } else {\n        _this[key] = obj[key];\n      }\n    }\n  });\n});\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n  if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n    if (!message) {\n      // Create placeholder objects to create a nice output.\n      var a = new Comparison(actual, keys);\n      var b = new Comparison(expected, keys, actual);\n      var err = new AssertionError({\n        actual: a,\n        expected: b,\n        operator: 'deepStrictEqual',\n        stackStartFn: fn\n      });\n      err.actual = actual;\n      err.expected = expected;\n      err.operator = fn.name;\n      throw err;\n    }\n    innerFail({\n      actual: actual,\n      expected: expected,\n      message: message,\n      operator: fn.name,\n      stackStartFn: fn\n    });\n  }\n}\nfunction expectedException(actual, expected, msg, fn) {\n  if (typeof expected !== 'function') {\n    if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);\n    // assert.doesNotThrow does not accept objects.\n    if (arguments.length === 2) {\n      throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n    }\n\n    // Handle primitives properly.\n    if (_typeof(actual) !== 'object' || actual === null) {\n      var err = new AssertionError({\n        actual: actual,\n        expected: expected,\n        message: msg,\n        operator: 'deepStrictEqual',\n        stackStartFn: fn\n      });\n      err.operator = fn.name;\n      throw err;\n    }\n    var keys = Object.keys(expected);\n    // Special handle errors to make sure the name and the message are compared\n    // as well.\n    if (expected instanceof Error) {\n      keys.push('name', 'message');\n    } else if (keys.length === 0) {\n      throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n    }\n    if (isDeepEqual === undefined) lazyLoadComparison();\n    keys.forEach(function (key) {\n      if (typeof actual[key] === 'string' && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {\n        return;\n      }\n      compareExceptionKey(actual, expected, key, msg, keys, fn);\n    });\n    return true;\n  }\n  // Guard instanceof against arrow functions as they don't have a prototype.\n  if (expected.prototype !== undefined && actual instanceof expected) {\n    return true;\n  }\n  if (Error.isPrototypeOf(expected)) {\n    return false;\n  }\n  return expected.call({}, actual) === true;\n}\nfunction getActual(fn) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n  }\n  try {\n    fn();\n  } catch (e) {\n    return e;\n  }\n  return NO_EXCEPTION_SENTINEL;\n}\nfunction checkIsPromise(obj) {\n  // Accept native ES6 promises and promises that are implemented in a similar\n  // way. Do not accept thenables that use a function as `obj` and that have no\n  // `catch` handler.\n\n  // TODO: thenables are checked up until they have the correct methods,\n  // but according to documentation, the `then` method should receive\n  // the `fulfill` and `reject` arguments as well or it may be never resolved.\n\n  return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\nfunction waitForActual(promiseFn) {\n  return Promise.resolve().then(function () {\n    var resultPromise;\n    if (typeof promiseFn === 'function') {\n      // Return a rejected promise if `promiseFn` throws synchronously.\n      resultPromise = promiseFn();\n      // Fail in case no promise is returned.\n      if (!checkIsPromise(resultPromise)) {\n        throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n      }\n    } else if (checkIsPromise(promiseFn)) {\n      resultPromise = promiseFn;\n    } else {\n      throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n    }\n    return Promise.resolve().then(function () {\n      return resultPromise;\n    }).then(function () {\n      return NO_EXCEPTION_SENTINEL;\n    }).catch(function (e) {\n      return e;\n    });\n  });\n}\nfunction expectsError(stackStartFn, actual, error, message) {\n  if (typeof error === 'string') {\n    if (arguments.length === 4) {\n      throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n    }\n    if (_typeof(actual) === 'object' && actual !== null) {\n      if (actual.message === error) {\n        throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n      }\n    } else if (actual === error) {\n      throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n    }\n    message = error;\n    error = undefined;\n  } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n  }\n  if (actual === NO_EXCEPTION_SENTINEL) {\n    var details = '';\n    if (error && error.name) {\n      details += \" (\".concat(error.name, \")\");\n    }\n    details += message ? \": \".concat(message) : '.';\n    var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n    innerFail({\n      actual: undefined,\n      expected: error,\n      operator: stackStartFn.name,\n      message: \"Missing expected \".concat(fnType).concat(details),\n      stackStartFn: stackStartFn\n    });\n  }\n  if (error && !expectedException(actual, error, message, stackStartFn)) {\n    throw actual;\n  }\n}\nfunction expectsNoError(stackStartFn, actual, error, message) {\n  if (actual === NO_EXCEPTION_SENTINEL) return;\n  if (typeof error === 'string') {\n    message = error;\n    error = undefined;\n  }\n  if (!error || expectedException(actual, error)) {\n    var details = message ? \": \".concat(message) : '.';\n    var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n    innerFail({\n      actual: actual,\n      expected: error,\n      operator: stackStartFn.name,\n      message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n      stackStartFn: stackStartFn\n    });\n  }\n  throw actual;\n}\nassert.throws = function throws(promiseFn) {\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n  expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\nassert.rejects = function rejects(promiseFn) {\n  for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n    args[_key3 - 1] = arguments[_key3];\n  }\n  return waitForActual(promiseFn).then(function (result) {\n    return expectsError.apply(void 0, [rejects, result].concat(args));\n  });\n};\nassert.doesNotThrow = function doesNotThrow(fn) {\n  for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n    args[_key4 - 1] = arguments[_key4];\n  }\n  expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\nassert.doesNotReject = function doesNotReject(fn) {\n  for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n    args[_key5 - 1] = arguments[_key5];\n  }\n  return waitForActual(fn).then(function (result) {\n    return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n  });\n};\nassert.ifError = function ifError(err) {\n  if (err !== null && err !== undefined) {\n    var message = 'ifError got unwanted exception: ';\n    if (_typeof(err) === 'object' && typeof err.message === 'string') {\n      if (err.message.length === 0 && err.constructor) {\n        message += err.constructor.name;\n      } else {\n        message += err.message;\n      }\n    } else {\n      message += inspect(err);\n    }\n    var newErr = new AssertionError({\n      actual: err,\n      expected: null,\n      operator: 'ifError',\n      message: message,\n      stackStartFn: ifError\n    });\n\n    // Make sure we actually have a stack trace!\n    var origStack = err.stack;\n    if (typeof origStack === 'string') {\n      // This will remove any duplicated frames from the error frames taken\n      // from within `ifError` and add the original error frames to the newly\n      // created ones.\n      var tmp2 = origStack.split('\\n');\n      tmp2.shift();\n      // Filter all frames existing in err.stack.\n      var tmp1 = newErr.stack.split('\\n');\n      for (var i = 0; i < tmp2.length; i++) {\n        // Find the first occurrence of the frame.\n        var pos = tmp1.indexOf(tmp2[i]);\n        if (pos !== -1) {\n          // Only keep new frames.\n          tmp1 = tmp1.slice(0, pos);\n          break;\n        }\n      }\n      newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n    }\n    throw newErr;\n  }\n};\n\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a871df3dfb8ea663ef5e1f8f62701ec51384ecb\nfunction internalMatch(string, regexp, message, fn, fnName) {\n  if (!isRegExp(regexp)) {\n    throw new ERR_INVALID_ARG_TYPE('regexp', 'RegExp', regexp);\n  }\n  var match = fnName === 'match';\n  if (typeof string !== 'string' || RegExpPrototypeTest(regexp, string) !== match) {\n    if (message instanceof Error) {\n      throw message;\n    }\n    var generatedMessage = !message;\n\n    // 'The input was expected to not match the regular expression ' +\n    message = message || (typeof string !== 'string' ? 'The \"string\" argument must be of type string. Received type ' + \"\".concat(_typeof(string), \" (\").concat(inspect(string), \")\") : (match ? 'The input did not match the regular expression ' : 'The input was expected to not match the regular expression ') + \"\".concat(inspect(regexp), \". Input:\\n\\n\").concat(inspect(string), \"\\n\"));\n    var err = new AssertionError({\n      actual: string,\n      expected: regexp,\n      message: message,\n      operator: fnName,\n      stackStartFn: fn\n    });\n    err.generatedMessage = generatedMessage;\n    throw err;\n  }\n}\nassert.match = function match(string, regexp, message) {\n  internalMatch(string, regexp, message, match, 'match');\n};\nassert.doesNotMatch = function doesNotMatch(string, regexp, message) {\n  internalMatch(string, regexp, message, doesNotMatch, 'doesNotMatch');\n};\n\n// Expose a strict only variant of assert\nfunction strict() {\n  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n    args[_key6] = arguments[_key6];\n  }\n  innerOk.apply(void 0, [strict, args.length].concat(args));\n}\nassert.strict = objectAssign(strict, assert, {\n  equal: assert.strictEqual,\n  deepEqual: assert.deepStrictEqual,\n  notEqual: assert.notStrictEqual,\n  notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n/* eslint node-core/alphabetize-errors: \"error\" */\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n\n'use strict';\n\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar codes = {};\n\n// Lazy loaded\nvar assert;\nvar util;\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n  var NodeError = /*#__PURE__*/function (_Base) {\n    _inherits(NodeError, _Base);\n    var _super = _createSuper(NodeError);\n    function NodeError(arg1, arg2, arg3) {\n      var _this;\n      _classCallCheck(this, NodeError);\n      _this = _super.call(this, getMessage(arg1, arg2, arg3));\n      _this.code = code;\n      return _this;\n    }\n    return _createClass(NodeError);\n  }(Base);\n  codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n  return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  if (assert === undefined) assert = require('../assert');\n  assert(typeof name === 'string', \"'name' must be a string\");\n\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n  var msg;\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  // TODO(BridgeAR): Improve the output by showing `null` and similar.\n  msg += \". Received type \".concat(_typeof(actual));\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n  var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n  if (util === undefined) util = require('util/');\n  var inspected = util.inspect(value);\n  if (inspected.length > 128) {\n    inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n  }\n  return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n  var type;\n  if (value && value.constructor && value.constructor.name) {\n    type = \"instance of \".concat(value.constructor.name);\n  } else {\n    type = \"type \".concat(_typeof(value));\n  }\n  return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  if (assert === undefined) assert = require('../assert');\n  assert(args.length > 0, 'At least one arg needs to be specified');\n  var msg = 'The ';\n  var len = args.length;\n  args = args.map(function (a) {\n    return \"\\\"\".concat(a, \"\\\"\");\n  });\n  switch (len) {\n    case 1:\n      msg += \"\".concat(args[0], \" argument\");\n      break;\n    case 2:\n      msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n      break;\n    default:\n      msg += args.slice(0, len - 1).join(', ');\n      msg += \", and \".concat(args[len - 1], \" arguments\");\n      break;\n  }\n  return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\tif (descriptor && descriptor.get) {\n\t\t\t\tvar bound = callBind(descriptor.get);\n\t\t\t\tcache[\n\t\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t\t] = bound;\n\t\t\t}\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tvar bound = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = bound;\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n    return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (isArray(list)) {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = 1 + originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\tadjustedLength > 0 ? adjustedLength : 0,\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n\n'use strict';\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _require = require('util/'),\n  inspect = _require.inspect;\nvar _require2 = require('../errors'),\n  ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n  return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\nfunction repeat(str, count) {\n  count = Math.floor(count);\n  if (str.length == 0 || count == 0) return '';\n  var maxCount = str.length * count;\n  count = Math.floor(Math.log(count) / Math.log(2));\n  while (count) {\n    str += str;\n    count--;\n  }\n  str += str.substring(0, maxCount - str.length);\n  return str;\n}\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n  deepStrictEqual: 'Expected values to be strictly deep-equal:',\n  strictEqual: 'Expected values to be strictly equal:',\n  strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n  deepEqual: 'Expected values to be loosely deep-equal:',\n  equal: 'Expected values to be loosely equal:',\n  notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n  notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n  notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n  notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n  notEqual: 'Expected \"actual\" to be loosely unequal to:',\n  notIdentical: 'Values identical but not reference-equal:'\n};\n\n// Comparing short primitives should just show === / !== instead of using the\n// diff.\nvar kMaxShortLength = 10;\nfunction copyError(source) {\n  var keys = Object.keys(source);\n  var target = Object.create(Object.getPrototypeOf(source));\n  keys.forEach(function (key) {\n    target[key] = source[key];\n  });\n  Object.defineProperty(target, 'message', {\n    value: source.message\n  });\n  return target;\n}\nfunction inspectValue(val) {\n  // The util.inspect default values could be changed. This makes sure the\n  // error messages contain the necessary information nevertheless.\n  return inspect(val, {\n    compact: false,\n    customInspect: false,\n    depth: 1000,\n    maxArrayLength: Infinity,\n    // Assert compares only enumerable properties (with a few exceptions).\n    showHidden: false,\n    // Having a long line as error is better than wrapping the line for\n    // comparison for now.\n    // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n    // have meta information about the inspected properties (i.e., know where\n    // in what line the property starts and ends).\n    breakLength: Infinity,\n    // Assert does not detect proxies currently.\n    showProxy: false,\n    sorted: true,\n    // Inspect getters as we also check them when comparing entries.\n    getters: true\n  });\n}\nfunction createErrDiff(actual, expected, operator) {\n  var other = '';\n  var res = '';\n  var lastPos = 0;\n  var end = '';\n  var skipped = false;\n  var actualInspected = inspectValue(actual);\n  var actualLines = actualInspected.split('\\n');\n  var expectedLines = inspectValue(expected).split('\\n');\n  var i = 0;\n  var indicator = '';\n\n  // In case both values are objects explicitly mark them as not reference equal\n  // for the `strictEqual` operator.\n  if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n    operator = 'strictEqualObject';\n  }\n\n  // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n  // equal, check further special handling.\n  if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n    var inputLength = actualLines[0].length + expectedLines[0].length;\n    // If the character length of \"actual\" and \"expected\" together is less than\n    // kMaxShortLength and if neither is an object and at least one of them is\n    // not `zero`, use the strict equal comparison to visualize the output.\n    if (inputLength <= kMaxShortLength) {\n      if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n        // -0 === +0\n        return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n      }\n    } else if (operator !== 'strictEqualObject') {\n      // If the stderr is a tty and the input length is lower than the current\n      // columns per line, add a mismatch indicator below the output. If it is\n      // not a tty, use a default value of 80 characters.\n      var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n      if (inputLength < maxLength) {\n        while (actualLines[0][i] === expectedLines[0][i]) {\n          i++;\n        }\n        // Ignore the first characters.\n        if (i > 2) {\n          // Add position indicator for the first mismatch in case it is a\n          // single line and the input length is less than the column length.\n          indicator = \"\\n  \".concat(repeat(' ', i), \"^\");\n          i = 0;\n        }\n      }\n    }\n  }\n\n  // Remove all ending lines that match (this optimizes the output for\n  // readability by reducing the number of total changed lines).\n  var a = actualLines[actualLines.length - 1];\n  var b = expectedLines[expectedLines.length - 1];\n  while (a === b) {\n    if (i++ < 2) {\n      end = \"\\n  \".concat(a).concat(end);\n    } else {\n      other = a;\n    }\n    actualLines.pop();\n    expectedLines.pop();\n    if (actualLines.length === 0 || expectedLines.length === 0) break;\n    a = actualLines[actualLines.length - 1];\n    b = expectedLines[expectedLines.length - 1];\n  }\n  var maxLines = Math.max(actualLines.length, expectedLines.length);\n  // Strict equal with identical objects that are not identical by reference.\n  // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n  if (maxLines === 0) {\n    // We have to get the result again. The lines were all removed before.\n    var _actualLines = actualInspected.split('\\n');\n\n    // Only remove lines in case it makes sense to collapse those.\n    // TODO: Accept env to always show the full error.\n    if (_actualLines.length > 30) {\n      _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n      while (_actualLines.length > 27) {\n        _actualLines.pop();\n      }\n    }\n    return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n  }\n  if (i > 3) {\n    end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n    skipped = true;\n  }\n  if (other !== '') {\n    end = \"\\n  \".concat(other).concat(end);\n    other = '';\n  }\n  var printedLines = 0;\n  var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n  var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n  for (i = 0; i < maxLines; i++) {\n    // Only extra expected lines exist\n    var cur = i - lastPos;\n    if (actualLines.length < i + 1) {\n      // If the last diverging line is more than one line above and the\n      // current line is at least line three, add some of the former lines and\n      // also add dots to indicate skipped entries.\n      if (cur > 1 && i > 2) {\n        if (cur > 4) {\n          res += \"\\n\".concat(blue, \"...\").concat(white);\n          skipped = true;\n        } else if (cur > 3) {\n          res += \"\\n  \".concat(expectedLines[i - 2]);\n          printedLines++;\n        }\n        res += \"\\n  \".concat(expectedLines[i - 1]);\n        printedLines++;\n      }\n      // Mark the current line as the last diverging one.\n      lastPos = i;\n      // Add the expected line to the cache.\n      other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n      printedLines++;\n      // Only extra actual lines exist\n    } else if (expectedLines.length < i + 1) {\n      // If the last diverging line is more than one line above and the\n      // current line is at least line three, add some of the former lines and\n      // also add dots to indicate skipped entries.\n      if (cur > 1 && i > 2) {\n        if (cur > 4) {\n          res += \"\\n\".concat(blue, \"...\").concat(white);\n          skipped = true;\n        } else if (cur > 3) {\n          res += \"\\n  \".concat(actualLines[i - 2]);\n          printedLines++;\n        }\n        res += \"\\n  \".concat(actualLines[i - 1]);\n        printedLines++;\n      }\n      // Mark the current line as the last diverging one.\n      lastPos = i;\n      // Add the actual line to the result.\n      res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n      printedLines++;\n      // Lines diverge\n    } else {\n      var expectedLine = expectedLines[i];\n      var actualLine = actualLines[i];\n      // If the lines diverge, specifically check for lines that only diverge by\n      // a trailing comma. In that case it is actually identical and we should\n      // mark it as such.\n      var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine);\n      // If the expected line has a trailing comma but is otherwise identical,\n      // add a comma at the end of the actual line. Otherwise the output could\n      // look weird as in:\n      //\n      //   [\n      //     1         // No comma at the end!\n      // +   2\n      //   ]\n      //\n      if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n        divergingLines = false;\n        actualLine += ',';\n      }\n      if (divergingLines) {\n        // If the last diverging line is more than one line above and the\n        // current line is at least line three, add some of the former lines and\n        // also add dots to indicate skipped entries.\n        if (cur > 1 && i > 2) {\n          if (cur > 4) {\n            res += \"\\n\".concat(blue, \"...\").concat(white);\n            skipped = true;\n          } else if (cur > 3) {\n            res += \"\\n  \".concat(actualLines[i - 2]);\n            printedLines++;\n          }\n          res += \"\\n  \".concat(actualLines[i - 1]);\n          printedLines++;\n        }\n        // Mark the current line as the last diverging one.\n        lastPos = i;\n        // Add the actual line to the result and cache the expected diverging\n        // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n        res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n        other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n        printedLines += 2;\n        // Lines are identical\n      } else {\n        // Add all cached information to the result before adding other things\n        // and reset the cache.\n        res += other;\n        other = '';\n        // If the last diverging line is exactly one line above or if it is the\n        // very first line, add the line to the result.\n        if (cur === 1 || i === 0) {\n          res += \"\\n  \".concat(actualLine);\n          printedLines++;\n        }\n      }\n    }\n    // Inspected object to big (Show ~20 rows max)\n    if (printedLines > 20 && i < maxLines - 2) {\n      return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n    }\n  }\n  return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\nvar AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {\n  _inherits(AssertionError, _Error);\n  var _super = _createSuper(AssertionError);\n  function AssertionError(options) {\n    var _this;\n    _classCallCheck(this, AssertionError);\n    if (_typeof(options) !== 'object' || options === null) {\n      throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n    }\n    var message = options.message,\n      operator = options.operator,\n      stackStartFn = options.stackStartFn;\n    var actual = options.actual,\n      expected = options.expected;\n    var limit = Error.stackTraceLimit;\n    Error.stackTraceLimit = 0;\n    if (message != null) {\n      _this = _super.call(this, String(message));\n    } else {\n      if (process.stderr && process.stderr.isTTY) {\n        // Reset on each call to make sure we handle dynamically set environment\n        // variables correct.\n        if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n          blue = \"\\x1B[34m\";\n          green = \"\\x1B[32m\";\n          white = \"\\x1B[39m\";\n          red = \"\\x1B[31m\";\n        } else {\n          blue = '';\n          green = '';\n          white = '';\n          red = '';\n        }\n      }\n      // Prevent the error stack from being visible by duplicating the error\n      // in a very close way to the original in case both sides are actually\n      // instances of Error.\n      if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n        actual = copyError(actual);\n        expected = copyError(expected);\n      }\n      if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n        _this = _super.call(this, createErrDiff(actual, expected, operator));\n      } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n        // In case the objects are equal but the operator requires unequal, show\n        // the first object and say A equals B\n        var base = kReadableOperator[operator];\n        var res = inspectValue(actual).split('\\n');\n\n        // In case \"actual\" is an object, it should not be reference equal.\n        if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n          base = kReadableOperator.notStrictEqualObject;\n        }\n\n        // Only remove lines in case it makes sense to collapse those.\n        // TODO: Accept env to always show the full error.\n        if (res.length > 30) {\n          res[26] = \"\".concat(blue, \"...\").concat(white);\n          while (res.length > 27) {\n            res.pop();\n          }\n        }\n\n        // Only print a single input.\n        if (res.length === 1) {\n          _this = _super.call(this, \"\".concat(base, \" \").concat(res[0]));\n        } else {\n          _this = _super.call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\"));\n        }\n      } else {\n        var _res = inspectValue(actual);\n        var other = '';\n        var knownOperators = kReadableOperator[operator];\n        if (operator === 'notDeepEqual' || operator === 'notEqual') {\n          _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n          if (_res.length > 1024) {\n            _res = \"\".concat(_res.slice(0, 1021), \"...\");\n          }\n        } else {\n          other = \"\".concat(inspectValue(expected));\n          if (_res.length > 512) {\n            _res = \"\".concat(_res.slice(0, 509), \"...\");\n          }\n          if (other.length > 512) {\n            other = \"\".concat(other.slice(0, 509), \"...\");\n          }\n          if (operator === 'deepEqual' || operator === 'equal') {\n            _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n          } else {\n            other = \" \".concat(operator, \" \").concat(other);\n          }\n        }\n        _this = _super.call(this, \"\".concat(_res).concat(other));\n      }\n    }\n    Error.stackTraceLimit = limit;\n    _this.generatedMessage = !message;\n    Object.defineProperty(_assertThisInitialized(_this), 'name', {\n      value: 'AssertionError [ERR_ASSERTION]',\n      enumerable: false,\n      writable: true,\n      configurable: true\n    });\n    _this.code = 'ERR_ASSERTION';\n    _this.actual = actual;\n    _this.expected = expected;\n    _this.operator = operator;\n    if (Error.captureStackTrace) {\n      // eslint-disable-next-line no-restricted-syntax\n      Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n    }\n    // Create error message including the error code in the name.\n    _this.stack;\n    // Reset the name.\n    _this.name = 'AssertionError';\n    return _possibleConstructorReturn(_this);\n  }\n  _createClass(AssertionError, [{\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n    }\n  }, {\n    key: _inspect$custom,\n    value: function value(recurseTimes, ctx) {\n      // This limits the `actual` and `expected` property default inspection to\n      // the minimum depth. Otherwise those values would be too verbose compared\n      // to the actual error message which contains a combined view of these two\n      // input values.\n      return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {\n        customInspect: false,\n        depth: 0\n      }));\n    }\n  }]);\n  return AssertionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error), inspect.custom);\nmodule.exports = AssertionError;","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bound');\nvar $Object = require('es-object-atoms');\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? $Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = $Object(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = $Object(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && ($Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar regexFlagsSupported = /a/g.flags !== undefined;\nvar arrayFromSet = function arrayFromSet(set) {\n  var array = [];\n  set.forEach(function (value) {\n    return array.push(value);\n  });\n  return array;\n};\nvar arrayFromMap = function arrayFromMap(map) {\n  var array = [];\n  map.forEach(function (value, key) {\n    return array.push([key, value]);\n  });\n  return array;\n};\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n  return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\nvar _require$types = require('util/').types,\n  isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n  isArrayBufferView = _require$types.isArrayBufferView,\n  isDate = _require$types.isDate,\n  isMap = _require$types.isMap,\n  isRegExp = _require$types.isRegExp,\n  isSet = _require$types.isSet,\n  isNativeError = _require$types.isNativeError,\n  isBoxedPrimitive = _require$types.isBoxedPrimitive,\n  isNumberObject = _require$types.isNumberObject,\n  isStringObject = _require$types.isStringObject,\n  isBooleanObject = _require$types.isBooleanObject,\n  isBigIntObject = _require$types.isBigIntObject,\n  isSymbolObject = _require$types.isSymbolObject,\n  isFloat32Array = _require$types.isFloat32Array,\n  isFloat64Array = _require$types.isFloat64Array;\nfunction isNonIndex(key) {\n  if (key.length === 0 || key.length > 10) return true;\n  for (var i = 0; i < key.length; i++) {\n    var code = key.charCodeAt(i);\n    if (code < 48 || code > 57) return true;\n  }\n  // The maximum size for an array is 2 ** 32 -1.\n  return key.length === 10 && key >= Math.pow(2, 32);\n}\nfunction getOwnNonIndexProperties(value) {\n  return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n}\n\n// Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\nfunction compare(a, b) {\n  if (a === b) {\n    return 0;\n  }\n  var x = a.length;\n  var y = b.length;\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i];\n      y = b[i];\n      break;\n    }\n  }\n  if (x < y) {\n    return -1;\n  }\n  if (y < x) {\n    return 1;\n  }\n  return 0;\n}\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3;\n\n// Check if they have the same source and flags\nfunction areSimilarRegExps(a, b) {\n  return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\nfunction areSimilarFloatArrays(a, b) {\n  if (a.byteLength !== b.byteLength) {\n    return false;\n  }\n  for (var offset = 0; offset < a.byteLength; offset++) {\n    if (a[offset] !== b[offset]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction areSimilarTypedArrays(a, b) {\n  if (a.byteLength !== b.byteLength) {\n    return false;\n  }\n  return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\nfunction areEqualArrayBuffers(buf1, buf2) {\n  return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\nfunction isEqualBoxedPrimitive(val1, val2) {\n  if (isNumberObject(val1)) {\n    return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n  }\n  if (isStringObject(val1)) {\n    return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n  }\n  if (isBooleanObject(val1)) {\n    return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n  }\n  if (isBigIntObject(val1)) {\n    return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n  }\n  return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n}\n\n// Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n  // All identical values are equivalent, as determined by ===.\n  if (val1 === val2) {\n    if (val1 !== 0) return true;\n    return strict ? objectIs(val1, val2) : true;\n  }\n\n  // Check more closely if val1 and val2 are equal.\n  if (strict) {\n    if (_typeof(val1) !== 'object') {\n      return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n    }\n    if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n      return false;\n    }\n    if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n      return false;\n    }\n  } else {\n    if (val1 === null || _typeof(val1) !== 'object') {\n      if (val2 === null || _typeof(val2) !== 'object') {\n        // eslint-disable-next-line eqeqeq\n        return val1 == val2;\n      }\n      return false;\n    }\n    if (val2 === null || _typeof(val2) !== 'object') {\n      return false;\n    }\n  }\n  var val1Tag = objectToString(val1);\n  var val2Tag = objectToString(val2);\n  if (val1Tag !== val2Tag) {\n    return false;\n  }\n  if (Array.isArray(val1)) {\n    // Check for sparse arrays and general fast path\n    if (val1.length !== val2.length) {\n      return false;\n    }\n    var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n    var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n    if (keys1.length !== keys2.length) {\n      return false;\n    }\n    return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n  }\n  // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n  // wan't to early return out of the rest of the checks. However we can check\n  // if the second value is one of these values and the first isn't.\n  if (val1Tag === '[object Object]') {\n    // return keyCheck(val1, val2, strict, memos, kNoIterator);\n    if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n      return false;\n    }\n  }\n  if (isDate(val1)) {\n    if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n      return false;\n    }\n  } else if (isRegExp(val1)) {\n    if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n      return false;\n    }\n  } else if (isNativeError(val1) || val1 instanceof Error) {\n    // Do not compare the stack as it might differ even though the error itself\n    // is otherwise identical.\n    if (val1.message !== val2.message || val1.name !== val2.name) {\n      return false;\n    }\n  } else if (isArrayBufferView(val1)) {\n    if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n      if (!areSimilarFloatArrays(val1, val2)) {\n        return false;\n      }\n    } else if (!areSimilarTypedArrays(val1, val2)) {\n      return false;\n    }\n    // Buffer.compare returns true, so val1.length === val2.length. If they both\n    // only contain numeric keys, we don't need to exam further than checking\n    // the symbols.\n    var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n    var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n    if (_keys.length !== _keys2.length) {\n      return false;\n    }\n    return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n  } else if (isSet(val1)) {\n    if (!isSet(val2) || val1.size !== val2.size) {\n      return false;\n    }\n    return keyCheck(val1, val2, strict, memos, kIsSet);\n  } else if (isMap(val1)) {\n    if (!isMap(val2) || val1.size !== val2.size) {\n      return false;\n    }\n    return keyCheck(val1, val2, strict, memos, kIsMap);\n  } else if (isAnyArrayBuffer(val1)) {\n    if (!areEqualArrayBuffers(val1, val2)) {\n      return false;\n    }\n  } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n    return false;\n  }\n  return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\nfunction getEnumerables(val, keys) {\n  return keys.filter(function (k) {\n    return propertyIsEnumerable(val, k);\n  });\n}\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n  // For all remaining Object pairs, including Array, objects and Maps,\n  // equivalence is determined by having:\n  // a) The same number of owned enumerable properties\n  // b) The same set of keys/indexes (although not necessarily the same order)\n  // c) Equivalent values for every corresponding key/index\n  // d) For Sets and Maps, equal contents\n  // Note: this accounts for both named and indexed properties on Arrays.\n  if (arguments.length === 5) {\n    aKeys = Object.keys(val1);\n    var bKeys = Object.keys(val2);\n\n    // The pair must have the same number of owned properties.\n    if (aKeys.length !== bKeys.length) {\n      return false;\n    }\n  }\n\n  // Cheap key test\n  var i = 0;\n  for (; i < aKeys.length; i++) {\n    if (!hasOwnProperty(val2, aKeys[i])) {\n      return false;\n    }\n  }\n  if (strict && arguments.length === 5) {\n    var symbolKeysA = objectGetOwnPropertySymbols(val1);\n    if (symbolKeysA.length !== 0) {\n      var count = 0;\n      for (i = 0; i < symbolKeysA.length; i++) {\n        var key = symbolKeysA[i];\n        if (propertyIsEnumerable(val1, key)) {\n          if (!propertyIsEnumerable(val2, key)) {\n            return false;\n          }\n          aKeys.push(key);\n          count++;\n        } else if (propertyIsEnumerable(val2, key)) {\n          return false;\n        }\n      }\n      var symbolKeysB = objectGetOwnPropertySymbols(val2);\n      if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n        return false;\n      }\n    } else {\n      var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n      if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n        return false;\n      }\n    }\n  }\n  if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n    return true;\n  }\n\n  // Use memos to handle cycles.\n  if (memos === undefined) {\n    memos = {\n      val1: new Map(),\n      val2: new Map(),\n      position: 0\n    };\n  } else {\n    // We prevent up to two map.has(x) calls by directly retrieving the value\n    // and checking for undefined. The map can only contain numbers, so it is\n    // safe to check for undefined only.\n    var val2MemoA = memos.val1.get(val1);\n    if (val2MemoA !== undefined) {\n      var val2MemoB = memos.val2.get(val2);\n      if (val2MemoB !== undefined) {\n        return val2MemoA === val2MemoB;\n      }\n    }\n    memos.position++;\n  }\n  memos.val1.set(val1, memos.position);\n  memos.val2.set(val2, memos.position);\n  var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n  memos.val1.delete(val1);\n  memos.val2.delete(val2);\n  return areEq;\n}\nfunction setHasEqualElement(set, val1, strict, memo) {\n  // Go looking.\n  var setValues = arrayFromSet(set);\n  for (var i = 0; i < setValues.length; i++) {\n    var val2 = setValues[i];\n    if (innerDeepEqual(val1, val2, strict, memo)) {\n      // Remove the matching element to make sure we do not check that again.\n      set.delete(val2);\n      return true;\n    }\n  }\n  return false;\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\nfunction findLooseMatchingPrimitives(prim) {\n  switch (_typeof(prim)) {\n    case 'undefined':\n      return null;\n    case 'object':\n      // Only pass in null as object!\n      return undefined;\n    case 'symbol':\n      return false;\n    case 'string':\n      prim = +prim;\n    // Loose equal entries exist only if the string is possible to convert to\n    // a regular number and not NaN.\n    // Fall through\n    case 'number':\n      if (numberIsNaN(prim)) {\n        return false;\n      }\n  }\n  return true;\n}\nfunction setMightHaveLoosePrim(a, b, prim) {\n  var altValue = findLooseMatchingPrimitives(prim);\n  if (altValue != null) return altValue;\n  return b.has(altValue) && !a.has(altValue);\n}\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n  var altValue = findLooseMatchingPrimitives(prim);\n  if (altValue != null) {\n    return altValue;\n  }\n  var curB = b.get(altValue);\n  if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n    return false;\n  }\n  return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\nfunction setEquiv(a, b, strict, memo) {\n  // This is a lazily initiated Set of entries which have to be compared\n  // pairwise.\n  var set = null;\n  var aValues = arrayFromSet(a);\n  for (var i = 0; i < aValues.length; i++) {\n    var val = aValues[i];\n    // Note: Checking for the objects first improves the performance for object\n    // heavy sets but it is a minor slow down for primitives. As they are fast\n    // to check this improves the worst case scenario instead.\n    if (_typeof(val) === 'object' && val !== null) {\n      if (set === null) {\n        set = new Set();\n      }\n      // If the specified value doesn't exist in the second set its an not null\n      // object (or non strict only: a not matching primitive) we'll need to go\n      // hunting for something thats deep-(strict-)equal to it. To make this\n      // O(n log n) complexity we have to copy these values in a new set first.\n      set.add(val);\n    } else if (!b.has(val)) {\n      if (strict) return false;\n\n      // Fast path to detect missing string, symbol, undefined and null values.\n      if (!setMightHaveLoosePrim(a, b, val)) {\n        return false;\n      }\n      if (set === null) {\n        set = new Set();\n      }\n      set.add(val);\n    }\n  }\n  if (set !== null) {\n    var bValues = arrayFromSet(b);\n    for (var _i = 0; _i < bValues.length; _i++) {\n      var _val = bValues[_i];\n      // We have to check if a primitive value is already\n      // matching and only if it's not, go hunting for it.\n      if (_typeof(_val) === 'object' && _val !== null) {\n        if (!setHasEqualElement(set, _val, strict, memo)) return false;\n      } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n        return false;\n      }\n    }\n    return set.size === 0;\n  }\n  return true;\n}\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n  // To be able to handle cases like:\n  //   Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n  // ... we need to consider *all* matching keys, not just the first we find.\n  var setValues = arrayFromSet(set);\n  for (var i = 0; i < setValues.length; i++) {\n    var key2 = setValues[i];\n    if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n      set.delete(key2);\n      return true;\n    }\n  }\n  return false;\n}\nfunction mapEquiv(a, b, strict, memo) {\n  var set = null;\n  var aEntries = arrayFromMap(a);\n  for (var i = 0; i < aEntries.length; i++) {\n    var _aEntries$i = _slicedToArray(aEntries[i], 2),\n      key = _aEntries$i[0],\n      item1 = _aEntries$i[1];\n    if (_typeof(key) === 'object' && key !== null) {\n      if (set === null) {\n        set = new Set();\n      }\n      set.add(key);\n    } else {\n      // By directly retrieving the value we prevent another b.has(key) check in\n      // almost all possible cases.\n      var item2 = b.get(key);\n      if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n        if (strict) return false;\n        // Fast path to detect missing string, symbol, undefined and null\n        // keys.\n        if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n        if (set === null) {\n          set = new Set();\n        }\n        set.add(key);\n      }\n    }\n  }\n  if (set !== null) {\n    var bEntries = arrayFromMap(b);\n    for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n      var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n        _key = _bEntries$_i[0],\n        item = _bEntries$_i[1];\n      if (_typeof(_key) === 'object' && _key !== null) {\n        if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;\n      } else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {\n        return false;\n      }\n    }\n    return set.size === 0;\n  }\n  return true;\n}\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n  // Sets and maps don't have their entries accessible via normal object\n  // properties.\n  var i = 0;\n  if (iterationType === kIsSet) {\n    if (!setEquiv(a, b, strict, memos)) {\n      return false;\n    }\n  } else if (iterationType === kIsMap) {\n    if (!mapEquiv(a, b, strict, memos)) {\n      return false;\n    }\n  } else if (iterationType === kIsArray) {\n    for (; i < a.length; i++) {\n      if (hasOwnProperty(a, i)) {\n        if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n          return false;\n        }\n      } else if (hasOwnProperty(b, i)) {\n        return false;\n      } else {\n        // Array is sparse.\n        var keysA = Object.keys(a);\n        for (; i < keysA.length; i++) {\n          var key = keysA[i];\n          if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n            return false;\n          }\n        }\n        if (keysA.length !== Object.keys(b).length) {\n          return false;\n        }\n        return true;\n      }\n    }\n  }\n\n  // The pair must have equivalent values for every corresponding key.\n  // Possibly expensive deep test:\n  for (i = 0; i < keys.length; i++) {\n    var _key2 = keys[i];\n    if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isDeepEqual(val1, val2) {\n  return innerDeepEqual(val1, val2, kLoose);\n}\nfunction isDeepStrictEqual(val1, val2) {\n  return innerDeepEqual(val1, val2, kStrict);\n}\nmodule.exports = {\n  isDeepEqual: isDeepEqual,\n  isDeepStrictEqual: isDeepStrictEqual\n};","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationPresenter from './NotificationPresenterModule';\nimport { mapNotification } from './utils/mapNotificationResponse';\n/**\n * Fetches information about all notifications present in the notification tray (Notification Center).\n * > This method is not supported on Android below 6.0 (API level 23) – on these devices it will resolve to an empty array.\n * @return A Promise which resolves with a list of notifications ([`Notification`](#notification)) currently present in the notification tray (Notification Center).\n * @header dismiss\n */\nexport default async function getPresentedNotificationsAsync() {\n    if (!NotificationPresenter.getPresentedNotificationsAsync) {\n        throw new UnavailabilityError('Notifications', 'getPresentedNotificationsAsync');\n    }\n    return (await NotificationPresenter.getPresentedNotificationsAsync()).map((notification) => mapNotification(notification));\n}\n//# sourceMappingURL=getPresentedNotificationsAsync.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNotificationPresenter');\n//# sourceMappingURL=NotificationPresenterModule.native.js.map","/**\n * @hidden\n *\n * Does any required processing of a notification response from native code\n * before it is passed to a notification response listener, or to the\n * last notification response hook.\n *\n * @param response The raw response passed in from native code\n * @returns the mapped response.\n */\nexport const mapNotificationResponse = (response) => {\n    return {\n        ...response,\n        notification: mapNotification(response.notification),\n    };\n};\n/**\n * @hidden\n *\n * Does any required processing of a notification from native code\n * before it is passed to a notification listener.\n *\n * @param notification The raw notification passed in from native code\n * @returns the mapped notification.\n */\nexport const mapNotification = (notification) => ({\n    ...notification,\n    request: mapNotificationRequest(notification.request),\n});\n/**\n * @hidden\n *\n * Does any required processing of a notification request from native code\n * before it is passed to other JS code.\n *\n * @param request The raw request passed in from native code\n * @returns the mapped request.\n */\nexport const mapNotificationRequest = (request) => ({\n    ...request,\n    content: mapNotificationContent(request.content),\n});\nlet didWarn = false;\n/**\n * @hidden\n * Does any required processing of notification content from native code\n * before being passed to other JS code.\n *\n * @param content The raw content passed in from native code\n * @returns the mapped content.\n */\nexport const mapNotificationContent = (content) => {\n    try {\n        // @ts-expect-error: TODO(@kitten): This is not present in the types! This is error prone\n        const dataString = content['dataString'];\n        if (typeof dataString === 'string') {\n            const mappedContent = { ...content };\n            mappedContent.data = JSON.parse(dataString);\n            Object.defineProperty(mappedContent, 'dataString', {\n                get() {\n                    if (!didWarn) {\n                        didWarn = true;\n                        // TODO(vonovak) remove this warning and delete dataString entry in a next version\n                        console.warn('reading dataString is deprecated, use data instead');\n                    }\n                    return dataString;\n                },\n            });\n            return mappedContent;\n        }\n    }\n    catch (e) {\n        console.error(`Error parsing notification: ${e}`);\n    }\n    return content;\n};\n//# sourceMappingURL=mapNotificationResponse.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationPresenter from './NotificationPresenterModule';\n/**\n * Removes notification displayed in the notification tray (Notification Center).\n * @param notificationIdentifier The notification identifier, obtained either via `setNotificationHandler` method or in the listener added with `addNotificationReceivedListener`.\n * @return A Promise which resolves once the request to dismiss the notification is successfully dispatched to the notifications manager.\n * @header dismiss\n */\nexport default async function dismissNotificationAsync(notificationIdentifier) {\n    if (!NotificationPresenter.dismissNotificationAsync) {\n        throw new UnavailabilityError('Notifications', 'dismissNotificationAsync');\n    }\n    return await NotificationPresenter.dismissNotificationAsync(notificationIdentifier);\n}\n//# sourceMappingURL=dismissNotificationAsync.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationPresenter from './NotificationPresenterModule';\n/**\n * Removes all application's notifications displayed in the notification tray (Notification Center).\n * @return A Promise which resolves once the request to dismiss the notifications is successfully dispatched to the notifications manager.\n * @header dismiss\n */\nexport default async function dismissAllNotificationsAsync() {\n    if (!NotificationPresenter.dismissAllNotificationsAsync) {\n        throw new UnavailabilityError('Notifications', 'dismissAllNotificationsAsync');\n    }\n    return await NotificationPresenter.dismissAllNotificationsAsync();\n}\n//# sourceMappingURL=dismissAllNotificationsAsync.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport BadgeModule from './BadgeModule';\n/**\n * Fetches the number currently set as the badge of the app icon on device's home screen. A `0` value means that the badge is not displayed.\n * > **Note:** Not all Android launchers support application badges. If the launcher does not support icon badges, the method will always resolve to `0`.\n * @return Returns a Promise resolving to a number that represents the current badge of the app icon.\n * @header badge\n */\nexport default async function getBadgeCountAsync() {\n    if (!BadgeModule.getBadgeCountAsync) {\n        throw new UnavailabilityError('ExpoNotifications', 'getBadgeCountAsync');\n    }\n    return await BadgeModule.getBadgeCountAsync();\n}\n//# sourceMappingURL=getBadgeCountAsync.js.map","import { requireNativeModule } from 'expo-modules-core';\nconst nativeModule = requireNativeModule('ExpoBadgeModule');\nexport default {\n    ...nativeModule,\n    // We overwrite setBadgeCountAsync to omit\n    // an obsolete options argument when calling\n    // the native function.\n    setBadgeCountAsync: async (badgeCount, options) => {\n        return await nativeModule.setBadgeCountAsync(badgeCount);\n    },\n};\n//# sourceMappingURL=BadgeModule.native.js.map","import { UnavailabilityError, Platform } from 'expo-modules-core';\nimport BadgeModule from './BadgeModule';\n/**\n * Sets the badge of the app's icon to the specified number. Setting it to `0` clears the badge. On iOS, this method requires that you have requested\n * the user's permission for `allowBadge` via [`requestPermissionsAsync`](#requestpermissionsasyncpermissions),\n * otherwise it will automatically return `false`.\n * > **Note:** Not all Android launchers support application badges. If the launcher does not support icon badges, the method will resolve to `false`.\n * @param badgeCount The count which should appear on the badge. A value of `0` will clear the badge.\n * @param options An object of options configuring behavior applied.\n * @return It returns a Promise resolving to a boolean representing whether the setting of the badge succeeded.\n * @header badge\n */\nexport default async function setBadgeCountAsync(badgeCount, options) {\n    if (!BadgeModule.setBadgeCountAsync) {\n        throw new UnavailabilityError('ExpoNotifications', 'setBadgeCountAsync');\n    }\n    const platformOptions = options?.[Platform.OS];\n    return await BadgeModule.setBadgeCountAsync(badgeCount, platformOptions);\n}\n//# sourceMappingURL=setBadgeCountAsync.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationScheduler from './NotificationScheduler';\nimport { mapNotificationRequest } from './utils/mapNotificationResponse';\n/**\n * Fetches information about all scheduled notifications.\n * @return Returns a Promise resolving to an array of objects conforming to the [`Notification`](#notification) interface.\n * @header schedule\n */\nexport default async function getAllScheduledNotificationsAsync() {\n    if (!NotificationScheduler.getAllScheduledNotificationsAsync) {\n        throw new UnavailabilityError('Notifications', 'getAllScheduledNotificationsAsync');\n    }\n    return (await NotificationScheduler.getAllScheduledNotificationsAsync()).map((request) => mapNotificationRequest(request));\n}\n//# sourceMappingURL=getAllScheduledNotificationsAsync.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNotificationScheduler');\n//# sourceMappingURL=NotificationScheduler.native.js.map","import { Platform, UnavailabilityError, uuid } from 'expo-modules-core';\nimport NotificationScheduler from './NotificationScheduler';\nimport { SchedulableTriggerInputTypes, } from './Notifications.types';\nimport { hasValidTriggerObject } from './hasValidTriggerObject';\n/**\n * Schedules a notification to be triggered in the future.\n * > **Note:** This does not mean that the notification will be presented when it is triggered.\n * For the notification to be presented you have to set a notification handler with [`setNotificationHandler`](#setnotificationhandlerhandler)\n * that will return an appropriate notification behavior. For more information see the example below.\n * @param request An object describing the notification to be triggered.\n * @return Returns a Promise resolving to a string which is a notification identifier you can later use to cancel the notification or to identify an incoming notification.\n * @example\n * # Schedule the notification that will trigger once, in one minute from now\n * ```ts\n * import * as Notifications from 'expo-notifications';\n *\n * Notifications.scheduleNotificationAsync({\n *   content: {\n *     title: \"Time's up!\",\n *     body: 'Change sides!',\n *   },\n *   trigger: {\n *     type: Notifications.SchedulableTriggerInputTypes.TIME_INTERVAL,\n *     seconds: 60,\n *   },\n * });\n * ```\n *\n * # Schedule the notification that will trigger repeatedly, every 20 minutes\n * ```ts\n * import * as Notifications from 'expo-notifications';\n *\n * Notifications.scheduleNotificationAsync({\n *   content: {\n *     title: 'Remember to drink water!',\n *   },\n *   trigger: {\n *     type: Notifications.SchedulableTriggerInputTypes.TIME_INTERVAL,\n *     seconds: 60 * 20,\n *     repeats: true,\n *   },\n * });\n * ```\n *\n * # Schedule the notification that will trigger once, at the beginning of next hour\n * ```ts\n * import * as Notifications from 'expo-notifications';\n *\n * const date = new Date(Date.now() + 60 * 60 * 1000);\n * date.setMinutes(0);\n * date.setSeconds(0);\n *\n * Notifications.scheduleNotificationAsync({\n *   content: {\n *     title: 'Happy new hour!',\n *   },\n *   trigger: {\n *     type: Notifications.SchedulableTriggerInputTypes.DATE,\n *     date\n *   },\n * });\n * ```\n * @header schedule\n */\nexport default async function scheduleNotificationAsync(request) {\n    if (!NotificationScheduler.scheduleNotificationAsync) {\n        throw new UnavailabilityError('Notifications', 'scheduleNotificationAsync');\n    }\n    return await NotificationScheduler.scheduleNotificationAsync(request.identifier ?? uuid.v4(), request.content, parseTrigger(request.trigger));\n}\nexport function parseTrigger(userFacingTrigger) {\n    if (userFacingTrigger === null) {\n        return null;\n    }\n    if (userFacingTrigger === undefined) {\n        throw new TypeError('Encountered an `undefined` notification trigger. If you want to trigger the notification immediately, pass in an explicit `null` value.');\n    }\n    if (!hasValidTriggerObject(userFacingTrigger)) {\n        throw new TypeError(`The \\`trigger\\` object you provided is invalid. It needs to contain a \\`type\\` or \\`channelId\\` entry. Refer to the documentation to update your code: https://docs.expo.dev/versions/latest/sdk/notifications/#notificationtriggerinput`);\n    }\n    const dateTrigger = parseDateTrigger(userFacingTrigger);\n    if (dateTrigger) {\n        return dateTrigger;\n    }\n    const calendarTrigger = parseCalendarTrigger(userFacingTrigger);\n    if (calendarTrigger) {\n        return calendarTrigger;\n    }\n    const dailyTrigger = parseDailyTrigger(userFacingTrigger);\n    if (dailyTrigger) {\n        return dailyTrigger;\n    }\n    const weeklyTrigger = parseWeeklyTrigger(userFacingTrigger);\n    if (weeklyTrigger) {\n        return weeklyTrigger;\n    }\n    const monthlyTrigger = parseMonthlyTrigger(userFacingTrigger);\n    if (monthlyTrigger) {\n        return monthlyTrigger;\n    }\n    const yearlyTrigger = parseYearlyTrigger(userFacingTrigger);\n    if (yearlyTrigger) {\n        return yearlyTrigger;\n    }\n    const timeIntervalTrigger = parseTimeIntervalTrigger(userFacingTrigger);\n    if (timeIntervalTrigger) {\n        return timeIntervalTrigger;\n    }\n    return Platform.select({\n        default: null, // There's no notion of channels on platforms other than Android.\n        android: {\n            type: 'channel',\n            channelId: typeof userFacingTrigger === 'object' &&\n                userFacingTrigger !== null &&\n                !(userFacingTrigger instanceof Date)\n                ? userFacingTrigger?.channelId\n                : undefined,\n        },\n    });\n}\nfunction parseCalendarTrigger(trigger) {\n    if (trigger !== null &&\n        typeof trigger === 'object' &&\n        'type' in trigger &&\n        trigger.type === SchedulableTriggerInputTypes.CALENDAR) {\n        const { repeats, ...calendarTrigger } = trigger;\n        return { ...calendarTrigger, repeats: !!repeats, type: 'calendar' };\n    }\n    return undefined;\n}\nfunction parseDateTrigger(trigger) {\n    if (trigger instanceof Date || typeof trigger === 'number') {\n        // TODO @vonovak this branch is not be used by people using TS\n        // but was part of the public api previously so we keep it for a bit for JS users\n        console.warn(`You are using a deprecated parameter type (${trigger}) for the notification trigger. Use \"{ type: 'date', date: someValue }\" instead.`);\n        return { type: 'date', timestamp: toTimestamp(trigger) };\n    }\n    else if (typeof trigger === 'object' &&\n        trigger !== null &&\n        'type' in trigger &&\n        trigger.type === SchedulableTriggerInputTypes.DATE &&\n        'date' in trigger) {\n        const result = {\n            type: 'date',\n            timestamp: toTimestamp(trigger.date),\n        };\n        if (trigger.channelId) {\n            result.channelId = trigger.channelId;\n        }\n        return result;\n    }\n    else {\n        return undefined;\n    }\n}\nfunction toTimestamp(date) {\n    if (date instanceof Date) {\n        return date.getTime();\n    }\n    return date;\n}\nfunction parseDailyTrigger(trigger) {\n    if (trigger !== null &&\n        typeof trigger === 'object' &&\n        'type' in trigger &&\n        trigger.type === SchedulableTriggerInputTypes.DAILY) {\n        validateDateComponentsInTrigger(trigger, ['hour', 'minute']);\n        const result = {\n            type: 'daily',\n            hour: trigger.hour ?? placeholderDateComponentValue,\n            minute: trigger.minute ?? placeholderDateComponentValue,\n        };\n        if (trigger.channelId) {\n            result.channelId = trigger.channelId;\n        }\n        return result;\n    }\n    return undefined;\n}\nfunction parseWeeklyTrigger(trigger) {\n    if (trigger !== null &&\n        typeof trigger === 'object' &&\n        'type' in trigger &&\n        trigger.type === SchedulableTriggerInputTypes.WEEKLY) {\n        validateDateComponentsInTrigger(trigger, ['weekday', 'hour', 'minute']);\n        const result = {\n            type: 'weekly',\n            weekday: trigger.weekday ?? placeholderDateComponentValue,\n            hour: trigger.hour ?? placeholderDateComponentValue,\n            minute: trigger.minute ?? placeholderDateComponentValue,\n        };\n        if (trigger.channelId) {\n            result.channelId = trigger.channelId;\n        }\n        return result;\n    }\n    return undefined;\n}\nfunction parseMonthlyTrigger(trigger) {\n    if (trigger !== null &&\n        typeof trigger === 'object' &&\n        'type' in trigger &&\n        trigger.type === SchedulableTriggerInputTypes.MONTHLY) {\n        validateDateComponentsInTrigger(trigger, ['day', 'hour', 'minute']);\n        const result = {\n            type: 'monthly',\n            day: trigger.day ?? placeholderDateComponentValue,\n            hour: trigger.hour ?? placeholderDateComponentValue,\n            minute: trigger.minute ?? placeholderDateComponentValue,\n        };\n        if (trigger.channelId) {\n            result.channelId = trigger.channelId;\n        }\n        return result;\n    }\n    return undefined;\n}\nfunction parseYearlyTrigger(trigger) {\n    if (trigger !== null &&\n        typeof trigger === 'object' &&\n        'type' in trigger &&\n        trigger.type === SchedulableTriggerInputTypes.YEARLY) {\n        validateDateComponentsInTrigger(trigger, ['month', 'day', 'hour', 'minute']);\n        const result = {\n            type: 'yearly',\n            month: trigger.month ?? placeholderDateComponentValue,\n            day: trigger.day ?? placeholderDateComponentValue,\n            hour: trigger.hour ?? placeholderDateComponentValue,\n            minute: trigger.minute ?? placeholderDateComponentValue,\n        };\n        if (trigger.channelId) {\n            result.channelId = trigger.channelId;\n        }\n        return result;\n    }\n    return undefined;\n}\nfunction parseTimeIntervalTrigger(trigger) {\n    if (trigger !== null &&\n        typeof trigger === 'object' &&\n        'type' in trigger &&\n        trigger.type === SchedulableTriggerInputTypes.TIME_INTERVAL &&\n        'seconds' in trigger &&\n        typeof trigger.seconds === 'number') {\n        const result = {\n            type: 'timeInterval',\n            seconds: trigger.seconds,\n            repeats: trigger.repeats ?? false,\n        };\n        if (trigger.channelId) {\n            result.channelId = trigger.channelId;\n        }\n        return result;\n    }\n    return undefined;\n}\n// Needed only to satisfy Typescript types for validated date components\nconst placeholderDateComponentValue = -9999;\nfunction validateDateComponentsInTrigger(trigger, components) {\n    const anyTriggerType = trigger;\n    components.forEach((component) => {\n        if (!(component in anyTriggerType)) {\n            throw new TypeError(`The ${component} parameter needs to be present`);\n        }\n        if (typeof anyTriggerType[component] !== 'number') {\n            throw new TypeError(`The ${component} parameter should be a number`);\n        }\n        switch (component) {\n            case 'month': {\n                const { month } = anyTriggerType;\n                if (month < 0 || month > 11) {\n                    throw new RangeError(`The month parameter needs to be between 0 and 11. Found: ${month}`);\n                }\n                break;\n            }\n            case 'day': {\n                const day = anyTriggerType.day;\n                const month = anyTriggerType.month !== undefined ? anyTriggerType.month : new Date().getMonth();\n                const daysInGivenMonth = daysInMonth(month);\n                if (day < 1 || day > daysInGivenMonth) {\n                    throw new RangeError(`The day parameter for month ${month} must be between 1 and ${daysInGivenMonth}. Found: ${day}`);\n                }\n                break;\n            }\n            case 'weekday': {\n                const { weekday } = anyTriggerType;\n                if (weekday < 1 || weekday > 7) {\n                    throw new RangeError(`The weekday parameter needs to be between 1 and 7. Found: ${weekday}`);\n                }\n                break;\n            }\n            case 'hour': {\n                const { hour } = anyTriggerType;\n                if (hour < 0 || hour > 23) {\n                    throw new RangeError(`The hour parameter needs to be between 0 and 23. Found: ${hour}`);\n                }\n                break;\n            }\n            case 'minute': {\n                const { minute } = anyTriggerType;\n                if (minute < 0 || minute > 59) {\n                    throw new RangeError(`The minute parameter needs to be between 0 and 59. Found: ${minute}`);\n                }\n                break;\n            }\n        }\n    });\n}\n/**\n * Determines the number of days in the given month (or January if omitted).\n * If year is specified, it will include leap year logic, else it will always assume a leap year\n */\nfunction daysInMonth(month = 0, year) {\n    return new Date(year ?? 2000, month + 1, 0).getDate();\n}\n//# sourceMappingURL=scheduleNotificationAsync.js.map","/**\n * Schedulable trigger inputs (that are not a plain date value or time value)\n * must have the \"type\" property set to one of these values.\n */\nexport var SchedulableTriggerInputTypes;\n(function (SchedulableTriggerInputTypes) {\n    SchedulableTriggerInputTypes[\"CALENDAR\"] = \"calendar\";\n    SchedulableTriggerInputTypes[\"DAILY\"] = \"daily\";\n    SchedulableTriggerInputTypes[\"WEEKLY\"] = \"weekly\";\n    SchedulableTriggerInputTypes[\"MONTHLY\"] = \"monthly\";\n    SchedulableTriggerInputTypes[\"YEARLY\"] = \"yearly\";\n    SchedulableTriggerInputTypes[\"DATE\"] = \"date\";\n    SchedulableTriggerInputTypes[\"TIME_INTERVAL\"] = \"timeInterval\";\n})(SchedulableTriggerInputTypes || (SchedulableTriggerInputTypes = {}));\n/**\n * An enum corresponding to values appropriate for Android's [`Notification#priority`](https://developer.android.com/reference/android/app/Notification#priority) field.\n * @platform android\n */\nexport var AndroidNotificationPriority;\n(function (AndroidNotificationPriority) {\n    AndroidNotificationPriority[\"MIN\"] = \"min\";\n    AndroidNotificationPriority[\"LOW\"] = \"low\";\n    AndroidNotificationPriority[\"DEFAULT\"] = \"default\";\n    AndroidNotificationPriority[\"HIGH\"] = \"high\";\n    AndroidNotificationPriority[\"MAX\"] = \"max\";\n})(AndroidNotificationPriority || (AndroidNotificationPriority = {}));\nexport { PermissionStatus, } from 'expo-modules-core';\n//# sourceMappingURL=Notifications.types.js.map","export function hasValidTriggerObject(trigger) {\n    return (trigger === null ||\n        (typeof trigger === 'object' && ('type' in trigger || 'channelId' in trigger)));\n}\n//# sourceMappingURL=hasValidTriggerObject.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationScheduler from './NotificationScheduler';\n/**\n * Cancels a single scheduled notification. The scheduled notification of given ID will not trigger.\n * @param identifier The notification identifier with which `scheduleNotificationAsync` method resolved when the notification has been scheduled.\n * @return A Promise resolves once the scheduled notification is successfully canceled or if there is no scheduled notification for a given identifier.\n * @example Schedule and then cancel the notification:\n * ```ts\n * import * as Notifications from 'expo-notifications';\n *\n * async function scheduleAndCancel() {\n *   const identifier = await Notifications.scheduleNotificationAsync({\n *     content: {\n *       title: 'Hey!',\n *     },\n *     trigger: { seconds: 60, repeats: true },\n *   });\n *   await Notifications.cancelScheduledNotificationAsync(identifier);\n * }\n * ```\n * @header schedule\n */\nexport default async function cancelScheduledNotificationAsync(identifier) {\n    if (!NotificationScheduler.cancelScheduledNotificationAsync) {\n        throw new UnavailabilityError('Notifications', 'cancelScheduledNotificationAsync');\n    }\n    return await NotificationScheduler.cancelScheduledNotificationAsync(identifier);\n}\n//# sourceMappingURL=cancelScheduledNotificationAsync.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationScheduler from './NotificationScheduler';\n/**\n * Cancels all scheduled notifications.\n * @return A Promise that resolves once all the scheduled notifications are successfully canceled, or if there are no scheduled notifications.\n * @header schedule\n */\nexport default async function cancelAllScheduledNotificationsAsync() {\n    if (!NotificationScheduler.cancelAllScheduledNotificationsAsync) {\n        throw new UnavailabilityError('Notifications', 'cancelAllScheduledNotificationsAsync');\n    }\n    return await NotificationScheduler.cancelAllScheduledNotificationsAsync();\n}\n//# sourceMappingURL=cancelAllScheduledNotificationsAsync.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationCategoriesModule from './NotificationCategoriesModule';\n/**\n * Fetches information about all known notification categories.\n * @return A Promise which resolves to an array of `NotificationCategory`s. On platforms that do not support notification channels,\n * it will always resolve to an empty array.\n * @platform android\n * @platform ios\n * @header categories\n */\nexport default async function getNotificationCategoriesAsync() {\n    if (!NotificationCategoriesModule.getNotificationCategoriesAsync) {\n        throw new UnavailabilityError('Notifications', 'getNotificationCategoriesAsync');\n    }\n    return await NotificationCategoriesModule.getNotificationCategoriesAsync();\n}\n//# sourceMappingURL=getNotificationCategoriesAsync.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNotificationCategoriesModule');\n//# sourceMappingURL=NotificationCategoriesModule.native.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationCategoriesModule from './NotificationCategoriesModule';\n/**\n * Sets the new notification category.\n * @param identifier A string to associate as the ID of this category. You will pass this string in as the `categoryIdentifier`\n * in your [`NotificationContent`](#notificationcontent) to associate a notification with this category.\n * > Don't use the characters `:` or `-` in your category identifier. If you do, categories might not work as expected.\n * @param actions An array of [`NotificationAction`](#notificationaction), which describe the actions associated with this category.\n * @param options An optional object of additional configuration options for your category.\n * @return A Promise which resolves to the category you just have created.\n * @platform android\n * @platform ios\n * @header categories\n */\nexport default async function setNotificationCategoryAsync(identifier, actions, options) {\n    if (!NotificationCategoriesModule.setNotificationCategoryAsync) {\n        throw new UnavailabilityError('Notifications', 'setNotificationCategoryAsync');\n    }\n    return await NotificationCategoriesModule.setNotificationCategoryAsync(identifier, actions, options);\n}\n//# sourceMappingURL=setNotificationCategoryAsync.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationCategoriesModule from './NotificationCategoriesModule';\n/**\n * Deletes the category associated with the provided identifier.\n * @param identifier Identifier initially provided to `setNotificationCategoryAsync` when creating the category.\n * @return A Promise which resolves to `true` if the category was successfully deleted, or `false` if it was not.\n * An example of when this method would return `false` is if you try to delete a category that doesn't exist.\n * @platform android\n * @platform ios\n * @header categories\n */\nexport default async function deleteNotificationCategoryAsync(identifier) {\n    if (!NotificationCategoriesModule.deleteNotificationCategoryAsync) {\n        throw new UnavailabilityError('Notifications', 'deleteNotificationCategoryAsync');\n    }\n    return await NotificationCategoriesModule.deleteNotificationCategoryAsync(identifier);\n}\n//# sourceMappingURL=deleteNotificationCategoryAsync.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationScheduler from './NotificationScheduler';\nimport { parseTrigger } from './scheduleNotificationAsync';\n/**\n * Allows you to check what will be the next trigger date for given notification trigger input.\n * @param trigger The schedulable notification trigger you would like to check next trigger date for (of type [`SchedulableNotificationTriggerInput`](#schedulablenotificationtriggerinput)).\n * @return If the return value is `null`, the notification won't be triggered. Otherwise, the return value is the Unix timestamp in milliseconds\n * at which the notification will be triggered.\n * @example Calculate next trigger date for a notification trigger:\n * ```ts\n * import * as Notifications from 'expo-notifications';\n *\n * async function logNextTriggerDate() {\n *   try {\n *     const nextTriggerDate = await Notifications.getNextTriggerDateAsync({\n *       hour: 9,\n *       minute: 0,\n *     });\n *     console.log(nextTriggerDate === null ? 'No next trigger date' : new Date(nextTriggerDate));\n *   } catch (e) {\n *     console.warn(`Couldn't have calculated next trigger date: ${e}`);\n *   }\n * }\n * ```\n * @header schedule\n */\nexport default async function getNextTriggerDateAsync(trigger) {\n    if (!NotificationScheduler.getNextTriggerDateAsync) {\n        throw new UnavailabilityError('ExpoNotifications', 'getNextTriggerDateAsync');\n    }\n    return await NotificationScheduler.getNextTriggerDateAsync(parseTrigger(trigger));\n}\n//# sourceMappingURL=getNextTriggerDateAsync.js.map","import { useLayoutEffect, useState } from 'react';\nimport { addNotificationResponseReceivedListener, addNotificationResponseClearedListener, getLastNotificationResponse, } from './NotificationsEmitter';\n/**\n * A React hook which returns the notification response that was received most recently\n * (a notification response designates an interaction with a notification, such as tapping on it).\n *\n * To clear the last notification response, use [`clearLastNotificationResponseAsync()`](#notificationsclearlastnotificationresponseasync).\n *\n * > If you don't want to use a hook, you can use `Notifications.getLastNotificationResponseAsync()` instead.\n *\n * @return The hook may return one of these three types/values:\n * - `undefined` - until we're sure of what to return,\n * - `null` - if no notification response has been received yet,\n * - a [`NotificationResponse`](#notificationresponse) object - if a notification response was received.\n *\n * @example\n * Responding to a notification tap by opening a URL that could be put into the notification's `data`\n * (opening the URL is your responsibility and is not a part of the `expo-notifications` API):\n * ```jsx\n * import * as Notifications from 'expo-notifications';\n * import { Linking } from 'react-native';\n *\n * export default function App() {\n *   const lastNotificationResponse = Notifications.useLastNotificationResponse();\n *   React.useEffect(() => {\n *     if (\n *       lastNotificationResponse &&\n *       lastNotificationResponse.notification.request.content.data.url &&\n *       lastNotificationResponse.actionIdentifier === Notifications.DEFAULT_ACTION_IDENTIFIER\n *     ) {\n *       Linking.openURL(lastNotificationResponse.notification.request.content.data.url);\n *     }\n *   }, [lastNotificationResponse]);\n *   return (\n *     // Your app content\n *   );\n * }\n * ```\n * @header listen\n */\nexport default function useLastNotificationResponse() {\n    const [lastNotificationResponse, setLastNotificationResponse] = useState(undefined);\n    // useLayoutEffect ensures the listener is registered as soon as possible\n    useLayoutEffect(() => {\n        // Get the last response first, in case it was set earlier (even in native code on startup)\n        const response = getLastNotificationResponse();\n        setLastNotificationResponse((prevResponse) => determineNextResponse(prevResponse, response));\n        // Set up listener for responses that come in, and set the last response if needed\n        const subscription = addNotificationResponseReceivedListener((response) => setLastNotificationResponse((prevResponse) => determineNextResponse(prevResponse, response)));\n        const clearResponseSubscription = addNotificationResponseClearedListener(() => {\n            setLastNotificationResponse(null);\n        });\n        return () => {\n            subscription.remove();\n            clearResponseSubscription.remove();\n        };\n    }, []);\n    return lastNotificationResponse;\n}\n// returns the new response if it is different from the previous,\n// also has to return undefined until we're sure of what to return (null or a response)\n// the transition from response to null is invalid\nexport const determineNextResponse = (prevResponse, newResponse) => {\n    if (!newResponse) {\n        return null;\n    }\n    if (!prevResponse) {\n        return newResponse;\n    }\n    return prevResponse.notification.request.identifier !==\n        newResponse.notification.request.identifier\n        ? newResponse\n        : prevResponse;\n};\n//# sourceMappingURL=useLastNotificationResponse.js.map","import { LegacyEventEmitter, UnavailabilityError } from 'expo-modules-core';\nimport NotificationsEmitterModule from './NotificationsEmitterModule';\nimport { mapNotification, mapNotificationResponse } from './utils/mapNotificationResponse';\n// Web uses SyntheticEventEmitter\nconst emitter = new LegacyEventEmitter(NotificationsEmitterModule);\nconst didReceiveNotificationEventName = 'onDidReceiveNotification';\nconst didDropNotificationsEventName = 'onNotificationsDeleted';\nconst didReceiveNotificationResponseEventName = 'onDidReceiveNotificationResponse';\nconst didClearNotificationResponseEventName = 'onDidClearNotificationResponse';\n// @docsMissing\nexport const DEFAULT_ACTION_IDENTIFIER = 'expo.modules.notifications.actions.DEFAULT';\n/**\n * Listeners registered by this method will be called whenever a notification is received while the app is running.\n * @param listener A function accepting a notification ([`Notification`](#notification)) as an argument.\n * @return An [`EventSubscription`](#eventsubscription) object represents the subscription of the provided listener.\n * @example Registering a notification listener using a React hook:\n * ```jsx\n * import React from 'react';\n * import * as Notifications from 'expo-notifications';\n *\n * export default function App() {\n *   React.useEffect(() => {\n *     const subscription = Notifications.addNotificationReceivedListener(notification => {\n *       console.log(notification);\n *     });\n *     return () => subscription.remove();\n *   }, []);\n *\n *   return (\n *     // Your app content\n *   );\n * }\n * ```\n * @header listen\n */\nexport function addNotificationReceivedListener(listener) {\n    return emitter.addListener(didReceiveNotificationEventName, (notification) => {\n        const mappedNotification = mapNotification(notification);\n        listener(mappedNotification);\n    });\n}\n/**\n * Listeners registered by this method will be called whenever some notifications have been dropped by the server.\n * Applicable only to Firebase Cloud Messaging which we use as a notifications service on Android. It corresponds to `onDeletedMessages()` callback.\n * More information can be found in [Firebase docs](https://firebase.google.com/docs/cloud-messaging/android/receive#override-ondeletedmessages).\n * @param listener A callback function.\n * @return An [`EventSubscription`](#eventsubscription) object represents the subscription of the provided listener.\n * @header listen\n */\nexport function addNotificationsDroppedListener(listener) {\n    return emitter.addListener(didDropNotificationsEventName, listener);\n}\n/**\n * Listeners registered by this method will be called whenever a user interacts with a notification (for example, taps on it).\n * @param listener A function accepting notification response ([`NotificationResponse`](#notificationresponse)) as an argument.\n * @return An [`EventSubscription`](#eventsubscription) object represents the subscription of the provided listener.\n * @example Register a notification responder listener:\n * ```jsx\n * import React from 'react';\n * import { Linking } from 'react-native';\n * import * as Notifications from 'expo-notifications';\n *\n * export default function Container() {\n *   React.useEffect(() => {\n *     const subscription = Notifications.addNotificationResponseReceivedListener(response => {\n *       const url = response.notification.request.content.data.url;\n *       Linking.openURL(url);\n *     });\n *     return () => subscription.remove();\n *   }, []);\n *\n *   return (\n *     // Your app content\n *   );\n * }\n * ```\n * @header listen\n */\nexport function addNotificationResponseReceivedListener(listener) {\n    return emitter.addListener(didReceiveNotificationResponseEventName, (response) => {\n        const mappedResponse = mapNotificationResponse(response);\n        listener(mappedResponse);\n    });\n}\n/**\n *\n * Gets the notification response received most recently\n * (a notification response designates an interaction with a notification, such as tapping on it).\n *\n * - `null` - if no notification response has been received yet\n * - a [`NotificationResponse`](#notificationresponse) object - if a notification response was received\n *\n * @deprecated Use `getLastNotificationResponse` instead.\n */\nexport async function getLastNotificationResponseAsync() {\n    return getLastNotificationResponse();\n}\n/**\n * Gets the notification response that was received most recently\n * (a notification response designates an interaction with a notification, such as tapping on it).\n *\n * - `null` - if no notification response has been received yet\n * - a [`NotificationResponse`](#notificationresponse) object - if a notification response was received\n */\nexport function getLastNotificationResponse() {\n    if (!NotificationsEmitterModule.getLastNotificationResponse) {\n        throw new UnavailabilityError('ExpoNotifications', 'getLastNotificationResponse');\n    }\n    const response = NotificationsEmitterModule.getLastNotificationResponse();\n    const mappedResponse = response ? mapNotificationResponse(response) : response;\n    return mappedResponse;\n}\n/**\n * Clears the notification response that was received most recently. May be used\n * when an app selects a route based on the notification response, and it is undesirable\n * to continue selecting the route after the response has already been handled.\n *\n * If a component is using the [`useLastNotificationResponse`](#uselastnotificationresponse) hook,\n * this call will also clear the value returned by the hook.\n *\n * @deprecated Use `clearLastNotificationResponse` instead.\n * @return A promise that resolves if the native call was successful.\n */\nexport async function clearLastNotificationResponseAsync() {\n    clearLastNotificationResponse();\n}\n/**\n * Clears the notification response that was received most recently. May be used\n * when an app selects a route based on the notification response, and it is undesirable\n * to continue selecting the route after the response has already been handled.\n *\n * If a component is using the [`useLastNotificationResponse`](#uselastnotificationresponse) hook,\n * this call will also clear the value returned by the hook.\n *\n */\nexport function clearLastNotificationResponse() {\n    if (!NotificationsEmitterModule.clearLastNotificationResponse) {\n        throw new UnavailabilityError('ExpoNotifications', 'clearLastNotificationResponse');\n    }\n    NotificationsEmitterModule.clearLastNotificationResponse();\n    // Emit event to clear any useLastNotificationResponse hooks, after native call succeeds\n    emitter.emit(didClearNotificationResponseEventName, []);\n}\n/**\n * @hidden\n */\nexport function addNotificationResponseClearedListener(listener) {\n    return emitter.addListener(didClearNotificationResponseEventName, listener);\n}\n//# sourceMappingURL=NotificationsEmitter.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNotificationsEmitter');\n//# sourceMappingURL=NotificationsEmitterModule.native.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport BackgroundNotificationTasksModule from './BackgroundNotificationTasksModule';\n/**\n * Call `registerTaskAsync` to set a callback (task) that runs when a notification is received while the app is in foreground, background, or terminated.\n * Only on Android, the task also runs in response to a notification action press when the app is backgrounded or terminated.\n * When the app is terminated, only a [Headless Background Notification](/push-notifications/what-you-need-to-know/#headless-background-notifications) triggers the task execution.\n * However, the OS may decide not to deliver the notification to your app in some cases (e.g. when the device is in Doze mode on Android, or when you send too many notifications - Apple recommends to not [\"send more than two or three per hour\"](https://developer.apple.com/documentation/usernotifications/pushing-background-updates-to-your-app#overview)).\n *\n * Under the hood, this function is run using `expo-task-manager`. You **must** define the task first, with [`TaskManager.defineTask`](./task-manager#taskmanagerdefinetasktaskname-taskexecutor) and register it with `registerTaskAsync`.\n *\n * Make sure you define and register the task in the module scope of a JS module which is required early by your app (e.g. in the `index.js` file).\n * `expo-task-manager` loads your app's JS bundle in the background and executes the task, as well as any side effects which may happen as a consequence of requiring any JS modules.\n *\n * The callback function you define with `TaskManager.defineTask` receives an object with the following fields:\n * - `data`: The remote payload delivered by either FCM (Android) or APNs (iOS). See [`NotificationTaskPayload`](#notificationtaskpayload) for details.\n * - `error`: The error (if any) that occurred during execution of the task.\n * - `executionInfo`: JSON object of additional info related to the task, including the `taskName`.\n * @param taskName The string you passed to `TaskManager.defineTask` as the `taskName` parameter.\n *\n * @example\n * ```ts\n * import * as TaskManager from 'expo-task-manager';\n * import * as Notifications from 'expo-notifications';\n *\n * const BACKGROUND_NOTIFICATION_TASK = 'BACKGROUND-NOTIFICATION-TASK';\n *\n * TaskManager.defineTask<Notifications.NotificationTaskPayload>(BACKGROUND_NOTIFICATION_TASK, ({ data, error, executionInfo }) => {\n *   console.log('Received a notification task payload!');\n *   const isNotificationResponse = 'actionIdentifier' in data;\n *   if (isNotificationResponse) {\n *     // Do something with the notification response from user\n *   } else {\n *     // Do something with the data from notification that was received\n *   }\n * });\n *\n * Notifications.registerTaskAsync(BACKGROUND_NOTIFICATION_TASK);\n * ```\n * @header inBackground\n */\nexport default async function registerTaskAsync(taskName) {\n    if (!BackgroundNotificationTasksModule.registerTaskAsync) {\n        throw new UnavailabilityError('Notifications', 'registerTaskAsync');\n    }\n    return await BackgroundNotificationTasksModule.registerTaskAsync(taskName);\n}\n//# sourceMappingURL=registerTaskAsync.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoBackgroundNotificationTasksModule');\n//# sourceMappingURL=BackgroundNotificationTasksModule.native.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport BackgroundNotificationTasksModule from './BackgroundNotificationTasksModule';\n/**\n * Used to unregister tasks registered with `registerTaskAsync` method.\n * @param taskName The string you passed to `registerTaskAsync` as the `taskName` parameter.\n * @header inBackground\n */\nexport default async function unregisterTaskAsync(taskName) {\n    if (!BackgroundNotificationTasksModule.unregisterTaskAsync) {\n        throw new UnavailabilityError('Notifications', 'unregisterTaskAsync');\n    }\n    return await BackgroundNotificationTasksModule.unregisterTaskAsync(taskName);\n}\n//# sourceMappingURL=unregisterTaskAsync.js.map","import { LegacyEventEmitter, CodedError, UnavailabilityError, } from 'expo-modules-core';\nimport NotificationsHandlerModule from './NotificationsHandlerModule';\nimport { mapNotification } from './utils/mapNotificationResponse';\n/**\n * @hidden\n */\nexport class NotificationTimeoutError extends CodedError {\n    info;\n    constructor(notificationId, notification) {\n        super('ERR_NOTIFICATION_TIMEOUT', `Notification handling timed out for ID ${notificationId}.`);\n        this.info = { id: notificationId, notification };\n    }\n}\n// Web uses SyntheticEventEmitter\nconst notificationEmitter = new LegacyEventEmitter(NotificationsHandlerModule);\nconst handleNotificationEventName = 'onHandleNotification';\nconst handleNotificationTimeoutEventName = 'onHandleNotificationTimeout';\nlet handleSubscription = null;\nlet handleTimeoutSubscription = null;\n/**\n * When a notification is received while the app is running, using this function you can set a callback that will decide\n * whether the notification should be shown to the user or not.\n *\n * When a notification is received, `handleNotification` is called with the incoming notification as an argument.\n * The function should respond with a behavior object within 3 seconds, otherwise, the notification will be discarded.\n * If the notification is handled successfully, `handleSuccess` is called with the identifier of the notification,\n * otherwise (or on timeout) `handleError` will be called.\n *\n * The default behavior when the handler is not set or does not respond in time is not to show the notification.\n * @param handler A single parameter which should be either `null` (if you want to clear the handler) or a [`NotificationHandler`](#notificationhandler) object.\n *\n * @example Implementing a notification handler that always shows the notification when it is received.\n * ```jsx\n * import * as Notifications from 'expo-notifications';\n *\n * Notifications.setNotificationHandler({\n *   handleNotification: async () => ({\n *     shouldShowBanner: true,\n *     shouldShowList: true,\n *     shouldPlaySound: false,\n *     shouldSetBadge: false,\n *   }),\n * });\n * ```\n * @header inForeground\n */\nexport function setNotificationHandler(handler) {\n    if (handleSubscription) {\n        handleSubscription.remove();\n        handleSubscription = null;\n    }\n    if (handleTimeoutSubscription) {\n        handleTimeoutSubscription.remove();\n        handleTimeoutSubscription = null;\n    }\n    if (handler) {\n        handleSubscription = notificationEmitter.addListener(handleNotificationEventName, async ({ id, notification }) => {\n            if (!NotificationsHandlerModule.handleNotificationAsync) {\n                handler.handleError?.(id, new UnavailabilityError('Notifications', 'handleNotificationAsync'));\n                return;\n            }\n            try {\n                const mappedNotification = mapNotification(notification);\n                const behavior = await handler.handleNotification(mappedNotification);\n                if (behavior.shouldShowAlert) {\n                    console.warn('[expo-notifications]: `shouldShowAlert` is deprecated. Specify `shouldShowBanner` and / or `shouldShowList` instead.');\n                }\n                await NotificationsHandlerModule.handleNotificationAsync(id, behavior);\n                handler.handleSuccess?.(id);\n            }\n            catch (error) {\n                // TODO(@kitten): This callback expects specific Error types, but we never narrow the type before calling this callback\n                handler.handleError?.(id, error);\n            }\n        });\n        handleTimeoutSubscription = notificationEmitter.addListener(handleNotificationTimeoutEventName, ({ id, notification }) => handler.handleError?.(id, new NotificationTimeoutError(id, mapNotification(notification))));\n    }\n}\n//# sourceMappingURL=NotificationsHandler.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNotificationsHandlerModule');\n//# sourceMappingURL=NotificationsHandlerModule.native.js.map","import { Platform, UnavailabilityError } from 'expo-modules-core';\nimport NotificationPermissionsModule from './NotificationPermissionsModule';\n/**\n * Calling this function checks current permissions settings related to notifications.\n * It lets you verify whether the app is currently allowed to display alerts, play sounds, etc.\n * There is no user-facing effect of calling this.\n * @return It returns a `Promise` resolving to an object represents permission settings ([`NotificationPermissionsStatus`](#notificationpermissionsstatus)).\n * On iOS, make sure you [properly interpret the permissions response](#interpret-the-ios-permissions-response).\n * @example Check if the app is allowed to send any type of notifications (interrupting and non-interrupting–provisional on iOS).\n * ```ts\n * import * as Notifications from 'expo-notifications';\n *\n * export async function allowsNotificationsAsync() {\n *   const settings = await Notifications.getPermissionsAsync();\n *   return (\n *     settings.granted || settings.ios?.status === Notifications.IosAuthorizationStatus.PROVISIONAL\n *   );\n * }\n * ```\n * @header permissions\n */\nexport async function getPermissionsAsync() {\n    if (!NotificationPermissionsModule.getPermissionsAsync) {\n        throw new UnavailabilityError('Notifications', 'getPermissionsAsync');\n    }\n    return await NotificationPermissionsModule.getPermissionsAsync();\n}\n/**\n * Prompts the user for notification permissions according to request. **Request defaults to asking the user to allow displaying alerts,\n * setting badge count and playing sounds**.\n * @param permissions An object representing configuration for the request scope.\n * @return It returns a Promise resolving to an object represents permission settings ([`NotificationPermissionsStatus`](#notificationpermissionsstatus)).\n * On iOS, make sure you [properly interpret the permissions response](#interpret-the-ios-permissions-response).\n * @example Prompts the user to allow the app to show alerts, play sounds, set badge count and let Siri read out messages through AirPods.\n * ```ts\n * import * as Notifications from 'expo-notifications';\n *\n * export function requestPermissionsAsync() {\n *   return Notifications.requestPermissionsAsync({\n *     ios: {\n *       allowAlert: true,\n *       allowBadge: true,\n *       allowSound: true,\n *     },\n *   });\n * }\n * ```\n * @header permissions\n */\nexport async function requestPermissionsAsync(permissions) {\n    if (!NotificationPermissionsModule.requestPermissionsAsync) {\n        throw new UnavailabilityError('Notifications', 'requestPermissionsAsync');\n    }\n    const requestedPermissions = permissions ?? {\n        ios: {\n            allowAlert: true,\n            allowBadge: true,\n            allowSound: true,\n        },\n    };\n    const requestedPlatformPermissions = requestedPermissions[Platform.OS];\n    // TODO(@kitten): This never checks whether the configuration object is undefined\n    return await NotificationPermissionsModule.requestPermissionsAsync(requestedPlatformPermissions);\n}\n//# sourceMappingURL=NotificationPermissions.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNotificationPermissionsModule');\n//# sourceMappingURL=NotificationPermissionsModule.native.js.map","// @docsMissing\nexport var AndroidNotificationVisibility;\n(function (AndroidNotificationVisibility) {\n    AndroidNotificationVisibility[AndroidNotificationVisibility[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    AndroidNotificationVisibility[AndroidNotificationVisibility[\"PUBLIC\"] = 1] = \"PUBLIC\";\n    AndroidNotificationVisibility[AndroidNotificationVisibility[\"PRIVATE\"] = 2] = \"PRIVATE\";\n    AndroidNotificationVisibility[AndroidNotificationVisibility[\"SECRET\"] = 3] = \"SECRET\";\n})(AndroidNotificationVisibility || (AndroidNotificationVisibility = {}));\n// @docsMissing\nexport var AndroidAudioContentType;\n(function (AndroidAudioContentType) {\n    AndroidAudioContentType[AndroidAudioContentType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    AndroidAudioContentType[AndroidAudioContentType[\"SPEECH\"] = 1] = \"SPEECH\";\n    AndroidAudioContentType[AndroidAudioContentType[\"MUSIC\"] = 2] = \"MUSIC\";\n    AndroidAudioContentType[AndroidAudioContentType[\"MOVIE\"] = 3] = \"MOVIE\";\n    AndroidAudioContentType[AndroidAudioContentType[\"SONIFICATION\"] = 4] = \"SONIFICATION\";\n})(AndroidAudioContentType || (AndroidAudioContentType = {}));\n// @docsMissing\nexport var AndroidImportance;\n(function (AndroidImportance) {\n    AndroidImportance[AndroidImportance[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    /**\n     * Use `DEFAULT` instead. This value is present for compatibility reasons.\n     * */\n    AndroidImportance[AndroidImportance[\"UNSPECIFIED\"] = 1] = \"UNSPECIFIED\";\n    AndroidImportance[AndroidImportance[\"NONE\"] = 2] = \"NONE\";\n    AndroidImportance[AndroidImportance[\"MIN\"] = 3] = \"MIN\";\n    AndroidImportance[AndroidImportance[\"LOW\"] = 4] = \"LOW\";\n    AndroidImportance[AndroidImportance[\"DEFAULT\"] = 5] = \"DEFAULT\";\n    AndroidImportance[AndroidImportance[\"HIGH\"] = 6] = \"HIGH\";\n    AndroidImportance[AndroidImportance[\"MAX\"] = 7] = \"MAX\";\n})(AndroidImportance || (AndroidImportance = {}));\n// @docsMissing\nexport var AndroidAudioUsage;\n(function (AndroidAudioUsage) {\n    AndroidAudioUsage[AndroidAudioUsage[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    AndroidAudioUsage[AndroidAudioUsage[\"MEDIA\"] = 1] = \"MEDIA\";\n    AndroidAudioUsage[AndroidAudioUsage[\"VOICE_COMMUNICATION\"] = 2] = \"VOICE_COMMUNICATION\";\n    AndroidAudioUsage[AndroidAudioUsage[\"VOICE_COMMUNICATION_SIGNALLING\"] = 3] = \"VOICE_COMMUNICATION_SIGNALLING\";\n    AndroidAudioUsage[AndroidAudioUsage[\"ALARM\"] = 4] = \"ALARM\";\n    AndroidAudioUsage[AndroidAudioUsage[\"NOTIFICATION\"] = 5] = \"NOTIFICATION\";\n    AndroidAudioUsage[AndroidAudioUsage[\"NOTIFICATION_RINGTONE\"] = 6] = \"NOTIFICATION_RINGTONE\";\n    AndroidAudioUsage[AndroidAudioUsage[\"NOTIFICATION_COMMUNICATION_REQUEST\"] = 7] = \"NOTIFICATION_COMMUNICATION_REQUEST\";\n    AndroidAudioUsage[AndroidAudioUsage[\"NOTIFICATION_COMMUNICATION_INSTANT\"] = 8] = \"NOTIFICATION_COMMUNICATION_INSTANT\";\n    AndroidAudioUsage[AndroidAudioUsage[\"NOTIFICATION_COMMUNICATION_DELAYED\"] = 9] = \"NOTIFICATION_COMMUNICATION_DELAYED\";\n    AndroidAudioUsage[AndroidAudioUsage[\"NOTIFICATION_EVENT\"] = 10] = \"NOTIFICATION_EVENT\";\n    AndroidAudioUsage[AndroidAudioUsage[\"ASSISTANCE_ACCESSIBILITY\"] = 11] = \"ASSISTANCE_ACCESSIBILITY\";\n    AndroidAudioUsage[AndroidAudioUsage[\"ASSISTANCE_NAVIGATION_GUIDANCE\"] = 12] = \"ASSISTANCE_NAVIGATION_GUIDANCE\";\n    AndroidAudioUsage[AndroidAudioUsage[\"ASSISTANCE_SONIFICATION\"] = 13] = \"ASSISTANCE_SONIFICATION\";\n    AndroidAudioUsage[AndroidAudioUsage[\"GAME\"] = 14] = \"GAME\";\n})(AndroidAudioUsage || (AndroidAudioUsage = {}));\n//# sourceMappingURL=NotificationChannelManager.types.js.map","export var IosAlertStyle;\n(function (IosAlertStyle) {\n    IosAlertStyle[IosAlertStyle[\"NONE\"] = 0] = \"NONE\";\n    IosAlertStyle[IosAlertStyle[\"BANNER\"] = 1] = \"BANNER\";\n    IosAlertStyle[IosAlertStyle[\"ALERT\"] = 2] = \"ALERT\";\n})(IosAlertStyle || (IosAlertStyle = {}));\nexport var IosAllowsPreviews;\n(function (IosAllowsPreviews) {\n    IosAllowsPreviews[IosAllowsPreviews[\"NEVER\"] = 0] = \"NEVER\";\n    IosAllowsPreviews[IosAllowsPreviews[\"ALWAYS\"] = 1] = \"ALWAYS\";\n    IosAllowsPreviews[IosAllowsPreviews[\"WHEN_AUTHENTICATED\"] = 2] = \"WHEN_AUTHENTICATED\";\n})(IosAllowsPreviews || (IosAllowsPreviews = {}));\nexport var IosAuthorizationStatus;\n(function (IosAuthorizationStatus) {\n    IosAuthorizationStatus[IosAuthorizationStatus[\"NOT_DETERMINED\"] = 0] = \"NOT_DETERMINED\";\n    IosAuthorizationStatus[IosAuthorizationStatus[\"DENIED\"] = 1] = \"DENIED\";\n    IosAuthorizationStatus[IosAuthorizationStatus[\"AUTHORIZED\"] = 2] = \"AUTHORIZED\";\n    IosAuthorizationStatus[IosAuthorizationStatus[\"PROVISIONAL\"] = 3] = \"PROVISIONAL\";\n    IosAuthorizationStatus[IosAuthorizationStatus[\"EPHEMERAL\"] = 4] = \"EPHEMERAL\";\n})(IosAuthorizationStatus || (IosAuthorizationStatus = {}));\n//# sourceMappingURL=NotificationPermissions.types.js.map","\"use strict\";\n\nexport { createStaticNavigation } from \"./createStaticNavigation.js\";\nexport { Link } from \"./Link.js\";\nexport { LinkingContext } from \"./LinkingContext.js\";\nexport { LocaleDirContext } from \"./LocaleDirContext.js\";\nexport { NavigationContainer } from \"./NavigationContainer.js\";\nexport { ServerContainer } from \"./ServerContainer.js\";\nexport { DarkTheme } from \"./theming/DarkTheme.js\";\nexport { DefaultTheme } from \"./theming/DefaultTheme.js\";\nexport * from \"./types.js\";\nexport { UnhandledLinkingContext as UNSTABLE_UnhandledLinkingContext } from \"./UnhandledLinkingContext.js\";\nexport { useLinkBuilder } from \"./useLinkBuilder.js\";\nexport { useLinkProps } from \"./useLinkProps.js\";\nexport { useLinkTo } from \"./useLinkTo.js\";\nexport { useLocale } from \"./useLocale.js\";\nexport { useRoutePath } from \"./useRoutePath.js\";\nexport { useScrollToTop } from \"./useScrollToTop.js\";\nexport * from '@react-navigation/core';\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nimport { createPathConfigForStaticNavigation } from '@react-navigation/core';\nimport * as React from 'react';\nimport { NavigationContainer } from \"./NavigationContainer.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Create a navigation component from a static navigation config.\n * The returned component is a wrapper around `NavigationContainer`.\n *\n * @param tree Static navigation config.\n * @returns Navigation component to use in your app.\n */\nexport function createStaticNavigation(tree) {\n  const Component = tree.getComponent();\n  function Navigation({\n    linking,\n    ...rest\n  }, ref) {\n    const linkingConfig = React.useMemo(() => {\n      const screens = createPathConfigForStaticNavigation(tree, {\n        initialRouteName: linking?.config?.initialRouteName\n      }, linking?.enabled === 'auto');\n      if (!screens) return;\n      return {\n        path: linking?.config?.path,\n        initialRouteName: linking?.config?.initialRouteName,\n        screens\n      };\n    }, [linking?.enabled, linking?.config?.path, linking?.config?.initialRouteName]);\n    const memoizedLinking = React.useMemo(() => {\n      if (!linking) {\n        return undefined;\n      }\n      const enabled = typeof linking.enabled === 'boolean' ? linking.enabled : linkingConfig?.screens != null;\n      return {\n        ...linking,\n        enabled,\n        config: linkingConfig\n      };\n    }, [linking, linkingConfig]);\n    if (linking?.enabled === true && linkingConfig?.screens == null) {\n      throw new Error('Linking is enabled but no linking configuration was found for the screens.\\n\\n' + 'To solve this:\\n' + \"- Specify a 'linking' property for the screens you want to link to.\\n\" + \"- Or set 'linking.enabled' to 'auto' to generate paths automatically.\\n\\n\" + 'See usage guide: https://reactnavigation.org/docs/static-configuration#linking');\n    }\n    return /*#__PURE__*/_jsx(NavigationContainer, {\n      ...rest,\n      ref: ref,\n      linking: memoizedLinking,\n      children: /*#__PURE__*/_jsx(Component, {})\n    });\n  }\n  return /*#__PURE__*/React.forwardRef(Navigation);\n}\n//# sourceMappingURL=createStaticNavigation.js.map","\"use strict\";\n\nexport { BaseNavigationContainer } from \"./BaseNavigationContainer.js\";\nexport { createNavigationContainerRef } from \"./createNavigationContainerRef.js\";\nexport { createNavigatorFactory } from \"./createNavigatorFactory.js\";\nexport { CurrentRenderContext } from \"./CurrentRenderContext.js\";\nexport { findFocusedRoute } from \"./findFocusedRoute.js\";\nexport { getActionFromState } from \"./getActionFromState.js\";\nexport { getFocusedRouteNameFromRoute } from \"./getFocusedRouteNameFromRoute.js\";\nexport { getPathFromState } from \"./getPathFromState.js\";\nexport { getStateFromPath } from \"./getStateFromPath.js\";\nexport { NavigationContainerRefContext } from \"./NavigationContainerRefContext.js\";\nexport { NavigationContext } from \"./NavigationContext.js\";\nexport { NavigationHelpersContext } from \"./NavigationHelpersContext.js\";\nexport { NavigationIndependentTree } from \"./NavigationIndependentTree.js\";\nexport { NavigationMetaContext } from \"./NavigationMetaContext.js\";\nexport { NavigationProvider, NavigationRouteContext } from \"./NavigationProvider.js\";\nexport { PreventRemoveContext } from \"./PreventRemoveContext.js\";\nexport { PreventRemoveProvider } from \"./PreventRemoveProvider.js\";\nexport { createComponentForStaticNavigationDeprecated as createComponentForStaticNavigation, createPathConfigForStaticNavigation } from \"./StaticNavigation.js\";\nexport { ThemeContext } from \"./theming/ThemeContext.js\";\nexport { ThemeProvider } from \"./theming/ThemeProvider.js\";\nexport { useTheme } from \"./theming/useTheme.js\";\nexport * from \"./types.js\";\nexport { useFocusEffect } from \"./useFocusEffect.js\";\nexport { useIsFocused } from \"./useIsFocused.js\";\nexport { useNavigation } from \"./useNavigation.js\";\nexport { useNavigationBuilder } from \"./useNavigationBuilder.js\";\nexport { useNavigationContainerRef } from \"./useNavigationContainerRef.js\";\nexport { useNavigationIndependentTree } from \"./useNavigationIndependentTree.js\";\nexport { useNavigationState } from \"./useNavigationState.js\";\nexport { usePreventRemove } from \"./usePreventRemove.js\";\nexport { usePreventRemoveContext } from \"./usePreventRemoveContext.js\";\nexport { useRoute } from \"./useRoute.js\";\nexport { useStateForPath } from \"./useStateForPath.js\";\nexport { validatePathConfig } from \"./validatePathConfig.js\";\nexport * from '@react-navigation/routers';\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nimport { CommonActions } from '@react-navigation/routers';\nimport * as React from 'react';\nimport useLatestCallback from 'use-latest-callback';\nimport { checkDuplicateRouteNames } from \"./checkDuplicateRouteNames.js\";\nimport { checkSerializable } from \"./checkSerializable.js\";\nimport { NOT_INITIALIZED_ERROR } from \"./createNavigationContainerRef.js\";\nimport { DeprecatedNavigationInChildContext } from \"./DeprecatedNavigationInChildContext.js\";\nimport { EnsureSingleNavigator } from \"./EnsureSingleNavigator.js\";\nimport { findFocusedRoute } from \"./findFocusedRoute.js\";\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { NavigationContainerRefContext } from \"./NavigationContainerRefContext.js\";\nimport { NavigationIndependentTreeContext } from \"./NavigationIndependentTreeContext.js\";\nimport { NavigationStateContext } from \"./NavigationStateContext.js\";\nimport { ThemeProvider } from \"./theming/ThemeProvider.js\";\nimport { UnhandledActionContext } from \"./UnhandledActionContext.js\";\nimport { useChildListeners } from \"./useChildListeners.js\";\nimport { useEventEmitter } from \"./useEventEmitter.js\";\nimport { useKeyedChildListeners } from \"./useKeyedChildListeners.js\";\nimport { useNavigationIndependentTree } from \"./useNavigationIndependentTree.js\";\nimport { useOptionsGetters } from \"./useOptionsGetters.js\";\nimport { useSyncState } from \"./useSyncState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst serializableWarnings = [];\nconst duplicateNameWarnings = [];\n\n/**\n * Remove `key` and `routeNames` from the state objects recursively to get partial state.\n *\n * @param state Initial state object.\n */\nconst getPartialState = state => {\n  if (state === undefined) {\n    return;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const {\n    key,\n    routeNames,\n    ...partialState\n  } = state;\n  return {\n    ...partialState,\n    stale: true,\n    routes: state.routes.map(route => {\n      if (route.state === undefined) {\n        return route;\n      }\n      return {\n        ...route,\n        state: getPartialState(route.state)\n      };\n    })\n  };\n};\n\n/**\n * Container component which holds the navigation state.\n * This should be rendered at the root wrapping the whole app.\n *\n * @param props.initialState Initial state object for the navigation tree.\n * @param props.onReady Callback which is called after the navigation tree mounts.\n * @param props.onStateChange Callback which is called with the latest navigation state when it changes.\n * @param props.onUnhandledAction Callback which is called when an action is not handled.\n * @param props.theme Theme object for the UI elements.\n * @param props.children Child elements to render the content.\n * @param props.ref Ref object which refers to the navigation object containing helper methods.\n */\nexport const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function BaseNavigationContainer({\n  initialState,\n  onStateChange,\n  onReady,\n  onUnhandledAction,\n  navigationInChildEnabled = false,\n  theme,\n  children\n}, ref) {\n  const parent = React.useContext(NavigationStateContext);\n  const independent = useNavigationIndependentTree();\n  if (!parent.isDefault && !independent) {\n    throw new Error(\"Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, wrap the container in 'NavigationIndependentTree' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them.\");\n  }\n  const {\n    state,\n    getState,\n    setState,\n    scheduleUpdate,\n    flushUpdates\n  } = useSyncState(() => getPartialState(initialState == null ? undefined : initialState));\n  const isFirstMountRef = React.useRef(true);\n  const navigatorKeyRef = React.useRef(undefined);\n  const getKey = React.useCallback(() => navigatorKeyRef.current, []);\n  const setKey = React.useCallback(key => {\n    navigatorKeyRef.current = key;\n  }, []);\n  const {\n    listeners,\n    addListener\n  } = useChildListeners();\n  const {\n    keyedListeners,\n    addKeyedListener\n  } = useKeyedChildListeners();\n  const dispatch = useLatestCallback(action => {\n    if (listeners.focus[0] == null) {\n      console.error(NOT_INITIALIZED_ERROR);\n    } else {\n      listeners.focus[0](navigation => navigation.dispatch(action));\n    }\n  });\n  const canGoBack = useLatestCallback(() => {\n    if (listeners.focus[0] == null) {\n      return false;\n    }\n    const {\n      result,\n      handled\n    } = listeners.focus[0](navigation => navigation.canGoBack());\n    if (handled) {\n      return result;\n    } else {\n      return false;\n    }\n  });\n  const resetRoot = useLatestCallback(state => {\n    const target = state?.key ?? keyedListeners.getState.root?.().key;\n    if (target == null) {\n      console.error(NOT_INITIALIZED_ERROR);\n    } else {\n      listeners.focus[0](navigation => navigation.dispatch({\n        ...CommonActions.reset(state),\n        target\n      }));\n    }\n  });\n  const getRootState = useLatestCallback(() => {\n    return keyedListeners.getState.root?.();\n  });\n  const getCurrentRoute = useLatestCallback(() => {\n    const state = getRootState();\n    if (state == null) {\n      return undefined;\n    }\n    const route = findFocusedRoute(state);\n    return route;\n  });\n  const isReady = useLatestCallback(() => listeners.focus[0] != null);\n  const emitter = useEventEmitter();\n  const {\n    addOptionsGetter,\n    getCurrentOptions\n  } = useOptionsGetters({});\n  const navigation = React.useMemo(() => ({\n    ...Object.keys(CommonActions).reduce((acc, name) => {\n      acc[name] = (...args) =>\n      // @ts-expect-error: this is ok\n      dispatch(CommonActions[name](...args));\n      return acc;\n    }, {}),\n    ...emitter.create('root'),\n    dispatch,\n    resetRoot,\n    isFocused: () => true,\n    canGoBack,\n    getParent: () => undefined,\n    getState,\n    getRootState,\n    getCurrentRoute,\n    getCurrentOptions,\n    isReady,\n    setOptions: () => {\n      throw new Error('Cannot call setOptions outside a screen');\n    }\n  }), [canGoBack, dispatch, emitter, getCurrentOptions, getCurrentRoute, getRootState, getState, isReady, resetRoot]);\n  React.useImperativeHandle(ref, () => navigation, [navigation]);\n  const onDispatchAction = useLatestCallback((action, noop) => {\n    emitter.emit({\n      type: '__unsafe_action__',\n      data: {\n        action,\n        noop,\n        stack: stackRef.current\n      }\n    });\n  });\n  const lastEmittedOptionsRef = React.useRef(undefined);\n  const onOptionsChange = useLatestCallback(options => {\n    if (lastEmittedOptionsRef.current === options) {\n      return;\n    }\n    lastEmittedOptionsRef.current = options;\n    emitter.emit({\n      type: 'options',\n      data: {\n        options\n      }\n    });\n  });\n  const stackRef = React.useRef(undefined);\n  const builderContext = React.useMemo(() => ({\n    addListener,\n    addKeyedListener,\n    onDispatchAction,\n    onOptionsChange,\n    scheduleUpdate,\n    flushUpdates,\n    stackRef\n  }), [addListener, addKeyedListener, onDispatchAction, onOptionsChange, scheduleUpdate, flushUpdates]);\n  const isInitialRef = React.useRef(true);\n  const getIsInitial = React.useCallback(() => isInitialRef.current, []);\n  const context = React.useMemo(() => ({\n    state,\n    getState,\n    setState,\n    getKey,\n    setKey,\n    getIsInitial,\n    addOptionsGetter\n  }), [state, getState, setState, getKey, setKey, getIsInitial, addOptionsGetter]);\n  const onReadyRef = React.useRef(onReady);\n  const onStateChangeRef = React.useRef(onStateChange);\n  React.useEffect(() => {\n    isInitialRef.current = false;\n    onStateChangeRef.current = onStateChange;\n    onReadyRef.current = onReady;\n  });\n  const onReadyCalledRef = React.useRef(false);\n  React.useEffect(() => {\n    if (!onReadyCalledRef.current && isReady()) {\n      onReadyCalledRef.current = true;\n      onReadyRef.current?.();\n      emitter.emit({\n        type: 'ready'\n      });\n    }\n  }, [state, isReady, emitter]);\n  React.useEffect(() => {\n    const hydratedState = getRootState();\n    if (process.env.NODE_ENV !== 'production') {\n      if (hydratedState !== undefined) {\n        const serializableResult = checkSerializable(hydratedState);\n        if (!serializableResult.serializable) {\n          const {\n            location,\n            reason\n          } = serializableResult;\n          let path = '';\n          let pointer = hydratedState;\n          let params = false;\n          for (let i = 0; i < location.length; i++) {\n            const curr = location[i];\n            const prev = location[i - 1];\n            pointer = pointer[curr];\n            if (!params && curr === 'state') {\n              continue;\n            } else if (!params && curr === 'routes') {\n              if (path) {\n                path += ' > ';\n              }\n            } else if (!params && typeof curr === 'number' && prev === 'routes') {\n              path += pointer?.name;\n            } else if (!params) {\n              path += ` > ${curr}`;\n              params = true;\n            } else {\n              if (typeof curr === 'number' || /^[0-9]+$/.test(curr)) {\n                path += `[${curr}]`;\n              } else if (/^[a-z$_]+$/i.test(curr)) {\n                path += `.${curr}`;\n              } else {\n                path += `[${JSON.stringify(curr)}]`;\n              }\n            }\n          }\n          const message = `Non-serializable values were found in the navigation state. Check:\\n\\n${path} (${reason})\\n\\nThis can break usage such as persisting and restoring state. This might happen if you passed non-serializable values such as function, class instances etc. in params. If you need to use components with callbacks in your options, you can use 'navigation.setOptions' instead. See https://reactnavigation.org/docs/troubleshooting#i-get-the-warning-non-serializable-values-were-found-in-the-navigation-state for more details.`;\n          if (!serializableWarnings.includes(message)) {\n            serializableWarnings.push(message);\n            console.warn(message);\n          }\n        }\n        const duplicateRouteNamesResult = checkDuplicateRouteNames(hydratedState);\n        if (duplicateRouteNamesResult.length) {\n          const message = `Found screens with the same name nested inside one another. Check:\\n${duplicateRouteNamesResult.map(locations => `\\n${locations.join(', ')}`)}\\n\\nThis can cause confusing behavior during navigation. Consider using unique names for each screen instead.`;\n          if (!duplicateNameWarnings.includes(message)) {\n            duplicateNameWarnings.push(message);\n            console.warn(message);\n          }\n        }\n      }\n    }\n    emitter.emit({\n      type: 'state',\n      data: {\n        state\n      }\n    });\n    if (!isFirstMountRef.current && onStateChangeRef.current) {\n      onStateChangeRef.current(hydratedState);\n    }\n    isFirstMountRef.current = false;\n  }, [getRootState, emitter, state]);\n  const defaultOnUnhandledAction = useLatestCallback(action => {\n    if (process.env.NODE_ENV === 'production') {\n      return;\n    }\n    const payload = action.payload;\n    let message = `The action '${action.type}'${payload ? ` with payload ${JSON.stringify(action.payload)}` : ''} was not handled by any navigator.`;\n    switch (action.type) {\n      case 'PRELOAD':\n      case 'NAVIGATE':\n      case 'PUSH':\n      case 'REPLACE':\n      case 'POP_TO':\n      case 'JUMP_TO':\n        if (payload?.name) {\n          message += `\\n\\nDo you have a screen named '${payload.name}'?\\n\\nIf you're trying to navigate to a screen in a nested navigator, see https://reactnavigation.org/docs/nesting-navigators#navigating-to-a-screen-in-a-nested-navigator.\\n\\nIf you're using conditional rendering, navigation will happen automatically and you shouldn't navigate manually, see.`;\n        } else {\n          message += `\\n\\nYou need to pass the name of the screen to navigate to.\\n\\nSee https://reactnavigation.org/docs/navigation-actions for usage.`;\n        }\n        break;\n      case 'GO_BACK':\n      case 'POP':\n      case 'POP_TO_TOP':\n        message += `\\n\\nIs there any screen to go back to?`;\n        break;\n      case 'OPEN_DRAWER':\n      case 'CLOSE_DRAWER':\n      case 'TOGGLE_DRAWER':\n        message += `\\n\\nIs your screen inside a Drawer navigator?`;\n        break;\n    }\n    message += `\\n\\nThis is a development-only warning and won't be shown in production.`;\n    console.error(message);\n  });\n  return /*#__PURE__*/_jsx(NavigationIndependentTreeContext.Provider, {\n    value: false,\n    children: /*#__PURE__*/_jsx(NavigationContainerRefContext.Provider, {\n      value: navigation,\n      children: /*#__PURE__*/_jsx(NavigationBuilderContext.Provider, {\n        value: builderContext,\n        children: /*#__PURE__*/_jsx(NavigationStateContext.Provider, {\n          value: context,\n          children: /*#__PURE__*/_jsx(UnhandledActionContext.Provider, {\n            value: onUnhandledAction ?? defaultOnUnhandledAction,\n            children: /*#__PURE__*/_jsx(DeprecatedNavigationInChildContext.Provider, {\n              value: navigationInChildEnabled,\n              children: /*#__PURE__*/_jsx(EnsureSingleNavigator, {\n                children: /*#__PURE__*/_jsx(ThemeProvider, {\n                  value: theme,\n                  children: children\n                })\n              })\n            })\n          })\n        })\n      })\n    })\n  });\n});\n//# sourceMappingURL=BaseNavigationContainer.js.map","\"use strict\";\n\nimport * as CommonActions from \"./CommonActions.js\";\nexport { CommonActions };\nexport { BaseRouter } from \"./BaseRouter.js\";\nexport { DrawerActions, DrawerRouter } from \"./DrawerRouter.js\";\nexport { StackActions, StackRouter } from \"./StackRouter.js\";\nexport { TabActions, TabRouter } from \"./TabRouter.js\";\nexport * from \"./types.js\";\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nexport function goBack() {\n  return {\n    type: 'GO_BACK'\n  };\n}\nexport function navigate(...args) {\n  if (typeof args[0] === 'string') {\n    const [name, params, options] = args;\n    if (typeof options === 'boolean') {\n      console.warn(`Passing a boolean as the third argument to 'navigate' is deprecated. Pass '{ merge: true }' instead.`);\n    }\n    return {\n      type: 'NAVIGATE',\n      payload: {\n        name,\n        params,\n        merge: typeof options === 'boolean' ? options : options?.merge,\n        pop: options?.pop\n      }\n    };\n  } else {\n    const payload = args[0] || {};\n    if (!('name' in payload)) {\n      throw new Error('You need to specify a name when calling navigate with an object as the argument. See https://reactnavigation.org/docs/navigation-actions#navigate for usage.');\n    }\n    return {\n      type: 'NAVIGATE',\n      payload\n    };\n  }\n}\nexport function navigateDeprecated(...args) {\n  if (typeof args[0] === 'string') {\n    return {\n      type: 'NAVIGATE_DEPRECATED',\n      payload: {\n        name: args[0],\n        params: args[1]\n      }\n    };\n  } else {\n    const payload = args[0] || {};\n    if (!('name' in payload)) {\n      throw new Error('You need to specify a name when calling navigateDeprecated with an object as the argument. See https://reactnavigation.org/docs/navigation-actions#navigatelegacy for usage.');\n    }\n    return {\n      type: 'NAVIGATE_DEPRECATED',\n      payload\n    };\n  }\n}\nexport function reset(state) {\n  return {\n    type: 'RESET',\n    payload: state\n  };\n}\nexport function setParams(params) {\n  return {\n    type: 'SET_PARAMS',\n    payload: {\n      params\n    }\n  };\n}\nexport function replaceParams(params) {\n  return {\n    type: 'REPLACE_PARAMS',\n    payload: {\n      params\n    }\n  };\n}\nexport function preload(name, params) {\n  return {\n    type: 'PRELOAD',\n    payload: {\n      name,\n      params\n    }\n  };\n}\n//# sourceMappingURL=CommonActions.js.map","\"use strict\";\n\nimport { nanoid } from 'nanoid/non-secure';\n/**\n * Base router object that can be used when writing custom routers.\n * This provides few helper methods to handle common actions such as `RESET`.\n */\nexport const BaseRouter = {\n  getStateForAction(state, action) {\n    switch (action.type) {\n      case 'SET_PARAMS':\n      case 'REPLACE_PARAMS':\n        {\n          const index = action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;\n          if (index === -1) {\n            return null;\n          }\n          return {\n            ...state,\n            routes: state.routes.map((r, i) => i === index ? {\n              ...r,\n              params: action.type === 'REPLACE_PARAMS' ? action.payload.params : {\n                ...r.params,\n                ...action.payload.params\n              }\n            } : r)\n          };\n        }\n      case 'RESET':\n        {\n          const nextState = action.payload;\n          if (nextState.routes.length === 0 || nextState.routes.some(route => !state.routeNames.includes(route.name))) {\n            return null;\n          }\n          if (nextState.stale === false) {\n            if (state.routeNames.length !== nextState.routeNames.length || nextState.routeNames.some(name => !state.routeNames.includes(name))) {\n              return null;\n            }\n            return {\n              ...nextState,\n              routes: nextState.routes.map(route => route.key ? route : {\n                ...route,\n                key: `${route.name}-${nanoid()}`\n              })\n            };\n          }\n          return nextState;\n        }\n      default:\n        return null;\n    }\n  },\n  shouldActionChangeFocus(action) {\n    return action.type === 'NAVIGATE' || action.type === 'NAVIGATE_DEPRECATED';\n  }\n};\n//# sourceMappingURL=BaseRouter.js.map","let urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = ''\n    let i = size | 0\n    while (i--) {\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\nlet nanoid = (size = 21) => {\n  let id = ''\n  let i = size | 0\n  while (i--) {\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\nexport { nanoid, customAlphabet }\n","\"use strict\";\n\nimport { nanoid } from 'nanoid/non-secure';\nimport { TabActions, TabRouter } from \"./TabRouter.js\";\nexport const DrawerActions = {\n  ...TabActions,\n  openDrawer() {\n    return {\n      type: 'OPEN_DRAWER'\n    };\n  },\n  closeDrawer() {\n    return {\n      type: 'CLOSE_DRAWER'\n    };\n  },\n  toggleDrawer() {\n    return {\n      type: 'TOGGLE_DRAWER'\n    };\n  }\n};\nexport function DrawerRouter({\n  defaultStatus = 'closed',\n  ...rest\n}) {\n  const router = TabRouter(rest);\n  const isDrawerInHistory = state => Boolean(state.history?.some(it => it.type === 'drawer'));\n  const addDrawerToHistory = state => {\n    if (isDrawerInHistory(state)) {\n      return state;\n    }\n    return {\n      ...state,\n      history: [...state.history, {\n        type: 'drawer',\n        status: defaultStatus === 'open' ? 'closed' : 'open'\n      }]\n    };\n  };\n  const removeDrawerFromHistory = state => {\n    if (!isDrawerInHistory(state)) {\n      return state;\n    }\n    return {\n      ...state,\n      history: state.history.filter(it => it.type !== 'drawer')\n    };\n  };\n  const openDrawer = state => {\n    if (defaultStatus === 'open') {\n      return removeDrawerFromHistory(state);\n    }\n    return addDrawerToHistory(state);\n  };\n  const closeDrawer = state => {\n    if (defaultStatus === 'open') {\n      return addDrawerToHistory(state);\n    }\n    return removeDrawerFromHistory(state);\n  };\n  return {\n    ...router,\n    type: 'drawer',\n    getInitialState({\n      routeNames,\n      routeParamList,\n      routeGetIdList\n    }) {\n      const state = router.getInitialState({\n        routeNames,\n        routeParamList,\n        routeGetIdList\n      });\n      return {\n        ...state,\n        default: defaultStatus,\n        stale: false,\n        type: 'drawer',\n        key: `drawer-${nanoid()}`\n      };\n    },\n    getRehydratedState(partialState, {\n      routeNames,\n      routeParamList,\n      routeGetIdList\n    }) {\n      if (partialState.stale === false) {\n        return partialState;\n      }\n      let state = router.getRehydratedState(partialState, {\n        routeNames,\n        routeParamList,\n        routeGetIdList\n      });\n      if (isDrawerInHistory(partialState)) {\n        // Re-sync the drawer entry in history to correct it if it was wrong\n        state = removeDrawerFromHistory(state);\n        state = addDrawerToHistory(state);\n      }\n      return {\n        ...state,\n        default: defaultStatus,\n        type: 'drawer',\n        key: `drawer-${nanoid()}`\n      };\n    },\n    getStateForRouteFocus(state, key) {\n      const result = router.getStateForRouteFocus(state, key);\n      return closeDrawer(result);\n    },\n    getStateForAction(state, action, options) {\n      switch (action.type) {\n        case 'OPEN_DRAWER':\n          return openDrawer(state);\n        case 'CLOSE_DRAWER':\n          return closeDrawer(state);\n        case 'TOGGLE_DRAWER':\n          if (isDrawerInHistory(state)) {\n            return removeDrawerFromHistory(state);\n          }\n          return addDrawerToHistory(state);\n        case 'JUMP_TO':\n        case 'NAVIGATE':\n        case 'NAVIGATE_DEPRECATED':\n          {\n            const result = router.getStateForAction(state, action, options);\n            if (result != null && result.index !== state.index) {\n              return closeDrawer(result);\n            }\n            return result;\n          }\n        case 'GO_BACK':\n          if (isDrawerInHistory(state)) {\n            return removeDrawerFromHistory(state);\n          }\n          return router.getStateForAction(state, action, options);\n        default:\n          return router.getStateForAction(state, action, options);\n      }\n    },\n    actionCreators: DrawerActions\n  };\n}\n//# sourceMappingURL=DrawerRouter.js.map","\"use strict\";\n\nimport { nanoid } from 'nanoid/non-secure';\nimport { BaseRouter } from \"./BaseRouter.js\";\nimport { createParamsFromAction } from \"./createParamsFromAction.js\";\nconst TYPE_ROUTE = 'route';\nexport const TabActions = {\n  jumpTo(name, params) {\n    return {\n      type: 'JUMP_TO',\n      payload: {\n        name,\n        params\n      }\n    };\n  }\n};\nconst getRouteHistory = (routes, index, backBehavior, initialRouteName) => {\n  const history = [{\n    type: TYPE_ROUTE,\n    key: routes[index].key\n  }];\n  let initialRouteIndex;\n  switch (backBehavior) {\n    case 'order':\n      for (let i = index; i > 0; i--) {\n        history.unshift({\n          type: TYPE_ROUTE,\n          key: routes[i - 1].key\n        });\n      }\n      break;\n    case 'firstRoute':\n      if (index !== 0) {\n        history.unshift({\n          type: TYPE_ROUTE,\n          key: routes[0].key\n        });\n      }\n      break;\n    case 'initialRoute':\n      initialRouteIndex = routes.findIndex(route => route.name === initialRouteName);\n      initialRouteIndex = initialRouteIndex === -1 ? 0 : initialRouteIndex;\n      if (index !== initialRouteIndex) {\n        history.unshift({\n          type: TYPE_ROUTE,\n          key: routes[initialRouteIndex].key\n        });\n      }\n      break;\n    case 'history':\n    case 'fullHistory':\n      // The history will fill up on navigation\n      break;\n  }\n  return history;\n};\nconst changeIndex = (state, index, backBehavior, initialRouteName) => {\n  let history = state.history;\n  if (backBehavior === 'history' || backBehavior === 'fullHistory') {\n    const currentRoute = state.routes[index];\n    if (backBehavior === 'history') {\n      // Remove the existing key from the history to de-duplicate it\n      history = history.filter(it => it.type === 'route' ? it.key !== currentRoute.key : false);\n    } else if (backBehavior === 'fullHistory') {\n      const lastHistoryRouteItemIndex = history.findLastIndex(item => item.type === 'route');\n      if (currentRoute.key === history[lastHistoryRouteItemIndex]?.key) {\n        // For full-history, only remove if it matches the last route\n        // Useful for drawer, if current route was in history, then drawer state changed\n        // Then we only need to move the route to the front\n        history = [...history.slice(0, lastHistoryRouteItemIndex), ...history.slice(lastHistoryRouteItemIndex + 1)];\n      }\n    }\n    history = history.concat({\n      type: TYPE_ROUTE,\n      key: currentRoute.key,\n      params: backBehavior === 'fullHistory' ? currentRoute.params : undefined\n    });\n  } else {\n    history = getRouteHistory(state.routes, index, backBehavior, initialRouteName);\n  }\n  return {\n    ...state,\n    index,\n    history\n  };\n};\nexport function TabRouter({\n  initialRouteName,\n  backBehavior = 'firstRoute'\n}) {\n  const router = {\n    ...BaseRouter,\n    type: 'tab',\n    getInitialState({\n      routeNames,\n      routeParamList\n    }) {\n      const index = initialRouteName !== undefined && routeNames.includes(initialRouteName) ? routeNames.indexOf(initialRouteName) : 0;\n      const routes = routeNames.map(name => ({\n        name,\n        key: `${name}-${nanoid()}`,\n        params: routeParamList[name]\n      }));\n      const history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n      return {\n        stale: false,\n        type: 'tab',\n        key: `tab-${nanoid()}`,\n        index,\n        routeNames,\n        history,\n        routes,\n        preloadedRouteKeys: []\n      };\n    },\n    getRehydratedState(partialState, {\n      routeNames,\n      routeParamList\n    }) {\n      const state = partialState;\n      if (state.stale === false) {\n        return state;\n      }\n      const routes = routeNames.map(name => {\n        const route = state.routes.find(r => r.name === name);\n        return {\n          ...route,\n          name,\n          key: route && route.name === name && route.key ? route.key : `${name}-${nanoid()}`,\n          params: routeParamList[name] !== undefined ? {\n            ...routeParamList[name],\n            ...(route ? route.params : undefined)\n          } : route ? route.params : undefined\n        };\n      });\n      const index = Math.min(Math.max(routeNames.indexOf(state.routes[state?.index ?? 0]?.name), 0), routes.length - 1);\n      const routeKeys = routes.map(route => route.key);\n      const history = state.history?.filter(it => routeKeys.includes(it.key)) ?? [];\n      return changeIndex({\n        stale: false,\n        type: 'tab',\n        key: `tab-${nanoid()}`,\n        index,\n        routeNames,\n        history,\n        routes,\n        preloadedRouteKeys: state.preloadedRouteKeys?.filter(key => routeKeys.includes(key)) ?? []\n      }, index, backBehavior, initialRouteName);\n    },\n    getStateForRouteNamesChange(state, {\n      routeNames,\n      routeParamList,\n      routeKeyChanges\n    }) {\n      const routes = routeNames.map(name => state.routes.find(r => r.name === name && !routeKeyChanges.includes(r.name)) || {\n        name,\n        key: `${name}-${nanoid()}`,\n        params: routeParamList[name]\n      });\n      const index = Math.max(0, routeNames.indexOf(state.routes[state.index].name));\n      let history = state.history.filter(\n      // Type will always be 'route' for tabs, but could be different in a router extending this (e.g. drawer)\n      it => it.type !== 'route' || routes.find(r => r.key === it.key));\n      if (!history.length) {\n        history = getRouteHistory(routes, index, backBehavior, initialRouteName);\n      }\n      return {\n        ...state,\n        history,\n        routeNames,\n        routes,\n        index\n      };\n    },\n    getStateForRouteFocus(state, key) {\n      const index = state.routes.findIndex(r => r.key === key);\n      if (index === -1 || index === state.index) {\n        return state;\n      }\n      return changeIndex(state, index, backBehavior, initialRouteName);\n    },\n    getStateForAction(state, action, {\n      routeParamList,\n      routeGetIdList\n    }) {\n      switch (action.type) {\n        case 'JUMP_TO':\n        case 'NAVIGATE':\n        case 'NAVIGATE_DEPRECATED':\n          {\n            const index = state.routes.findIndex(route => route.name === action.payload.name);\n            if (index === -1) {\n              return null;\n            }\n            const updatedState = changeIndex({\n              ...state,\n              routes: state.routes.map(route => {\n                if (route.name !== action.payload.name) {\n                  return route;\n                }\n                const getId = routeGetIdList[route.name];\n                const currentId = getId?.({\n                  params: route.params\n                });\n                const nextId = getId?.({\n                  params: action.payload.params\n                });\n                const key = currentId === nextId ? route.key : `${route.name}-${nanoid()}`;\n                let params;\n                if ((action.type === 'NAVIGATE' || action.type === 'NAVIGATE_DEPRECATED') && action.payload.merge && currentId === nextId) {\n                  params = action.payload.params !== undefined || routeParamList[route.name] !== undefined ? {\n                    ...routeParamList[route.name],\n                    ...route.params,\n                    ...action.payload.params\n                  } : route.params;\n                } else {\n                  params = createParamsFromAction({\n                    action,\n                    routeParamList\n                  });\n                }\n                const path = action.type === 'NAVIGATE' && action.payload.path != null ? action.payload.path : route.path;\n                return params !== route.params || path !== route.path ? {\n                  ...route,\n                  key,\n                  path,\n                  params\n                } : route;\n              })\n            }, index, backBehavior, initialRouteName);\n            return {\n              ...updatedState,\n              preloadedRouteKeys: updatedState.preloadedRouteKeys.filter(key => key !== state.routes[updatedState.index].key)\n            };\n          }\n        case 'SET_PARAMS':\n        case 'REPLACE_PARAMS':\n          {\n            const nextState = BaseRouter.getStateForAction(state, action);\n            if (nextState !== null) {\n              const index = nextState.index;\n              if (index != null) {\n                const focusedRoute = nextState.routes[index];\n                const historyItemIndex = state.history.findLastIndex(item => item.key === focusedRoute.key);\n                let updatedHistory = state.history;\n                if (historyItemIndex !== -1) {\n                  updatedHistory = [...state.history];\n                  updatedHistory[historyItemIndex] = {\n                    ...updatedHistory[historyItemIndex],\n                    params: focusedRoute.params\n                  };\n                }\n                return {\n                  ...nextState,\n                  history: updatedHistory\n                };\n              }\n            }\n            return nextState;\n          }\n        case 'GO_BACK':\n          {\n            if (state.history.length === 1) {\n              return null;\n            }\n            const previousHistoryItem = state.history[state.history.length - 2];\n            const previousKey = previousHistoryItem?.key;\n            const index = state.routes.findLastIndex(route => route.key === previousKey);\n            if (index === -1) {\n              return null;\n            }\n            let routes = state.routes;\n            if (backBehavior === 'fullHistory' && routes[index].params !== previousHistoryItem.params) {\n              routes = [...state.routes];\n              routes[index] = {\n                ...routes[index],\n                params: previousHistoryItem.params\n              };\n            }\n            return {\n              ...state,\n              routes,\n              preloadedRouteKeys: state.preloadedRouteKeys.filter(key => key !== state.routes[index].key),\n              history: state.history.slice(0, -1),\n              index\n            };\n          }\n        case 'PRELOAD':\n          {\n            const routeIndex = state.routes.findIndex(route => route.name === action.payload.name);\n            if (routeIndex === -1) {\n              return null;\n            }\n            const route = state.routes[routeIndex];\n            const getId = routeGetIdList[route.name];\n            const currentId = getId?.({\n              params: route.params\n            });\n            const nextId = getId?.({\n              params: action.payload.params\n            });\n            const key = currentId === nextId ? route.key : `${route.name}-${nanoid()}`;\n            const params = createParamsFromAction({\n              action,\n              routeParamList\n            });\n            const newRoute = params !== route.params ? {\n              ...route,\n              key,\n              params\n            } : route;\n            return {\n              ...state,\n              preloadedRouteKeys: state.preloadedRouteKeys.filter(key => key !== route.key).concat(newRoute.key),\n              routes: state.routes.map((route, index) => index === routeIndex ? newRoute : route),\n              history: key === route.key ? state.history : state.history.filter(record => record.key !== route.key)\n            };\n          }\n        default:\n          return BaseRouter.getStateForAction(state, action);\n      }\n    },\n    actionCreators: TabActions\n  };\n  return router;\n}\n//# sourceMappingURL=TabRouter.js.map","\"use strict\";\n\nexport function createParamsFromAction({\n  action,\n  routeParamList\n}) {\n  const {\n    name,\n    params\n  } = action.payload;\n  return routeParamList[name] !== undefined ? {\n    ...routeParamList[name],\n    ...params\n  } : params;\n}\n//# sourceMappingURL=createParamsFromAction.js.map","\"use strict\";\n\nimport { nanoid } from 'nanoid/non-secure';\nimport { BaseRouter } from \"./BaseRouter.js\";\nimport { createParamsFromAction } from \"./createParamsFromAction.js\";\nimport { createRouteFromAction } from \"./createRouteFromAction.js\";\nexport const StackActions = {\n  replace(name, params) {\n    return {\n      type: 'REPLACE',\n      payload: {\n        name,\n        params\n      }\n    };\n  },\n  push(name, params) {\n    return {\n      type: 'PUSH',\n      payload: {\n        name,\n        params\n      }\n    };\n  },\n  pop(count = 1) {\n    return {\n      type: 'POP',\n      payload: {\n        count\n      }\n    };\n  },\n  popToTop() {\n    return {\n      type: 'POP_TO_TOP'\n    };\n  },\n  popTo(name, params, options) {\n    if (typeof options === 'boolean') {\n      console.warn(`Passing a boolean as the third argument to 'popTo' is deprecated. Pass '{ merge: true }' instead.`);\n    }\n    return {\n      type: 'POP_TO',\n      payload: {\n        name,\n        params,\n        merge: typeof options === 'boolean' ? options : options?.merge\n      }\n    };\n  }\n};\nexport function StackRouter(options) {\n  const router = {\n    ...BaseRouter,\n    type: 'stack',\n    getInitialState({\n      routeNames,\n      routeParamList\n    }) {\n      const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];\n      return {\n        stale: false,\n        type: 'stack',\n        key: `stack-${nanoid()}`,\n        index: 0,\n        routeNames,\n        preloadedRoutes: [],\n        routes: [{\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        }]\n      };\n    },\n    getRehydratedState(partialState, {\n      routeNames,\n      routeParamList\n    }) {\n      const state = partialState;\n      if (state.stale === false) {\n        return state;\n      }\n      const routes = state.routes.filter(route => routeNames.includes(route.name)).map(route => ({\n        ...route,\n        key: route.key || `${route.name}-${nanoid()}`,\n        params: routeParamList[route.name] !== undefined ? {\n          ...routeParamList[route.name],\n          ...route.params\n        } : route.params\n      }));\n      const preloadedRoutes = state.preloadedRoutes?.filter(route => routeNames.includes(route.name)).map(route => ({\n        ...route,\n        key: route.key || `${route.name}-${nanoid()}`,\n        params: routeParamList[route.name] !== undefined ? {\n          ...routeParamList[route.name],\n          ...route.params\n        } : route.params\n      })) ?? [];\n      if (routes.length === 0) {\n        const initialRouteName = options.initialRouteName !== undefined ? options.initialRouteName : routeNames[0];\n        routes.push({\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        });\n      }\n      return {\n        stale: false,\n        type: 'stack',\n        key: `stack-${nanoid()}`,\n        index: routes.length - 1,\n        routeNames,\n        routes,\n        preloadedRoutes\n      };\n    },\n    getStateForRouteNamesChange(state, {\n      routeNames,\n      routeParamList,\n      routeKeyChanges\n    }) {\n      const routes = state.routes.filter(route => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name));\n      if (routes.length === 0) {\n        const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];\n        routes.push({\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName]\n        });\n      }\n      return {\n        ...state,\n        routeNames,\n        routes,\n        index: Math.min(state.index, routes.length - 1)\n      };\n    },\n    getStateForRouteFocus(state, key) {\n      const index = state.routes.findIndex(r => r.key === key);\n      if (index === -1 || index === state.index) {\n        return state;\n      }\n      return {\n        ...state,\n        index,\n        routes: state.routes.slice(0, index + 1)\n      };\n    },\n    getStateForAction(state, action, options) {\n      const {\n        routeParamList\n      } = options;\n      switch (action.type) {\n        case 'REPLACE':\n          {\n            const currentIndex = action.target === state.key && action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;\n            if (currentIndex === -1) {\n              return null;\n            }\n            if (!state.routeNames.includes(action.payload.name)) {\n              return null;\n            }\n            const getId = options.routeGetIdList[action.payload.name];\n            const id = getId?.({\n              params: action.payload.params\n            });\n\n            // Re-use preloaded route if available\n            let route = state.preloadedRoutes.find(route => route.name === action.payload.name && id === getId?.({\n              params: route.params\n            }));\n            if (!route) {\n              route = createRouteFromAction({\n                action,\n                routeParamList\n              });\n            }\n            return {\n              ...state,\n              routes: state.routes.map((r, i) => i === currentIndex ? route : r),\n              preloadedRoutes: state.preloadedRoutes.filter(r => r.key !== route.key)\n            };\n          }\n        case 'PUSH':\n        case 'NAVIGATE':\n          {\n            if (!state.routeNames.includes(action.payload.name)) {\n              return null;\n            }\n            const getId = options.routeGetIdList[action.payload.name];\n            const id = getId?.({\n              params: action.payload.params\n            });\n            let route;\n            if (id !== undefined) {\n              route = state.routes.findLast(route => route.name === action.payload.name && id === getId?.({\n                params: route.params\n              }));\n            } else if (action.type === 'NAVIGATE') {\n              const currentRoute = state.routes[state.index];\n\n              // If the route matches the current one, then navigate to it\n              if (action.payload.name === currentRoute.name) {\n                route = currentRoute;\n              } else if (action.payload.pop) {\n                route = state.routes.findLast(route => route.name === action.payload.name);\n              }\n            }\n            if (!route) {\n              route = state.preloadedRoutes.find(route => route.name === action.payload.name && id === getId?.({\n                params: route.params\n              }));\n            }\n            let params;\n            if (action.type === 'NAVIGATE' && action.payload.merge && route) {\n              params = action.payload.params !== undefined || routeParamList[action.payload.name] !== undefined ? {\n                ...routeParamList[action.payload.name],\n                ...route.params,\n                ...action.payload.params\n              } : route.params;\n            } else {\n              params = createParamsFromAction({\n                action,\n                routeParamList\n              });\n            }\n            let routes;\n            if (route) {\n              if (action.type === 'NAVIGATE' && action.payload.pop) {\n                routes = [];\n\n                // Get all routes until the matching one\n                for (const r of state.routes) {\n                  if (r.key === route.key) {\n                    routes.push({\n                      ...route,\n                      path: action.payload.path !== undefined ? action.payload.path : route.path,\n                      params\n                    });\n                    break;\n                  }\n                  routes.push(r);\n                }\n              } else {\n                routes = state.routes.filter(r => r.key !== route.key);\n                routes.push({\n                  ...route,\n                  path: action.type === 'NAVIGATE' && action.payload.path !== undefined ? action.payload.path : route.path,\n                  params\n                });\n              }\n            } else {\n              routes = [...state.routes, {\n                key: `${action.payload.name}-${nanoid()}`,\n                name: action.payload.name,\n                path: action.type === 'NAVIGATE' ? action.payload.path : undefined,\n                params\n              }];\n            }\n            return {\n              ...state,\n              index: routes.length - 1,\n              preloadedRoutes: state.preloadedRoutes.filter(route => routes[routes.length - 1].key !== route.key),\n              routes\n            };\n          }\n        case 'NAVIGATE_DEPRECATED':\n          {\n            if (!state.routeNames.includes(action.payload.name)) {\n              return null;\n            }\n            if (state.preloadedRoutes.find(route => route.name === action.payload.name && id === getId?.({\n              params: route.params\n            }))) {\n              return null;\n            }\n\n            // If the route already exists, navigate to that\n            let index = -1;\n            const getId = options.routeGetIdList[action.payload.name];\n            const id = getId?.({\n              params: action.payload.params\n            });\n            if (id !== undefined) {\n              index = state.routes.findIndex(route => route.name === action.payload.name && id === getId?.({\n                params: route.params\n              }));\n            } else if (state.routes[state.index].name === action.payload.name) {\n              index = state.index;\n            } else {\n              index = state.routes.findLastIndex(route => route.name === action.payload.name);\n            }\n            if (index === -1) {\n              const routes = [...state.routes, createRouteFromAction({\n                action,\n                routeParamList\n              })];\n              return {\n                ...state,\n                routes,\n                index: routes.length - 1\n              };\n            }\n            const route = state.routes[index];\n            let params;\n            if (action.payload.merge) {\n              params = action.payload.params !== undefined || routeParamList[route.name] !== undefined ? {\n                ...routeParamList[route.name],\n                ...route.params,\n                ...action.payload.params\n              } : route.params;\n            } else {\n              params = createParamsFromAction({\n                action,\n                routeParamList\n              });\n            }\n            return {\n              ...state,\n              index,\n              routes: [...state.routes.slice(0, index), params !== route.params ? {\n                ...route,\n                params\n              } : state.routes[index]]\n            };\n          }\n        case 'POP':\n          {\n            const currentIndex = action.target === state.key && action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;\n            if (currentIndex > 0) {\n              const count = Math.max(currentIndex - action.payload.count + 1, 1);\n              const routes = state.routes.slice(0, count).concat(state.routes.slice(currentIndex + 1));\n              return {\n                ...state,\n                index: routes.length - 1,\n                routes\n              };\n            }\n            return null;\n          }\n        case 'POP_TO_TOP':\n          return router.getStateForAction(state, {\n            type: 'POP',\n            payload: {\n              count: state.routes.length - 1\n            }\n          }, options);\n        case 'POP_TO':\n          {\n            const currentIndex = action.target === state.key && action.source ? state.routes.findLastIndex(r => r.key === action.source) : state.index;\n            if (currentIndex === -1) {\n              return null;\n            }\n            if (!state.routeNames.includes(action.payload.name)) {\n              return null;\n            }\n\n            // If the route already exists, navigate to it\n            let index = -1;\n            const getId = options.routeGetIdList[action.payload.name];\n            const id = getId?.({\n              params: action.payload.params\n            });\n            if (id !== undefined) {\n              index = state.routes.findIndex(route => route.name === action.payload.name && id === getId?.({\n                params: route.params\n              }));\n            } else if (state.routes[currentIndex].name === action.payload.name) {\n              index = currentIndex;\n            } else {\n              for (let i = currentIndex; i >= 0; i--) {\n                if (state.routes[i].name === action.payload.name) {\n                  index = i;\n                  break;\n                }\n              }\n            }\n\n            // If the route doesn't exist, remove the current route and add the new one\n            if (index === -1) {\n              // Re-use preloaded route if available\n              let route = state.preloadedRoutes.find(route => route.name === action.payload.name && id === getId?.({\n                params: route.params\n              }));\n              if (!route) {\n                route = createRouteFromAction({\n                  action,\n                  routeParamList\n                });\n              }\n              const routes = state.routes.slice(0, currentIndex).concat(route);\n              return {\n                ...state,\n                index: routes.length - 1,\n                routes,\n                preloadedRoutes: state.preloadedRoutes.filter(r => r.key !== route.key)\n              };\n            }\n            const route = state.routes[index];\n            let params;\n            if (action.payload.merge) {\n              params = action.payload.params !== undefined || routeParamList[route.name] !== undefined ? {\n                ...routeParamList[route.name],\n                ...route.params,\n                ...action.payload.params\n              } : route.params;\n            } else {\n              params = createParamsFromAction({\n                action,\n                routeParamList\n              });\n            }\n            return {\n              ...state,\n              index,\n              routes: [...state.routes.slice(0, index), params !== route.params ? {\n                ...route,\n                params\n              } : state.routes[index]]\n            };\n          }\n        case 'GO_BACK':\n          if (state.index > 0) {\n            return router.getStateForAction(state, {\n              type: 'POP',\n              payload: {\n                count: 1\n              },\n              target: action.target,\n              source: action.source\n            }, options);\n          }\n          return null;\n        case 'PRELOAD':\n          {\n            const getId = options.routeGetIdList[action.payload.name];\n            const id = getId?.({\n              params: action.payload.params\n            });\n            let route;\n            if (id !== undefined) {\n              route = state.routes.find(route => route.name === action.payload.name && id === getId?.({\n                params: route.params\n              }));\n            }\n            if (route) {\n              return {\n                ...state,\n                routes: state.routes.map(r => {\n                  if (r.key !== route?.key) {\n                    return r;\n                  }\n                  return {\n                    ...r,\n                    params: createParamsFromAction({\n                      action,\n                      routeParamList\n                    })\n                  };\n                })\n              };\n            } else {\n              return {\n                ...state,\n                preloadedRoutes: state.preloadedRoutes.filter(r => r.name !== action.payload.name || id !== getId?.({\n                  params: r.params\n                })).concat(createRouteFromAction({\n                  action,\n                  routeParamList\n                }))\n              };\n            }\n          }\n        default:\n          return BaseRouter.getStateForAction(state, action);\n      }\n    },\n    actionCreators: StackActions\n  };\n  return router;\n}\n//# sourceMappingURL=StackRouter.js.map","\"use strict\";\n\nimport { nanoid } from 'nanoid/non-secure';\nimport { createParamsFromAction } from \"./createParamsFromAction.js\";\nexport function createRouteFromAction({\n  action,\n  routeParamList\n}) {\n  const {\n    name\n  } = action.payload;\n  return {\n    key: `${name}-${nanoid()}`,\n    name,\n    params: createParamsFromAction({\n      action,\n      routeParamList\n    })\n  };\n}\n//# sourceMappingURL=createRouteFromAction.js.map","\"use strict\";\n\nexport {};\n//# sourceMappingURL=types.js.map","// eslint-disable-next-line import/extensions\nimport useLatestCallback from './lib/src/index.js';\n\nexport default useLatestCallback;\n","\"use strict\";\nvar React = require(\"react\");\n/**\n * Use `useEffect` during SSR and `useLayoutEffect` in the Browser & React Native to avoid warnings.\n */\nvar useClientLayoutEffect = typeof document !== 'undefined' ||\n    (typeof navigator !== 'undefined' && navigator.product === 'ReactNative')\n    ? React.useLayoutEffect\n    : React.useEffect;\n/**\n * React hook which returns the latest callback without changing the reference.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction useLatestCallback(callback) {\n    var ref = React.useRef(callback);\n    var latestCallback = React.useRef(function latestCallback() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return ref.current.apply(this, args);\n    }).current;\n    useClientLayoutEffect(function () {\n        ref.current = callback;\n    });\n    return latestCallback;\n}\nmodule.exports = useLatestCallback;\n","\"use strict\";\n\nexport function checkDuplicateRouteNames(state) {\n  const duplicates = [];\n  const getRouteNames = (location, state) => {\n    state.routes.forEach(route => {\n      const currentLocation = location ? `${location} > ${route.name}` : route.name;\n      route.state?.routeNames?.forEach(routeName => {\n        if (routeName === route.name) {\n          duplicates.push([currentLocation, `${currentLocation} > ${route.name}`]);\n        }\n      });\n      if (route.state) {\n        getRouteNames(currentLocation, route.state);\n      }\n    });\n  };\n  getRouteNames('', state);\n  return duplicates;\n}\n//# sourceMappingURL=checkDuplicateRouteNames.js.map","\"use strict\";\n\nconst checkSerializableWithoutCircularReference = (o, seen, location) => {\n  if (o === undefined || o === null || typeof o === 'boolean' || typeof o === 'number' || typeof o === 'string') {\n    return {\n      serializable: true\n    };\n  }\n  if (Object.prototype.toString.call(o) !== '[object Object]' && !Array.isArray(o)) {\n    return {\n      serializable: false,\n      location,\n      reason: typeof o === 'function' ? 'Function' : String(o)\n    };\n  }\n  if (seen.has(o)) {\n    return {\n      serializable: false,\n      reason: 'Circular reference',\n      location\n    };\n  }\n  seen.add(o);\n  if (Array.isArray(o)) {\n    for (let i = 0; i < o.length; i++) {\n      const childResult = checkSerializableWithoutCircularReference(o[i], new Set(seen), [...location, i]);\n      if (!childResult.serializable) {\n        return childResult;\n      }\n    }\n  } else {\n    for (const key in o) {\n      const childResult = checkSerializableWithoutCircularReference(o[key], new Set(seen), [...location, key]);\n      if (!childResult.serializable) {\n        return childResult;\n      }\n    }\n  }\n  return {\n    serializable: true\n  };\n};\nexport function checkSerializable(o) {\n  return checkSerializableWithoutCircularReference(o, new Set(), []);\n}\n//# sourceMappingURL=checkSerializable.js.map","\"use strict\";\n\nimport { CommonActions } from '@react-navigation/routers';\nexport const NOT_INITIALIZED_ERROR = \"The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/navigating-without-navigation-prop#handling-initialization for more details.\";\nexport function createNavigationContainerRef() {\n  const methods = [...Object.keys(CommonActions), 'addListener', 'removeListener', 'resetRoot', 'dispatch', 'isFocused', 'canGoBack', 'getRootState', 'getState', 'getParent', 'getCurrentRoute', 'getCurrentOptions'];\n  const listeners = {};\n  const removeListener = (event, callback) => {\n    if (listeners[event]) {\n      listeners[event] = listeners[event].filter(cb => cb !== callback);\n    }\n  };\n  let current = null;\n  const ref = {\n    get current() {\n      return current;\n    },\n    set current(value) {\n      current = value;\n      if (value != null) {\n        Object.entries(listeners).forEach(([event, callbacks]) => {\n          callbacks.forEach(callback => {\n            value.addListener(event, callback);\n          });\n        });\n      }\n    },\n    isReady: () => {\n      if (current == null) {\n        return false;\n      }\n      return current.isReady();\n    },\n    ...methods.reduce((acc, name) => {\n      acc[name] = (...args) => {\n        if (current == null) {\n          switch (name) {\n            case 'addListener':\n              {\n                const [event, callback] = args;\n                listeners[event] = listeners[event] || [];\n                listeners[event].push(callback);\n                return () => removeListener(event, callback);\n              }\n            case 'removeListener':\n              {\n                const [event, callback] = args;\n                removeListener(event, callback);\n                break;\n              }\n            default:\n              console.error(NOT_INITIALIZED_ERROR);\n          }\n        } else {\n          // @ts-expect-error: this is ok\n          return current[name](...args);\n        }\n      };\n      return acc;\n    }, {})\n  };\n  return ref;\n}\n//# sourceMappingURL=createNavigationContainerRef.js.map","\"use strict\";\n\nimport * as React from 'react';\n\n/**\n * Context which enables deprecated bubbling to child navigators.\n */\nexport const DeprecatedNavigationInChildContext = /*#__PURE__*/React.createContext(false);\n//# sourceMappingURL=DeprecatedNavigationInChildContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MULTIPLE_NAVIGATOR_ERROR = `Another navigator is already registered for this container. You likely have multiple navigators under a single \"NavigationContainer\" or \"Screen\". Make sure each navigator is under a separate \"Screen\" container. See https://reactnavigation.org/docs/nesting-navigators for a guide on nesting.`;\nexport const SingleNavigatorContext = /*#__PURE__*/React.createContext(undefined);\n\n/**\n * Component which ensures that there's only one navigator nested under it.\n */\nexport function EnsureSingleNavigator({\n  children\n}) {\n  const navigatorKeyRef = React.useRef(undefined);\n  const value = React.useMemo(() => ({\n    register(key) {\n      const currentKey = navigatorKeyRef.current;\n      if (currentKey !== undefined && key !== currentKey) {\n        throw new Error(MULTIPLE_NAVIGATOR_ERROR);\n      }\n      navigatorKeyRef.current = key;\n    },\n    unregister(key) {\n      const currentKey = navigatorKeyRef.current;\n      if (key !== currentKey) {\n        return;\n      }\n      navigatorKeyRef.current = undefined;\n    }\n  }), []);\n  return /*#__PURE__*/_jsx(SingleNavigatorContext.Provider, {\n    value: value,\n    children: children\n  });\n}\n//# sourceMappingURL=EnsureSingleNavigator.js.map","\"use strict\";\n\nexport function findFocusedRoute(state) {\n  let current = state;\n  while (current?.routes[current.index ?? 0].state != null) {\n    current = current.routes[current.index ?? 0].state;\n  }\n  const route = current?.routes[current?.index ?? 0];\n  return route;\n}\n//# sourceMappingURL=findFocusedRoute.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Context which holds the required helpers needed to build nested navigators.\n */\nexport const NavigationBuilderContext = /*#__PURE__*/React.createContext({\n  onDispatchAction: () => undefined,\n  onOptionsChange: () => undefined,\n  scheduleUpdate: () => {\n    throw new Error(\"Couldn't find a context for scheduling updates.\");\n  },\n  flushUpdates: () => {\n    throw new Error(\"Couldn't find a context for flushing updates.\");\n  }\n});\n//# sourceMappingURL=NavigationBuilderContext.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Context which holds the route prop for a screen.\n */\nexport const NavigationContainerRefContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=NavigationContainerRefContext.js.map","\"use strict\";\n\nimport * as React from 'react';\n\n/**\n * Context which marks the navigation tree as independent.\n */\nexport const NavigationIndependentTreeContext = /*#__PURE__*/React.createContext(false);\n//# sourceMappingURL=NavigationIndependentTreeContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nconst MISSING_CONTEXT_ERROR = \"Couldn't find a navigation context. Have you wrapped your app with 'NavigationContainer'? See https://reactnavigation.org/docs/getting-started for setup instructions.\";\nexport const NavigationStateContext = /*#__PURE__*/React.createContext({\n  isDefault: true,\n  get getKey() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get setKey() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get getState() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get setState() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get getIsInitial() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  }\n});\n//# sourceMappingURL=NavigationStateContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { ThemeContext } from \"./ThemeContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ThemeProvider({\n  value,\n  children\n}) {\n  return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n    value: value,\n    children: children\n  });\n}\n//# sourceMappingURL=ThemeProvider.js.map","\"use strict\";\n\nimport * as React from 'react';\nexport const ThemeContext = /*#__PURE__*/React.createContext(undefined);\nThemeContext.displayName = 'ThemeContext';\n//# sourceMappingURL=ThemeContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nexport const UnhandledActionContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=UnhandledActionContext.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Hook which lets child navigators add action listeners.\n */\nexport function useChildListeners() {\n  const {\n    current: listeners\n  } = React.useRef({\n    action: [],\n    focus: []\n  });\n  const addListener = React.useCallback((type, listener) => {\n    listeners[type].push(listener);\n    let removed = false;\n    return () => {\n      const index = listeners[type].indexOf(listener);\n      if (!removed && index > -1) {\n        removed = true;\n        listeners[type].splice(index, 1);\n      }\n    };\n  }, [listeners]);\n  return {\n    listeners,\n    addListener\n  };\n}\n//# sourceMappingURL=useChildListeners.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Hook to manage the event system used by the navigator to notify screens of various events.\n */\nexport function useEventEmitter(listen) {\n  const listenRef = React.useRef(listen);\n  React.useEffect(() => {\n    listenRef.current = listen;\n  });\n  const listeners = React.useRef(Object.create(null));\n  const create = React.useCallback(target => {\n    const removeListener = (type, callback) => {\n      const callbacks = listeners.current[type] ? listeners.current[type][target] : undefined;\n      if (!callbacks) {\n        return;\n      }\n      const index = callbacks.indexOf(callback);\n      if (index > -1) {\n        callbacks.splice(index, 1);\n      }\n    };\n    const addListener = (type, callback) => {\n      listeners.current[type] = listeners.current[type] || {};\n      listeners.current[type][target] = listeners.current[type][target] || [];\n      listeners.current[type][target].push(callback);\n      let removed = false;\n      return () => {\n        // Prevent removing other listeners when unsubscribing same listener multiple times\n        if (!removed) {\n          removed = true;\n          removeListener(type, callback);\n        }\n      };\n    };\n    return {\n      addListener,\n      removeListener\n    };\n  }, []);\n  const emit = React.useCallback(({\n    type,\n    data,\n    target,\n    canPreventDefault\n  }) => {\n    const items = listeners.current[type] || {};\n\n    // Copy the current list of callbacks in case they are mutated during execution\n    const callbacks = target !== undefined ? items[target]?.slice() : [].concat(...Object.keys(items).map(t => items[t])).filter((cb, i, self) => self.lastIndexOf(cb) === i);\n    const event = {\n      get type() {\n        return type;\n      }\n    };\n    if (target !== undefined) {\n      Object.defineProperty(event, 'target', {\n        enumerable: true,\n        get() {\n          return target;\n        }\n      });\n    }\n    if (data !== undefined) {\n      Object.defineProperty(event, 'data', {\n        enumerable: true,\n        get() {\n          return data;\n        }\n      });\n    }\n    if (canPreventDefault) {\n      let defaultPrevented = false;\n      Object.defineProperties(event, {\n        defaultPrevented: {\n          enumerable: true,\n          get() {\n            return defaultPrevented;\n          }\n        },\n        preventDefault: {\n          enumerable: true,\n          value() {\n            defaultPrevented = true;\n          }\n        }\n      });\n    }\n    listenRef.current?.(event);\n    callbacks?.forEach(cb => cb(event));\n    return event;\n  }, []);\n  return React.useMemo(() => ({\n    create,\n    emit\n  }), [create, emit]);\n}\n//# sourceMappingURL=useEventEmitter.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Hook which lets child navigators add getters to be called for obtaining rehydrated state.\n */\nexport function useKeyedChildListeners() {\n  const {\n    current: keyedListeners\n  } = React.useRef(Object.assign(Object.create(null), {\n    getState: {},\n    beforeRemove: {}\n  }));\n  const addKeyedListener = React.useCallback((type, key, listener) => {\n    // @ts-expect-error: according to ref stated above you can use `key` to index type\n    keyedListeners[type][key] = listener;\n    return () => {\n      // @ts-expect-error: according to ref stated above you can use `key` to index type\n      keyedListeners[type][key] = undefined;\n    };\n  }, [keyedListeners]);\n  return {\n    keyedListeners,\n    addKeyedListener\n  };\n}\n//# sourceMappingURL=useKeyedChildListeners.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationIndependentTreeContext } from \"./NavigationIndependentTreeContext.js\";\nexport function useNavigationIndependentTree() {\n  return React.useContext(NavigationIndependentTreeContext);\n}\n//# sourceMappingURL=useNavigationIndependentTree.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { NavigationStateContext } from \"./NavigationStateContext.js\";\nexport function useOptionsGetters({\n  key,\n  options,\n  navigation\n}) {\n  const optionsRef = React.useRef(options);\n  const optionsGettersFromChildRef = React.useRef({});\n  const {\n    onOptionsChange\n  } = React.useContext(NavigationBuilderContext);\n  const {\n    addOptionsGetter: parentAddOptionsGetter\n  } = React.useContext(NavigationStateContext);\n  const optionsChangeListener = React.useCallback(() => {\n    const isFocused = navigation?.isFocused() ?? true;\n    const hasChildren = Object.keys(optionsGettersFromChildRef.current).length;\n    if (isFocused && !hasChildren) {\n      onOptionsChange(optionsRef.current ?? {});\n    }\n  }, [navigation, onOptionsChange]);\n  React.useEffect(() => {\n    optionsRef.current = options;\n    optionsChangeListener();\n    return navigation?.addListener('focus', optionsChangeListener);\n  }, [navigation, options, optionsChangeListener]);\n  const getOptionsFromListener = React.useCallback(() => {\n    for (const key in optionsGettersFromChildRef.current) {\n      if (key in optionsGettersFromChildRef.current) {\n        const result = optionsGettersFromChildRef.current[key]?.();\n\n        // null means unfocused route\n        if (result !== null) {\n          return result;\n        }\n      }\n    }\n    return null;\n  }, []);\n  const getCurrentOptions = React.useCallback(() => {\n    const isFocused = navigation?.isFocused() ?? true;\n    if (!isFocused) {\n      return null;\n    }\n    const optionsFromListener = getOptionsFromListener();\n    if (optionsFromListener !== null) {\n      return optionsFromListener;\n    }\n    return optionsRef.current;\n  }, [navigation, getOptionsFromListener]);\n  React.useEffect(() => {\n    return parentAddOptionsGetter?.(key, getCurrentOptions);\n  }, [getCurrentOptions, parentAddOptionsGetter, key]);\n  const addOptionsGetter = React.useCallback((key, getter) => {\n    optionsGettersFromChildRef.current[key] = getter;\n    optionsChangeListener();\n    return () => {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete optionsGettersFromChildRef.current[key];\n      optionsChangeListener();\n    };\n  }, [optionsChangeListener]);\n  return {\n    addOptionsGetter,\n    getCurrentOptions\n  };\n}\n//# sourceMappingURL=useOptionsGetters.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport useLatestCallback from 'use-latest-callback';\nimport { deepFreeze } from \"./deepFreeze.js\";\nconst createStore = getInitialState => {\n  const listeners = [];\n  let initialized = false;\n  let state;\n  const getState = () => {\n    if (initialized) {\n      return state;\n    }\n    initialized = true;\n    state = deepFreeze(getInitialState());\n    return state;\n  };\n  let isBatching = false;\n  let didUpdate = false;\n  const setState = newState => {\n    state = deepFreeze(newState);\n    didUpdate = true;\n    if (!isBatching) {\n      listeners.forEach(listener => listener());\n    }\n  };\n  const subscribe = callback => {\n    listeners.push(callback);\n    return () => {\n      const index = listeners.indexOf(callback);\n      if (index > -1) {\n        listeners.splice(index, 1);\n      }\n    };\n  };\n  const batchUpdates = callback => {\n    isBatching = true;\n    callback();\n    isBatching = false;\n    if (didUpdate) {\n      didUpdate = false;\n      listeners.forEach(listener => listener());\n    }\n  };\n  return {\n    getState,\n    setState,\n    batchUpdates,\n    subscribe\n  };\n};\nexport function useSyncState(getInitialState) {\n  const store = React.useRef(createStore(getInitialState)).current;\n  const state = React.useSyncExternalStore(store.subscribe, store.getState, store.getState);\n  React.useDebugValue(state);\n  const pendingUpdatesRef = React.useRef([]);\n  const scheduleUpdate = useLatestCallback(callback => {\n    pendingUpdatesRef.current.push(callback);\n  });\n  const flushUpdates = useLatestCallback(() => {\n    const pendingUpdates = pendingUpdatesRef.current;\n    pendingUpdatesRef.current = [];\n    if (pendingUpdates.length !== 0) {\n      store.batchUpdates(() => {\n        // Flush all the pending updates\n        for (const update of pendingUpdates) {\n          update();\n        }\n      });\n    }\n  });\n  return {\n    state,\n    getState: store.getState,\n    setState: store.setState,\n    scheduleUpdate,\n    flushUpdates\n  };\n}\n//# sourceMappingURL=useSyncState.js.map","\"use strict\";\n\nexport const isPlainObject = value => {\n  if (typeof value === 'object' && value !== null) {\n    return Object.getPrototypeOf(value) === Object.prototype;\n  }\n  return false;\n};\nexport const deepFreeze = object => {\n  // We only freeze in development to catch issues early\n  // Don't freeze in production to avoid unnecessary performance overhead\n  if (process.env.NODE_ENV === 'production') {\n    return object;\n  }\n  if (Object.isFrozen(object)) {\n    return object;\n  }\n  if (!isPlainObject(object) && !Array.isArray(object)) {\n    return object;\n  }\n\n  // Freeze properties before freezing self\n  for (const key in object) {\n    // Don't freeze objects in params since they are passed by the user\n    if (key !== 'params') {\n      if (Object.getOwnPropertyDescriptor(object, key)?.configurable) {\n        const value = object[key];\n        deepFreeze(value);\n      }\n    }\n  }\n  return Object.freeze(object);\n};\n//# sourceMappingURL=deepFreeze.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { Group } from \"./Group.js\";\nimport { Screen } from \"./Screen.js\";\nimport { createComponentForStaticNavigation } from \"./StaticNavigation.js\";\n\n/**\n * Higher order component to create a `Navigator` and `Screen` pair.\n * Custom navigators should wrap the navigator component in `createNavigator` before exporting.\n *\n * @param Navigator The navigator component to wrap.\n * @returns Factory method to create a `Navigator` and `Screen` pair.\n */\nexport function createNavigatorFactory(Navigator) {\n  const displayName = Navigator.displayName ?? Navigator.name ?? 'Navigator';\n  function createNavigator(config) {\n    if (config != null) {\n      const NavigatorComponent = createComponentForStaticNavigation({\n        Navigator,\n        Screen,\n        Group,\n        config\n      }, displayName);\n      return {\n        config,\n        with(DecoratorComponent) {\n          const WithComponent = () => {\n            return /*#__PURE__*/React.createElement(DecoratorComponent, {\n              Navigator: NavigatorComponent\n            });\n          };\n          WithComponent.displayName = `${displayName}With`;\n          return {\n            config,\n            getComponent: () => WithComponent\n          };\n        },\n        getComponent() {\n          return NavigatorComponent;\n        }\n      };\n    }\n    return {\n      Navigator,\n      Screen,\n      Group\n    };\n  }\n  return createNavigator;\n}\n//# sourceMappingURL=createNavigatorFactory.js.map","\"use strict\";\n\n/**\n * Empty component used for grouping screen configs.\n */\nexport function Group(_) {\n  /* istanbul ignore next */\n  return null;\n}\n//# sourceMappingURL=Group.js.map","\"use strict\";\n\n/**\n * Empty component used for specifying route configuration.\n */\nexport function Screen(_) {\n  /* istanbul ignore next */\n  return null;\n}\n//# sourceMappingURL=Screen.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { isValidElementType } from 'react-is';\nimport { useRoute } from \"./useRoute.js\";\n\n/**\n * Flatten a type to remove all type alias names, unions etc.\n * This will show a plain object when hovering over the type.\n */\n\n/**\n * keyof T doesn't work for union types. We can use distributive conditional types instead.\n * https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types\n */\n\n/**\n * We get a union type when using keyof, but we want an intersection instead.\n * https://stackoverflow.com/a/50375286/1665026\n */\n\n/**\n * Props for a screen component which is rendered by a static navigator.\n * Takes the route params as a generic argument.\n */\n\n/**\n * Infer the param list from the static navigation config.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MemoizedScreen = /*#__PURE__*/React.memo(({\n  component\n}) => {\n  const route = useRoute();\n  const children = /*#__PURE__*/React.createElement(component, {\n    route\n  });\n  return children;\n});\nMemoizedScreen.displayName = 'Memo(Screen)';\nconst getItemsFromScreens = (Screen, screens) => {\n  return Object.entries(screens).map(([name, item]) => {\n    let component;\n    let props = {};\n    let useIf;\n    let isNavigator = false;\n    if ('screen' in item) {\n      const {\n        screen,\n        if: _if,\n        ...rest\n      } = item;\n      useIf = _if;\n      props = rest;\n      if (isValidElementType(screen)) {\n        component = screen;\n      } else if ('config' in screen) {\n        isNavigator = true;\n        component = screen.getComponent();\n      }\n    } else if (isValidElementType(item)) {\n      component = item;\n    } else if ('config' in item) {\n      isNavigator = true;\n      component = item.getComponent();\n    }\n    if (component == null) {\n      throw new Error(`Couldn't find a 'screen' property for the screen '${name}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`);\n    }\n    const element = isNavigator ? (/*#__PURE__*/React.createElement(component, {})) : /*#__PURE__*/_jsx(MemoizedScreen, {\n      component: component\n    });\n    return () => {\n      const shouldRender = useIf == null || useIf();\n      if (!shouldRender) {\n        return null;\n      }\n      return /*#__PURE__*/_jsx(Screen, {\n        name: name,\n        ...props,\n        children: () => element\n      }, name);\n    };\n  });\n};\n\n/**\n * Create a component that renders a navigator based on the static configuration.\n *\n * @param tree Static navigation config.\n * @param displayName Name of the component to be displayed in React DevTools.\n * @returns A component which renders the navigator.\n */\nexport function createComponentForStaticNavigation(tree, displayName) {\n  const {\n    Navigator,\n    Group,\n    Screen,\n    config\n  } = tree;\n  const {\n    screens,\n    groups,\n    ...rest\n  } = config;\n  if (screens == null && groups == null) {\n    throw new Error(\"Couldn't find a 'screens' or 'groups' property. Make sure to define your screens under a 'screens' property in the configuration.\");\n  }\n  const items = [];\n\n  // Loop through the config to find screens and groups\n  // So we add the screens and groups in the same order as they are defined\n  for (const key in config) {\n    if (key === 'screens' && screens) {\n      items.push(...getItemsFromScreens(Screen, screens));\n    }\n    if (key === 'groups' && groups) {\n      items.push(...Object.entries(groups).map(([key, {\n        if: useIf,\n        ...group\n      }]) => {\n        const groupItems = getItemsFromScreens(Screen, group.screens);\n        return () => {\n          // Call unconditionally since screen configs may contain `useIf` hooks\n          const children = groupItems.map(item => item());\n          const shouldRender = useIf == null || useIf();\n          if (!shouldRender) {\n            return null;\n          }\n          return /*#__PURE__*/_jsx(Group, {\n            navigationKey: key,\n            ...group,\n            children: children\n          }, key);\n        };\n      }));\n    }\n  }\n  if (items.length === 0) {\n    throw new Error(\"Couldn't find any screens in the 'screens' or 'groups' property. Make sure to define at least one screen in the configuration.\");\n  }\n  const NavigatorComponent = props => {\n    const children = items.map(item => item());\n    const screenOptions = typeof props.screenOptions === 'function' || typeof rest.screenOptions === 'function' ? options => ({\n      ...(typeof rest.screenOptions === 'function' ? rest.screenOptions(options) : rest.screenOptions),\n      ...(typeof props.screenOptions === 'function' ? props.screenOptions(options) : props.screenOptions)\n    }) : {\n      ...rest.screenOptions,\n      ...props.screenOptions\n    };\n    const screenListeners = typeof props.screenListeners === 'function' || typeof rest.screenListeners === 'function' ? options => ({\n      ...(typeof rest.screenListeners === 'function' ? rest.screenListeners(options) : rest.screenListeners),\n      ...(typeof props.screenListeners === 'function' ? props.screenListeners(options) : props.screenListeners)\n    }) : {\n      ...rest.screenListeners,\n      ...props.screenListeners\n    };\n    return /*#__PURE__*/_jsx(Navigator, {\n      ...rest,\n      ...props,\n      screenOptions: screenOptions,\n      screenListeners: screenListeners,\n      children: children\n    });\n  };\n  NavigatorComponent.displayName = displayName;\n  return NavigatorComponent;\n}\n\n/**\n * Create a component that renders a navigator based on the static configuration.\n *\n * @deprecated Use `tree.getComponent()` instead.\n */\nexport function createComponentForStaticNavigationDeprecated(tree) {\n  console.warn('`createComponentForStaticNavigation` is deprecated. Use `tree.getComponent()` instead.');\n  return tree.getComponent();\n}\n/**\n * Create a path config object from a static navigation config for deep linking.\n *\n * @param tree Static navigation config.\n * @param options Additional options from `linking.config`.\n * @param auto Whether to automatically generate paths for leaf screens.\n * @returns Path config object to use in linking config.\n *\n * @example\n * ```js\n * const config = {\n *   screens: {\n *     Home: {\n *       screens: createPathConfigForStaticNavigation(HomeTabs),\n *     },\n *   },\n * };\n * ```\n */\nexport function createPathConfigForStaticNavigation(tree, options, auto) {\n  let initialScreenHasPath = false;\n  let initialScreenConfig;\n  const createPathConfigForTree = (t, o, skipInitialDetection) => {\n    const createPathConfigForScreens = (screens, initialRouteName) => {\n      return Object.fromEntries(Object.entries(screens)\n      // Re-order to move the initial route to the front\n      // This way we can detect the initial route correctly\n      .sort(([a], [b]) => {\n        if (a === initialRouteName) {\n          return -1;\n        }\n        if (b === initialRouteName) {\n          return 1;\n        }\n        return 0;\n      }).map(([key, item]) => {\n        const screenConfig = {};\n        if ('linking' in item) {\n          if (typeof item.linking === 'string') {\n            screenConfig.path = item.linking;\n          } else {\n            Object.assign(screenConfig, item.linking);\n          }\n          if (typeof screenConfig.path === 'string') {\n            screenConfig.path = screenConfig.path.replace(/^\\//, '') // Remove extra leading slash\n            .replace(/\\/$/, ''); // Remove extra trailing slash\n          }\n        }\n        let screens;\n        const skipInitialDetectionInChild = skipInitialDetection || screenConfig.path != null && screenConfig.path !== '';\n        if ('config' in item) {\n          screens = createPathConfigForTree(item, undefined, skipInitialDetectionInChild);\n        } else if ('screen' in item && 'config' in item.screen && (item.screen.config.screens || item.screen.config.groups)) {\n          screens = createPathConfigForTree(item.screen, undefined, skipInitialDetectionInChild);\n        }\n        if (screens) {\n          screenConfig.screens = screens;\n        }\n        if (auto && !screenConfig.screens &&\n        // Skip generating path for screens that specify linking config as `undefined` or `null` explicitly\n        !('linking' in item && item.linking == null)) {\n          if (screenConfig.path != null) {\n            if (!skipInitialDetection) {\n              if (key === initialRouteName && screenConfig.path != null) {\n                initialScreenHasPath = true;\n              } else if (screenConfig.path === '') {\n                // We encounter a leaf screen with empty path,\n                // Clear the initial screen config as it's not needed anymore\n                initialScreenConfig = undefined;\n              }\n            }\n          } else {\n            if (!skipInitialDetection && initialScreenConfig == null) {\n              initialScreenConfig = screenConfig;\n            }\n            screenConfig.path = key.replace(/([A-Z]+)/g, '-$1').replace(/^-/, '').toLowerCase();\n          }\n        }\n        return [key, screenConfig];\n      }).filter(([, screen]) => Object.keys(screen).length > 0));\n    };\n    const screens = {};\n\n    // Loop through the config to find screens and groups\n    // So we add the screens and groups in the same order as they are defined\n    for (const key in t.config) {\n      if (key === 'screens' && t.config.screens) {\n        Object.assign(screens, createPathConfigForScreens(t.config.screens, o?.initialRouteName ?? t.config.initialRouteName));\n      }\n      if (key === 'groups' && t.config.groups) {\n        Object.entries(t.config.groups).forEach(([, group]) => {\n          Object.assign(screens, createPathConfigForScreens(group.screens, o?.initialRouteName ?? t.config.initialRouteName));\n        });\n      }\n    }\n    if (Object.keys(screens).length === 0) {\n      return undefined;\n    }\n    return screens;\n  };\n  const screens = createPathConfigForTree(tree, options, false);\n  if (auto && initialScreenConfig && !initialScreenHasPath) {\n    initialScreenConfig.path = '';\n  }\n  return screens;\n}\n//# sourceMappingURL=StaticNavigation.js.map","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-is.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_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n  REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n  if (\"object\" === typeof object && null !== object) {\n    var $$typeof = object.$$typeof;\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        switch (((object = object.type), object)) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n          case REACT_VIEW_TRANSITION_TYPE:\n            return object;\n          default:\n            switch (((object = object && object.$$typeof), object)) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n                return object;\n              case REACT_CONSUMER_TYPE:\n                return object;\n              default:\n                return $$typeof;\n            }\n        }\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n  return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n};\nexports.isForwardRef = function (object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n  return \"string\" === typeof type ||\n    \"function\" === typeof type ||\n    type === REACT_FRAGMENT_TYPE ||\n    type === REACT_PROFILER_TYPE ||\n    type === REACT_STRICT_MODE_TYPE ||\n    type === REACT_SUSPENSE_TYPE ||\n    type === REACT_SUSPENSE_LIST_TYPE ||\n    (\"object\" === typeof type &&\n      null !== type &&\n      (type.$$typeof === REACT_LAZY_TYPE ||\n        type.$$typeof === REACT_MEMO_TYPE ||\n        type.$$typeof === REACT_CONTEXT_TYPE ||\n        type.$$typeof === REACT_CONSUMER_TYPE ||\n        type.$$typeof === REACT_FORWARD_REF_TYPE ||\n        type.$$typeof === REACT_CLIENT_REFERENCE ||\n        void 0 !== type.getModuleId))\n    ? !0\n    : !1;\n};\nexports.typeOf = typeOf;\n","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationRouteContext } from \"./NavigationProvider.js\";\n/**\n * Hook to access the route prop of the parent screen anywhere.\n *\n * @returns Route prop of the parent screen.\n */\nexport function useRoute() {\n  const route = React.useContext(NavigationRouteContext);\n  if (route === undefined) {\n    throw new Error(\"Couldn't find a route object. Is your component inside a screen in a navigator?\");\n  }\n  return route;\n}\n//# sourceMappingURL=useRoute.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationContext } from \"./NavigationContext.js\";\nimport { FocusedRouteKeyContext, IsFocusedContext } from \"./useIsFocused.js\";\n\n/**\n * Context which holds the route prop for a screen.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const NavigationRouteContext = /*#__PURE__*/React.createContext(undefined);\n/**\n * Component to provide the navigation and route contexts to its children.\n */\nexport const NamedRouteContextListContext = /*#__PURE__*/React.createContext(undefined);\nexport function NavigationProvider({\n  route,\n  navigation,\n  children\n}) {\n  const parentIsFocused = React.useContext(IsFocusedContext);\n  const focusedRouteKey = React.useContext(FocusedRouteKeyContext);\n\n  // Mark route as focused only if:\n  // - It doesn't have a parent navigator\n  // - Parent navigator is focused\n  const isFocused = parentIsFocused == null || parentIsFocused ? focusedRouteKey === route.key : false;\n  return /*#__PURE__*/_jsx(NavigationRouteContext.Provider, {\n    value: route,\n    children: /*#__PURE__*/_jsx(NavigationContext.Provider, {\n      value: navigation,\n      children: /*#__PURE__*/_jsx(IsFocusedContext.Provider, {\n        value: isFocused,\n        children: children\n      })\n    })\n  });\n}\n//# sourceMappingURL=NavigationProvider.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Context which holds the navigation prop for a screen.\n */\nexport const NavigationContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=NavigationContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { useNavigation } from \"./useNavigation.js\";\nexport const FocusedRouteKeyContext = /*#__PURE__*/React.createContext(undefined);\nexport const IsFocusedContext = /*#__PURE__*/React.createContext(undefined);\n\n/**\n * Hook to get the current focus state of the screen. Returns a `true` if screen is focused, otherwise `false`.\n * This can be used if a component needs to render something based on the focus state.\n */\nexport function useIsFocused() {\n  const isFocused = React.useContext(IsFocusedContext);\n  const navigation = useNavigation();\n  const isFocusedAvailable = isFocused !== undefined;\n  const subscribe = React.useCallback(callback => {\n    if (isFocusedAvailable) {\n      // If `isFocused` is available in context\n      // We don't need to subscribe to focus and blur events\n      return () => {};\n    }\n    const unsubscribeFocus = navigation.addListener('focus', callback);\n    const unsubscribeBlur = navigation.addListener('blur', callback);\n    return () => {\n      unsubscribeFocus();\n      unsubscribeBlur();\n    };\n  }, [isFocusedAvailable, navigation]);\n\n  // isFocused from context only works with NavigationProvider\n  // So this is kept for backward compatibility\n  const value = React.useSyncExternalStore(subscribe, navigation.isFocused, navigation.isFocused);\n  return isFocused ?? value;\n}\n//# sourceMappingURL=useIsFocused.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationContainerRefContext } from \"./NavigationContainerRefContext.js\";\nimport { NavigationContext } from \"./NavigationContext.js\";\n/**\n * Hook to access the navigation prop of the parent screen anywhere.\n *\n * @returns Navigation prop of the parent screen.\n */\nexport function useNavigation() {\n  const root = React.useContext(NavigationContainerRefContext);\n  const navigation = React.useContext(NavigationContext);\n  if (navigation === undefined && root === undefined) {\n    throw new Error(\"Couldn't find a navigation object. Is your component inside NavigationContainer?\");\n  }\n\n  // FIXME: Figure out a better way to do this\n  return navigation ?? root;\n}\n//# sourceMappingURL=useNavigation.js.map","\"use strict\";\n\nimport * as React from 'react';\n\n/**\n * Context which holds the values for the current navigation tree.\n * Intended for use in SSR. This is not safe to use on the client.\n */\nexport const CurrentRenderContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=CurrentRenderContext.js.map","\"use strict\";\n\nexport function getActionFromState(state, options) {\n  // Create a normalized configs object which will be easier to use\n  const normalizedConfig = options ? createNormalizedConfigItem(options) : {};\n  const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;\n  if (routes.length === 0) {\n    return undefined;\n  }\n  if (!(routes.length === 1 && routes[0].key === undefined || routes.length === 2 && routes[0].key === undefined && routes[0].name === normalizedConfig?.initialRouteName && routes[1].key === undefined)) {\n    return {\n      type: 'RESET',\n      payload: state\n    };\n  }\n  const route = state.routes[state.index ?? state.routes.length - 1];\n  let current = route?.state;\n  let config = normalizedConfig?.screens?.[route?.name];\n  let params = {\n    ...route.params\n  };\n  const payload = route ? {\n    name: route.name,\n    path: route.path,\n    params\n  } : undefined;\n\n  // If the screen contains a navigator, pop other screens to navigate to it\n  // This avoid pushing multiple instances of navigators onto a stack\n  //\n  // For example:\n  // - RootStack\n  //   - BottomTabs\n  //   - SomeScreen\n  //\n  // In this case, if deep linking to `BottomTabs`, we should pop `SomeScreen`\n  // Otherwise, we'll end up with 2 instances of `BottomTabs` in the stack\n  //\n  // There are 2 ways we can detect if a screen contains a navigator:\n  // - The route contains nested state in `route.state`\n  // - Nested screens are defined in the config\n  if (payload && config?.screens && Object.keys(config.screens).length) {\n    payload.pop = true;\n  }\n  while (current) {\n    if (current.routes.length === 0) {\n      return undefined;\n    }\n    const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;\n    const route = routes[routes.length - 1];\n\n    // Explicitly set to override existing value when merging params\n    Object.assign(params, {\n      initial: undefined,\n      screen: undefined,\n      params: undefined,\n      state: undefined\n    });\n    if (routes.length === 1 && routes[0].key === undefined) {\n      params.initial = true;\n      params.screen = route.name;\n    } else if (routes.length === 2 && routes[0].key === undefined && routes[0].name === config?.initialRouteName && routes[1].key === undefined) {\n      params.initial = false;\n      params.screen = route.name;\n    } else {\n      params.state = current;\n      break;\n    }\n    if (route.state) {\n      params.params = {\n        ...route.params\n      };\n      params.pop = true;\n      params = params.params;\n    } else {\n      params.path = route.path;\n      params.params = route.params;\n    }\n    current = route.state;\n    config = config?.screens?.[route.name];\n    if (config?.screens && Object.keys(config.screens).length) {\n      params.pop = true;\n    }\n  }\n  if (payload?.params.screen || payload?.params.state) {\n    payload.pop = true;\n  }\n  if (!payload) {\n    return;\n  }\n\n  // Try to construct payload for a `NAVIGATE` action from the state\n  // This lets us preserve the navigation state and not lose it\n  return {\n    type: 'NAVIGATE',\n    payload\n  };\n}\nconst createNormalizedConfigItem = config => typeof config === 'object' && config != null ? {\n  initialRouteName: config.initialRouteName,\n  screens: config.screens != null ? createNormalizedConfigs(config.screens) : undefined\n} : {};\nconst createNormalizedConfigs = options => Object.entries(options).reduce((acc, [k, v]) => {\n  acc[k] = createNormalizedConfigItem(v);\n  return acc;\n}, {});\n//# sourceMappingURL=getActionFromState.js.map","\"use strict\";\n\nimport { CHILD_STATE } from \"./useRouteCache.js\";\nexport function getFocusedRouteNameFromRoute(route) {\n  // @ts-expect-error: this isn't in type definitions coz we want this private\n  const state = route[CHILD_STATE] ?? route.state;\n  const params = route.params;\n  const routeName = state ?\n  // Get the currently active route name in the nested navigator\n  state.routes[\n  // If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack\n  // The type property will only exist for rehydrated state and not for state from deep link\n  state.index ?? (typeof state.type === 'string' && state.type !== 'stack' ? 0 : state.routes.length - 1)].name :\n  // If state doesn't exist, we need to default to `screen` param if available\n  typeof params?.screen === 'string' ? params.screen : undefined;\n  return routeName;\n}\n//# sourceMappingURL=getFocusedRouteNameFromRoute.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { isRecordEqual } from \"./isRecordEqual.js\";\n/**\n * Utilities such as `getFocusedRouteNameFromRoute` need to access state.\n * So we need a way to suppress the warning for those use cases.\n * This is fine since they are internal utilities and this is not public API.\n */\nexport const CHILD_STATE = Symbol('CHILD_STATE');\n\n/**\n * Hook to cache route props for each screen in the navigator.\n * This lets add warnings and modifications to the route object but keep references between renders.\n */\nexport function useRouteCache(routes) {\n  // Cache object which holds route objects for each screen\n  const cache = React.useMemo(() => ({\n    current: new Map()\n  }), []);\n  cache.current = routes.reduce((acc, route) => {\n    const previous = cache.current.get(route.key);\n    const {\n      state,\n      ...routeWithoutState\n    } = route;\n    let proxy;\n    if (previous && isRecordEqual(previous, routeWithoutState)) {\n      // If a cached route object already exists, reuse it\n      proxy = previous;\n    } else {\n      proxy = routeWithoutState;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      // FIXME: since the state is updated with mutation, the route object cannot be frozen\n      // As a workaround, loop through the object and make the properties readonly\n      for (const key in proxy) {\n        // @ts-expect-error: this is fine since we are looping through the object\n        const value = proxy[key];\n        Object.defineProperty(proxy, key, {\n          enumerable: true,\n          configurable: true,\n          writable: false,\n          value\n        });\n      }\n    }\n    Object.defineProperty(proxy, CHILD_STATE, {\n      enumerable: false,\n      configurable: true,\n      value: state\n    });\n    acc.set(route.key, proxy);\n    return acc;\n  }, new Map());\n  return Array.from(cache.current.values());\n}\n//# sourceMappingURL=useRouteCache.js.map","\"use strict\";\n\n/**\n * Compare two records with primitive values as the content.\n */\nexport function isRecordEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  const aKeys = Object.keys(a);\n  const bKeys = Object.keys(b);\n  if (aKeys.length !== bKeys.length) {\n    return false;\n  }\n  return aKeys.every(key => Object.is(a[key], b[key]));\n}\n//# sourceMappingURL=isRecordEqual.js.map","\"use strict\";\n\nimport * as queryString from 'query-string';\nimport { getPatternParts } from \"./getPatternParts.js\";\nimport { validatePathConfig } from \"./validatePathConfig.js\";\nconst getActiveRoute = state => {\n  const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];\n  if (route.state) {\n    return getActiveRoute(route.state);\n  }\n  return route;\n};\nconst cachedNormalizedConfigs = new WeakMap();\nconst getNormalizedConfigs = options => {\n  if (!options?.screens) return {};\n  const cached = cachedNormalizedConfigs.get(options?.screens);\n  if (cached) return cached;\n  const normalizedConfigs = createNormalizedConfigs(options.screens);\n  cachedNormalizedConfigs.set(options.screens, normalizedConfigs);\n  return normalizedConfigs;\n};\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n *   {\n *     routes: [\n *       {\n *         name: 'Chat',\n *         params: { author: 'Jane', id: 42 },\n *       },\n *     ],\n *   },\n *   {\n *     screens: {\n *       Chat: {\n *         path: 'chat/:author/:id',\n *         stringify: { author: author => author.toLowerCase() }\n *       }\n *     }\n *   }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport function getPathFromState(state, options) {\n  if (state == null) {\n    throw Error(`Got '${String(state)}' for the navigation state. You must pass a valid state object.`);\n  }\n  if (options) {\n    validatePathConfig(options);\n  }\n  const configs = getNormalizedConfigs(options);\n  let path = '/';\n  let current = state;\n  const allParams = {};\n  while (current) {\n    let index = typeof current.index === 'number' ? current.index : 0;\n    let route = current.routes[index];\n    let parts;\n    let focusedParams;\n    let currentOptions = configs;\n    const focusedRoute = getActiveRoute(state);\n\n    // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n    const nestedRouteNames = [];\n    let hasNext = true;\n    while (route.name in currentOptions && hasNext) {\n      parts = currentOptions[route.name].parts;\n      nestedRouteNames.push(route.name);\n      if (route.params) {\n        const options = currentOptions[route.name];\n        const currentParams = Object.fromEntries(Object.entries(route.params).map(([key, value]) => {\n          if (value === undefined) {\n            if (options) {\n              const optional = options.parts?.find(part => part.param === key)?.optional;\n              if (optional) {\n                return null;\n              }\n            } else {\n              return null;\n            }\n          }\n          const stringify = options?.stringify?.[key] ?? String;\n          return [key, stringify(value)];\n        }).filter(entry => entry != null));\n        if (parts?.length) {\n          Object.assign(allParams, currentParams);\n        }\n        if (focusedRoute === route) {\n          // If this is the focused route, keep the params for later use\n          // We save it here since it's been stringified already\n          focusedParams = {\n            ...currentParams\n          };\n          parts\n          // eslint-disable-next-line no-loop-func\n          ?.forEach(({\n            param\n          }) => {\n            if (param) {\n              // Remove the params present in the pattern since we'll only use the rest for query string\n              if (focusedParams) {\n                // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n                delete focusedParams[param];\n              }\n            }\n          });\n        }\n      }\n\n      // If there is no `screens` property or no nested state, we return pattern\n      if (!currentOptions[route.name].screens || route.state === undefined) {\n        hasNext = false;\n      } else {\n        index = typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;\n        const nextRoute = route.state.routes[index];\n        const nestedConfig = currentOptions[route.name].screens;\n\n        // if there is config for next route name, we go deeper\n        if (nestedConfig && nextRoute.name in nestedConfig) {\n          route = nextRoute;\n          currentOptions = nestedConfig;\n        } else {\n          // If not, there is no sense in going deeper in config\n          hasNext = false;\n        }\n      }\n    }\n    if (currentOptions[route.name] !== undefined) {\n      path += parts?.map(({\n        segment,\n        param,\n        optional\n      }) => {\n        // We don't know what to show for wildcard patterns\n        // Showing the route name seems ok, though whatever we show here will be incorrect\n        // Since the page doesn't actually exist\n        if (segment === '*') {\n          return route.name;\n        }\n\n        // If the path has a pattern for a param, put the param in the path\n        if (param) {\n          const value = allParams[param];\n          if (value === undefined && optional) {\n            // Optional params without value assigned in route.params should be ignored\n            return '';\n          }\n\n          // Valid characters according to\n          // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n          return Array.from(String(value)).map(char => /[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g.test(char) ? encodeURIComponent(char) : char).join('');\n        }\n        return encodeURIComponent(segment);\n      }).join('/');\n    } else {\n      path += encodeURIComponent(route.name);\n    }\n    if (!focusedParams && focusedRoute.params) {\n      focusedParams = Object.fromEntries(Object.entries(focusedRoute.params).map(([key, value]) => [key, String(value)]));\n    }\n    if (route.state) {\n      path += '/';\n    } else if (focusedParams) {\n      for (const param in focusedParams) {\n        if (focusedParams[param] === 'undefined') {\n          // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n          delete focusedParams[param];\n        }\n      }\n      const query = queryString.stringify(focusedParams, {\n        sort: false\n      });\n      if (query) {\n        path += `?${query}`;\n      }\n    }\n    current = route.state;\n  }\n\n  // Include the root path if specified\n  if (options?.path) {\n    path = `${options.path}/${path}`;\n  }\n\n  // Remove multiple as well as trailing slashes\n  path = path.replace(/\\/+/g, '/');\n  path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n  // If path doesn't start with a slash, add it\n  // This makes sure that history.pushState will update the path correctly instead of appending\n  if (!path.startsWith('/')) {\n    path = `/${path}`;\n  }\n  return path;\n}\nconst createConfigItem = (config, parentParts) => {\n  if (typeof config === 'string') {\n    // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n    const parts = getPatternParts(config);\n    if (parentParts) {\n      return {\n        parts: [...parentParts, ...parts]\n      };\n    }\n    return {\n      parts\n    };\n  }\n  if (config.exact && config.path === undefined) {\n    throw new Error(\"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\");\n  }\n\n  // If an object is specified as the value (e.g. Foo: { ... }),\n  // It can have `path` property and `screens` prop which has nested configs\n  const parts = config.exact !== true ? [...(parentParts || []), ...(config.path ? getPatternParts(config.path) : [])] : config.path ? getPatternParts(config.path) : undefined;\n  const screens = config.screens ? createNormalizedConfigs(config.screens, parts) : undefined;\n  return {\n    parts,\n    stringify: config.stringify,\n    screens\n  };\n};\nconst createNormalizedConfigs = (options, parts) => Object.fromEntries(Object.entries(options).map(([name, c]) => {\n  const result = createConfigItem(c, parts);\n  return [name, result];\n}));\n//# sourceMappingURL=getPathFromState.js.map","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","\"use strict\";\n\n/**\n * Parse a path into an array of parts with information about each segment.\n */\nexport function getPatternParts(path) {\n  const parts = [];\n  let current = {\n    segment: ''\n  };\n  let isRegex = false;\n  let isParam = false;\n  let regexInnerParens = 0;\n\n  // One extra iteration to add the last character\n  for (let i = 0; i <= path.length; i++) {\n    const char = path[i];\n    if (char != null) {\n      current.segment += char;\n    }\n    if (char === ':') {\n      // The segment must start with a colon if it's a param\n      if (current.segment === ':') {\n        isParam = true;\n      } else if (!isRegex) {\n        throw new Error(`Encountered ':' in the middle of a segment in path: ${path}`);\n      }\n    } else if (char === '(') {\n      if (isParam) {\n        if (isRegex) {\n          // The '(' is part of the regex if we're already inside one\n          regexInnerParens++;\n        } else {\n          isRegex = true;\n        }\n      } else {\n        throw new Error(`Encountered '(' without preceding ':' in path: ${path}`);\n      }\n    } else if (char === ')') {\n      if (isParam && isRegex) {\n        if (regexInnerParens) {\n          // The ')' is part of the regex if we're already inside one\n          regexInnerParens--;\n          current.regex += char;\n        } else {\n          isRegex = false;\n          isParam = false;\n        }\n      } else {\n        throw new Error(`Encountered ')' without preceding '(' in path: ${path}`);\n      }\n    } else if (char === '?') {\n      if (current.param) {\n        isParam = false;\n        current.optional = true;\n      } else {\n        throw new Error(`Encountered '?' without preceding ':' in path: ${path}`);\n      }\n    } else if (char == null || char === '/' && !isRegex) {\n      isParam = false;\n\n      // Remove trailing slash from segment\n      current.segment = current.segment.replace(/\\/$/, '');\n      if (current.segment === '') {\n        continue;\n      }\n      if (current.param) {\n        current.param = current.param.replace(/^:/, '');\n      }\n      if (current.regex) {\n        current.regex = current.regex.replace(/^\\(/, '').replace(/\\)$/, '');\n      }\n      parts.push(current);\n      if (char == null) {\n        break;\n      }\n      current = {\n        segment: ''\n      };\n    }\n    if (isRegex) {\n      current.regex = current.regex || '';\n      current.regex += char;\n    }\n    if (isParam && !isRegex) {\n      current.param = current.param || '';\n      current.param += char;\n    }\n  }\n  if (isRegex) {\n    throw new Error(`Could not find closing ')' in path: ${path}`);\n  }\n  const params = parts.map(part => part.param).filter(Boolean);\n  for (const [index, param] of params.entries()) {\n    if (params.indexOf(param) !== index) {\n      throw new Error(`Duplicate param name '${param}' found in path: ${path}`);\n    }\n  }\n  return parts;\n}\n//# sourceMappingURL=getPatternParts.js.map","\"use strict\";\n\nconst formatToList = items => Object.entries(items).map(([key, value]) => `- ${key} (${value})`).join('\\n');\nexport function validatePathConfig(config, root = true) {\n  const validation = {\n    path: 'string',\n    initialRouteName: 'string',\n    screens: 'object',\n    ...(root ? null : {\n      alias: 'array',\n      exact: 'boolean',\n      stringify: 'object',\n      parse: 'object'\n    })\n  };\n  if (typeof config !== 'object' || config === null) {\n    throw new Error(`Expected the configuration to be an object, but got ${JSON.stringify(config)}.`);\n  }\n  const validationErrors = Object.fromEntries(Object.keys(config).map(key => {\n    if (key in validation) {\n      const type = validation[key];\n      // @ts-expect-error: we know the key exists\n      const value = config[key];\n      if (value !== undefined) {\n        if (type === 'array') {\n          if (!Array.isArray(value)) {\n            return [key, `expected 'Array', got '${typeof value}'`];\n          }\n        } else if (typeof value !== type) {\n          return [key, `expected '${type}', got '${typeof value}'`];\n        }\n      }\n    } else {\n      return [key, 'extraneous'];\n    }\n    return null;\n  }).filter(Boolean));\n  if (Object.keys(validationErrors).length) {\n    throw new Error(`Found invalid properties in the configuration:\\n${formatToList(validationErrors)}\\n\\nYou can only specify the following properties:\\n${formatToList(validation)}\\n\\nIf you want to specify configuration for screens, you need to specify them under a 'screens' property.\\n\\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`);\n  }\n  if (root && 'path' in config && typeof config.path === 'string' && config.path.includes(':')) {\n    throw new Error(`Found invalid path '${config.path}'. The 'path' in the top-level configuration cannot contain patterns for params.`);\n  }\n  if ('screens' in config && config.screens) {\n    Object.entries(config.screens).forEach(([_, value]) => {\n      if (typeof value !== 'string') {\n        validatePathConfig(value, false);\n      }\n    });\n  }\n}\n//# sourceMappingURL=validatePathConfig.js.map","\"use strict\";\n\nimport escape from 'escape-string-regexp';\nimport * as queryString from 'query-string';\nimport { arrayStartsWith } from \"./arrayStartsWith.js\";\nimport { findFocusedRoute } from \"./findFocusedRoute.js\";\nimport { getPatternParts } from \"./getPatternParts.js\";\nimport { isArrayEqual } from \"./isArrayEqual.js\";\nimport { validatePathConfig } from \"./validatePathConfig.js\";\n/**\n * Utility to parse a path string to initial state object accepted by the container.\n * This is useful for deep linking when we need to handle the incoming URL.\n *\n * @example\n * ```js\n * getStateFromPath(\n *   '/chat/jane/42',\n *   {\n *     screens: {\n *       Chat: {\n *         path: 'chat/:author/:id',\n *         parse: { id: Number }\n *       }\n *     }\n *   }\n * )\n * ```\n * @param path Path string to parse and convert, e.g. /foo/bar?count=42.\n * @param options Extra options to fine-tune how to parse the path.\n */\nexport function getStateFromPath(path, options) {\n  const {\n    initialRoutes,\n    configs\n  } = getConfigResources(options);\n  const screens = options?.screens;\n  let remaining = path.replace(/\\/+/g, '/') // Replace multiple slash (//) with single ones\n  .replace(/^\\//, '') // Remove extra leading slash\n  .replace(/\\?.*$/, ''); // Remove query params which we will handle later\n\n  // Make sure there is a trailing slash\n  remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;\n  const prefix = options?.path?.replace(/^\\//, ''); // Remove extra leading slash\n\n  if (prefix) {\n    // Make sure there is a trailing slash\n    const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`;\n\n    // If the path doesn't start with the prefix, it's not a match\n    if (!remaining.startsWith(normalizedPrefix)) {\n      return undefined;\n    }\n\n    // Remove the prefix from the path\n    remaining = remaining.replace(normalizedPrefix, '');\n  }\n  if (screens === undefined) {\n    // When no config is specified, use the path segments as route names\n    const routes = remaining.split('/').filter(Boolean).map(segment => {\n      const name = decodeURIComponent(segment);\n      return {\n        name\n      };\n    });\n    if (routes.length) {\n      return createNestedStateObject(path, routes, initialRoutes);\n    }\n    return undefined;\n  }\n  if (remaining === '/') {\n    // We need to add special handling of empty path so navigation to empty path also works\n    // When handling empty path, we should only look at the root level config\n    const match = configs.find(config => config.segments.join('/') === '');\n    if (match) {\n      return createNestedStateObject(path, match.routeNames.map(name => ({\n        name\n      })), initialRoutes, configs);\n    }\n    return undefined;\n  }\n  let result;\n  let current;\n\n  // We match the whole path against the regex instead of segments\n  // This makes sure matches such as wildcard will catch any unmatched routes, even if nested\n  const {\n    routes,\n    remainingPath\n  } = matchAgainstConfigs(remaining, configs);\n  if (routes !== undefined) {\n    // This will always be empty if full path matched\n    current = createNestedStateObject(path, routes, initialRoutes, configs);\n    remaining = remainingPath;\n    result = current;\n  }\n  if (current == null || result == null) {\n    return undefined;\n  }\n  return result;\n}\n\n/**\n * Reference to the last used config resources. This is used to avoid recomputing the config resources when the options are the same.\n */\nconst cachedConfigResources = new WeakMap();\nfunction getConfigResources(options) {\n  if (!options) return prepareConfigResources();\n  const cached = cachedConfigResources.get(options);\n  if (cached) return cached;\n  const resources = prepareConfigResources(options);\n  cachedConfigResources.set(options, resources);\n  return resources;\n}\nfunction prepareConfigResources(options) {\n  if (options) {\n    validatePathConfig(options);\n  }\n  const initialRoutes = getInitialRoutes(options);\n  const configs = getSortedNormalizedConfigs(initialRoutes, options?.screens);\n  checkForDuplicatedConfigs(configs);\n  const configWithRegexes = getConfigsWithRegexes(configs);\n  return {\n    initialRoutes,\n    configs,\n    configWithRegexes\n  };\n}\nfunction getInitialRoutes(options) {\n  const initialRoutes = [];\n  if (options?.initialRouteName) {\n    initialRoutes.push({\n      initialRouteName: options.initialRouteName,\n      parentScreens: []\n    });\n  }\n  return initialRoutes;\n}\nfunction getSortedNormalizedConfigs(initialRoutes, screens = {}) {\n  // Create a normalized configs array which will be easier to use\n  return [].concat(...Object.keys(screens).map(key => createNormalizedConfigs(key, screens, initialRoutes, [], [], []))).sort((a, b) => {\n    // Sort config from most specific to least specific:\n    // - more segments\n    // - static segments\n    // - params with regex\n    // - regular params\n    // - wildcard\n\n    // If 2 patterns are same, move the one with less route names up\n    // This is an error state, so it's only useful for consistent error messages\n    if (isArrayEqual(a.segments, b.segments)) {\n      return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));\n    }\n\n    // If one of the patterns starts with the other, it's more exhaustive\n    // So move it up\n    if (arrayStartsWith(a.segments, b.segments)) {\n      return -1;\n    }\n    if (arrayStartsWith(b.segments, a.segments)) {\n      return 1;\n    }\n    for (let i = 0; i < Math.max(a.segments.length, b.segments.length); i++) {\n      // if b is longer, b gets higher priority\n      if (a.segments[i] == null) {\n        return 1;\n      }\n\n      // if a is longer, a gets higher priority\n      if (b.segments[i] == null) {\n        return -1;\n      }\n      const aWildCard = a.segments[i] === '*';\n      const bWildCard = b.segments[i] === '*';\n      const aParam = a.segments[i].startsWith(':');\n      const bParam = b.segments[i].startsWith(':');\n      const aRegex = aParam && a.segments[i].includes('(');\n      const bRegex = bParam && b.segments[i].includes('(');\n\n      // if both are wildcard or regex, we compare next component\n      if (aWildCard && bWildCard || aRegex && bRegex) {\n        continue;\n      }\n\n      // if only a is wildcard, b gets higher priority\n      if (aWildCard && !bWildCard) {\n        return 1;\n      }\n\n      // if only b is wildcard, a gets higher priority\n      if (bWildCard && !aWildCard) {\n        return -1;\n      }\n\n      // If only a has a param, b gets higher priority\n      if (aParam && !bParam) {\n        return 1;\n      }\n\n      // If only b has a param, a gets higher priority\n      if (bParam && !aParam) {\n        return -1;\n      }\n\n      // if only a has regex, a gets higher priority\n      if (aRegex && !bRegex) {\n        return -1;\n      }\n\n      // if only b has regex, b gets higher priority\n      if (bRegex && !aRegex) {\n        return 1;\n      }\n    }\n    return a.segments.length - b.segments.length;\n  });\n}\nfunction checkForDuplicatedConfigs(configs) {\n  // Check for duplicate patterns in the config\n  configs.reduce((acc, config) => {\n    const pattern = config.segments.join('/');\n    if (acc[pattern]) {\n      const a = acc[pattern].routeNames;\n      const b = config.routeNames;\n\n      // It's not a problem if the path string omitted from a inner most screen\n      // For example, it's ok if a path resolves to `A > B > C` or `A > B`\n      const intersects = a.length > b.length ? b.every((it, i) => a[i] === it) : a.every((it, i) => b[i] === it);\n      if (!intersects) {\n        throw new Error(`Found conflicting screens with the same pattern. The pattern '${pattern}' resolves to both '${a.join(' > ')}' and '${b.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen.`);\n      }\n    }\n    return Object.assign(acc, {\n      [pattern]: config\n    });\n  }, {});\n}\nfunction getConfigsWithRegexes(configs) {\n  return configs.map(c => ({\n    ...c,\n    // Add `$` to the regex to make sure it matches till end of the path and not just beginning\n    regex: c.regex ? new RegExp(c.regex.source + '$') : undefined\n  }));\n}\nconst matchAgainstConfigs = (remaining, configs) => {\n  let routes;\n  let remainingPath = remaining;\n\n  // Go through all configs, and see if the next path segment matches our regex\n  for (const config of configs) {\n    if (!config.regex) {\n      continue;\n    }\n    const match = remainingPath.match(config.regex);\n\n    // If our regex matches, we need to extract params from the path\n    if (match) {\n      routes = config.routeNames.map(routeName => {\n        const routeConfig = configs.find(c => {\n          // Check matching name AND pattern in case same screen is used at different levels in config\n          return c.screen === routeName && arrayStartsWith(config.segments, c.segments);\n        });\n        const params = routeConfig && match.groups ? Object.fromEntries(Object.entries(match.groups).map(([key, value]) => {\n          const index = Number(key.replace('param_', ''));\n          const param = routeConfig.params.find(it => it.index === index);\n          if (param?.screen === routeName && param?.name) {\n            return [param.name, value];\n          }\n          return null;\n        }).filter(it => it != null).map(([key, value]) => {\n          if (value == null) {\n            return [key, undefined];\n          }\n          const decoded = decodeURIComponent(value);\n          const parsed = routeConfig.parse?.[key] ? routeConfig.parse[key](decoded) : decoded;\n          return [key, parsed];\n        })) : undefined;\n        if (params && Object.keys(params).length) {\n          return {\n            name: routeName,\n            params\n          };\n        }\n        return {\n          name: routeName\n        };\n      });\n      remainingPath = remainingPath.replace(match[0], '');\n      break;\n    }\n  }\n  return {\n    routes,\n    remainingPath\n  };\n};\nconst createNormalizedConfigs = (screen, routeConfig, initials, paths, parentScreens, routeNames) => {\n  const configs = [];\n  routeNames.push(screen);\n  parentScreens.push(screen);\n  const config = routeConfig[screen];\n  if (typeof config === 'string') {\n    paths.push({\n      screen,\n      path: config\n    });\n    configs.push(createConfigItem(screen, [...routeNames], [...paths]));\n  } else if (typeof config === 'object') {\n    // if an object is specified as the value (e.g. Foo: { ... }),\n    // it can have `path` property and\n    // it could have `screens` prop which has nested configs\n    if (typeof config.path === 'string') {\n      if (config.exact && config.path == null) {\n        throw new Error(`Screen '${screen}' doesn't specify a 'path'. A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. \\`path: ''\\`.`);\n      }\n\n      // We should add alias configs after the main config\n      // So unless they are more specific, main config will be matched first\n      const aliasConfigs = [];\n      if (config.alias) {\n        for (const alias of config.alias) {\n          if (typeof alias === 'string') {\n            aliasConfigs.push(createConfigItem(screen, [...routeNames], [...paths, {\n              screen,\n              path: alias\n            }], config.parse));\n          } else if (typeof alias === 'object') {\n            aliasConfigs.push(createConfigItem(screen, [...routeNames], alias.exact ? [{\n              screen,\n              path: alias.path\n            }] : [...paths, {\n              screen,\n              path: alias.path\n            }], alias.parse));\n          }\n        }\n      }\n      if (config.exact) {\n        // If it's an exact path, we don't need to keep track of the parent screens\n        // So we can clear it\n        paths.length = 0;\n      }\n      paths.push({\n        screen,\n        path: config.path\n      });\n      configs.push(createConfigItem(screen, [...routeNames], [...paths], config.parse));\n      configs.push(...aliasConfigs);\n    }\n    if (typeof config !== 'string' && typeof config.path !== 'string' && config.alias?.length) {\n      throw new Error(`Screen '${screen}' doesn't specify a 'path'. A 'path' needs to be specified in order to use 'alias'.`);\n    }\n    if (config.screens) {\n      // property `initialRouteName` without `screens` has no purpose\n      if (config.initialRouteName) {\n        initials.push({\n          initialRouteName: config.initialRouteName,\n          parentScreens\n        });\n      }\n      Object.keys(config.screens).forEach(nestedConfig => {\n        const result = createNormalizedConfigs(nestedConfig, config.screens, initials, [...paths], [...parentScreens], routeNames);\n        configs.push(...result);\n      });\n    }\n  }\n  routeNames.pop();\n  return configs;\n};\nconst createConfigItem = (screen, routeNames, paths, parse) => {\n  const parts = [];\n\n  // Parse the path string into parts for easier matching\n  for (const {\n    screen,\n    path\n  } of paths) {\n    parts.push(...getPatternParts(path).map(part => ({\n      ...part,\n      screen\n    })));\n  }\n  const regex = parts.length ? new RegExp(`^(${parts.map((it, i) => {\n    if (it.param) {\n      const reg = it.regex || '[^/]+';\n      return `(((?<param_${i}>${reg})\\\\/)${it.optional ? '?' : ''})`;\n    }\n    return `${it.segment === '*' ? '.*' : escape(it.segment)}\\\\/`;\n  }).join('')})$`) : undefined;\n  const segments = parts.map(it => it.segment);\n  const params = parts.map((it, i) => it.param ? {\n    index: i,\n    screen: it.screen,\n    name: it.param\n  } : null).filter(it => it != null);\n  return {\n    screen,\n    regex,\n    segments,\n    params,\n    routeNames,\n    parse\n  };\n};\nconst findParseConfigForRoute = (routeName, flatConfig) => {\n  for (const config of flatConfig) {\n    if (routeName === config.routeNames[config.routeNames.length - 1]) {\n      return config.parse;\n    }\n  }\n  return undefined;\n};\n\n// Try to find an initial route connected with the one passed\nconst findInitialRoute = (routeName, parentScreens, initialRoutes) => {\n  for (const config of initialRoutes) {\n    if (parentScreens.length === config.parentScreens.length) {\n      let sameParents = true;\n      for (let i = 0; i < parentScreens.length; i++) {\n        if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {\n          sameParents = false;\n          break;\n        }\n      }\n      if (sameParents) {\n        return routeName !== config.initialRouteName ? config.initialRouteName : undefined;\n      }\n    }\n  }\n  return undefined;\n};\n\n// returns state object with values depending on whether\n// it is the end of state and if there is initialRoute for this level\nconst createStateObject = (initialRoute, route, isEmpty) => {\n  if (isEmpty) {\n    if (initialRoute) {\n      return {\n        index: 1,\n        routes: [{\n          name: initialRoute\n        }, route]\n      };\n    } else {\n      return {\n        routes: [route]\n      };\n    }\n  } else {\n    if (initialRoute) {\n      return {\n        index: 1,\n        routes: [{\n          name: initialRoute\n        }, {\n          ...route,\n          state: {\n            routes: []\n          }\n        }]\n      };\n    } else {\n      return {\n        routes: [{\n          ...route,\n          state: {\n            routes: []\n          }\n        }]\n      };\n    }\n  }\n};\nconst createNestedStateObject = (path, routes, initialRoutes, flatConfig) => {\n  let route = routes.shift();\n  const parentScreens = [];\n  let initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n  parentScreens.push(route.name);\n  const state = createStateObject(initialRoute, route, routes.length === 0);\n  if (routes.length > 0) {\n    let nestedState = state;\n    while (route = routes.shift()) {\n      initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n      const nestedStateIndex = nestedState.index || nestedState.routes.length - 1;\n      nestedState.routes[nestedStateIndex].state = createStateObject(initialRoute, route, routes.length === 0);\n      if (routes.length > 0) {\n        nestedState = nestedState.routes[nestedStateIndex].state;\n      }\n      parentScreens.push(route.name);\n    }\n  }\n  route = findFocusedRoute(state);\n  route.path = path.replace(/\\/$/, '');\n  const params = parseQueryParams(path, flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined);\n  if (params) {\n    route.params = {\n      ...route.params,\n      ...params\n    };\n  }\n  return state;\n};\nconst parseQueryParams = (path, parseConfig) => {\n  const query = path.split('?')[1];\n  const params = queryString.parse(query);\n  if (parseConfig) {\n    Object.keys(params).forEach(name => {\n      if (Object.hasOwnProperty.call(parseConfig, name) && typeof params[name] === 'string') {\n        params[name] = parseConfig[name](params[name]);\n      }\n    });\n  }\n  return Object.keys(params).length ? params : undefined;\n};\n//# sourceMappingURL=getStateFromPath.js.map","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","\"use strict\";\n\n/**\n * Compare two arrays to check if the first array starts with the second array.\n */\nexport function arrayStartsWith(array, start) {\n  if (start.length > array.length) {\n    return false;\n  }\n  return start.every((it, index) => it === array[index]);\n}\n//# sourceMappingURL=arrayStartsWith.js.map","\"use strict\";\n\n/**\n * Compare two arrays with primitive values as the content.\n * We need to make sure that both values and order match.\n */\nexport function isArrayEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (a.length !== b.length) {\n    return false;\n  }\n  return a.every((it, index) => Object.is(it, b[index]));\n}\n//# sourceMappingURL=isArrayEqual.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Context which holds the navigation helpers of the parent navigator.\n * Navigators should use this context in their view component.\n */\nexport const NavigationHelpersContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=NavigationHelpersContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationContext } from \"./NavigationContext.js\";\nimport { NavigationIndependentTreeContext } from \"./NavigationIndependentTreeContext.js\";\nimport { NavigationRouteContext } from \"./NavigationProvider.js\";\nimport { IsFocusedContext } from \"./useIsFocused.js\";\n\n/**\n * Component to make the child navigation container independent of parent containers.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function NavigationIndependentTree({\n  children\n}) {\n  return (\n    /*#__PURE__*/\n    // We need to clear any existing contexts for nested independent container to work correctly\n    _jsx(NavigationRouteContext.Provider, {\n      value: undefined,\n      children: /*#__PURE__*/_jsx(NavigationContext.Provider, {\n        value: undefined,\n        children: /*#__PURE__*/_jsx(IsFocusedContext.Provider, {\n          value: undefined,\n          children: /*#__PURE__*/_jsx(NavigationIndependentTreeContext.Provider, {\n            value: true,\n            children: children\n          })\n        })\n      })\n    })\n  );\n}\n//# sourceMappingURL=NavigationIndependentTree.js.map","\"use strict\";\n\nimport * as React from 'react';\n\n/**\n * Context with additional metadata to pass to child navigator in a screen.\n * For example, child native stack to know it's inside native tabs.\n * So it doesn't implement features such as `popToTop` that are handled by native tabs.\n *\n * Consumers should not make any assumptions about the shape of the object.\n * It can be different depending on the navigator and may change without notice.\n * This is not intended to be used by application code.\n */\nexport const NavigationMetaContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=NavigationMetaContext.js.map","\"use strict\";\n\nimport * as React from 'react';\n\n/**\n * A type of an object that have a route key as an object key\n * and a value whether to prevent that route.\n */\n\nexport const PreventRemoveContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=PreventRemoveContext.js.map","\"use strict\";\n\nimport { nanoid } from 'nanoid/non-secure';\nimport * as React from 'react';\nimport useLatestCallback from 'use-latest-callback';\nimport { NavigationHelpersContext } from \"./NavigationHelpersContext.js\";\nimport { NavigationRouteContext } from \"./NavigationProvider.js\";\nimport { PreventRemoveContext } from \"./PreventRemoveContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Util function to transform map of prevented routes to a simpler object.\n */\nconst transformPreventedRoutes = preventedRoutesMap => {\n  const preventedRoutesToTransform = [...preventedRoutesMap.values()];\n  const preventedRoutes = preventedRoutesToTransform.reduce((acc, {\n    routeKey,\n    preventRemove\n  }) => {\n    acc[routeKey] = {\n      preventRemove: acc[routeKey]?.preventRemove || preventRemove\n    };\n    return acc;\n  }, {});\n  return preventedRoutes;\n};\n\n/**\n * Component used for managing which routes have to be prevented from removal in native-stack.\n */\nexport function PreventRemoveProvider({\n  children\n}) {\n  const [parentId] = React.useState(() => nanoid());\n  const [preventedRoutesMap, setPreventedRoutesMap] = React.useState(() => new Map());\n  const navigation = React.useContext(NavigationHelpersContext);\n  const route = React.useContext(NavigationRouteContext);\n  const preventRemoveContextValue = React.useContext(PreventRemoveContext);\n  // take `setPreventRemove` from parent context - if exist it means we're in a nested context\n  const setParentPrevented = preventRemoveContextValue?.setPreventRemove;\n  const setPreventRemove = useLatestCallback((id, routeKey, preventRemove) => {\n    if (preventRemove && (navigation == null || navigation?.getState().routes.every(route => route.key !== routeKey))) {\n      throw new Error(`Couldn't find a route with the key ${routeKey}. Is your component inside NavigationContent?`);\n    }\n    setPreventedRoutesMap(prevPrevented => {\n      // values haven't changed - do nothing\n      if (routeKey === prevPrevented.get(id)?.routeKey && preventRemove === prevPrevented.get(id)?.preventRemove) {\n        return prevPrevented;\n      }\n      const nextPrevented = new Map(prevPrevented);\n      if (preventRemove) {\n        nextPrevented.set(id, {\n          routeKey,\n          preventRemove\n        });\n      } else {\n        nextPrevented.delete(id);\n      }\n      return nextPrevented;\n    });\n  });\n  const isPrevented = [...preventedRoutesMap.values()].some(({\n    preventRemove\n  }) => preventRemove);\n  React.useEffect(() => {\n    if (route?.key !== undefined && setParentPrevented !== undefined) {\n      // when route is defined (and setParentPrevented) it means we're in a nested stack\n      // route.key then will be the route key of parent\n      setParentPrevented(parentId, route.key, isPrevented);\n      return () => {\n        setParentPrevented(parentId, route.key, false);\n      };\n    }\n    return;\n  }, [parentId, isPrevented, route?.key, setParentPrevented]);\n  const value = React.useMemo(() => ({\n    setPreventRemove,\n    preventedRoutes: transformPreventedRoutes(preventedRoutesMap)\n  }), [setPreventRemove, preventedRoutesMap]);\n  return /*#__PURE__*/_jsx(PreventRemoveContext.Provider, {\n    value: value,\n    children: children\n  });\n}\n//# sourceMappingURL=PreventRemoveProvider.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { ThemeContext } from \"./ThemeContext.js\";\nexport function useTheme() {\n  const theme = React.useContext(ThemeContext);\n  if (theme == null) {\n    throw new Error(\"Couldn't find a theme. Is your component inside NavigationContainer or does it have a theme?\");\n  }\n  return theme;\n}\n//# sourceMappingURL=useTheme.js.map","\"use strict\";\n\nexport class PrivateValueStore {}\n//# sourceMappingURL=types.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { useNavigation } from \"./useNavigation.js\";\n/**\n * Hook to run an effect in a focused screen, similar to `React.useEffect`.\n * This can be used to perform side-effects such as fetching data or subscribing to events.\n * The passed callback should be wrapped in `React.useCallback` to avoid running the effect too often.\n *\n * @param callback Memoized callback containing the effect, should optionally return a cleanup function.\n */\nexport function useFocusEffect(effect) {\n  const navigation = useNavigation();\n\n  // eslint-disable-next-line prefer-rest-params\n  if (arguments[1] !== undefined) {\n    const message = \"You passed a second argument to 'useFocusEffect', but it only accepts one argument. \" + \"If you want to pass a dependency array, you can use 'React.useCallback':\\n\\n\" + 'useFocusEffect(\\n' + '  React.useCallback(() => {\\n' + '    // Your code here\\n' + '  }, [depA, depB])\\n' + ');\\n\\n' + 'See usage guide: https://reactnavigation.org/docs/use-focus-effect';\n    console.error(message);\n  }\n  React.useEffect(() => {\n    let isFocused = false;\n    let cleanup;\n    const callback = () => {\n      const destroy = effect();\n      if (destroy === undefined || typeof destroy === 'function') {\n        return destroy;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        let message = 'An effect function must not return anything besides a function, which is used for clean-up.';\n        if (destroy === null) {\n          message += \" You returned 'null'. If your effect does not require clean-up, return 'undefined' (or nothing).\";\n        } else if (typeof destroy.then === 'function') {\n          message += \"\\n\\nIt looks like you wrote 'useFocusEffect(async () => ...)' or returned a Promise. \" + 'Instead, write the async function inside your effect ' + 'and call it immediately:\\n\\n' + 'useFocusEffect(\\n' + '  React.useCallback(() => {\\n' + '    async function fetchData() {\\n' + '      // You can await here\\n' + '      const response = await MyAPI.getData(someId);\\n' + '      // ...\\n' + '    }\\n\\n' + '    fetchData();\\n' + '  }, [someId])\\n' + ');\\n\\n' + 'See usage guide: https://reactnavigation.org/docs/use-focus-effect';\n        } else {\n          message += ` You returned '${JSON.stringify(destroy)}'.`;\n        }\n        console.error(message);\n      }\n    };\n\n    // We need to run the effect on initial render/dep changes if the screen is focused\n    if (navigation.isFocused()) {\n      cleanup = callback();\n      isFocused = true;\n    }\n    const unsubscribeFocus = navigation.addListener('focus', () => {\n      // If callback was already called for focus, avoid calling it again\n      // The focus event may also fire on initial render, so we guard against running the effect twice\n      if (isFocused) {\n        return;\n      }\n      if (cleanup !== undefined) {\n        cleanup();\n      }\n      cleanup = callback();\n      isFocused = true;\n    });\n    const unsubscribeBlur = navigation.addListener('blur', () => {\n      if (cleanup !== undefined) {\n        cleanup();\n      }\n      cleanup = undefined;\n      isFocused = false;\n    });\n    return () => {\n      if (cleanup !== undefined) {\n        cleanup();\n      }\n      unsubscribeFocus();\n      unsubscribeBlur();\n    };\n  }, [effect, navigation]);\n}\n//# sourceMappingURL=useFocusEffect.js.map","\"use strict\";\n\nimport { CommonActions } from '@react-navigation/routers';\nimport deepEqual from 'fast-deep-equal';\nimport * as React from 'react';\nimport { isValidElementType } from 'react-is';\nimport useLatestCallback from 'use-latest-callback';\nimport { ConsumedParamsContext } from \"./ConsumedParamsContext.js\";\nimport { deepFreeze } from \"./deepFreeze.js\";\nimport { Group } from \"./Group.js\";\nimport { isArrayEqual } from \"./isArrayEqual.js\";\nimport { isRecordEqual } from \"./isRecordEqual.js\";\nimport { NavigationHelpersContext } from \"./NavigationHelpersContext.js\";\nimport { NavigationMetaContext } from \"./NavigationMetaContext.js\";\nimport { NavigationRouteContext } from \"./NavigationProvider.js\";\nimport { NavigationStateContext } from \"./NavigationStateContext.js\";\nimport { PreventRemoveProvider } from \"./PreventRemoveProvider.js\";\nimport { Screen } from \"./Screen.js\";\nimport { PrivateValueStore } from \"./types.js\";\nimport { UnhandledActionContext } from \"./UnhandledActionContext.js\";\nimport { useChildListeners } from \"./useChildListeners.js\";\nimport { useClientLayoutEffect } from \"./useClientLayoutEffect.js\";\nimport { useComponent } from \"./useComponent.js\";\nimport { useCurrentRender } from \"./useCurrentRender.js\";\nimport { useDescriptors } from \"./useDescriptors.js\";\nimport { useEventEmitter } from \"./useEventEmitter.js\";\nimport { useFocusedListenersChildrenAdapter } from \"./useFocusedListenersChildrenAdapter.js\";\nimport { useFocusEvents } from \"./useFocusEvents.js\";\nimport { FocusedRouteKeyContext } from \"./useIsFocused.js\";\nimport { useKeyedChildListeners } from \"./useKeyedChildListeners.js\";\nimport { useLazyValue } from \"./useLazyValue.js\";\nimport { useNavigationHelpers } from \"./useNavigationHelpers.js\";\nimport { NavigationStateListenerProvider } from \"./useNavigationState.js\";\nimport { useOnAction } from \"./useOnAction.js\";\nimport { useOnGetState } from \"./useOnGetState.js\";\nimport { useOnRouteFocus } from \"./useOnRouteFocus.js\";\nimport { useRegisterNavigator } from \"./useRegisterNavigator.js\";\nimport { useScheduleUpdate } from \"./useScheduleUpdate.js\";\n\n// This is to make TypeScript compiler happy\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nPrivateValueStore;\nconst isScreen = child => {\n  return child.type === Screen;\n};\nconst isGroup = child => {\n  return child.type === React.Fragment || child.type === Group;\n};\nconst isValidKey = key => key === undefined || typeof key === 'string' && key !== '';\n\n/**\n * Extract route config object from React children elements.\n *\n * @param children React Elements to extract the config from.\n */\nconst getRouteConfigsFromChildren = (children, groupKey, groupOptions, groupLayout) => {\n  const configs = React.Children.toArray(children).reduce((acc, child) => {\n    if (/*#__PURE__*/React.isValidElement(child)) {\n      if (isScreen(child)) {\n        // We can only extract the config from `Screen` elements\n        // If something else was rendered, it's probably a bug\n\n        if (typeof child.props !== 'object' || child.props === null) {\n          throw new Error(`Got an invalid element for screen.`);\n        }\n        if (typeof child.props.name !== 'string' || child.props.name === '') {\n          throw new Error(`Got an invalid name (${JSON.stringify(child.props.name)}) for the screen. It must be a non-empty string.`);\n        }\n        if (child.props.navigationKey !== undefined && (typeof child.props.navigationKey !== 'string' || child.props.navigationKey === '')) {\n          throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the screen '${child.props.name}'. It must be a non-empty string or 'undefined'.`);\n        }\n        acc.push({\n          keys: [groupKey, child.props.navigationKey],\n          options: groupOptions,\n          layout: groupLayout,\n          props: child.props\n        });\n        return acc;\n      }\n      if (isGroup(child)) {\n        if (!isValidKey(child.props.navigationKey)) {\n          throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the group. It must be a non-empty string or 'undefined'.`);\n        }\n\n        // When we encounter a fragment or group, we need to dive into its children to extract the configs\n        // This is handy to conditionally define a group of screens\n        acc.push(...getRouteConfigsFromChildren(child.props.children, child.props.navigationKey,\n        // FIXME\n        // @ts-expect-error: add validation\n        child.type !== Group ? groupOptions : groupOptions != null ? [...groupOptions, child.props.screenOptions] : [child.props.screenOptions], typeof child.props.screenLayout === 'function' ? child.props.screenLayout : groupLayout));\n        return acc;\n      }\n    }\n    throw new Error(`A navigator can only contain 'Screen', 'Group' or 'React.Fragment' as its direct children (found ${/*#__PURE__*/React.isValidElement(child) ? `'${typeof child.type === 'string' ? child.type : child.type?.name}'${child.props != null && typeof child.props === 'object' && 'name' in child.props && child.props?.name ? ` for the screen '${child.props.name}'` : ''}` : typeof child === 'object' ? JSON.stringify(child) : `'${String(child)}'`}). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.`);\n  }, []);\n  if (process.env.NODE_ENV !== 'production') {\n    configs.forEach(config => {\n      const {\n        name,\n        children,\n        component,\n        getComponent\n      } = config.props;\n      if (children != null || component !== undefined || getComponent !== undefined) {\n        if (children != null && component !== undefined) {\n          throw new Error(`Got both 'component' and 'children' props for the screen '${name}'. You must pass only one of them.`);\n        }\n        if (children != null && getComponent !== undefined) {\n          throw new Error(`Got both 'getComponent' and 'children' props for the screen '${name}'. You must pass only one of them.`);\n        }\n        if (component !== undefined && getComponent !== undefined) {\n          throw new Error(`Got both 'component' and 'getComponent' props for the screen '${name}'. You must pass only one of them.`);\n        }\n        if (children != null && typeof children !== 'function') {\n          throw new Error(`Got an invalid value for 'children' prop for the screen '${name}'. It must be a function returning a React Element.`);\n        }\n        if (component !== undefined && !isValidElementType(component)) {\n          throw new Error(`Got an invalid value for 'component' prop for the screen '${name}'. It must be a valid React Component.`);\n        }\n        if (getComponent !== undefined && typeof getComponent !== 'function') {\n          throw new Error(`Got an invalid value for 'getComponent' prop for the screen '${name}'. It must be a function returning a React Component.`);\n        }\n        if (typeof component === 'function') {\n          if (component.name === 'component') {\n            // Inline anonymous functions passed in the `component` prop will have the name of the prop\n            // It's relatively safe to assume that it's not a component since it should also have PascalCase name\n            // We won't catch all scenarios here, but this should catch a good chunk of incorrect use.\n            console.warn(`Looks like you're passing an inline function for 'component' prop for the screen '${name}' (e.g. component={() => <SomeComponent />}). Passing an inline function will cause the component state to be lost on re-render and cause perf issues since it's re-created every render. You can pass the function as children to 'Screen' instead to achieve the desired behaviour.`);\n          } else if (/^[a-z]/.test(component.name)) {\n            console.warn(`Got a component with the name '${component.name}' for the screen '${name}'. React Components must start with an uppercase letter. If you're passing a regular function and not a component, pass it as children to 'Screen' instead. Otherwise capitalize your component's name.`);\n          }\n        }\n      } else {\n        throw new Error(`Couldn't find a 'component', 'getComponent' or 'children' prop for the screen '${name}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`);\n      }\n    });\n  }\n  return configs;\n};\nconst getStateFromParams = params => {\n  if (params?.state != null) {\n    return params.state;\n  } else if (typeof params?.screen === 'string' && params?.initial !== false) {\n    return {\n      routes: [{\n        name: params.screen,\n        params: params.params,\n        path: params.path\n      }]\n    };\n  }\n  return undefined;\n};\n\n/**\n * Hook for building navigators.\n *\n * @param createRouter Factory method which returns router object.\n * @param options Options object containing `children` and additional options for the router.\n * @returns An object containing `state`, `navigation`, `descriptors` objects.\n */\nexport function useNavigationBuilder(createRouter, options) {\n  const navigatorKey = useRegisterNavigator();\n  const route = React.useContext(NavigationRouteContext);\n  const consumedParams = React.useContext(ConsumedParamsContext);\n  const isNestedParamsConsumed = typeof route?.params === 'object' && route.params != null ? consumedParams?.isConsumed(route.params) : false;\n  const {\n    children,\n    layout,\n    screenOptions,\n    screenLayout,\n    screenListeners,\n    UNSTABLE_router,\n    ...rest\n  } = options;\n  const routeConfigs = getRouteConfigsFromChildren(children);\n  const router = useLazyValue(() => {\n    if (rest.initialRouteName != null && routeConfigs.every(config => config.props.name !== rest.initialRouteName)) {\n      throw new Error(`Couldn't find a screen named '${rest.initialRouteName}' to use as 'initialRouteName'.`);\n    }\n    const original = createRouter(rest);\n    if (UNSTABLE_router != null) {\n      const overrides = UNSTABLE_router(original);\n      return {\n        ...original,\n        ...overrides\n      };\n    }\n    return original;\n  });\n  const screens = routeConfigs.reduce((acc, config) => {\n    if (config.props.name in acc) {\n      throw new Error(`A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${config.props.name}')`);\n    }\n    acc[config.props.name] = config;\n    return acc;\n  }, {});\n  const routeNames = routeConfigs.map(config => config.props.name);\n  const routeKeyList = routeNames.reduce((acc, curr) => {\n    acc[curr] = screens[curr].keys.map(key => key ?? '').join(':');\n    return acc;\n  }, {});\n  const routeParamList = routeNames.reduce((acc, curr) => {\n    const {\n      initialParams\n    } = screens[curr].props;\n    acc[curr] = initialParams;\n    return acc;\n  }, {});\n  const routeGetIdList = routeNames.reduce((acc, curr) => Object.assign(acc, {\n    [curr]: screens[curr].props.getId\n  }), {});\n  if (!routeNames.length) {\n    throw new Error(\"Couldn't find any screens for the navigator. Have you defined any screens as its children?\");\n  }\n  const isStateValid = React.useCallback(state => state.type === undefined || state.type === router.type, [router.type]);\n  const isStateInitialized = React.useCallback(state => state !== undefined && state.stale === false && isStateValid(state), [isStateValid]);\n  const doesStateHaveOnlyInvalidRoutes = React.useCallback(state => state.routes.every(r => !routeNames.includes(r.name)), [routeNames]);\n  const {\n    state: currentState,\n    getState: getCurrentState,\n    setState: setCurrentState,\n    setKey,\n    getKey,\n    getIsInitial\n  } = React.useContext(NavigationStateContext);\n  const stateCleanupRef = React.useRef(false);\n  const lastStateRef = React.useRef(undefined);\n  const setState = useLatestCallback(state => {\n    if (stateCleanupRef.current) {\n      // Store the state locally in case the current navigator is in `Activity`\n      lastStateRef.current = state;\n\n      // State might have been already cleaned up due to unmount\n      // We don't want to update `route.state` in parent\n      // Otherwise it will be reused if a new navigator gets mounted\n      return;\n    }\n    setCurrentState(state);\n  });\n  const [stateBeforeInitialization, initializedState, isFirstStateInitialization, paramsUsedForInitialization] = React.useMemo(() => {\n    // If the state was already cleaned up, but we have it stored in ref,\n    // It likely got cleaned up due to `<Activity mode=\"hidden\">`\n    // We should reuse this state to avoid remounting screens\n    if (stateCleanupRef.current && lastStateRef.current && isStateValid(lastStateRef.current)) {\n      const state = isStateInitialized(lastStateRef.current) ? lastStateRef.current : router.getRehydratedState(lastStateRef.current, {\n        routeNames,\n        routeParamList,\n        routeGetIdList\n      });\n      return [undefined, state, false, undefined];\n    }\n    const initialRouteParamList = routeNames.reduce((acc, curr) => {\n      const {\n        initialParams\n      } = screens[curr].props;\n      const initialParamsFromParams = route?.params?.state == null && route?.params?.initial !== false && route?.params?.screen === curr ? route.params.params : undefined;\n      acc[curr] = initialParams !== undefined || initialParamsFromParams !== undefined ? {\n        ...initialParams,\n        ...initialParamsFromParams\n      } : undefined;\n      return acc;\n    }, {});\n\n    // If the current state isn't initialized on first render, we initialize it\n    // We also need to re-initialize it if the state passed from parent was changed (maybe due to reset)\n    // Otherwise assume that the state was provided as initial state\n    // So we need to rehydrate it to make it usable\n    if ((currentState === undefined || !isStateValid(currentState)) && route?.params?.state == null && !(typeof route?.params?.screen === 'string' && route?.params?.initial !== false) && !isNestedParamsConsumed) {\n      return [undefined, router.getInitialState({\n        routeNames,\n        routeParamList: initialRouteParamList,\n        routeGetIdList\n      }), true, undefined];\n    } else {\n      const paramsForState = isNestedParamsConsumed ? undefined : route?.params;\n      const stateFromParams = paramsForState ? getStateFromParams(paramsForState) : undefined;\n      const stateBeforeInitialization = stateFromParams ?? currentState;\n      const hydratedState = stateBeforeInitialization == null ? router.getInitialState({\n        routeNames,\n        routeParamList: initialRouteParamList,\n        routeGetIdList\n      }) : router.getRehydratedState(stateBeforeInitialization, {\n        routeNames,\n        routeParamList: initialRouteParamList,\n        routeGetIdList\n      });\n      if (stateBeforeInitialization != null && options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && doesStateHaveOnlyInvalidRoutes(stateBeforeInitialization)) {\n        return [stateBeforeInitialization, hydratedState, true, paramsForState];\n      }\n      return [undefined, hydratedState, false, paramsForState];\n    }\n    // We explicitly don't include routeNames, route.params etc. in the dep list\n    // below. We want to avoid forcing a new state to be calculated in those cases\n    // Instead, we handle changes to these in the nextState code below. Note\n    // that some changes to routeConfigs are explicitly ignored, such as changes\n    // to initialParams\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [currentState, router, isStateValid]);\n  const previousRouteKeyListRef = React.useRef(routeKeyList);\n  React.useEffect(() => {\n    previousRouteKeyListRef.current = routeKeyList;\n  });\n  const previousRouteKeyList = previousRouteKeyListRef.current;\n  const [unhandledState, setUnhandledState] = React.useState(stateBeforeInitialization);\n\n  // An unhandled state is state that didn't have any valid routes\n  // So it was unhandled, i.e. not used for initializing the state\n  // It's possible that they were absent due to conditional render\n  // Store this state so we can reuse it if the routes change later\n  if (options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && stateBeforeInitialization && unhandledState !== stateBeforeInitialization) {\n    setUnhandledState(stateBeforeInitialization);\n  }\n  let state =\n  // If the state isn't initialized, or stale, use the state we initialized instead\n  // The state won't update until there's a change needed in the state we have initialized locally\n  // So it'll be `undefined` or stale until the first navigation event happens\n  isStateInitialized(currentState) ? currentState : initializedState;\n  let nextState = state;\n  let shouldClearUnhandledState = false;\n\n  // Previously unhandled state is now valid again\n  // And current state no longer has any valid routes\n  // We should reuse the unhandled state instead of re-calculating the state\n  if (unhandledState?.routes.every(r => routeNames.includes(r.name)) && state?.routes.every(r => !routeNames.includes(r.name))) {\n    shouldClearUnhandledState = true;\n    nextState = router.getRehydratedState(unhandledState, {\n      routeNames,\n      routeParamList,\n      routeGetIdList\n    });\n  } else if (!isArrayEqual(state.routeNames, routeNames) || !isRecordEqual(routeKeyList, previousRouteKeyList)) {\n    // When the list of route names change, the router should handle it to remove invalid routes\n    nextState = router.getStateForRouteNamesChange(state, {\n      routeNames,\n      routeParamList,\n      routeGetIdList,\n      routeKeyChanges: Object.keys(routeKeyList).filter(name => name in previousRouteKeyList && routeKeyList[name] !== previousRouteKeyList[name])\n    });\n  }\n  let didConsumeNestedParams = route?.params === paramsUsedForInitialization;\n  if (route?.params && !didConsumeNestedParams) {\n    let action;\n    if (typeof route.params.state === 'object' && route.params.state != null && !isNestedParamsConsumed) {\n      didConsumeNestedParams = true;\n      if (options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && doesStateHaveOnlyInvalidRoutes(route.params.state)) {\n        if (route.params.state !== unhandledState) {\n          setUnhandledState(route.params.state);\n        }\n      } else {\n        // If the route was updated with new state, we should reset to it\n        action = CommonActions.reset(route.params.state);\n      }\n    } else if (typeof route.params.screen === 'string' && (route.params.initial === false && isFirstStateInitialization || !isNestedParamsConsumed)) {\n      didConsumeNestedParams = true;\n      if (options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && !routeNames.includes(route.params.screen)) {\n        const state = getStateFromParams(route.params);\n        if (state != null && !deepEqual(state, unhandledState)) {\n          setUnhandledState(state);\n        }\n      } else {\n        // If the route was updated with new screen name and/or params, we should navigate there\n        action = CommonActions.navigate({\n          name: route.params.screen,\n          params: route.params.params,\n          path: route.params.path,\n          merge: route.params.merge,\n          pop: route.params.pop\n        });\n      }\n    }\n\n    // The update should be limited to current navigator only, so we call the router manually\n    const updatedState = action ? router.getStateForAction(nextState, action, {\n      routeNames,\n      routeParamList,\n      routeGetIdList\n    }) : null;\n    nextState = updatedState !== null ? router.getRehydratedState(updatedState, {\n      routeNames,\n      routeParamList,\n      routeGetIdList\n    }) : nextState;\n  }\n  const setConsumedParams = consumedParams?.setConsumed;\n  React.useEffect(() => {\n    if (setConsumedParams && didConsumeNestedParams && typeof route?.params === 'object' && route.params != null) {\n      setConsumedParams(route.params);\n    }\n  }, [didConsumeNestedParams, route?.params, setConsumedParams]);\n  const shouldUpdate = state !== nextState;\n  useScheduleUpdate(() => {\n    if (shouldUpdate) {\n      // Schedule an update if the state needs to be updated\n      setState(nextState);\n      if (shouldClearUnhandledState) {\n        setUnhandledState(undefined);\n      }\n    }\n  });\n\n  // The up-to-date state will come in next render, but we don't need to wait for it\n  // We can't use the outdated state since the screens have changed, which will cause error due to mismatched config\n  // So we override the state object we return to use the latest state as soon as possible\n  state = nextState;\n\n  // Last state to reuse if component gets cleaned up due to `<Activity mode=\"hidden\">`\n  React.useEffect(() => {\n    lastStateRef.current = state;\n  });\n  const lastNotifiedStateRef = React.useRef(null);\n  React.useEffect(() => {\n    // In strict mode, React will double-invoke effects.\n    // So we need to reset the flag if component was not unmounted\n    stateCleanupRef.current = false;\n    setKey(navigatorKey);\n    if (!getIsInitial() && lastNotifiedStateRef.current !== state) {\n      // If it's not initial render, we need to update the state\n      // This will make sure that our container gets notifier of state changes due to new mounts\n      // This is necessary for proper screen tracking, URL updates etc.\n      // We only notify if the state is different what we already notified\n      // Otherwise this goes into a loop when inside `<Activity mode=\"hidden\">`\n      setState(state);\n      lastNotifiedStateRef.current = state;\n    }\n    return () => {\n      // We need to clean up state for this navigator on unmount\n      if (getCurrentState() !== undefined && getKey() === navigatorKey) {\n        setCurrentState(undefined);\n        stateCleanupRef.current = true;\n      }\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  // In some cases (e.g. route names change), internal state might have changed\n  // But it hasn't been committed yet, so hasn't propagated to the sync external store\n  // During this time, we need to return the internal state in `getState`\n  // Otherwise it can result in inconsistent state during render in children\n  // To avoid this, we use a ref for render phase, and immediately clear it on commit\n  const stateRef = React.useRef(state);\n  stateRef.current = state;\n  useClientLayoutEffect(() => {\n    stateRef.current = null;\n  });\n  const getState = useLatestCallback(() => {\n    const currentState = getCurrentState();\n    return deepFreeze(isStateInitialized(currentState) ? currentState : initializedState);\n  });\n  const emitter = useEventEmitter(e => {\n    const routeNames = [];\n    let route;\n    if (e.target) {\n      route = state.routes.find(route => route.key === e.target);\n      if (route?.name) {\n        routeNames.push(route.name);\n      }\n    } else {\n      route = state.routes[state.index];\n      routeNames.push(...Object.keys(screens).filter(name => route?.name === name));\n    }\n    if (route == null) {\n      return;\n    }\n    const navigation = descriptors[route.key].navigation;\n    const listeners = [].concat(\n    // Get an array of listeners for all screens + common listeners on navigator\n    ...[screenListeners, ...routeNames.map(name => {\n      const {\n        listeners\n      } = screens[name].props;\n      return listeners;\n    })].map(listeners => {\n      const map = typeof listeners === 'function' ? listeners({\n        route: route,\n        navigation\n      }) : listeners;\n      return map ? Object.keys(map).filter(type => type === e.type).map(type => map?.[type]) : undefined;\n    }))\n    // We don't want same listener to be called multiple times for same event\n    // So we remove any duplicate functions from the array\n    .filter((cb, i, self) => cb && self.lastIndexOf(cb) === i);\n    listeners.forEach(listener => listener?.(e));\n  });\n  useFocusEvents({\n    state,\n    emitter\n  });\n  React.useEffect(() => {\n    emitter.emit({\n      type: 'state',\n      data: {\n        state\n      }\n    });\n  }, [emitter, state]);\n  const {\n    listeners: childListeners,\n    addListener\n  } = useChildListeners();\n  const {\n    keyedListeners,\n    addKeyedListener\n  } = useKeyedChildListeners();\n  const onAction = useOnAction({\n    router,\n    getState,\n    setState,\n    key: route?.key,\n    actionListeners: childListeners.action,\n    beforeRemoveListeners: keyedListeners.beforeRemove,\n    routerConfigOptions: {\n      routeNames,\n      routeParamList,\n      routeGetIdList\n    },\n    emitter\n  });\n  const onRouteFocus = useOnRouteFocus({\n    router,\n    key: route?.key,\n    getState,\n    setState\n  });\n  const onUnhandledActionParent = React.useContext(UnhandledActionContext);\n  const onUnhandledAction = useLatestCallback(action => {\n    if (options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && action.type === 'NAVIGATE' && action.payload != null && 'name' in action.payload && typeof action.payload.name === 'string' && !routeNames.includes(action.payload.name)) {\n      const state = {\n        routes: [{\n          name: action.payload.name,\n          params: 'params' in action.payload && typeof action.payload.params === 'object' && action.payload.params !== null ? action.payload.params : undefined,\n          path: 'path' in action.payload && typeof action.payload.path === 'string' ? action.payload.path : undefined\n        }]\n      };\n      setUnhandledState(state);\n    }\n    onUnhandledActionParent?.(action);\n  });\n  const navigation = useNavigationHelpers({\n    id: options.id,\n    onAction,\n    onUnhandledAction,\n    getState,\n    emitter,\n    router,\n    stateRef\n  });\n  useFocusedListenersChildrenAdapter({\n    navigation,\n    focusedListeners: childListeners.focus\n  });\n  useOnGetState({\n    getState,\n    getStateListeners: keyedListeners.getState\n  });\n  const {\n    describe,\n    descriptors\n  } = useDescriptors({\n    state,\n    screens,\n    navigation,\n    screenOptions,\n    screenLayout,\n    onAction,\n    getState,\n    setState,\n    onRouteFocus,\n    addListener,\n    addKeyedListener,\n    router,\n    // @ts-expect-error: this should have both core and custom events, but too much work right now\n    emitter\n  });\n  useCurrentRender({\n    state,\n    navigation,\n    descriptors\n  });\n  const NavigationContent = useComponent(children => {\n    const element = layout != null ? layout({\n      state,\n      descriptors,\n      navigation,\n      children\n    }) : children;\n    return /*#__PURE__*/_jsx(NavigationMetaContext.Provider, {\n      value: undefined,\n      children: /*#__PURE__*/_jsx(NavigationHelpersContext.Provider, {\n        value: navigation,\n        children: /*#__PURE__*/_jsx(NavigationStateListenerProvider, {\n          state: state,\n          children: /*#__PURE__*/_jsx(FocusedRouteKeyContext.Provider, {\n            value: state.routes[state.index].key,\n            children: /*#__PURE__*/_jsx(PreventRemoveProvider, {\n              children: element\n            })\n          })\n        })\n      })\n    });\n  });\n  return {\n    state,\n    navigation,\n    describe,\n    descriptors,\n    NavigationContent\n  };\n}\n//# sourceMappingURL=useNavigationBuilder.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","\"use strict\";\n\nimport * as React from 'react';\nexport const ConsumedParamsContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=ConsumedParamsContext.js.map","\"use strict\";\n\nimport * as React from 'react';\n\n/**\n * Use `useEffect` during SSR and `useLayoutEffect` in the Browser & React Native to avoid warnings.\n */\nexport const useClientLayoutEffect = typeof document !== 'undefined' || typeof navigator !== 'undefined' && navigator.product === 'ReactNative' ? React.useLayoutEffect : React.useEffect;\n//# sourceMappingURL=useClientLayoutEffect.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavigationContent = ({\n  render,\n  children\n}) => {\n  return render(children);\n};\nexport function useComponent(render) {\n  const renderRef = React.useRef(render);\n\n  // Normally refs shouldn't be mutated in render\n  // But we return a component which will be rendered\n  // So it's just for immediate consumption\n  renderRef.current = render;\n  React.useEffect(() => {\n    renderRef.current = null;\n  });\n  return React.useRef(({\n    children\n  }) => {\n    const render = renderRef.current;\n    if (render === null) {\n      throw new Error('The returned component must be rendered in the same render phase as the hook.');\n    }\n    return /*#__PURE__*/_jsx(NavigationContent, {\n      render: render,\n      children: children\n    });\n  }).current;\n}\n//# sourceMappingURL=useComponent.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { CurrentRenderContext } from \"./CurrentRenderContext.js\";\n/**\n * Write the current options, so that server renderer can get current values\n * Mutating values like this is not safe in async mode, but it doesn't apply to SSR\n */\nexport function useCurrentRender({\n  state,\n  navigation,\n  descriptors\n}) {\n  const current = React.useContext(CurrentRenderContext);\n  if (current && navigation.isFocused()) {\n    current.options = descriptors[state.routes[state.index].key].options;\n  }\n}\n//# sourceMappingURL=useCurrentRender.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { NavigationProvider } from \"./NavigationProvider.js\";\nimport { SceneView } from \"./SceneView.js\";\nimport { ThemeContext } from \"./theming/ThemeContext.js\";\nimport { useNavigationCache } from \"./useNavigationCache.js\";\nimport { useRouteCache } from \"./useRouteCache.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Hook to create descriptor objects for the child routes.\n *\n * A descriptor object provides 3 things:\n * - Helper method to render a screen\n * - Options specified by the screen for the navigator\n * - Navigation object intended for the route\n */\nexport function useDescriptors({\n  state,\n  screens,\n  navigation,\n  screenOptions,\n  screenLayout,\n  onAction,\n  getState,\n  setState,\n  addListener,\n  addKeyedListener,\n  onRouteFocus,\n  router,\n  emitter\n}) {\n  const theme = React.useContext(ThemeContext);\n  const [options, setOptions] = React.useState({});\n  const {\n    onDispatchAction,\n    onOptionsChange,\n    scheduleUpdate,\n    flushUpdates,\n    stackRef\n  } = React.useContext(NavigationBuilderContext);\n  const context = React.useMemo(() => ({\n    navigation,\n    onAction,\n    addListener,\n    addKeyedListener,\n    onRouteFocus,\n    onDispatchAction,\n    onOptionsChange,\n    scheduleUpdate,\n    flushUpdates,\n    stackRef\n  }), [navigation, onAction, addListener, addKeyedListener, onRouteFocus, onDispatchAction, onOptionsChange, scheduleUpdate, flushUpdates, stackRef]);\n  const {\n    base,\n    navigations\n  } = useNavigationCache({\n    state,\n    getState,\n    navigation,\n    setOptions,\n    router,\n    emitter\n  });\n  const routes = useRouteCache(state.routes);\n  const getOptions = (route, navigation, overrides) => {\n    const config = screens[route.name];\n    const screen = config.props;\n    const optionsList = [\n    // The default `screenOptions` passed to the navigator\n    screenOptions,\n    // The `screenOptions` props passed to `Group` elements\n    ...(config.options ? config.options.filter(Boolean) : []),\n    // The `options` prop passed to `Screen` elements,\n    screen.options,\n    // The options set via `navigation.setOptions`\n    overrides];\n    return optionsList.reduce((acc, curr) => Object.assign(acc,\n    // @ts-expect-error: we check for function but TS still complains\n    typeof curr !== 'function' ? curr : curr({\n      route,\n      navigation,\n      theme\n    })), {});\n  };\n  const render = (route, navigation, customOptions, routeState) => {\n    const config = screens[route.name];\n    const screen = config.props;\n    const clearOptions = () => setOptions(o => {\n      if (route.key in o) {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const {\n          [route.key]: _,\n          ...rest\n        } = o;\n        return rest;\n      }\n      return o;\n    });\n    const layout =\n    // The `layout` prop passed to `Screen` elements,\n    screen.layout ??\n    // The `screenLayout` props passed to `Group` elements\n    config.layout ??\n    // The default `screenLayout` passed to the navigator\n    screenLayout;\n    let element = /*#__PURE__*/_jsx(SceneView, {\n      navigation: navigation,\n      route: route,\n      screen: screen,\n      routeState: routeState,\n      getState: getState,\n      setState: setState,\n      options: customOptions,\n      clearOptions: clearOptions\n    });\n    if (layout != null) {\n      element = layout({\n        route,\n        navigation,\n        options: customOptions,\n        // @ts-expect-error: in practice `theme` will be defined\n        theme,\n        children: element\n      });\n    }\n    return /*#__PURE__*/_jsx(NavigationBuilderContext.Provider, {\n      value: context,\n      children: /*#__PURE__*/_jsx(NavigationProvider, {\n        route: route,\n        navigation: navigation,\n        children: element\n      })\n    }, route.key);\n  };\n  const descriptors = routes.reduce((acc, route, i) => {\n    const navigation = navigations[route.key];\n    const customOptions = getOptions(route, navigation, options[route.key]);\n    const element = render(route, navigation, customOptions, state.routes[i].state);\n    acc[route.key] = {\n      route,\n      // @ts-expect-error: it's missing action helpers, fix later\n      navigation,\n      render() {\n        return element;\n      },\n      options: customOptions\n    };\n    return acc;\n  }, {});\n\n  /**\n   * Create a descriptor object for a route.\n   *\n   * @param route Route object for which the descriptor should be created\n   * @param placeholder Whether the descriptor should be a placeholder, e.g. for a route not yet in the state\n   * @returns Descriptor object\n   */\n  const describe = (route, placeholder) => {\n    if (!placeholder) {\n      if (!(route.key in descriptors)) {\n        throw new Error(`Couldn't find a route with the key ${route.key}.`);\n      }\n      return descriptors[route.key];\n    }\n    const navigation = base;\n    const customOptions = getOptions(route, navigation, {});\n    const element = render(route, navigation, customOptions, undefined);\n    return {\n      route,\n      navigation,\n      render() {\n        return element;\n      },\n      options: customOptions\n    };\n  };\n  return {\n    describe,\n    descriptors\n  };\n}\n//# sourceMappingURL=useDescriptors.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { ConsumedParamsContext } from \"./ConsumedParamsContext.js\";\nimport { EnsureSingleNavigator } from \"./EnsureSingleNavigator.js\";\nimport { isArrayEqual } from \"./isArrayEqual.js\";\nimport { NavigationFocusedRouteStateContext } from \"./NavigationFocusedRouteStateContext.js\";\nimport { NavigationStateContext } from \"./NavigationStateContext.js\";\nimport { StaticContainer } from \"./StaticContainer.js\";\nimport { useOptionsGetters } from \"./useOptionsGetters.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Component which takes care of rendering the screen for a route.\n * It provides all required contexts and applies optimizations when applicable.\n */\nexport function SceneView({\n  screen,\n  route,\n  navigation,\n  routeState,\n  getState,\n  setState,\n  options,\n  clearOptions\n}) {\n  const navigatorKeyRef = React.useRef(undefined);\n  const getKey = React.useCallback(() => navigatorKeyRef.current, []);\n  const {\n    addOptionsGetter\n  } = useOptionsGetters({\n    key: route.key,\n    options,\n    navigation\n  });\n  const setKey = React.useCallback(key => {\n    navigatorKeyRef.current = key;\n  }, []);\n  const getCurrentState = React.useCallback(() => {\n    const state = getState();\n    const currentRoute = state.routes.find(r => r.key === route.key);\n    return currentRoute ? currentRoute.state : undefined;\n  }, [getState, route.key]);\n  const setCurrentState = React.useCallback(child => {\n    const state = getState();\n    const routes = state.routes.map(r => {\n      if (r.key === route.key && r.state !== child) {\n        return {\n          ...r,\n          state: child\n        };\n      }\n      return r;\n    });\n    if (!isArrayEqual(state.routes, routes)) {\n      setState({\n        ...state,\n        routes\n      });\n    }\n  }, [getState, route.key, setState]);\n  const isInitialRef = React.useRef(true);\n  React.useEffect(() => {\n    isInitialRef.current = false;\n  });\n\n  // Clear options set by this screen when it is unmounted\n  React.useEffect(() => {\n    return clearOptions;\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  const getIsInitial = React.useCallback(() => isInitialRef.current, []);\n  const parentFocusedRouteState = React.useContext(NavigationFocusedRouteStateContext);\n  const [consumedParams, setConsumedParams] = React.useState(null);\n  const consumedParamsContext = React.useMemo(() => ({\n    isConsumed: params => {\n      if (consumedParams) {\n        return consumedParams.has(params);\n      }\n      return false;\n    },\n    setConsumed: params => {\n      setConsumedParams(prev => {\n        if (prev && prev.has(params)) {\n          return prev;\n        }\n        const map = new WeakMap();\n        map.set(params, true);\n        return map;\n      });\n    }\n  }), [consumedParams]);\n  const focusedRouteState = React.useMemo(() => {\n    const state = {\n      routes: [{\n        key: route.key,\n        name: route.name,\n        params: route.params,\n        path: route.path\n      }]\n    };\n\n    // Add our state to the innermost route of the parent state\n    const addState = parent => {\n      const parentRoute = parent?.routes[0];\n      if (parentRoute) {\n        return {\n          routes: [{\n            ...parentRoute,\n            state: addState(parentRoute.state)\n          }]\n        };\n      }\n      return state;\n    };\n    return addState(parentFocusedRouteState);\n  }, [parentFocusedRouteState, route.key, route.name, route.params, route.path]);\n  const context = React.useMemo(() => ({\n    state: routeState,\n    getState: getCurrentState,\n    setState: setCurrentState,\n    getKey,\n    setKey,\n    getIsInitial,\n    addOptionsGetter\n  }), [routeState, getCurrentState, setCurrentState, getKey, setKey, getIsInitial, addOptionsGetter]);\n  const ScreenComponent = screen.getComponent ? screen.getComponent() : screen.component;\n  return /*#__PURE__*/_jsx(ConsumedParamsContext.Provider, {\n    value: consumedParamsContext,\n    children: /*#__PURE__*/_jsx(NavigationStateContext.Provider, {\n      value: context,\n      children: /*#__PURE__*/_jsx(NavigationFocusedRouteStateContext.Provider, {\n        value: focusedRouteState,\n        children: /*#__PURE__*/_jsx(EnsureSingleNavigator, {\n          children: /*#__PURE__*/_jsx(StaticContainer, {\n            name: screen.name,\n            render: ScreenComponent || screen.children,\n            navigation: navigation,\n            route: route,\n            children: ScreenComponent !== undefined ? /*#__PURE__*/_jsx(ScreenComponent, {\n              navigation: navigation,\n              route: route\n            }) : screen.children !== undefined ? screen.children({\n              navigation,\n              route\n            }) : null\n          })\n        })\n      })\n    })\n  });\n}\n//# sourceMappingURL=SceneView.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Context for the parent route of a navigator.\n */\nexport const NavigationFocusedRouteStateContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=NavigationFocusedRouteStateContext.js.map","\"use strict\";\n\nimport * as React from 'react';\n\n/**\n * Component which prevents updates for children if no props changed\n */\nexport const StaticContainer = /*#__PURE__*/React.memo(function StaticContainer(props) {\n  return props.children;\n}, (prevProps, nextProps) => {\n  const prevPropKeys = Object.keys(prevProps);\n  const nextPropKeys = Object.keys(nextProps);\n  if (prevPropKeys.length !== nextPropKeys.length) {\n    return false;\n  }\n  for (const key of prevPropKeys) {\n    if (key === 'children') {\n      continue;\n    }\n    if (prevProps[key] !== nextProps[key]) {\n      return false;\n    }\n  }\n  return true;\n});\n//# sourceMappingURL=StaticContainer.js.map","\"use strict\";\n\nimport { CommonActions } from '@react-navigation/routers';\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\n/**\n * Hook to cache navigation objects for each screen in the navigator.\n * It's important to cache them to make sure navigation objects don't change between renders.\n * This lets us apply optimizations like `React.memo` to minimize re-rendering screens.\n */\nexport function useNavigationCache({\n  state,\n  getState,\n  navigation,\n  setOptions,\n  router,\n  emitter\n}) {\n  const {\n    stackRef\n  } = React.useContext(NavigationBuilderContext);\n  const base = React.useMemo(() => {\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const {\n      emit,\n      ...rest\n    } = navigation;\n    const actions = {\n      ...router.actionCreators,\n      ...CommonActions\n    };\n    const dispatch = () => {\n      throw new Error('Actions cannot be dispatched from a placeholder screen.');\n    };\n    const helpers = Object.keys(actions).reduce((acc, name) => {\n      acc[name] = dispatch;\n      return acc;\n    }, {});\n    return {\n      ...rest,\n      ...helpers,\n      addListener: () => {\n        // Event listeners are not supported for placeholder screens\n\n        return () => {\n          // Empty function\n        };\n      },\n      removeListener: () => {\n        // Event listeners are not supported for placeholder screens\n      },\n      dispatch,\n      getParent: id => {\n        if (id !== undefined && id === rest.getId()) {\n          return base;\n        }\n        return rest.getParent(id);\n      },\n      setOptions: () => {\n        throw new Error('Options cannot be set from a placeholder screen.');\n      },\n      isFocused: () => false\n    };\n  }, [navigation, router.actionCreators]);\n\n  // Cache object which holds navigation objects for each screen\n  // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change\n  // In reality, these deps will rarely change, if ever\n  const cache = React.useMemo(() => ({\n    current: {}\n  }),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  [base, getState, navigation, setOptions, emitter]);\n  cache.current = state.routes.reduce((acc, route) => {\n    const previous = cache.current[route.key];\n    if (previous) {\n      // If a cached navigation object already exists, reuse it\n      acc[route.key] = previous;\n    } else {\n      const dispatch = thunk => {\n        const action = typeof thunk === 'function' ? thunk(getState()) : thunk;\n        if (action != null) {\n          navigation.dispatch({\n            source: route.key,\n            ...action\n          });\n        }\n      };\n      const withStack = callback => {\n        let isStackSet = false;\n        try {\n          if (process.env.NODE_ENV !== 'production' && stackRef && !stackRef.current) {\n            // Capture the stack trace for devtools\n            stackRef.current = new Error().stack;\n            isStackSet = true;\n          }\n          callback();\n        } finally {\n          if (isStackSet && stackRef) {\n            stackRef.current = undefined;\n          }\n        }\n      };\n      const actions = {\n        ...router.actionCreators,\n        ...CommonActions\n      };\n      const helpers = Object.keys(actions).reduce((acc, name) => {\n        acc[name] = (...args) => withStack(() =>\n        // @ts-expect-error: name is a valid key, but TypeScript is dumb\n        dispatch(actions[name](...args)));\n        return acc;\n      }, {});\n      acc[route.key] = {\n        ...base,\n        ...helpers,\n        // FIXME: too much work to fix the types for now\n        ...emitter.create(route.key),\n        dispatch: thunk => withStack(() => dispatch(thunk)),\n        getParent: id => {\n          if (id !== undefined && id === base.getId()) {\n            // If the passed id is the same as the current navigation id,\n            // we return the cached navigation object for the relevant route\n            return acc[route.key];\n          }\n          return base.getParent(id);\n        },\n        setOptions: options => {\n          setOptions(o => ({\n            ...o,\n            [route.key]: {\n              ...o[route.key],\n              ...options\n            }\n          }));\n        },\n        isFocused: () => {\n          const state = base.getState();\n          if (state.routes[state.index].key !== route.key) {\n            return false;\n          }\n\n          // If the current screen is focused, we also need to check if parent navigator is focused\n          // This makes sure that we return the focus state in the whole tree, not just this navigator\n          return navigation ? navigation.isFocused() : true;\n        }\n      };\n    }\n    return acc;\n  }, {});\n  return {\n    base,\n    navigations: cache.current\n  };\n}\n//# sourceMappingURL=useNavigationCache.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\n/**\n * Hook for passing focus callback to children\n */\nexport function useFocusedListenersChildrenAdapter({\n  navigation,\n  focusedListeners\n}) {\n  const {\n    addListener\n  } = React.useContext(NavigationBuilderContext);\n  const listener = React.useCallback(callback => {\n    if (navigation.isFocused()) {\n      for (const listener of focusedListeners) {\n        const {\n          handled,\n          result\n        } = listener(callback);\n        if (handled) {\n          return {\n            handled,\n            result\n          };\n        }\n      }\n      return {\n        handled: true,\n        result: callback(navigation)\n      };\n    } else {\n      return {\n        handled: false,\n        result: null\n      };\n    }\n  }, [focusedListeners, navigation]);\n  React.useEffect(() => addListener?.('focus', listener), [addListener, listener]);\n}\n//# sourceMappingURL=useFocusedListenersChildrenAdapter.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationContext } from \"./NavigationContext.js\";\n/**\n * Hook to take care of emitting `focus` and `blur` events.\n */\nexport function useFocusEvents({\n  state,\n  emitter\n}) {\n  const navigation = React.useContext(NavigationContext);\n  const lastFocusedKeyRef = React.useRef(undefined);\n  const currentFocusedKey = state.routes[state.index].key;\n\n  // When the parent screen changes its focus state, we also need to change child's focus\n  // Coz the child screen can't be focused if the parent screen is out of focus\n  React.useEffect(() => navigation?.addListener('focus', () => {\n    lastFocusedKeyRef.current = currentFocusedKey;\n    emitter.emit({\n      type: 'focus',\n      target: currentFocusedKey\n    });\n  }), [currentFocusedKey, emitter, navigation]);\n  React.useEffect(() => navigation?.addListener('blur', () => {\n    lastFocusedKeyRef.current = undefined;\n    emitter.emit({\n      type: 'blur',\n      target: currentFocusedKey\n    });\n  }), [currentFocusedKey, emitter, navigation]);\n  React.useEffect(() => {\n    const lastFocusedKey = lastFocusedKeyRef.current;\n    lastFocusedKeyRef.current = currentFocusedKey;\n\n    // We wouldn't have `lastFocusedKey` on initial mount\n    // Fire focus event for the current route on mount if there's no parent navigator\n    if (lastFocusedKey === undefined && !navigation) {\n      emitter.emit({\n        type: 'focus',\n        target: currentFocusedKey\n      });\n    }\n\n    // We should only emit events when the focused key changed and navigator is focused\n    // When navigator is not focused, screens inside shouldn't receive focused status either\n    if (lastFocusedKey === currentFocusedKey || !(navigation ? navigation.isFocused() : true)) {\n      return;\n    }\n    if (lastFocusedKey === undefined) {\n      // Only fire events after initial mount\n      return;\n    }\n    emitter.emit({\n      type: 'blur',\n      target: lastFocusedKey\n    });\n    emitter.emit({\n      type: 'focus',\n      target: currentFocusedKey\n    });\n  }, [currentFocusedKey, emitter, navigation]);\n}\n//# sourceMappingURL=useFocusEvents.js.map","\"use strict\";\n\nimport * as React from 'react';\nexport function useLazyValue(create) {\n  const lazyRef = React.useRef(undefined);\n  if (lazyRef.current === undefined) {\n    lazyRef.current = create();\n  }\n  return lazyRef.current;\n}\n//# sourceMappingURL=useLazyValue.js.map","\"use strict\";\n\nimport { CommonActions } from '@react-navigation/routers';\nimport * as React from 'react';\nimport { NavigationContext } from \"./NavigationContext.js\";\nimport { PrivateValueStore } from \"./types.js\";\n// This is to make TypeScript compiler happy\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\nPrivateValueStore;\n/**\n * Navigation object with helper methods to be used by a navigator.\n * This object includes methods for common actions as well as methods the parent screen's navigation object.\n */\nexport function useNavigationHelpers({\n  id: navigatorId,\n  onAction,\n  onUnhandledAction,\n  getState,\n  emitter,\n  router,\n  stateRef\n}) {\n  const parentNavigationHelpers = React.useContext(NavigationContext);\n  return React.useMemo(() => {\n    const dispatch = op => {\n      const action = typeof op === 'function' ? op(getState()) : op;\n      const handled = onAction(action);\n      if (!handled) {\n        onUnhandledAction?.(action);\n      }\n    };\n    const actions = {\n      ...router.actionCreators,\n      ...CommonActions\n    };\n    const helpers = Object.keys(actions).reduce((acc, name) => {\n      // @ts-expect-error: name is a valid key, but TypeScript is dumb\n      acc[name] = (...args) => dispatch(actions[name](...args));\n      return acc;\n    }, {});\n    const navigationHelpers = {\n      ...parentNavigationHelpers,\n      ...helpers,\n      dispatch,\n      emit: emitter.emit,\n      isFocused: parentNavigationHelpers ? parentNavigationHelpers.isFocused : () => true,\n      canGoBack: () => {\n        const state = getState();\n        return router.getStateForAction(state, CommonActions.goBack(), {\n          routeNames: state.routeNames,\n          routeParamList: {},\n          routeGetIdList: {}\n        }) !== null || parentNavigationHelpers?.canGoBack() || false;\n      },\n      getId: () => navigatorId,\n      getParent: id => {\n        if (id !== undefined) {\n          let current = navigationHelpers;\n          while (current && id !== current.getId()) {\n            current = current.getParent();\n          }\n          return current;\n        }\n        return parentNavigationHelpers;\n      },\n      getState: () => {\n        // FIXME: Workaround for when the state is read during render\n        // By this time, we haven't committed the new state yet\n        // Without this `useSyncExternalStore` will keep reading the old state\n        // This may result in `useNavigationState` or `useIsFocused` returning wrong values\n        // Apart from `useSyncExternalStore`, `getState` should never be called during render\n        if (stateRef.current != null) {\n          return stateRef.current;\n        }\n        return getState();\n      }\n    };\n    return navigationHelpers;\n  }, [router, parentNavigationHelpers, emitter.emit, getState, onAction, onUnhandledAction, navigatorId, stateRef]);\n}\n//# sourceMappingURL=useNavigationHelpers.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport useLatestCallback from 'use-latest-callback';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Hook to get a value from the current navigation state using a selector.\n *\n * @param selector Selector function to get a value from the state.\n */\nexport function useNavigationState(selector) {\n  const stateListener = React.useContext(NavigationStateListenerContext);\n  if (stateListener == null) {\n    throw new Error(\"Couldn't get the navigation state. Is your component inside a navigator?\");\n  }\n  const value = useSyncExternalStoreWithSelector(stateListener.subscribe,\n  // @ts-expect-error: this is unsafe, but needed to make the generic work\n  stateListener.getState, stateListener.getState, selector);\n  return value;\n}\nexport function NavigationStateListenerProvider({\n  state,\n  children\n}) {\n  const listeners = React.useRef([]);\n  const stateRef = React.useRef(state);\n  const getState = useLatestCallback(() => stateRef.current);\n  const subscribe = useLatestCallback(callback => {\n    listeners.current.push(callback);\n    return () => {\n      listeners.current = listeners.current.filter(cb => cb !== callback);\n    };\n  });\n  React.useLayoutEffect(() => {\n    stateRef.current = state;\n    listeners.current.forEach(callback => callback());\n  }, [state]);\n  const context = React.useMemo(() => ({\n    getState,\n    subscribe\n  }), [getState, subscribe]);\n  return /*#__PURE__*/_jsx(NavigationStateListenerContext.Provider, {\n    value: context,\n    children: children\n  });\n}\nconst NavigationStateListenerContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=useNavigationState.js.map","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');\n} else {\n  module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  useSyncExternalStore = React.useSyncExternalStore,\n  useRef = React.useRef,\n  useEffect = React.useEffect,\n  useMemo = React.useMemo,\n  useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot,\n  selector,\n  isEqual\n) {\n  var instRef = useRef(null);\n  if (null === instRef.current) {\n    var inst = { hasValue: !1, value: null };\n    instRef.current = inst;\n  } else inst = instRef.current;\n  instRef = useMemo(\n    function () {\n      function memoizedSelector(nextSnapshot) {\n        if (!hasMemo) {\n          hasMemo = !0;\n          memoizedSnapshot = nextSnapshot;\n          nextSnapshot = selector(nextSnapshot);\n          if (void 0 !== isEqual && inst.hasValue) {\n            var currentSelection = inst.value;\n            if (isEqual(currentSelection, nextSnapshot))\n              return (memoizedSelection = currentSelection);\n          }\n          return (memoizedSelection = nextSnapshot);\n        }\n        currentSelection = memoizedSelection;\n        if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n        var nextSelection = selector(nextSnapshot);\n        if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n          return (memoizedSnapshot = nextSnapshot), currentSelection;\n        memoizedSnapshot = nextSnapshot;\n        return (memoizedSelection = nextSelection);\n      }\n      var hasMemo = !1,\n        memoizedSnapshot,\n        memoizedSelection,\n        maybeGetServerSnapshot =\n          void 0 === getServerSnapshot ? null : getServerSnapshot;\n      return [\n        function () {\n          return memoizedSelector(getSnapshot());\n        },\n        null === maybeGetServerSnapshot\n          ? void 0\n          : function () {\n              return memoizedSelector(maybeGetServerSnapshot());\n            }\n      ];\n    },\n    [getSnapshot, getServerSnapshot, selector, isEqual]\n  );\n  var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n  useEffect(\n    function () {\n      inst.hasValue = !0;\n      inst.value = value;\n    },\n    [value]\n  );\n  useDebugValue(value);\n  return value;\n};\n","\"use strict\";\n\nimport * as React from 'react';\nimport { DeprecatedNavigationInChildContext } from \"./DeprecatedNavigationInChildContext.js\";\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { shouldPreventRemove, useOnPreventRemove } from \"./useOnPreventRemove.js\";\n/**\n * Hook to handle actions for a navigator, including state updates and bubbling.\n *\n * Bubbling an action is achieved in 2 ways:\n * 1. To bubble action to parent, we expose the action handler in context and then access the parent context\n * 2. To bubble action to child, child adds event listeners subscribing to actions from parent\n *\n * When the action handler handles as action, it returns `true`, otherwise `false`.\n */\nexport function useOnAction({\n  router,\n  getState,\n  setState,\n  key,\n  actionListeners,\n  beforeRemoveListeners,\n  routerConfigOptions,\n  emitter\n}) {\n  const {\n    onAction: onActionParent,\n    onRouteFocus: onRouteFocusParent,\n    addListener: addListenerParent,\n    onDispatchAction\n  } = React.useContext(NavigationBuilderContext);\n  const navigationInChildEnabled = React.useContext(DeprecatedNavigationInChildContext);\n  const routerConfigOptionsRef = React.useRef(routerConfigOptions);\n  React.useEffect(() => {\n    routerConfigOptionsRef.current = routerConfigOptions;\n  });\n  const onAction = React.useCallback((action, visitedNavigators = new Set()) => {\n    const state = getState();\n\n    // Since actions can bubble both up and down, they could come to the same navigator again\n    // We keep track of navigators which have already tried to handle the action and return if it's already visited\n    if (visitedNavigators.has(state.key)) {\n      return false;\n    }\n    visitedNavigators.add(state.key);\n    if (typeof action.target !== 'string' || action.target === state.key) {\n      let result = router.getStateForAction(state, action, routerConfigOptionsRef.current);\n\n      // If a target is specified and set to current navigator, the action shouldn't bubble\n      // So instead of `null`, we use the state object for such cases to signal that action was handled\n      result = result === null && action.target === state.key ? state : result;\n      if (result !== null) {\n        onDispatchAction(action, state === result);\n        if (state !== result) {\n          const isPrevented = shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, result.routes, action);\n          if (isPrevented) {\n            return true;\n          }\n          setState(result);\n        }\n        if (onRouteFocusParent !== undefined) {\n          // Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree\n          // This means we need to focus all of the parent navigators of this navigator as well\n          const shouldFocus = router.shouldActionChangeFocus(action);\n          if (shouldFocus && key !== undefined) {\n            onRouteFocusParent(key);\n          }\n        }\n        return true;\n      }\n    }\n    if (onActionParent !== undefined) {\n      // Bubble action to the parent if the current navigator didn't handle it\n      if (onActionParent(action, visitedNavigators)) {\n        return true;\n      }\n    }\n    if (typeof action.target === 'string' ||\n    // For backward compatibility\n    action.type === 'NAVIGATE_DEPRECATED' || navigationInChildEnabled) {\n      // If the action wasn't handled by current navigator or a parent navigator, let children handle it\n      // Handling this when target isn't specified is deprecated and will be removed in the future\n      for (let i = actionListeners.length - 1; i >= 0; i--) {\n        const listener = actionListeners[i];\n        if (listener(action, visitedNavigators)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }, [actionListeners, beforeRemoveListeners, emitter, getState, navigationInChildEnabled, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);\n  useOnPreventRemove({\n    getState,\n    emitter,\n    beforeRemoveListeners\n  });\n  React.useEffect(() => addListenerParent?.('action', onAction), [addListenerParent, onAction]);\n  return onAction;\n}\n//# sourceMappingURL=useOnAction.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { NavigationRouteContext } from \"./NavigationProvider.js\";\nconst VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');\nexport const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoutes, nextRoutes, action) => {\n  const nextRouteKeys = nextRoutes.map(route => route.key);\n\n  // Call these in reverse order so last screens handle the event first\n  const removedRoutes = currentRoutes.filter(route => !nextRouteKeys.includes(route.key)).reverse();\n  const visitedRouteKeys =\n  // @ts-expect-error: add this property to mark that we've already emitted this action\n  action[VISITED_ROUTE_KEYS] ?? new Set();\n  const beforeRemoveAction = {\n    ...action,\n    [VISITED_ROUTE_KEYS]: visitedRouteKeys\n  };\n  for (const route of removedRoutes) {\n    if (visitedRouteKeys.has(route.key)) {\n      // Skip if we've already emitted this action for this screen\n      continue;\n    }\n\n    // First, we need to check if any child screens want to prevent it\n    const isPrevented = beforeRemoveListeners[route.key]?.(beforeRemoveAction);\n    if (isPrevented) {\n      return true;\n    }\n    visitedRouteKeys.add(route.key);\n    const event = emitter.emit({\n      type: 'beforeRemove',\n      target: route.key,\n      data: {\n        action: beforeRemoveAction\n      },\n      canPreventDefault: true\n    });\n    if (event.defaultPrevented) {\n      return true;\n    }\n  }\n  return false;\n};\nexport function useOnPreventRemove({\n  getState,\n  emitter,\n  beforeRemoveListeners\n}) {\n  const {\n    addKeyedListener\n  } = React.useContext(NavigationBuilderContext);\n  const route = React.useContext(NavigationRouteContext);\n  const routeKey = route?.key;\n  React.useEffect(() => {\n    if (routeKey) {\n      return addKeyedListener?.('beforeRemove', routeKey, action => {\n        const state = getState();\n        return shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, [], action);\n      });\n    }\n  }, [addKeyedListener, beforeRemoveListeners, emitter, getState, routeKey]);\n}\n//# sourceMappingURL=useOnPreventRemove.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { isArrayEqual } from \"./isArrayEqual.js\";\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { NavigationRouteContext } from \"./NavigationProvider.js\";\nexport function useOnGetState({\n  getState,\n  getStateListeners\n}) {\n  const {\n    addKeyedListener\n  } = React.useContext(NavigationBuilderContext);\n  const route = React.useContext(NavigationRouteContext);\n  const key = route ? route.key : 'root';\n  const getRehydratedState = React.useCallback(() => {\n    const state = getState();\n\n    // Avoid returning new route objects if we don't need to\n    const routes = state.routes.map(route => {\n      const childState = getStateListeners[route.key]?.();\n      if (route.state === childState) {\n        return route;\n      }\n      return {\n        ...route,\n        state: childState\n      };\n    });\n    if (isArrayEqual(state.routes, routes)) {\n      return state;\n    }\n    return {\n      ...state,\n      routes\n    };\n  }, [getState, getStateListeners]);\n  React.useEffect(() => {\n    return addKeyedListener?.('getState', key, getRehydratedState);\n  }, [addKeyedListener, getRehydratedState, key]);\n}\n//# sourceMappingURL=useOnGetState.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\n/**\n * Hook to handle focus actions for a route.\n * Focus action needs to be treated specially, coz when a nested route is focused,\n * the parent navigators also needs to be focused.\n */\nexport function useOnRouteFocus({\n  router,\n  getState,\n  key: sourceRouteKey,\n  setState\n}) {\n  const {\n    onRouteFocus: onRouteFocusParent\n  } = React.useContext(NavigationBuilderContext);\n  return React.useCallback(key => {\n    const state = getState();\n    const result = router.getStateForRouteFocus(state, key);\n    if (result !== state) {\n      setState(result);\n    }\n    if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {\n      onRouteFocusParent(sourceRouteKey);\n    }\n  }, [getState, onRouteFocusParent, router, setState, sourceRouteKey]);\n}\n//# sourceMappingURL=useOnRouteFocus.js.map","\"use strict\";\n\nimport { nanoid } from 'nanoid/non-secure';\nimport * as React from 'react';\nimport { SingleNavigatorContext } from \"./EnsureSingleNavigator.js\";\n\n/**\n * Register a navigator in the parent context (either a navigation container or a screen).\n * This is used to prevent multiple navigators under a single container or screen.\n */\nexport function useRegisterNavigator() {\n  const [key] = React.useState(() => nanoid());\n  const container = React.useContext(SingleNavigatorContext);\n  if (container === undefined) {\n    throw new Error(\"Couldn't register the navigator. Have you wrapped your app with 'NavigationContainer'?\\n\\nThis can also happen if there are multiple copies of '@react-navigation' packages installed.\");\n  }\n  React.useEffect(() => {\n    const {\n      register,\n      unregister\n    } = container;\n    register(key);\n    return () => unregister(key);\n  }, [container, key]);\n  return key;\n}\n//# sourceMappingURL=useRegisterNavigator.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { useClientLayoutEffect } from \"./useClientLayoutEffect.js\";\n\n/**\n * When screen config changes, we want to update the navigator in the same update phase.\n * However, navigation state is in the root component and React won't let us update it from a child.\n * This is a workaround for that, the scheduled update is stored in the ref without actually calling setState.\n * It lets all subsequent updates access the latest state so it stays correct.\n * Then we call setState during after the component updates.\n */\nexport function useScheduleUpdate(callback) {\n  const {\n    scheduleUpdate,\n    flushUpdates\n  } = React.useContext(NavigationBuilderContext);\n\n  // FIXME: This is potentially unsafe\n  // However, since we are using sync store, it might be fine\n  scheduleUpdate(callback);\n  useClientLayoutEffect(flushUpdates);\n}\n//# sourceMappingURL=useScheduleUpdate.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { createNavigationContainerRef } from \"./createNavigationContainerRef.js\";\nexport function useNavigationContainerRef() {\n  const navigation = React.useRef(null);\n  if (navigation.current == null) {\n    navigation.current = createNavigationContainerRef();\n  }\n  return navigation.current;\n}\n//# sourceMappingURL=useNavigationContainerRef.js.map","\"use strict\";\n\nimport { nanoid } from 'nanoid/non-secure';\nimport * as React from 'react';\nimport useLatestCallback from 'use-latest-callback';\nimport { useNavigation } from \"./useNavigation.js\";\nimport { usePreventRemoveContext } from \"./usePreventRemoveContext.js\";\nimport { useRoute } from \"./useRoute.js\";\n\n/**\n * Hook to prevent screen from being removed. Can be used to prevent users from leaving the screen.\n *\n * @param preventRemove Boolean indicating whether to prevent screen from being removed.\n * @param callback Function which is executed when screen was prevented from being removed.\n */\nexport function usePreventRemove(preventRemove, callback) {\n  const [id] = React.useState(() => nanoid());\n  const navigation = useNavigation();\n  const {\n    key: routeKey\n  } = useRoute();\n  const {\n    setPreventRemove\n  } = usePreventRemoveContext();\n  React.useEffect(() => {\n    setPreventRemove(id, routeKey, preventRemove);\n    return () => {\n      setPreventRemove(id, routeKey, false);\n    };\n  }, [setPreventRemove, id, routeKey, preventRemove]);\n  const beforeRemoveListener = useLatestCallback(e => {\n    if (!preventRemove) {\n      return;\n    }\n    e.preventDefault();\n    callback({\n      data: e.data\n    });\n  });\n  React.useEffect(() => navigation?.addListener('beforeRemove', beforeRemoveListener), [navigation, beforeRemoveListener]);\n}\n//# sourceMappingURL=usePreventRemove.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { PreventRemoveContext } from \"./PreventRemoveContext.js\";\nexport function usePreventRemoveContext() {\n  const value = React.useContext(PreventRemoveContext);\n  if (value == null) {\n    throw new Error(\"Couldn't find the prevent remove context. Is your component inside NavigationContent?\");\n  }\n  return value;\n}\n//# sourceMappingURL=usePreventRemoveContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationFocusedRouteStateContext } from \"./NavigationFocusedRouteStateContext.js\";\n\n/**\n * Hook to get a minimal state representation for the current route.\n * The returned state can be used with `getPathFromState` to build a path.\n *\n * @returns Minimal state to build a path for the current route.\n */\nexport function useStateForPath() {\n  const state = React.useContext(NavigationFocusedRouteStateContext);\n  return state;\n}\n//# sourceMappingURL=useStateForPath.js.map","\"use strict\";\n\nimport { BaseNavigationContainer, getActionFromState, getPathFromState, getStateFromPath, ThemeProvider, validatePathConfig } from '@react-navigation/core';\nimport * as React from 'react';\nimport { I18nManager } from 'react-native';\nimport useLatestCallback from 'use-latest-callback';\nimport { LinkingContext } from \"./LinkingContext.js\";\nimport { LocaleDirContext } from \"./LocaleDirContext.js\";\nimport { DefaultTheme } from \"./theming/DefaultTheme.js\";\nimport { UnhandledLinkingContext } from \"./UnhandledLinkingContext.js\";\nimport { useBackButton } from './useBackButton';\nimport { useDocumentTitle } from './useDocumentTitle';\nimport { useLinking } from './useLinking';\nimport { useThenable } from \"./useThenable.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nglobalThis.REACT_NAVIGATION_DEVTOOLS = new WeakMap();\nfunction NavigationContainerInner({\n  direction = I18nManager.getConstants().isRTL ? 'rtl' : 'ltr',\n  theme = DefaultTheme,\n  linking,\n  fallback = null,\n  documentTitle,\n  onReady,\n  onStateChange,\n  ...rest\n}, ref) {\n  const isLinkingEnabled = linking ? linking.enabled !== false : false;\n  if (linking?.config) {\n    validatePathConfig(linking.config);\n  }\n  const refContainer = React.useRef(null);\n  useBackButton(refContainer);\n  useDocumentTitle(refContainer, documentTitle);\n  const [lastUnhandledLink, setLastUnhandledLink] = React.useState();\n  const {\n    getInitialState\n  } = useLinking(refContainer, {\n    enabled: isLinkingEnabled,\n    prefixes: [],\n    ...linking\n  }, setLastUnhandledLink);\n  const linkingContext = React.useMemo(() => ({\n    options: linking\n  }), [linking]);\n  const unhandledLinkingContext = React.useMemo(() => ({\n    lastUnhandledLink,\n    setLastUnhandledLink\n  }), [lastUnhandledLink, setLastUnhandledLink]);\n  const onReadyForLinkingHandling = useLatestCallback(() => {\n    // If the screen path matches lastUnhandledLink, we do not track it\n    const path = refContainer.current?.getCurrentRoute()?.path;\n    setLastUnhandledLink(previousLastUnhandledLink => {\n      if (previousLastUnhandledLink === path) {\n        return undefined;\n      }\n      return previousLastUnhandledLink;\n    });\n    onReady?.();\n  });\n  const onStateChangeForLinkingHandling = useLatestCallback(state => {\n    // If the screen path matches lastUnhandledLink, we do not track it\n    const path = refContainer.current?.getCurrentRoute()?.path;\n    setLastUnhandledLink(previousLastUnhandledLink => {\n      if (previousLastUnhandledLink === path) {\n        return undefined;\n      }\n      return previousLastUnhandledLink;\n    });\n    onStateChange?.(state);\n  });\n  // Add additional linking related info to the ref\n  // This will be used by the devtools\n  React.useEffect(() => {\n    if (refContainer.current) {\n      REACT_NAVIGATION_DEVTOOLS.set(refContainer.current, {\n        get linking() {\n          return {\n            ...linking,\n            enabled: isLinkingEnabled,\n            prefixes: linking?.prefixes ?? [],\n            getStateFromPath: linking?.getStateFromPath ?? getStateFromPath,\n            getPathFromState: linking?.getPathFromState ?? getPathFromState,\n            getActionFromState: linking?.getActionFromState ?? getActionFromState\n          };\n        }\n      });\n    }\n  });\n  const [isResolved, initialState] = useThenable(getInitialState);\n\n  // FIXME\n  // @ts-expect-error not sure why this is not working\n  React.useImperativeHandle(ref, () => refContainer.current);\n  const isLinkingReady = rest.initialState != null || !isLinkingEnabled || isResolved;\n  if (!isLinkingReady) {\n    return /*#__PURE__*/_jsx(LocaleDirContext.Provider, {\n      value: direction,\n      children: /*#__PURE__*/_jsx(ThemeProvider, {\n        value: theme,\n        children: fallback\n      })\n    });\n  }\n  return /*#__PURE__*/_jsx(LocaleDirContext.Provider, {\n    value: direction,\n    children: /*#__PURE__*/_jsx(UnhandledLinkingContext.Provider, {\n      value: unhandledLinkingContext,\n      children: /*#__PURE__*/_jsx(LinkingContext.Provider, {\n        value: linkingContext,\n        children: /*#__PURE__*/_jsx(BaseNavigationContainer, {\n          ...rest,\n          theme: theme,\n          onReady: onReadyForLinkingHandling,\n          onStateChange: onStateChangeForLinkingHandling,\n          initialState: rest.initialState == null ? initialState : rest.initialState,\n          ref: refContainer\n        })\n      })\n    })\n  });\n}\n\n/**\n * Container component that manages the navigation state.\n * This should be rendered at the root wrapping the whole app.\n */\nexport const NavigationContainer = /*#__PURE__*/React.forwardRef(NavigationContainerInner);\n//# sourceMappingURL=NavigationContainer.js.map","\"use strict\";\n\nimport * as React from 'react';\nconst MISSING_CONTEXT_ERROR = \"Couldn't find a LinkingContext context.\";\nexport const LinkingContext = /*#__PURE__*/React.createContext({\n  get options() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  }\n});\nLinkingContext.displayName = 'LinkingContext';\n//# sourceMappingURL=LinkingContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nexport const LocaleDirContext = /*#__PURE__*/React.createContext('ltr');\nLocaleDirContext.displayName = 'LocaleDirContext';\n//# sourceMappingURL=LocaleDirContext.js.map","\"use strict\";\n\nimport { fonts } from \"./fonts.js\";\nexport const DefaultTheme = {\n  dark: false,\n  colors: {\n    primary: 'rgb(0, 122, 255)',\n    background: 'rgb(242, 242, 242)',\n    card: 'rgb(255, 255, 255)',\n    text: 'rgb(28, 28, 30)',\n    border: 'rgb(216, 216, 216)',\n    notification: 'rgb(255, 59, 48)'\n  },\n  fonts\n};\n//# sourceMappingURL=DefaultTheme.js.map","\"use strict\";\n\nimport { Platform } from 'react-native';\nconst WEB_FONT_STACK = 'system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"';\nexport const fonts = Platform.select({\n  web: {\n    regular: {\n      fontFamily: WEB_FONT_STACK,\n      fontWeight: '400'\n    },\n    medium: {\n      fontFamily: WEB_FONT_STACK,\n      fontWeight: '500'\n    },\n    bold: {\n      fontFamily: WEB_FONT_STACK,\n      fontWeight: '600'\n    },\n    heavy: {\n      fontFamily: WEB_FONT_STACK,\n      fontWeight: '700'\n    }\n  },\n  ios: {\n    regular: {\n      fontFamily: 'System',\n      fontWeight: '400'\n    },\n    medium: {\n      fontFamily: 'System',\n      fontWeight: '500'\n    },\n    bold: {\n      fontFamily: 'System',\n      fontWeight: '600'\n    },\n    heavy: {\n      fontFamily: 'System',\n      fontWeight: '700'\n    }\n  },\n  default: {\n    regular: {\n      fontFamily: 'sans-serif',\n      fontWeight: 'normal'\n    },\n    medium: {\n      fontFamily: 'sans-serif-medium',\n      fontWeight: 'normal'\n    },\n    bold: {\n      fontFamily: 'sans-serif',\n      fontWeight: '600'\n    },\n    heavy: {\n      fontFamily: 'sans-serif',\n      fontWeight: '700'\n    }\n  }\n});\n//# sourceMappingURL=fonts.js.map","\"use strict\";\n\nimport * as React from 'react';\nconst MISSING_CONTEXT_ERROR = \"Couldn't find an UnhandledLinkingContext context.\";\nexport const UnhandledLinkingContext = /*#__PURE__*/React.createContext({\n  get lastUnhandledLink() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get setLastUnhandledLink() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  }\n});\nUnhandledLinkingContext.displayName = 'UnhandledLinkingContext';\n//# sourceMappingURL=UnhandledLinkingContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { BackHandler } from 'react-native';\nexport function useBackButton(ref) {\n  React.useEffect(() => {\n    const subscription = BackHandler.addEventListener('hardwareBackPress', () => {\n      const navigation = ref.current;\n      if (navigation == null) {\n        return false;\n      }\n      if (navigation.canGoBack()) {\n        navigation.goBack();\n        return true;\n      }\n      return false;\n    });\n    return () => subscription.remove();\n  }, [ref]);\n}\n//# sourceMappingURL=useBackButton.native.js.map","\"use strict\";\n\nexport function useDocumentTitle() {\n  // Noop for native platforms\n}\n//# sourceMappingURL=useDocumentTitle.native.js.map","\"use strict\";\n\nimport { getActionFromState as getActionFromStateDefault, getStateFromPath as getStateFromPathDefault, useNavigationIndependentTree } from '@react-navigation/core';\nimport * as React from 'react';\nimport { Linking, Platform } from 'react-native';\nimport { extractPathFromURL } from \"./extractPathFromURL.js\";\nconst linkingHandlers = [];\nexport function useLinking(ref, {\n  enabled = true,\n  prefixes,\n  filter,\n  config,\n  getInitialURL = () => Promise.race([Linking.getInitialURL(), new Promise(resolve => {\n    // Timeout in 150ms if `getInitialState` doesn't resolve\n    // Workaround for https://github.com/facebook/react-native/issues/25675\n    setTimeout(resolve, 150);\n  })]),\n  subscribe = listener => {\n    const callback = ({\n      url\n    }) => listener(url);\n    const subscription = Linking.addEventListener('url', callback);\n\n    // Storing this in a local variable stops Jest from complaining about import after teardown\n    // @ts-expect-error: removeEventListener is not present in newer RN versions\n    const removeEventListener = Linking.removeEventListener?.bind(Linking);\n    return () => {\n      // https://github.com/facebook/react-native/commit/6d1aca806cee86ad76de771ed3a1cc62982ebcd7\n      if (subscription?.remove) {\n        subscription.remove();\n      } else {\n        removeEventListener?.('url', callback);\n      }\n    };\n  },\n  getStateFromPath = getStateFromPathDefault,\n  getActionFromState = getActionFromStateDefault\n}, onUnhandledLinking) {\n  const independent = useNavigationIndependentTree();\n  React.useEffect(() => {\n    if (process.env.NODE_ENV === 'production') {\n      return undefined;\n    }\n    if (independent) {\n      return undefined;\n    }\n    if (enabled !== false && linkingHandlers.length) {\n      console.error(['Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:', \"- You don't have multiple NavigationContainers in the app each with 'linking' enabled\", '- Only a single instance of the root component is rendered', Platform.OS === 'android' ? \"- You have set 'android:launchMode=singleTask' in the '<activity />' section of the 'AndroidManifest.xml' file to avoid launching multiple instances\" : ''].join('\\n').trim());\n    }\n    const handler = Symbol();\n    if (enabled !== false) {\n      linkingHandlers.push(handler);\n    }\n    return () => {\n      const index = linkingHandlers.indexOf(handler);\n      if (index > -1) {\n        linkingHandlers.splice(index, 1);\n      }\n    };\n  }, [enabled, independent]);\n\n  // We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners\n  // This lets user avoid wrapping the items in `React.useCallback` or `React.useMemo`\n  // Not re-creating `getInitialState` is important coz it makes it easier for the user to use in an effect\n  const enabledRef = React.useRef(enabled);\n  const prefixesRef = React.useRef(prefixes);\n  const filterRef = React.useRef(filter);\n  const configRef = React.useRef(config);\n  const getInitialURLRef = React.useRef(getInitialURL);\n  const getStateFromPathRef = React.useRef(getStateFromPath);\n  const getActionFromStateRef = React.useRef(getActionFromState);\n  React.useEffect(() => {\n    enabledRef.current = enabled;\n    prefixesRef.current = prefixes;\n    filterRef.current = filter;\n    configRef.current = config;\n    getInitialURLRef.current = getInitialURL;\n    getStateFromPathRef.current = getStateFromPath;\n    getActionFromStateRef.current = getActionFromState;\n  });\n  const getStateFromURL = React.useCallback(url => {\n    if (!url || filterRef.current && !filterRef.current(url)) {\n      return undefined;\n    }\n    const path = extractPathFromURL(prefixesRef.current, url);\n    return path !== undefined ? getStateFromPathRef.current(path, configRef.current) : undefined;\n  }, []);\n  const getInitialState = React.useCallback(() => {\n    let state;\n    if (enabledRef.current) {\n      const url = getInitialURLRef.current();\n      if (url != null) {\n        if (typeof url !== 'string') {\n          return url.then(url => {\n            const state = getStateFromURL(url);\n            if (typeof url === 'string') {\n              // If the link were handled, it gets cleared in NavigationContainer\n              onUnhandledLinking(extractPathFromURL(prefixes, url));\n            }\n            return state;\n          });\n        } else {\n          onUnhandledLinking(extractPathFromURL(prefixes, url));\n        }\n      }\n      state = getStateFromURL(url);\n    }\n    const thenable = {\n      then(onfulfilled) {\n        return Promise.resolve(onfulfilled ? onfulfilled(state) : state);\n      },\n      catch() {\n        return thenable;\n      }\n    };\n    return thenable;\n  }, [getStateFromURL, onUnhandledLinking, prefixes]);\n  React.useEffect(() => {\n    const listener = url => {\n      if (!enabled) {\n        return;\n      }\n      const navigation = ref.current;\n      const state = navigation ? getStateFromURL(url) : undefined;\n      if (navigation && state) {\n        // If the link were handled, it gets cleared in NavigationContainer\n        onUnhandledLinking(extractPathFromURL(prefixes, url));\n        const action = getActionFromStateRef.current(state, configRef.current);\n        if (action !== undefined) {\n          try {\n            navigation.dispatch(action);\n          } catch (e) {\n            // Ignore any errors from deep linking.\n            // This could happen in case of malformed links, navigation object not being initialized etc.\n            console.warn(`An error occurred when trying to handle the link '${url}': ${typeof e === 'object' && e != null && 'message' in e ? e.message : e}`);\n          }\n        } else {\n          navigation.resetRoot(state);\n        }\n      }\n    };\n    return subscribe(listener);\n  }, [enabled, getStateFromURL, onUnhandledLinking, prefixes, ref, subscribe]);\n  return {\n    getInitialState\n  };\n}\n//# sourceMappingURL=useLinking.native.js.map","\"use strict\";\n\nimport escapeStringRegexp from 'escape-string-regexp';\nexport function extractPathFromURL(prefixes, url) {\n  for (const prefix of prefixes) {\n    const protocol = prefix.match(/^[^:]+:/)?.[0] ?? '';\n    const host = prefix.replace(new RegExp(`^${escapeStringRegexp(protocol)}`), '').replace(/\\/+/g, '/') // Replace multiple slash (//) with single ones\n    .replace(/^\\//, ''); // Remove extra leading slash\n\n    const prefixRegex = new RegExp(`^${escapeStringRegexp(protocol)}(/)*${host.split('.').map(it => it === '*' ? '[^/]+' : escapeStringRegexp(it)).join('\\\\.')}`);\n    const [originAndPath, ...searchParams] = url.split('?');\n    const normalizedURL = originAndPath.replace(/\\/+/g, '/').concat(searchParams.length ? `?${searchParams.join('?')}` : '');\n    if (prefixRegex.test(normalizedURL)) {\n      return normalizedURL.replace(prefixRegex, '');\n    }\n  }\n  return undefined;\n}\n//# sourceMappingURL=extractPathFromURL.js.map","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _toArray(r) {\n  return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nmodule.exports = _toArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nimport * as React from 'react';\nexport function useThenable(create) {\n  const [promise] = React.useState(create);\n  let initialState = [false, undefined];\n\n  // Check if our thenable is synchronous\n  // eslint-disable-next-line promise/catch-or-return, promise/always-return\n  promise.then(result => {\n    initialState = [true, result];\n  });\n  const [state, setState] = React.useState(initialState);\n  const [resolved] = state;\n  React.useEffect(() => {\n    let cancelled = false;\n    const resolve = async () => {\n      let result;\n      try {\n        result = await promise;\n      } finally {\n        if (!cancelled) {\n          setState([true, result]);\n        }\n      }\n    };\n    if (!resolved) {\n      resolve();\n    }\n    return () => {\n      cancelled = true;\n    };\n  }, [promise, resolved]);\n  return state;\n}\n//# sourceMappingURL=useThenable.js.map","\"use strict\";\n\nimport { useTheme } from '@react-navigation/core';\nimport * as React from 'react';\nimport { Platform, Text } from 'react-native';\nimport { useLinkProps } from \"./useLinkProps.js\";\n/**\n * Component to render link to another screen using a path.\n * Uses an anchor tag on the web.\n *\n * @param props.screen Name of the screen to navigate to (e.g. `'Feeds'`).\n * @param props.params Params to pass to the screen to navigate to (e.g. `{ sort: 'hot' }`).\n * @param props.href Optional absolute path to use for the href (e.g. `/feeds/hot`).\n * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.\n * @param props.children Child elements to render the content.\n */\nexport function Link({\n  screen,\n  params,\n  action,\n  href,\n  style,\n  ...rest\n}) {\n  const {\n    colors,\n    fonts\n  } = useTheme();\n  // @ts-expect-error: This is already type-checked by the prop types\n  const props = useLinkProps({\n    screen,\n    params,\n    action,\n    href\n  });\n  const onPress = e => {\n    if ('onPress' in rest) {\n      rest.onPress?.(e);\n    }\n\n    // Let user prevent default behavior\n    if (!e.defaultPrevented) {\n      props.onPress(e);\n    }\n  };\n  return /*#__PURE__*/React.createElement(Text, {\n    ...props,\n    ...rest,\n    ...Platform.select({\n      web: {\n        onClick: onPress\n      },\n      default: {\n        onPress\n      }\n    }),\n    style: [{\n      color: colors.primary\n    }, fonts.regular, style]\n  });\n}\n//# sourceMappingURL=Link.js.map","\"use strict\";\n\nimport { getPathFromState, NavigationContainerRefContext, NavigationHelpersContext } from '@react-navigation/core';\nimport * as React from 'react';\nimport { Platform } from 'react-native';\nimport { LinkingContext } from \"./LinkingContext.js\";\nconst getStateFromParams = params => {\n  if (params?.state) {\n    return params.state;\n  }\n  if (params?.screen) {\n    return {\n      routes: [{\n        name: params.screen,\n        params: params.params,\n        // @ts-expect-error this is fine 🔥\n        state: params.screen ? getStateFromParams(params.params) : undefined\n      }]\n    };\n  }\n  return undefined;\n};\n\n/**\n * Hook to get props for an anchor tag so it can work with in page navigation.\n *\n * @param props.screen Name of the screen to navigate to (e.g. `'Feeds'`).\n * @param props.params Params to pass to the screen to navigate to (e.g. `{ sort: 'hot' }`).\n * @param props.href Optional absolute path to use for the href (e.g. `/feeds/hot`).\n * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.\n */\nexport function useLinkProps({\n  screen,\n  params,\n  href,\n  action\n}) {\n  const root = React.useContext(NavigationContainerRefContext);\n  const navigation = React.useContext(NavigationHelpersContext);\n  const {\n    options\n  } = React.useContext(LinkingContext);\n  const onPress = e => {\n    let shouldHandle = false;\n    if (Platform.OS !== 'web' || !e) {\n      e?.preventDefault?.();\n      shouldHandle = true;\n    } else {\n      // ignore clicks with modifier keys\n      const hasModifierKey = 'metaKey' in e && e.metaKey || 'altKey' in e && e.altKey || 'ctrlKey' in e && e.ctrlKey || 'shiftKey' in e && e.shiftKey;\n\n      // only handle left clicks\n      const isLeftClick = 'button' in e ? e.button == null || e.button === 0 : true;\n\n      // let browser handle \"target=_blank\" etc.\n      const isSelfTarget = e.currentTarget && 'target' in e.currentTarget ? [undefined, null, '', 'self'].includes(e.currentTarget.target) : true;\n      if (!hasModifierKey && isLeftClick && isSelfTarget) {\n        e.preventDefault?.();\n        shouldHandle = true;\n      }\n    }\n    if (shouldHandle) {\n      if (action) {\n        if (navigation) {\n          navigation.dispatch(action);\n        } else if (root) {\n          root.dispatch(action);\n        } else {\n          throw new Error(\"Couldn't find a navigation object. Is your component inside NavigationContainer?\");\n        }\n      } else {\n        // @ts-expect-error This is already type-checked by the prop types\n        navigation?.navigate(screen, params);\n      }\n    }\n  };\n  const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;\n  return {\n    href: href ?? (Platform.OS === 'web' && screen != null ? getPathFromStateHelper({\n      routes: [{\n        // @ts-expect-error this is fine 🔥\n        name: screen,\n        // @ts-expect-error this is fine 🔥\n        params: params,\n        // @ts-expect-error this is fine 🔥\n        state: getStateFromParams(params)\n      }]\n    }, options?.config) : undefined),\n    role: 'link',\n    onPress\n  };\n}\n//# sourceMappingURL=useLinkProps.js.map","\"use strict\";\n\nimport { CurrentRenderContext } from '@react-navigation/core';\nimport * as React from 'react';\nimport { ServerContext } from \"./ServerContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Container component for server rendering.\n *\n * @param props.location Location object to base the initial URL for SSR.\n * @param props.children Child elements to render the content.\n * @param props.ref Ref object which contains helper methods.\n */\nexport const ServerContainer = /*#__PURE__*/React.forwardRef(function ServerContainer({\n  children,\n  location\n}, ref) {\n  React.useEffect(() => {\n    console.error(\"'ServerContainer' should only be used on the server with 'react-dom/server' for SSR.\");\n  }, []);\n\n  // eslint-disable-next-line @eslint-react/no-unstable-context-value\n  const current = {};\n  if (ref) {\n    const value = {\n      getCurrentOptions() {\n        return current.options;\n      }\n    };\n\n    // We write to the `ref` during render instead of `React.useImperativeHandle`\n    // This is because `useImperativeHandle` will update the ref after 'commit',\n    // and there's no 'commit' phase during SSR.\n    // Mutating ref during render is unsafe in concurrent mode, but we don't care about it for SSR.\n    if (typeof ref === 'function') {\n      ref(value);\n    } else {\n      ref.current = value;\n    }\n  }\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line @eslint-react/no-unstable-context-value\n    _jsx(ServerContext.Provider, {\n      value: {\n        location\n      },\n      children: /*#__PURE__*/_jsx(CurrentRenderContext.Provider, {\n        value: current,\n        children: children\n      })\n    })\n  );\n});\n//# sourceMappingURL=ServerContainer.js.map","\"use strict\";\n\nimport * as React from 'react';\nexport const ServerContext = /*#__PURE__*/React.createContext(undefined);\n//# sourceMappingURL=ServerContext.js.map","\"use strict\";\n\nimport { fonts } from \"./fonts.js\";\nexport const DarkTheme = {\n  dark: true,\n  colors: {\n    primary: 'rgb(10, 132, 255)',\n    background: 'rgb(1, 1, 1)',\n    card: 'rgb(18, 18, 18)',\n    text: 'rgb(229, 229, 231)',\n    border: 'rgb(39, 39, 41)',\n    notification: 'rgb(255, 69, 58)'\n  },\n  fonts\n};\n//# sourceMappingURL=DarkTheme.js.map","\"use strict\";\n\nexport {};\n//# sourceMappingURL=types.js.map","\"use strict\";\n\nimport { CommonActions, findFocusedRoute, getActionFromState, getPathFromState, getStateFromPath, NavigationHelpersContext, NavigationRouteContext, useStateForPath } from '@react-navigation/core';\nimport * as React from 'react';\nimport { LinkingContext } from \"./LinkingContext.js\";\n/**\n * Helper to build a href for a screen based on the linking options.\n */\nexport function useBuildHref() {\n  const navigation = React.useContext(NavigationHelpersContext);\n  const route = React.useContext(NavigationRouteContext);\n  const {\n    options\n  } = React.useContext(LinkingContext);\n  const focusedRouteState = useStateForPath();\n  const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;\n  const buildHref = React.useCallback((name, params) => {\n    if (options?.enabled === false) {\n      return undefined;\n    }\n\n    // Check that we're inside:\n    // - navigator's context\n    // - route context of the navigator (could be a screen, tab, etc.)\n    // - route matches the state for path (from the screen's context)\n    // This ensures that we're inside a screen\n    const isScreen = navigation && route?.key && focusedRouteState ? route.key === findFocusedRoute(focusedRouteState)?.key && navigation.getState().routes.some(r => r.key === route.key) : false;\n    const stateForRoute = {\n      routes: [{\n        name,\n        params\n      }]\n    };\n    const constructState = state => {\n      if (state) {\n        const route = state.routes[0];\n\n        // If we're inside a screen and at the innermost route\n        // We need to replace the state with the provided one\n        // This assumes that we're navigating to a sibling route\n        if (isScreen && !route.state) {\n          return stateForRoute;\n        }\n\n        // Otherwise, dive into the nested state of the route\n        return {\n          routes: [{\n            ...route,\n            state: constructState(route.state)\n          }]\n        };\n      }\n\n      // Once there is no more nested state, we're at the innermost route\n      // We can add a state based on provided parameters\n      // This assumes that we're navigating to a child of this route\n      // In this case, the helper is used in a navigator for its routes\n      return stateForRoute;\n    };\n    const state = constructState(focusedRouteState);\n    const path = getPathFromStateHelper(state, options?.config);\n    return path;\n  }, [options?.enabled, options?.config, route?.key, navigation, focusedRouteState, getPathFromStateHelper]);\n  return buildHref;\n}\n\n/**\n * Helper to build a navigation action from a href based on the linking options.\n */\nexport const useBuildAction = () => {\n  const {\n    options\n  } = React.useContext(LinkingContext);\n  const getStateFromPathHelper = options?.getStateFromPath ?? getStateFromPath;\n  const getActionFromStateHelper = options?.getActionFromState ?? getActionFromState;\n  const buildAction = React.useCallback(href => {\n    if (!href.startsWith('/')) {\n      throw new Error(`The href must start with '/' (${href}).`);\n    }\n    const state = getStateFromPathHelper(href, options?.config);\n    if (state) {\n      const action = getActionFromStateHelper(state, options?.config);\n      return action ?? CommonActions.reset(state);\n    } else {\n      throw new Error('Failed to parse the href to a navigation state.');\n    }\n  }, [options?.config, getStateFromPathHelper, getActionFromStateHelper]);\n  return buildAction;\n};\n\n/**\n * Helpers to build href or action based on the linking options.\n *\n * @returns `buildHref` to build an `href` for screen and `buildAction` to build an action from an `href`.\n */\nexport function useLinkBuilder() {\n  const buildHref = useBuildHref();\n  const buildAction = useBuildAction();\n  return {\n    buildHref,\n    buildAction\n  };\n}\n//# sourceMappingURL=useLinkBuilder.js.map","\"use strict\";\n\nimport { NavigationContainerRefContext } from '@react-navigation/core';\nimport * as React from 'react';\nimport { useBuildAction } from \"./useLinkBuilder.js\";\n\n/**\n * Helper to navigate to a screen using a href based on the linking options.\n *\n * @returns function that receives the href to navigate to.\n */\nexport function useLinkTo() {\n  const navigation = React.useContext(NavigationContainerRefContext);\n  const buildAction = useBuildAction();\n  const linkTo = React.useCallback(href => {\n    if (navigation === undefined) {\n      throw new Error(\"Couldn't find a navigation object. Is your component inside NavigationContainer?\");\n    }\n    const action = buildAction(href);\n    navigation.dispatch(action);\n  }, [buildAction, navigation]);\n  return linkTo;\n}\n//# sourceMappingURL=useLinkTo.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { LocaleDirContext } from \"./LocaleDirContext.js\";\n\n/**\n * Hook to access the text direction specified in the `NavigationContainer`.\n */\nexport function useLocale() {\n  const direction = React.useContext(LocaleDirContext);\n  if (direction === undefined) {\n    throw new Error(\"Couldn't determine the text direction. Is your component inside NavigationContainer?\");\n  }\n  return {\n    direction\n  };\n}\n//# sourceMappingURL=useLocale.js.map","\"use strict\";\n\nimport { getPathFromState, useStateForPath } from '@react-navigation/core';\nimport * as React from 'react';\nimport { LinkingContext } from \"./LinkingContext.js\";\n\n/**\n * Hook to get the path for the current route based on linking options.\n *\n * @returns Path for the current route.\n */\nexport function useRoutePath() {\n  const {\n    options\n  } = React.useContext(LinkingContext);\n  const state = useStateForPath();\n  if (state === undefined) {\n    throw new Error(\"Couldn't find a state for the route object. Is your component inside a screen in a navigator?\");\n  }\n  const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;\n  const path = React.useMemo(() => {\n    if (options?.enabled === false) {\n      return undefined;\n    }\n    const path = getPathFromStateHelper(state, options?.config);\n    return path;\n  }, [options?.enabled, options?.config, state, getPathFromStateHelper]);\n  return path;\n}\n//# sourceMappingURL=useRoutePath.js.map","\"use strict\";\n\nimport { NavigationContext, useRoute } from '@react-navigation/core';\nimport * as React from 'react';\nfunction getScrollableNode(ref) {\n  if (ref.current == null) {\n    return null;\n  }\n  if ('scrollToTop' in ref.current || 'scrollTo' in ref.current || 'scrollToOffset' in ref.current || 'scrollResponderScrollTo' in ref.current) {\n    // This is already a scrollable node.\n    return ref.current;\n  } else if ('getScrollResponder' in ref.current) {\n    // If the view is a wrapper like FlatList, SectionList etc.\n    // We need to use `getScrollResponder` to get access to the scroll responder\n    return ref.current.getScrollResponder();\n  } else if ('getNode' in ref.current) {\n    // When a `ScrollView` is wrapped in `Animated.createAnimatedComponent`\n    // we need to use `getNode` to get the ref to the actual scrollview.\n    // Note that `getNode` is deprecated in newer versions of react-native\n    // this is why we check if we already have a scrollable node above.\n    return ref.current.getNode();\n  } else {\n    return ref.current;\n  }\n}\nexport function useScrollToTop(ref) {\n  const navigation = React.useContext(NavigationContext);\n  const route = useRoute();\n  if (navigation === undefined) {\n    throw new Error(\"Couldn't find a navigation object. Is your component inside NavigationContainer?\");\n  }\n  React.useEffect(() => {\n    const tabNavigations = [];\n    let currentNavigation = navigation;\n    // If the screen is nested inside multiple tab navigators, we should scroll to top for any of them\n    // So we need to find all the parent tab navigators and add the listeners there\n    while (currentNavigation) {\n      if (currentNavigation.getState().type === 'tab') {\n        tabNavigations.push(currentNavigation);\n      }\n      currentNavigation = currentNavigation.getParent();\n    }\n    if (tabNavigations.length === 0) {\n      return;\n    }\n    const unsubscribers = tabNavigations.map(tab => {\n      return tab.addListener(\n      // We don't wanna import tab types here to avoid extra deps\n      // in addition, there are multiple tab implementations\n      // @ts-expect-error the `tabPress` event is only available when navigation type is tab\n      'tabPress', e => {\n        // We should scroll to top only when the screen is focused\n        const isFocused = navigation.isFocused();\n\n        // In a nested stack navigator, tab press resets the stack to first screen\n        // So we should scroll to top only when we are on first screen\n        const isFirst = tabNavigations.includes(navigation) || navigation.getState().routes[0].key === route.key;\n\n        // Run the operation in the next frame so we're sure all listeners have been run\n        // This is necessary to know if preventDefault() has been called\n        requestAnimationFrame(() => {\n          const scrollable = getScrollableNode(ref);\n          if (isFocused && isFirst && scrollable && !e.defaultPrevented) {\n            if ('scrollToTop' in scrollable) {\n              scrollable.scrollToTop();\n            } else if ('scrollTo' in scrollable) {\n              scrollable.scrollTo({\n                y: 0,\n                animated: true\n              });\n            } else if ('scrollToOffset' in scrollable) {\n              scrollable.scrollToOffset({\n                offset: 0,\n                animated: true\n              });\n            } else if ('scrollResponderScrollTo' in scrollable) {\n              scrollable.scrollResponderScrollTo({\n                y: 0,\n                animated: true\n              });\n            }\n          }\n        });\n      });\n    });\n    return () => {\n      unsubscribers.forEach(unsubscribe => unsubscribe());\n    };\n  }, [navigation, ref, route.key]);\n}\n//# sourceMappingURL=useScrollToTop.js.map","\"use strict\";\n\n/**\n * Navigators\n */\nexport { createNativeStackNavigator } from \"./navigators/createNativeStackNavigator.js\";\n\n/**\n * Views\n */\nexport { NativeStackView } from './views/NativeStackView';\n\n/**\n * Hooks\n */\nexport { useAnimatedHeaderHeight } from \"./utils/useAnimatedHeaderHeight.js\";\n\n/**\n * Types\n */\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nimport { createNavigatorFactory, NavigationMetaContext, StackActions, StackRouter, useNavigationBuilder } from '@react-navigation/native';\nimport * as React from 'react';\nimport { NativeStackView } from '../views/NativeStackView';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction NativeStackNavigator({\n  id,\n  initialRouteName,\n  UNSTABLE_routeNamesChangeBehavior,\n  children,\n  layout,\n  screenListeners,\n  screenOptions,\n  screenLayout,\n  UNSTABLE_router,\n  ...rest\n}) {\n  const {\n    state,\n    describe,\n    descriptors,\n    navigation,\n    NavigationContent\n  } = useNavigationBuilder(StackRouter, {\n    id,\n    initialRouteName,\n    UNSTABLE_routeNamesChangeBehavior,\n    children,\n    layout,\n    screenListeners,\n    screenOptions,\n    screenLayout,\n    UNSTABLE_router\n  });\n  const meta = React.useContext(NavigationMetaContext);\n  React.useEffect(() => {\n    if (meta && 'type' in meta && meta.type === 'native-tabs') {\n      // If we're inside native tabs, we don't need to handle popToTop\n      // It's handled natively by native tabs\n      return;\n    }\n\n    // @ts-expect-error: there may not be a tab navigator in parent\n    return navigation?.addListener?.('tabPress', e => {\n      const isFocused = navigation.isFocused();\n\n      // Run the operation in the next frame so we're sure all listeners have been run\n      // This is necessary to know if preventDefault() has been called\n      requestAnimationFrame(() => {\n        if (state.index > 0 && isFocused && !e.defaultPrevented) {\n          // When user taps on already focused tab and we're inside the tab,\n          // reset the stack to replicate native behaviour\n          navigation.dispatch({\n            ...StackActions.popToTop(),\n            target: state.key\n          });\n        }\n      });\n    });\n  }, [meta, navigation, state.index, state.key]);\n  return /*#__PURE__*/_jsx(NavigationContent, {\n    children: /*#__PURE__*/_jsx(NativeStackView, {\n      ...rest,\n      state: state,\n      navigation: navigation,\n      descriptors: descriptors,\n      describe: describe\n    })\n  });\n}\nexport function createNativeStackNavigator(config) {\n  return createNavigatorFactory(NativeStackNavigator)(config);\n}\n//# sourceMappingURL=createNativeStackNavigator.js.map","\"use strict\";\n\nimport { getDefaultHeaderHeight, getHeaderTitle, HeaderBackContext, HeaderHeightContext, HeaderShownContext, SafeAreaProviderCompat, useFrameSize } from '@react-navigation/elements';\nimport { NavigationProvider, StackActions, usePreventRemoveContext, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated, Platform, StatusBar, StyleSheet, useAnimatedValue, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { compatibilityFlags, ScreenStack, ScreenStackItem } from 'react-native-screens';\nimport { debounce } from \"../utils/debounce.js\";\nimport { getModalRouteKeys } from \"../utils/getModalRoutesKeys.js\";\nimport { AnimatedHeaderHeightContext } from \"../utils/useAnimatedHeaderHeight.js\";\nimport { useDismissedRouteError } from \"../utils/useDismissedRouteError.js\";\nimport { useInvalidPreventRemoveError } from \"../utils/useInvalidPreventRemoveError.js\";\nimport { useHeaderConfigProps } from \"./useHeaderConfigProps.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst ANDROID_DEFAULT_HEADER_HEIGHT = 56;\nfunction isFabric() {\n  return 'nativeFabricUIManager' in global;\n}\nconst useNativeDriver = Platform.OS !== 'web';\nconst SceneView = ({\n  index,\n  focused,\n  shouldFreeze,\n  descriptor,\n  previousDescriptor,\n  nextDescriptor,\n  isPresentationModal,\n  isPreloaded,\n  onWillDisappear,\n  onWillAppear,\n  onAppear,\n  onDisappear,\n  onDismissed,\n  onHeaderBackButtonClicked,\n  onNativeDismissCancelled,\n  onGestureCancel,\n  onSheetDetentChanged\n}) => {\n  const {\n    route,\n    navigation,\n    options,\n    render\n  } = descriptor;\n  let {\n    animation,\n    animationMatchesGesture,\n    presentation = isPresentationModal ? 'modal' : 'card',\n    fullScreenGestureEnabled\n  } = options;\n  const {\n    animationDuration,\n    animationTypeForReplace = 'push',\n    fullScreenGestureShadowEnabled = true,\n    gestureEnabled,\n    gestureDirection = presentation === 'card' ? 'horizontal' : 'vertical',\n    gestureResponseDistance,\n    header,\n    headerBackButtonMenuEnabled,\n    headerShown,\n    headerBackground,\n    headerTransparent,\n    autoHideHomeIndicator,\n    keyboardHandlingEnabled,\n    navigationBarColor,\n    navigationBarTranslucent,\n    navigationBarHidden,\n    orientation,\n    sheetAllowedDetents = [1.0],\n    sheetLargestUndimmedDetentIndex = -1,\n    sheetGrabberVisible = false,\n    sheetCornerRadius = -1.0,\n    sheetElevation = 24,\n    sheetExpandsWhenScrolledToEdge = true,\n    sheetInitialDetentIndex = 0,\n    sheetShouldOverflowTopInset = false,\n    sheetResizeAnimationEnabled = true,\n    statusBarAnimation,\n    statusBarHidden,\n    statusBarStyle,\n    statusBarTranslucent,\n    statusBarBackgroundColor,\n    unstable_sheetFooter,\n    scrollEdgeEffects,\n    freezeOnBlur,\n    contentStyle\n  } = options;\n  if (gestureDirection === 'vertical' && Platform.OS === 'ios') {\n    // for `vertical` direction to work, we need to set `fullScreenGestureEnabled` to `true`\n    // so the screen can be dismissed from any point on screen.\n    // `animationMatchesGesture` needs to be set to `true` so the `animation` set by user can be used,\n    // otherwise `simple_push` will be used.\n    // Also, the default animation for this direction seems to be `slide_from_bottom`.\n    if (fullScreenGestureEnabled === undefined) {\n      fullScreenGestureEnabled = true;\n    }\n    if (animationMatchesGesture === undefined) {\n      animationMatchesGesture = true;\n    }\n    if (animation === undefined) {\n      animation = 'slide_from_bottom';\n    }\n  }\n\n  // workaround for rn-screens where gestureDirection has to be set on both\n  // current and previous screen - software-mansion/react-native-screens/pull/1509\n  const nextGestureDirection = nextDescriptor?.options.gestureDirection;\n  const gestureDirectionOverride = nextGestureDirection != null ? nextGestureDirection : gestureDirection;\n  if (index === 0) {\n    // first screen should always be treated as `card`, it resolves problems with no header animation\n    // for navigator with first screen as `modal` and the next as `card`\n    presentation = 'card';\n  }\n  const {\n    colors\n  } = useTheme();\n  const insets = useSafeAreaInsets();\n\n  // `modal`, `formSheet` and `pageSheet` presentations do not take whole screen, so should not take the inset.\n  const isModal = presentation === 'modal' || presentation === 'formSheet' || presentation === 'pageSheet';\n\n  // Modals are fullscreen in landscape only on iPhone\n  const isIPhone = Platform.OS === 'ios' && !(Platform.isPad || Platform.isTV);\n  const isParentHeaderShown = React.useContext(HeaderShownContext);\n  const parentHeaderHeight = React.useContext(HeaderHeightContext);\n  const parentHeaderBack = React.useContext(HeaderBackContext);\n  const isLandscape = useFrameSize(frame => frame.width > frame.height);\n  const topInset = isParentHeaderShown || Platform.OS === 'ios' && isModal || isIPhone && isLandscape ? 0 : insets.top;\n  const defaultHeaderHeight = useFrameSize(frame => Platform.select({\n    // FIXME: Currently screens isn't using Material 3\n    // So our `getDefaultHeaderHeight` doesn't return the correct value\n    // So we hardcode the value here for now until screens is updated\n    android: ANDROID_DEFAULT_HEADER_HEIGHT + topInset,\n    default: getDefaultHeaderHeight(frame, isModal, topInset)\n  }));\n  const {\n    preventedRoutes\n  } = usePreventRemoveContext();\n  const [headerHeight, setHeaderHeight] = React.useState(defaultHeaderHeight);\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const setHeaderHeightDebounced = React.useCallback(\n  // Debounce the header height updates to avoid excessive re-renders\n  debounce(setHeaderHeight, 100), []);\n  const hasCustomHeader = header != null;\n  const usesNewAndroidHeaderHeightImplementation = 'usesNewAndroidHeaderHeightImplementation' in compatibilityFlags && compatibilityFlags['usesNewAndroidHeaderHeightImplementation'] === true;\n  let headerHeightCorrectionOffset = 0;\n  if (Platform.OS === 'android' && !hasCustomHeader && !usesNewAndroidHeaderHeightImplementation) {\n    const statusBarHeight = StatusBar.currentHeight ?? 0;\n\n    // On Android, the native header height is not correctly calculated\n    // It includes status bar height even if statusbar is not translucent\n    // And the statusbar value itself doesn't match the actual status bar height\n    // So we subtract the bogus status bar height and add the actual top inset\n    headerHeightCorrectionOffset = -statusBarHeight + topInset;\n  }\n  const rawAnimatedHeaderHeight = useAnimatedValue(defaultHeaderHeight);\n  const animatedHeaderHeight = React.useMemo(() => Animated.add(rawAnimatedHeaderHeight, headerHeightCorrectionOffset), [headerHeightCorrectionOffset, rawAnimatedHeaderHeight]);\n\n  // During the very first render topInset is > 0 when running\n  // in non edge-to-edge mode on Android, while on every consecutive render\n  // topInset === 0, causing header content to jump, as we add padding on the first frame,\n  // just to remove it in next one. To prevent this, when statusBarTranslucent is set,\n  // we apply additional padding in header only if its true.\n  // For more details see: https://github.com/react-navigation/react-navigation/pull/12014\n  const headerTopInsetEnabled = typeof statusBarTranslucent === 'boolean' ? statusBarTranslucent : topInset !== 0;\n  const canGoBack = previousDescriptor != null || parentHeaderBack != null;\n  const backTitle = previousDescriptor ? getHeaderTitle(previousDescriptor.options, previousDescriptor.route.name) : parentHeaderBack?.title;\n  const headerBack = React.useMemo(() => {\n    if (canGoBack) {\n      return {\n        href: undefined,\n        // No href needed for native\n        title: backTitle\n      };\n    }\n    return undefined;\n  }, [canGoBack, backTitle]);\n  const isRemovePrevented = preventedRoutes[route.key]?.preventRemove;\n  const headerConfig = useHeaderConfigProps({\n    ...options,\n    route,\n    headerBackButtonMenuEnabled: isRemovePrevented !== undefined ? !isRemovePrevented : headerBackButtonMenuEnabled,\n    headerBackTitle: options.headerBackTitle !== undefined ? options.headerBackTitle : undefined,\n    headerHeight,\n    headerShown: header !== undefined ? false : headerShown,\n    headerTopInsetEnabled,\n    headerTransparent,\n    headerBack\n  });\n  const onHeaderHeightChange = hasCustomHeader ?\n  // If we have a custom header, don't use native header height\n  undefined :\n  // On Fabric, there's a bug where native event drivers for Animated objects\n  // are created after the first notifications about the header height\n  // from the native side, `onHeaderHeightChange` event does not notify\n  // `animatedHeaderHeight` about initial values on appearing screens at the moment.\n  Animated.event([{\n    nativeEvent: {\n      headerHeight: rawAnimatedHeaderHeight\n    }\n  }], {\n    useNativeDriver,\n    listener: e => {\n      if (e.nativeEvent && typeof e.nativeEvent === 'object' && 'headerHeight' in e.nativeEvent && typeof e.nativeEvent.headerHeight === 'number') {\n        const headerHeight = e.nativeEvent.headerHeight;\n\n        // Only debounce if header has large title or search bar\n        // As it's the only case where the header height can change frequently\n        const doesHeaderAnimate = Platform.OS === 'ios' && (options.headerLargeTitleEnabled || options.headerSearchBarOptions);\n        if (doesHeaderAnimate) {\n          setHeaderHeightDebounced(headerHeight);\n        } else {\n          if (Platform.OS === 'android' && headerHeight !== 0 &&\n          // On some devices, height maybe slightly off (e.g. 56.17 instead of 56)\n          Math.round(headerHeight) <= ANDROID_DEFAULT_HEADER_HEIGHT) {\n            // FIXME: On Android, events may get delivered out-of-order\n            // https://github.com/facebook/react-native/issues/54636\n            // We seem to get header height without status bar height first,\n            // and then the correct height with status bar height included\n            // But due to out-of-order delivery, we may get the correct height first\n            // and then the one without status bar height\n            // This is hack to include status bar height if it's not already included\n            // It only works because header height doesn't change dynamically on Android\n            setHeaderHeight(headerHeight + insets.top);\n          } else {\n            setHeaderHeight(headerHeight);\n          }\n        }\n      }\n    }\n  });\n  return /*#__PURE__*/_jsx(NavigationProvider, {\n    route: route,\n    navigation: navigation,\n    children: /*#__PURE__*/_jsx(ScreenStackItem, {\n      screenId: route.key,\n      activityState: isPreloaded ? 0 : 2,\n      style: StyleSheet.absoluteFill,\n      \"aria-hidden\": !focused,\n      customAnimationOnSwipe: animationMatchesGesture,\n      fullScreenSwipeEnabled: fullScreenGestureEnabled,\n      fullScreenSwipeShadowEnabled: fullScreenGestureShadowEnabled,\n      freezeOnBlur: freezeOnBlur,\n      gestureEnabled: Platform.OS === 'android' ?\n      // This prop enables handling of system back gestures on Android\n      // Since we handle them in JS side, we disable this\n      false : gestureEnabled,\n      homeIndicatorHidden: autoHideHomeIndicator,\n      hideKeyboardOnSwipe: keyboardHandlingEnabled,\n      navigationBarColor: navigationBarColor,\n      navigationBarTranslucent: navigationBarTranslucent,\n      navigationBarHidden: navigationBarHidden,\n      replaceAnimation: animationTypeForReplace,\n      stackPresentation: presentation === 'card' ? 'push' : presentation,\n      stackAnimation: animation,\n      screenOrientation: orientation,\n      sheetAllowedDetents: sheetAllowedDetents,\n      sheetLargestUndimmedDetentIndex: sheetLargestUndimmedDetentIndex,\n      sheetGrabberVisible: sheetGrabberVisible,\n      sheetInitialDetentIndex: sheetInitialDetentIndex,\n      sheetCornerRadius: sheetCornerRadius,\n      sheetElevation: sheetElevation,\n      sheetExpandsWhenScrolledToEdge: sheetExpandsWhenScrolledToEdge,\n      sheetShouldOverflowTopInset: sheetShouldOverflowTopInset,\n      sheetDefaultResizeAnimationEnabled: sheetResizeAnimationEnabled,\n      statusBarAnimation: statusBarAnimation,\n      statusBarHidden: statusBarHidden,\n      statusBarStyle: statusBarStyle,\n      statusBarColor: statusBarBackgroundColor,\n      statusBarTranslucent: statusBarTranslucent,\n      swipeDirection: gestureDirectionOverride,\n      transitionDuration: animationDuration,\n      onWillAppear: onWillAppear,\n      onWillDisappear: onWillDisappear,\n      onAppear: onAppear,\n      onDisappear: onDisappear,\n      onDismissed: onDismissed,\n      onGestureCancel: onGestureCancel,\n      onSheetDetentChanged: onSheetDetentChanged,\n      gestureResponseDistance: gestureResponseDistance,\n      nativeBackButtonDismissalEnabled: false // on Android\n      ,\n      onHeaderBackButtonClicked: onHeaderBackButtonClicked,\n      preventNativeDismiss: isRemovePrevented // on iOS\n      ,\n      scrollEdgeEffects: {\n        bottom: scrollEdgeEffects?.bottom ?? 'automatic',\n        top: scrollEdgeEffects?.top ?? 'automatic',\n        left: scrollEdgeEffects?.left ?? 'automatic',\n        right: scrollEdgeEffects?.right ?? 'automatic'\n      },\n      onNativeDismissCancelled: onNativeDismissCancelled,\n      onHeaderHeightChange: onHeaderHeightChange,\n      contentStyle: [presentation !== 'transparentModal' && presentation !== 'containedTransparentModal' && {\n        backgroundColor: colors.background\n      }, contentStyle],\n      headerConfig: headerConfig,\n      unstable_sheetFooter: unstable_sheetFooter\n      // When ts-expect-error is added, it affects all the props below it\n      // So we keep any props that need it at the end\n      // Otherwise invalid props may not be caught by TypeScript\n      ,\n      shouldFreeze: shouldFreeze,\n      children: /*#__PURE__*/_jsx(AnimatedHeaderHeightContext.Provider, {\n        value: animatedHeaderHeight,\n        children: /*#__PURE__*/_jsxs(HeaderHeightContext.Provider, {\n          value: headerShown !== false ? headerHeight : parentHeaderHeight ?? 0,\n          children: [headerBackground != null ?\n          /*#__PURE__*/\n          /**\n           * To show a custom header background, we render it at the top of the screen below the header\n           * The header also needs to be positioned absolutely (with `translucent` style)\n           */\n          _jsx(View, {\n            style: [styles.background, headerTransparent ? styles.translucent : null, {\n              height: headerHeight\n            }],\n            children: headerBackground()\n          }) : null, header != null && headerShown !== false ? /*#__PURE__*/_jsx(View, {\n            onLayout: e => {\n              const headerHeight = e.nativeEvent.layout.height;\n              setHeaderHeight(headerHeight);\n              rawAnimatedHeaderHeight.setValue(headerHeight);\n            },\n            style: [styles.header, headerTransparent ? styles.absolute : null],\n            children: header({\n              back: headerBack,\n              options,\n              route,\n              navigation\n            })\n          }) : null, /*#__PURE__*/_jsx(HeaderShownContext.Provider, {\n            value: isParentHeaderShown || headerShown !== false,\n            children: /*#__PURE__*/_jsx(HeaderBackContext.Provider, {\n              value: headerBack,\n              children: render()\n            })\n          })]\n        })\n      })\n    })\n  });\n};\nexport function NativeStackView({\n  state,\n  navigation,\n  descriptors,\n  describe\n}) {\n  const {\n    setNextDismissedKey\n  } = useDismissedRouteError(state);\n  useInvalidPreventRemoveError(descriptors);\n  const modalRouteKeys = getModalRouteKeys(state.routes, descriptors);\n  const preloadedDescriptors = state.preloadedRoutes.reduce((acc, route) => {\n    acc[route.key] = acc[route.key] || describe(route, true);\n    return acc;\n  }, {});\n  return /*#__PURE__*/_jsx(SafeAreaProviderCompat, {\n    children: /*#__PURE__*/_jsx(ScreenStack, {\n      style: styles.container,\n      children: state.routes.concat(state.preloadedRoutes).map((route, index) => {\n        const descriptor = descriptors[route.key] ?? preloadedDescriptors[route.key];\n        const isFocused = state.index === index;\n        const isBelowFocused = state.index - 1 === index;\n        const previousKey = state.routes[index - 1]?.key;\n        const nextKey = state.routes[index + 1]?.key;\n        const previousDescriptor = previousKey ? descriptors[previousKey] : undefined;\n        const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;\n        const isModal = modalRouteKeys.includes(route.key);\n        const isModalOnIos = isModal && Platform.OS === 'ios';\n        const isPreloaded = preloadedDescriptors[route.key] !== undefined && descriptors[route.key] === undefined;\n\n        // On Fabric, when screen is frozen, animated and reanimated values are not updated\n        // due to component being unmounted. To avoid this, we don't freeze the previous screen there\n        const shouldFreeze = isFabric() ? !isPreloaded && !isFocused && !isBelowFocused && !isModalOnIos : !isPreloaded && !isFocused && !isModalOnIos;\n        return /*#__PURE__*/_jsx(SceneView, {\n          index: index,\n          focused: isFocused,\n          shouldFreeze: shouldFreeze,\n          descriptor: descriptor,\n          previousDescriptor: previousDescriptor,\n          nextDescriptor: nextDescriptor,\n          isPresentationModal: isModal,\n          isPreloaded: isPreloaded,\n          onWillDisappear: () => {\n            navigation.emit({\n              type: 'transitionStart',\n              data: {\n                closing: true\n              },\n              target: route.key\n            });\n          },\n          onWillAppear: () => {\n            navigation.emit({\n              type: 'transitionStart',\n              data: {\n                closing: false\n              },\n              target: route.key\n            });\n          },\n          onAppear: () => {\n            navigation.emit({\n              type: 'transitionEnd',\n              data: {\n                closing: false\n              },\n              target: route.key\n            });\n          },\n          onDisappear: () => {\n            navigation.emit({\n              type: 'transitionEnd',\n              data: {\n                closing: true\n              },\n              target: route.key\n            });\n          },\n          onDismissed: event => {\n            navigation.dispatch({\n              ...StackActions.pop(event.nativeEvent.dismissCount),\n              source: route.key,\n              target: state.key\n            });\n            setNextDismissedKey(route.key);\n          },\n          onHeaderBackButtonClicked: () => {\n            navigation.dispatch({\n              ...StackActions.pop(),\n              source: route.key,\n              target: state.key\n            });\n          },\n          onNativeDismissCancelled: event => {\n            navigation.dispatch({\n              ...StackActions.pop(event.nativeEvent.dismissCount),\n              source: route.key,\n              target: state.key\n            });\n          },\n          onGestureCancel: () => {\n            navigation.emit({\n              type: 'gestureCancel',\n              target: route.key\n            });\n          },\n          onSheetDetentChanged: event => {\n            navigation.emit({\n              type: 'sheetDetentChange',\n              target: route.key,\n              data: {\n                index: event.nativeEvent.index,\n                stable: event.nativeEvent.isStable\n              }\n            });\n          }\n        }, route.key);\n      })\n    })\n  });\n}\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1\n  },\n  header: {\n    zIndex: 1\n  },\n  absolute: {\n    position: 'absolute',\n    top: 0,\n    start: 0,\n    end: 0\n  },\n  translucent: {\n    position: 'absolute',\n    top: 0,\n    start: 0,\n    end: 0,\n    zIndex: 1,\n    elevation: 1\n  },\n  background: {\n    overflow: 'hidden'\n  }\n});\n//# sourceMappingURL=NativeStackView.native.js.map","\"use strict\";\n\nimport backIcon from './assets/back-icon.png';\nimport backIconMask from './assets/back-icon-mask.png';\nimport clearIcon from './assets/clear-icon.png';\nimport closeIcon from './assets/close-icon.png';\nimport searchIcon from './assets/search-icon.png';\nexport { Background } from \"./Background.js\";\nexport { Badge } from \"./Badge.js\";\nexport { Button } from \"./Button.js\";\nexport { getDefaultSidebarWidth } from \"./getDefaultSidebarWidth.js\";\nexport { getDefaultHeaderHeight } from \"./Header/getDefaultHeaderHeight.js\";\nexport { getHeaderTitle } from \"./Header/getHeaderTitle.js\";\nexport { Header } from \"./Header/Header.js\";\nexport { HeaderBackButton } from \"./Header/HeaderBackButton.js\";\nexport { HeaderBackContext } from \"./Header/HeaderBackContext.js\";\nexport { HeaderBackground } from \"./Header/HeaderBackground.js\";\nexport { HeaderButton } from \"./Header/HeaderButton.js\";\nexport { HeaderHeightContext } from \"./Header/HeaderHeightContext.js\";\nexport { HeaderShownContext } from \"./Header/HeaderShownContext.js\";\nexport { HeaderTitle } from \"./Header/HeaderTitle.js\";\nexport { useHeaderHeight } from \"./Header/useHeaderHeight.js\";\nexport { getLabel } from \"./Label/getLabel.js\";\nexport { Label } from \"./Label/Label.js\";\nexport { Lazy } from \"./Lazy.js\";\nexport { MissingIcon } from \"./MissingIcon.js\";\nexport { PlatformPressable } from \"./PlatformPressable.js\";\nexport { ResourceSavingView } from \"./ResourceSavingView.js\";\nexport { SafeAreaProviderCompat } from \"./SafeAreaProviderCompat.js\";\nexport { Screen } from \"./Screen.js\";\nexport { Text } from \"./Text.js\";\nexport { useFrameSize } from \"./useFrameSize.js\";\nexport const Assets = [backIcon, backIconMask, searchIcon, closeIcon, clearIcon];\nexport * from \"./types.js\";\n//# sourceMappingURL=index.js.map","","","","","","\"use strict\";\n\nimport { useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated } from 'react-native';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Background({\n  style,\n  ...rest\n}) {\n  const {\n    colors\n  } = useTheme();\n  return /*#__PURE__*/_jsx(Animated.View, {\n    ...rest,\n    style: [{\n      flex: 1,\n      backgroundColor: colors.background\n    }, style]\n  });\n}\n//# sourceMappingURL=Background.js.map","\"use strict\";\n\nimport { useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport * as React from 'react';\nimport { Animated, Platform, StyleSheet } from 'react-native';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useNativeDriver = Platform.OS !== 'web';\nexport function Badge({\n  children,\n  style,\n  visible = true,\n  size = 18,\n  ...rest\n}) {\n  const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n  const [rendered, setRendered] = React.useState(visible);\n  const {\n    colors,\n    fonts\n  } = useTheme();\n  React.useEffect(() => {\n    if (!rendered) {\n      return;\n    }\n    Animated.timing(opacity, {\n      toValue: visible ? 1 : 0,\n      duration: 150,\n      useNativeDriver\n    }).start(({\n      finished\n    }) => {\n      if (finished && !visible) {\n        setRendered(false);\n      }\n    });\n    return () => opacity.stopAnimation();\n  }, [opacity, rendered, visible]);\n  if (!rendered) {\n    if (visible) {\n      setRendered(true);\n    } else {\n      return null;\n    }\n  }\n\n  // @ts-expect-error: backgroundColor definitely exists\n  const {\n    backgroundColor = colors.notification,\n    ...restStyle\n  } = StyleSheet.flatten(style) || {};\n  const textColor = Color(backgroundColor).isLight() ? 'black' : 'white';\n  const borderRadius = size / 2;\n  const fontSize = Math.floor(size * 3 / 4);\n  return /*#__PURE__*/_jsx(Animated.Text, {\n    numberOfLines: 1,\n    style: [{\n      transform: [{\n        scale: opacity.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0.5, 1]\n        })\n      }],\n      color: textColor,\n      lineHeight: size - 1,\n      height: size,\n      minWidth: size,\n      opacity,\n      backgroundColor,\n      fontSize,\n      borderRadius,\n      borderCurve: 'continuous'\n    }, fonts.regular, styles.container, restStyle],\n    ...rest,\n    children: children\n  });\n}\nconst styles = StyleSheet.create({\n  container: {\n    alignSelf: 'flex-end',\n    textAlign: 'center',\n    paddingHorizontal: 4,\n    overflow: 'hidden'\n  }\n});\n//# sourceMappingURL=Badge.js.map","const colorString = require('color-string');\nconst convert = require('color-convert');\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...args) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (args.length > 0) {\n\t\t\treturn new Color(args, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...args) {\n\t\tlet color = args[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(args, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nmodule.exports = Color;\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v;  g = n;  b = wh; break;\n\t\tcase 1: r = n;  g = v;  b = wh; break;\n\t\tcase 2: r = wh; g = v;  b = n; break;\n\t\tcase 3: r = wh; g = n;  b = v; break;\n\t\tcase 4: r = n;  g = wh; b = v; break;\n\t\tcase 5: r = v;  g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","\"use strict\";\n\nimport { useLinkProps, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport * as React from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport { PlatformPressable } from \"./PlatformPressable.js\";\nimport { Text } from \"./Text.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst BUTTON_RADIUS = 40;\nexport function Button(props) {\n  if ('screen' in props || 'action' in props) {\n    // @ts-expect-error: This is already type-checked by the prop types\n    return /*#__PURE__*/_jsx(ButtonLink, {\n      ...props\n    });\n  } else {\n    return /*#__PURE__*/_jsx(ButtonBase, {\n      ...props\n    });\n  }\n}\nfunction ButtonLink({\n  screen,\n  params,\n  action,\n  href,\n  ...rest\n}) {\n  // @ts-expect-error: This is already type-checked by the prop types\n  const props = useLinkProps({\n    screen,\n    params,\n    action,\n    href\n  });\n  return /*#__PURE__*/_jsx(ButtonBase, {\n    ...rest,\n    ...props\n  });\n}\nfunction ButtonBase({\n  variant = 'tinted',\n  color: customColor,\n  android_ripple,\n  style,\n  children,\n  ...rest\n}) {\n  const {\n    colors,\n    fonts\n  } = useTheme();\n  const color = customColor ?? colors.primary;\n  let backgroundColor;\n  let textColor;\n  switch (variant) {\n    case 'plain':\n      backgroundColor = 'transparent';\n      textColor = color;\n      break;\n    case 'tinted':\n      backgroundColor = Color(color).fade(0.85).string();\n      textColor = color;\n      break;\n    case 'filled':\n      backgroundColor = color;\n      textColor = Color(color).isDark() ? 'white' : Color(color).darken(0.71).string();\n      break;\n  }\n  return /*#__PURE__*/_jsx(PlatformPressable, {\n    ...rest,\n    android_ripple: {\n      radius: BUTTON_RADIUS,\n      color: Color(textColor).fade(0.85).string(),\n      ...android_ripple\n    },\n    pressOpacity: Platform.OS === 'ios' ? undefined : 1,\n    hoverEffect: {\n      color: textColor\n    },\n    style: [{\n      backgroundColor\n    }, styles.button, style],\n    children: /*#__PURE__*/_jsx(Text, {\n      style: [{\n        color: textColor\n      }, fonts.regular, styles.text],\n      children: children\n    })\n  });\n}\nconst styles = StyleSheet.create({\n  button: {\n    paddingHorizontal: 24,\n    paddingVertical: 10,\n    borderRadius: BUTTON_RADIUS,\n    borderCurve: 'continuous'\n  },\n  text: {\n    fontSize: 14,\n    lineHeight: 20,\n    letterSpacing: 0.1,\n    textAlign: 'center'\n  }\n});\n//# sourceMappingURL=Button.js.map","\"use strict\";\n\nimport { useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated, Easing, Platform, Pressable } from 'react-native';\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nconst AnimatedPressable = Animated.createAnimatedComponent(Pressable);\nconst ANDROID_VERSION_LOLLIPOP = 21;\nconst ANDROID_SUPPORTS_RIPPLE = Platform.OS === 'android' && Platform.Version >= ANDROID_VERSION_LOLLIPOP;\nconst useNativeDriver = Platform.OS !== 'web';\n\n/**\n * PlatformPressable provides an abstraction on top of Pressable to handle platform differences.\n */\nfunction PlatformPressableInternal({\n  disabled,\n  onPress,\n  onPressIn,\n  onPressOut,\n  android_ripple,\n  pressColor,\n  pressOpacity = 0.3,\n  hoverEffect,\n  style,\n  children,\n  ...rest\n}, ref) {\n  const {\n    dark\n  } = useTheme();\n  const [opacity] = React.useState(() => new Animated.Value(1));\n  const animateTo = (toValue, duration) => {\n    if (ANDROID_SUPPORTS_RIPPLE) {\n      return;\n    }\n    Animated.timing(opacity, {\n      toValue,\n      duration,\n      easing: Easing.inOut(Easing.quad),\n      useNativeDriver\n    }).start();\n  };\n  const handlePress = e => {\n    if (Platform.OS === 'web' && rest.href !== null) {\n      // ignore clicks with modifier keys\n      const hasModifierKey = 'metaKey' in e && e.metaKey || 'altKey' in e && e.altKey || 'ctrlKey' in e && e.ctrlKey || 'shiftKey' in e && e.shiftKey;\n\n      // only handle left clicks\n      const isLeftClick = 'button' in e ? e.button == null || e.button === 0 : true;\n\n      // let browser handle \"target=_blank\" etc.\n      const isSelfTarget = e.currentTarget && 'target' in e.currentTarget ? [undefined, null, '', 'self'].includes(e.currentTarget.target) : true;\n      if (!hasModifierKey && isLeftClick && isSelfTarget) {\n        e.preventDefault();\n        // call `onPress` only when browser default is prevented\n        // this prevents app from handling the click when a link is being opened\n        onPress?.(e);\n      }\n    } else {\n      onPress?.(e);\n    }\n  };\n  const handlePressIn = e => {\n    animateTo(pressOpacity, 0);\n    onPressIn?.(e);\n  };\n  const handlePressOut = e => {\n    animateTo(1, 200);\n    onPressOut?.(e);\n  };\n  return /*#__PURE__*/_jsxs(AnimatedPressable, {\n    ref: ref,\n    accessible: true,\n    role: Platform.OS === 'web' && rest.href != null ? 'link' : 'button',\n    onPress: disabled ? undefined : handlePress,\n    onPressIn: disabled ? undefined : handlePressIn,\n    onPressOut: disabled ? undefined : handlePressOut,\n    android_ripple: ANDROID_SUPPORTS_RIPPLE && !disabled ? {\n      color: pressColor !== undefined ? pressColor : dark ? 'rgba(255, 255, 255, .32)' : 'rgba(0, 0, 0, .32)',\n      ...android_ripple\n    } : undefined,\n    style: [{\n      cursor: (Platform.OS === 'web' || Platform.OS === 'ios') && !disabled ?\n      // Pointer cursor on web\n      // Hover effect on iPad and visionOS\n      'pointer' : 'auto',\n      opacity: !ANDROID_SUPPORTS_RIPPLE && !disabled ? opacity : 1\n    }, style],\n    ...rest,\n    children: [!disabled ? /*#__PURE__*/_jsx(HoverEffect, {\n      ...hoverEffect\n    }) : null, children]\n  });\n}\nexport const PlatformPressable = /*#__PURE__*/React.forwardRef(PlatformPressableInternal);\nPlatformPressable.displayName = 'PlatformPressable';\nconst css = String.raw;\nconst CLASS_NAME = `__react-navigation_elements_Pressable_hover`;\nconst CSS_TEXT = css`\n  .${CLASS_NAME} {\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    border-radius: inherit;\n    background-color: var(--overlay-color);\n    opacity: 0;\n    transition: opacity 0.15s;\n    pointer-events: none;\n  }\n\n  a:hover > .${CLASS_NAME}, button:hover > .${CLASS_NAME} {\n    opacity: var(--overlay-hover-opacity);\n  }\n\n  a:active > .${CLASS_NAME}, button:active > .${CLASS_NAME} {\n    opacity: var(--overlay-active-opacity);\n  }\n`;\nconst HoverEffect = ({\n  color,\n  hoverOpacity = 0.08,\n  activeOpacity = 0.16\n}) => {\n  if (Platform.OS !== 'web' || color == null) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(_Fragment, {\n    children: [/*#__PURE__*/_jsx(\"style\", {\n      href: CLASS_NAME,\n      precedence: \"elements\",\n      children: CSS_TEXT\n    }), /*#__PURE__*/_jsx(\"div\", {\n      className: CLASS_NAME,\n      style: {\n        // @ts-expect-error: CSS variables are not typed\n        '--overlay-color': color,\n        '--overlay-hover-opacity': hoverOpacity,\n        '--overlay-active-opacity': activeOpacity\n      }\n    })]\n  });\n};\n//# sourceMappingURL=PlatformPressable.js.map","\"use strict\";\n\nimport { useTheme } from '@react-navigation/native';\n// eslint-disable-next-line no-restricted-imports\nimport { Text as NativeText } from 'react-native';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Text({\n  style,\n  ...rest\n}) {\n  const {\n    colors,\n    fonts\n  } = useTheme();\n  return /*#__PURE__*/_jsx(NativeText, {\n    ...rest,\n    style: [{\n      color: colors.text\n    }, fonts.regular, style]\n  });\n}\n//# sourceMappingURL=Text.js.map","\"use strict\";\n\nconst APPROX_APP_BAR_HEIGHT = 56;\nconst DEFAULT_DRAWER_WIDTH = 360;\nexport const getDefaultSidebarWidth = ({\n  width\n}) => {\n  /**\n   * Default sidebar width is 360dp\n   * On screens smaller than 320dp, ideally the drawer would collapse to a tab bar\n   * https://m3.material.io/components/navigation-drawer/specs\n   */\n  if (width - APPROX_APP_BAR_HEIGHT <= 360) {\n    return width - APPROX_APP_BAR_HEIGHT;\n  }\n  return DEFAULT_DRAWER_WIDTH;\n};\n//# sourceMappingURL=getDefaultSidebarWidth.js.map","\"use strict\";\n\nimport { PixelRatio, Platform } from 'react-native';\nexport function getDefaultHeaderHeight(layout, modalPresentation, topInset) {\n  let headerHeight;\n\n  // On models with Dynamic Island the status bar height is smaller than the safe area top inset.\n  const hasDynamicIsland = Platform.OS === 'ios' && topInset > 50;\n  const statusBarHeight = hasDynamicIsland ? topInset - (5 + 1 / PixelRatio.get()) : topInset;\n  const isLandscape = layout.width > layout.height;\n  if (Platform.OS === 'ios') {\n    if (Platform.isPad || Platform.isTV) {\n      if (modalPresentation) {\n        headerHeight = 56;\n      } else {\n        headerHeight = 50;\n      }\n    } else {\n      if (isLandscape) {\n        headerHeight = 32;\n      } else {\n        if (modalPresentation) {\n          headerHeight = 56;\n        } else {\n          headerHeight = 44;\n        }\n      }\n    }\n  } else {\n    headerHeight = 64;\n  }\n  return headerHeight + statusBarHeight;\n}\n//# sourceMappingURL=getDefaultHeaderHeight.js.map","\"use strict\";\n\nexport function getHeaderTitle(options, fallback) {\n  return typeof options.headerTitle === 'string' ? options.headerTitle : options.title !== undefined ? options.title : fallback;\n}\n//# sourceMappingURL=getHeaderTitle.js.map","\"use strict\";\n\nimport { useNavigation, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport * as React from 'react';\nimport { Animated, Platform, StyleSheet, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport searchIcon from '../assets/search-icon.png';\nimport { useFrameSize } from \"../useFrameSize.js\";\nimport { getDefaultHeaderHeight } from \"./getDefaultHeaderHeight.js\";\nimport { HeaderBackButton } from \"./HeaderBackButton.js\";\nimport { HeaderBackground } from \"./HeaderBackground.js\";\nimport { HeaderButton } from \"./HeaderButton.js\";\nimport { HeaderIcon } from \"./HeaderIcon.js\";\nimport { HeaderSearchBar } from \"./HeaderSearchBar.js\";\nimport { HeaderShownContext } from \"./HeaderShownContext.js\";\nimport { HeaderTitle } from \"./HeaderTitle.js\";\n\n// Width of the screen in split layout on portrait mode on iPad Mini\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nconst IPAD_MINI_MEDIUM_WIDTH = 414;\nconst warnIfHeaderStylesDefined = styles => {\n  Object.keys(styles).forEach(styleProp => {\n    const value = styles[styleProp];\n    if (styleProp === 'position' && value === 'absolute') {\n      console.warn(\"position: 'absolute' is not supported on headerStyle. If you would like to render content under the header, use the 'headerTransparent' option.\");\n    } else if (value !== undefined) {\n      console.warn(`${styleProp} was given a value of ${value}, this has no effect on headerStyle.`);\n    }\n  });\n};\nexport function Header(props) {\n  const insets = useSafeAreaInsets();\n  const frame = useFrameSize(size => size, true);\n  const {\n    colors\n  } = useTheme();\n  const navigation = useNavigation();\n  const isParentHeaderShown = React.useContext(HeaderShownContext);\n  const [searchBarVisible, setSearchBarVisible] = React.useState(false);\n  const [titleLayout, setTitleLayout] = React.useState(undefined);\n  const onTitleLayout = e => {\n    const {\n      height,\n      width\n    } = e.nativeEvent.layout;\n    setTitleLayout(titleLayout => {\n      if (titleLayout && height === titleLayout.height && width === titleLayout.width) {\n        return titleLayout;\n      }\n      return {\n        height,\n        width\n      };\n    });\n  };\n  const {\n    layout = frame,\n    modal = false,\n    back,\n    title,\n    headerTitle: customTitle,\n    headerTitleAlign = Platform.OS === 'ios' ? 'center' : 'left',\n    headerLeft = back ? props => /*#__PURE__*/_jsx(HeaderBackButton, {\n      ...props\n    }) : undefined,\n    headerSearchBarOptions,\n    headerTransparent,\n    headerTintColor,\n    headerBackground,\n    headerRight,\n    headerTitleAllowFontScaling: titleAllowFontScaling,\n    headerTitleStyle: titleStyle,\n    headerLeftContainerStyle: leftContainerStyle,\n    headerRightContainerStyle: rightContainerStyle,\n    headerTitleContainerStyle: titleContainerStyle,\n    headerBackButtonDisplayMode = Platform.OS === 'ios' ? 'default' : 'minimal',\n    headerBackTitleStyle,\n    headerBackgroundContainerStyle: backgroundContainerStyle,\n    headerStyle: customHeaderStyle,\n    headerShadowVisible,\n    headerPressColor,\n    headerPressOpacity,\n    headerStatusBarHeight = isParentHeaderShown ? 0 : insets.top\n  } = props;\n  const defaultHeight = getDefaultHeaderHeight(layout, modal, headerStatusBarHeight);\n  const {\n    height = defaultHeight,\n    maxHeight,\n    minHeight,\n    backfaceVisibility,\n    backgroundColor,\n    borderBlockColor,\n    borderBlockEndColor,\n    borderBlockStartColor,\n    borderBottomColor,\n    borderBottomEndRadius,\n    borderBottomLeftRadius,\n    borderBottomRightRadius,\n    borderBottomStartRadius,\n    borderBottomWidth,\n    borderColor,\n    borderCurve,\n    borderEndColor,\n    borderEndEndRadius,\n    borderEndStartRadius,\n    borderEndWidth,\n    borderLeftColor,\n    borderLeftWidth,\n    borderRadius,\n    borderRightColor,\n    borderRightWidth,\n    borderStartColor,\n    borderStartEndRadius,\n    borderStartStartRadius,\n    borderStartWidth,\n    borderStyle,\n    borderTopColor,\n    borderTopEndRadius,\n    borderTopLeftRadius,\n    borderTopRightRadius,\n    borderTopStartRadius,\n    borderTopWidth,\n    borderWidth,\n    boxShadow,\n    elevation,\n    filter,\n    mixBlendMode,\n    opacity,\n    shadowColor,\n    shadowOffset,\n    shadowOpacity,\n    shadowRadius,\n    transform,\n    transformOrigin,\n    ...unsafeStyles\n  } = StyleSheet.flatten(customHeaderStyle || {});\n  if (process.env.NODE_ENV !== 'production') {\n    warnIfHeaderStylesDefined(unsafeStyles);\n  }\n  const safeStyles = {\n    backfaceVisibility,\n    backgroundColor,\n    borderBlockColor,\n    borderBlockEndColor,\n    borderBlockStartColor,\n    borderBottomColor,\n    borderBottomEndRadius,\n    borderBottomLeftRadius,\n    borderBottomRightRadius,\n    borderBottomStartRadius,\n    borderBottomWidth,\n    borderColor,\n    borderCurve,\n    borderEndColor,\n    borderEndEndRadius,\n    borderEndStartRadius,\n    borderEndWidth,\n    borderLeftColor,\n    borderLeftWidth,\n    borderRadius,\n    borderRightColor,\n    borderRightWidth,\n    borderStartColor,\n    borderStartEndRadius,\n    borderStartStartRadius,\n    borderStartWidth,\n    borderStyle,\n    borderTopColor,\n    borderTopEndRadius,\n    borderTopLeftRadius,\n    borderTopRightRadius,\n    borderTopStartRadius,\n    borderTopWidth,\n    borderWidth,\n    boxShadow,\n    elevation,\n    filter,\n    mixBlendMode,\n    opacity,\n    shadowColor,\n    shadowOffset,\n    shadowOpacity,\n    shadowRadius,\n    transform,\n    transformOrigin\n  };\n\n  // Setting a property to undefined triggers default style\n  // So we need to filter them out\n  // Users can use `null` instead\n  for (const styleProp in safeStyles) {\n    // @ts-expect-error: typescript wrongly complains that styleProp cannot be used to index safeStyles\n    if (safeStyles[styleProp] === undefined) {\n      // @ts-expect-error don't need to care about index signature for deletion\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete safeStyles[styleProp];\n    }\n  }\n  const backgroundStyle = {\n    ...(headerTransparent && {\n      backgroundColor: 'transparent'\n    }),\n    ...((headerTransparent || headerShadowVisible === false) && {\n      borderBottomWidth: 0,\n      ...Platform.select({\n        android: {\n          elevation: 0\n        },\n        web: {\n          boxShadow: 'none'\n        },\n        default: {\n          shadowOpacity: 0\n        }\n      })\n    }),\n    ...safeStyles\n  };\n  const iconTintColor = headerTintColor ?? Platform.select({\n    ios: colors.primary,\n    default: colors.text\n  });\n  const leftButton = headerLeft ? headerLeft({\n    tintColor: iconTintColor,\n    pressColor: headerPressColor,\n    pressOpacity: headerPressOpacity,\n    displayMode: headerBackButtonDisplayMode,\n    titleLayout,\n    screenLayout: layout,\n    canGoBack: Boolean(back),\n    onPress: back ? navigation.goBack : undefined,\n    label: back?.title,\n    labelStyle: headerBackTitleStyle,\n    href: back?.href\n  }) : null;\n  const rightButton = headerRight ? headerRight({\n    tintColor: iconTintColor,\n    pressColor: headerPressColor,\n    pressOpacity: headerPressOpacity,\n    canGoBack: Boolean(back)\n  }) : null;\n  const headerTitle = typeof customTitle !== 'function' ? props => /*#__PURE__*/_jsx(HeaderTitle, {\n    ...props\n  }) : customTitle;\n  return /*#__PURE__*/_jsxs(Animated.View, {\n    pointerEvents: \"box-none\",\n    style: [{\n      height,\n      minHeight,\n      maxHeight,\n      opacity,\n      transform\n    }],\n    children: [/*#__PURE__*/_jsx(Animated.View, {\n      pointerEvents: \"box-none\",\n      style: [StyleSheet.absoluteFill, backgroundContainerStyle],\n      children: headerBackground ? headerBackground({\n        style: backgroundStyle\n      }) : /*#__PURE__*/_jsx(HeaderBackground, {\n        pointerEvents:\n        // Allow touch through the header when background color is transparent\n        headerTransparent && (backgroundStyle.backgroundColor === 'transparent' || Color(backgroundStyle.backgroundColor).alpha() === 0) ? 'none' : 'auto',\n        style: backgroundStyle\n      })\n    }), /*#__PURE__*/_jsx(View, {\n      pointerEvents: \"none\",\n      style: {\n        height: headerStatusBarHeight\n      }\n    }), /*#__PURE__*/_jsxs(View, {\n      pointerEvents: \"box-none\",\n      style: [styles.content, Platform.OS === 'ios' && frame.width >= IPAD_MINI_MEDIUM_WIDTH ? styles.large : null],\n      children: [/*#__PURE__*/_jsx(Animated.View, {\n        pointerEvents: \"box-none\",\n        style: [styles.start, !searchBarVisible && headerTitleAlign === 'center' && styles.expand, {\n          marginStart: insets.left\n        }, leftContainerStyle],\n        children: leftButton\n      }), Platform.OS === 'ios' || !searchBarVisible ? /*#__PURE__*/_jsxs(_Fragment, {\n        children: [/*#__PURE__*/_jsx(Animated.View, {\n          pointerEvents: \"box-none\",\n          style: [styles.title, {\n            // Avoid the title from going offscreen or overlapping buttons\n            maxWidth: headerTitleAlign === 'center' ? layout.width - ((leftButton ? headerBackButtonDisplayMode !== 'minimal' ? 80 : 32 : 16) + (rightButton || headerSearchBarOptions ? 16 : 0) + Math.max(insets.left, insets.right)) * 2 : layout.width - ((leftButton ? 52 : 16) + (rightButton || headerSearchBarOptions ? 52 : 16) + insets.left - insets.right)\n          }, headerTitleAlign === 'left' && leftButton ? {\n            marginStart: 4\n          } : {\n            marginHorizontal: 16\n          }, titleContainerStyle],\n          children: headerTitle({\n            children: title,\n            allowFontScaling: titleAllowFontScaling,\n            tintColor: headerTintColor,\n            onLayout: onTitleLayout,\n            style: titleStyle\n          })\n        }), /*#__PURE__*/_jsxs(Animated.View, {\n          pointerEvents: \"box-none\",\n          style: [styles.end, styles.expand, {\n            marginEnd: insets.right\n          }, rightContainerStyle],\n          children: [rightButton, headerSearchBarOptions ? /*#__PURE__*/_jsx(HeaderButton, {\n            tintColor: iconTintColor,\n            pressColor: headerPressColor,\n            pressOpacity: headerPressOpacity,\n            onPress: () => {\n              setSearchBarVisible(true);\n              headerSearchBarOptions?.onOpen?.();\n            },\n            children: /*#__PURE__*/_jsx(HeaderIcon, {\n              source: searchIcon,\n              tintColor: iconTintColor\n            })\n          }) : null]\n        })]\n      }) : null, Platform.OS === 'ios' || searchBarVisible ? /*#__PURE__*/_jsx(HeaderSearchBar, {\n        ...headerSearchBarOptions,\n        visible: searchBarVisible,\n        onClose: () => {\n          setSearchBarVisible(false);\n          headerSearchBarOptions?.onClose?.();\n        },\n        tintColor: headerTintColor,\n        style: [Platform.OS === 'ios' ? [StyleSheet.absoluteFill, {\n          paddingTop: headerStatusBarHeight ? 0 : 4\n        }, {\n          backgroundColor: backgroundColor ?? colors.card\n        }] : !leftButton && {\n          marginStart: 8\n        }]\n      }) : null]\n    })]\n  });\n}\nconst styles = StyleSheet.create({\n  content: {\n    flex: 1,\n    flexDirection: 'row',\n    alignItems: 'stretch'\n  },\n  large: {\n    marginHorizontal: 5\n  },\n  title: {\n    justifyContent: 'center'\n  },\n  start: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'flex-start'\n  },\n  end: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'flex-end'\n  },\n  expand: {\n    flexGrow: 1,\n    flexBasis: 0\n  }\n});\n//# sourceMappingURL=Header.js.map","'use client';\n\nexport * from './SafeAreaContext';\nexport * from './SafeAreaView';\nexport * from './InitialWindow';\nexport * from './SafeArea.types';\n","import * as React from 'react';\nimport { Dimensions, StyleSheet, type ViewProps } from 'react-native';\nimport { NativeSafeAreaProvider } from './NativeSafeAreaProvider';\nimport type {\n  EdgeInsets,\n  InsetChangedEvent,\n  Metrics,\n  Rect,\n} from './SafeArea.types';\n\nconst isDev = process.env.NODE_ENV !== 'production';\n\nexport const SafeAreaInsetsContext = React.createContext<EdgeInsets | null>(\n  null,\n);\nif (isDev) {\n  SafeAreaInsetsContext.displayName = 'SafeAreaInsetsContext';\n}\n\nexport const SafeAreaFrameContext = React.createContext<Rect | null>(null);\nif (isDev) {\n  SafeAreaFrameContext.displayName = 'SafeAreaFrameContext';\n}\n\nexport interface SafeAreaProviderProps extends ViewProps {\n  children?: React.ReactNode;\n  initialMetrics?: Metrics | null;\n  /**\n   * @deprecated\n   */\n  initialSafeAreaInsets?: EdgeInsets | null;\n}\n\nexport function SafeAreaProvider({\n  children,\n  initialMetrics,\n  initialSafeAreaInsets,\n  style,\n  ...others\n}: SafeAreaProviderProps) {\n  const parentInsets = useParentSafeAreaInsets();\n  const parentFrame = useParentSafeAreaFrame();\n  const [insets, setInsets] = React.useState<EdgeInsets | null>(\n    initialMetrics?.insets ?? initialSafeAreaInsets ?? parentInsets ?? null,\n  );\n  const [frame, setFrame] = React.useState<Rect>(\n    initialMetrics?.frame ??\n      parentFrame ?? {\n        // Backwards compat so we render anyway if we don't have frame.\n        x: 0,\n        y: 0,\n        width: Dimensions.get('window').width,\n        height: Dimensions.get('window').height,\n      },\n  );\n  const onInsetsChange = React.useCallback((event: InsetChangedEvent) => {\n    const {\n      nativeEvent: { frame: nextFrame, insets: nextInsets },\n    } = event;\n\n    setFrame((curFrame) => {\n      if (\n        // Backwards compat with old native code that won't send frame.\n        nextFrame &&\n        (nextFrame.height !== curFrame.height ||\n          nextFrame.width !== curFrame.width ||\n          nextFrame.x !== curFrame.x ||\n          nextFrame.y !== curFrame.y)\n      ) {\n        return nextFrame;\n      } else {\n        return curFrame;\n      }\n    });\n\n    setInsets((curInsets) => {\n      if (\n        !curInsets ||\n        nextInsets.bottom !== curInsets.bottom ||\n        nextInsets.left !== curInsets.left ||\n        nextInsets.right !== curInsets.right ||\n        nextInsets.top !== curInsets.top\n      ) {\n        return nextInsets;\n      } else {\n        return curInsets;\n      }\n    });\n  }, []);\n\n  return (\n    <NativeSafeAreaProvider\n      style={[styles.fill, style]}\n      onInsetsChange={onInsetsChange}\n      {...others}\n    >\n      {insets != null ? (\n        <SafeAreaFrameContext.Provider value={frame}>\n          <SafeAreaInsetsContext.Provider value={insets}>\n            {children}\n          </SafeAreaInsetsContext.Provider>\n        </SafeAreaFrameContext.Provider>\n      ) : null}\n    </NativeSafeAreaProvider>\n  );\n}\n\nexport interface SafeAreaListenerProps extends ViewProps {\n  onChange: (data: { insets: EdgeInsets; frame: Rect }) => void;\n}\n\nexport function SafeAreaListener({\n  onChange,\n  style,\n  children,\n  ...others\n}: SafeAreaListenerProps) {\n  return (\n    <NativeSafeAreaProvider\n      {...others}\n      style={[styles.fill, style]}\n      onInsetsChange={(e) => {\n        onChange({\n          insets: e.nativeEvent.insets,\n          frame: e.nativeEvent.frame,\n        });\n      }}\n    >\n      {children}\n    </NativeSafeAreaProvider>\n  );\n}\n\nconst styles = StyleSheet.create({\n  fill: { flex: 1 },\n});\n\nfunction useParentSafeAreaInsets(): EdgeInsets | null {\n  return React.useContext(SafeAreaInsetsContext);\n}\n\nfunction useParentSafeAreaFrame(): Rect | null {\n  return React.useContext(SafeAreaFrameContext);\n}\n\nconst NO_INSETS_ERROR =\n  'No safe area value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.';\n\nexport function useSafeAreaInsets(): EdgeInsets {\n  const insets = React.useContext(SafeAreaInsetsContext);\n  if (insets == null) {\n    throw new Error(NO_INSETS_ERROR);\n  }\n  return insets;\n}\n\nexport function useSafeAreaFrame(): Rect {\n  const frame = React.useContext(SafeAreaFrameContext);\n  if (frame == null) {\n    throw new Error(NO_INSETS_ERROR);\n  }\n  return frame;\n}\n\nexport type WithSafeAreaInsetsProps = {\n  insets: EdgeInsets;\n};\n\nexport function withSafeAreaInsets<T>(\n  WrappedComponent: React.ComponentType<\n    (React.PropsWithoutRef<T> | T) & WithSafeAreaInsetsProps\n  >,\n): React.ForwardRefExoticComponent<\n  React.PropsWithoutRef<T> & React.RefAttributes<unknown>\n> {\n  return React.forwardRef<unknown, T>((props, ref) => {\n    const insets = useSafeAreaInsets();\n    return <WrappedComponent {...props} insets={insets} ref={ref} />;\n  });\n}\n\n/**\n * @deprecated\n */\nexport function useSafeArea(): EdgeInsets {\n  return useSafeAreaInsets();\n}\n\n/**\n * @deprecated\n */\nexport const SafeAreaConsumer = SafeAreaInsetsContext.Consumer;\n\n/**\n * @deprecated\n */\nexport const SafeAreaContext = SafeAreaInsetsContext;\n","import NativeSafeAreaProvider from './specs/NativeSafeAreaProvider';\n\nexport { NativeSafeAreaProvider };\n","import type {\n  DirectEventHandler,\n  Double,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps, HostComponent } from 'react-native';\n\nexport type Event = Readonly<{\n  insets: Readonly<{\n    top: Double;\n    right: Double;\n    bottom: Double;\n    left: Double;\n  }>;\n  frame: Readonly<{\n    x: Double;\n    y: Double;\n    width: Double;\n    height: Double;\n  }>;\n}>;\n\nexport interface NativeProps extends ViewProps {\n  onInsetsChange?: DirectEventHandler<Event>;\n}\n\nexport default codegenNativeComponent<NativeProps>(\n  'RNCSafeAreaProvider',\n) as HostComponent<NativeProps>;\n","import * as React from 'react';\nimport type {\n  Edge,\n  EdgeMode,\n  EdgeRecord,\n  NativeSafeAreaViewInstance,\n  NativeSafeAreaViewProps,\n} from './SafeArea.types';\nimport NativeSafeAreaView from './specs/NativeSafeAreaView';\nimport { useMemo } from 'react';\n\nconst defaultEdges: Record<Edge, EdgeMode> = {\n  top: 'additive',\n  left: 'additive',\n  bottom: 'additive',\n  right: 'additive',\n};\n\nexport type SafeAreaViewProps = NativeSafeAreaViewProps;\n\nexport const SafeAreaView = React.forwardRef<\n  NativeSafeAreaViewInstance,\n  SafeAreaViewProps\n>(({ edges, ...props }, ref) => {\n  const nativeEdges = useMemo(() => {\n    if (edges == null) {\n      return defaultEdges;\n    }\n\n    const edgesObj = Array.isArray(edges)\n      ? edges.reduce<EdgeRecord>((acc, edge: Edge) => {\n          acc[edge] = 'additive';\n          return acc;\n        }, {})\n      : // ts has trouble with refining readonly arrays.\n        (edges as EdgeRecord);\n\n    // make sure that we always pass all edges, required for fabric\n    const requiredEdges: Record<Edge, EdgeMode> = {\n      top: edgesObj.top ?? 'off',\n      right: edgesObj.right ?? 'off',\n      bottom: edgesObj.bottom ?? 'off',\n      left: edgesObj.left ?? 'off',\n    };\n\n    return requiredEdges;\n  }, [edges]);\n\n  return <NativeSafeAreaView {...props} edges={nativeEdges} ref={ref} />;\n});\n","import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { WithDefault } from 'react-native/Libraries/Types/CodegenTypes';\nimport type { ViewProps, HostComponent } from 'react-native';\n\nexport interface NativeProps extends ViewProps {\n  mode?: WithDefault<'padding' | 'margin', 'padding'>;\n  edges?: Readonly<{\n    top: string;\n    right: string;\n    bottom: string;\n    left: string;\n  }>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNCSafeAreaView', {\n  interfaceOnly: true,\n}) as HostComponent<NativeProps>;\n","import type { Metrics } from './SafeArea.types';\nimport NativeSafeAreaContext from './specs/NativeSafeAreaContext';\n\nexport const initialWindowMetrics = (NativeSafeAreaContext?.getConstants?.()\n  ?.initialWindowMetrics ?? null) as Metrics | null;\n\n/**\n * @deprecated\n */\nexport const initialWindowSafeAreaInsets = initialWindowMetrics?.insets;\n","import { TurboModule, TurboModuleRegistry } from 'react-native';\nimport type { Double } from 'react-native/Libraries/Types/CodegenTypes';\n\nexport interface Spec extends TurboModule {\n  getConstants: () => {\n    initialWindowMetrics?: {\n      insets: {\n        top: Double;\n        right: Double;\n        bottom: Double;\n        left: Double;\n      };\n      frame: {\n        x: Double;\n        y: Double;\n        width: Double;\n        height: Double;\n      };\n    };\n  };\n}\n\nexport default TurboModuleRegistry.get<Spec>('RNCSafeAreaContext');\n","\"use strict\";\n\nimport * as React from 'react';\nimport { Platform } from 'react-native';\nimport useLatestCallback from 'use-latest-callback';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FrameContext = /*#__PURE__*/React.createContext(undefined);\nexport function useFrameSize(selector, throttle) {\n  const context = React.useContext(FrameContext);\n  if (context == null) {\n    throw new Error('useFrameSize must be used within a FrameSizeProvider');\n  }\n  const value = useSyncExternalStoreWithSelector(throttle ? context.subscribeThrottled : context.subscribe, context.getCurrent, context.getCurrent, selector);\n  return value;\n}\nexport function FrameSizeProvider({\n  initialFrame,\n  render\n}) {\n  const frameRef = React.useRef({\n    width: initialFrame.width,\n    height: initialFrame.height\n  });\n  const listeners = React.useRef(new Set());\n  const getCurrent = useLatestCallback(() => frameRef.current);\n  const subscribe = useLatestCallback(listener => {\n    listeners.current.add(listener);\n    return () => {\n      listeners.current.delete(listener);\n    };\n  });\n  const subscribeThrottled = useLatestCallback(listener => {\n    const delay = 100; // Throttle delay in milliseconds\n\n    let timer;\n    let updated = false;\n    let waiting = false;\n    const throttledListener = () => {\n      clearTimeout(timer);\n      updated = true;\n      if (waiting) {\n        // Schedule a timer to call the listener at the end\n        timer = setTimeout(() => {\n          if (updated) {\n            updated = false;\n            listener();\n          }\n        }, delay);\n      } else {\n        waiting = true;\n        setTimeout(function () {\n          waiting = false;\n        }, delay);\n\n        // Call the listener immediately at start\n        updated = false;\n        listener();\n      }\n    };\n    const unsubscribe = subscribe(throttledListener);\n    return () => {\n      unsubscribe();\n      clearTimeout(timer);\n    };\n  });\n  const context = React.useMemo(() => ({\n    getCurrent,\n    subscribe,\n    subscribeThrottled\n  }), [subscribe, subscribeThrottled, getCurrent]);\n  const onChange = useLatestCallback(frame => {\n    if (frameRef.current.height === frame.height && frameRef.current.width === frame.width) {\n      return;\n    }\n    frameRef.current = {\n      width: frame.width,\n      height: frame.height\n    };\n    listeners.current.forEach(listener => listener());\n  });\n  const viewRef = React.useRef(null);\n  React.useEffect(() => {\n    if (Platform.OS === 'web') {\n      // We use ResizeObserver on web\n      return;\n    }\n    viewRef.current?.measure((_x, _y, width, height) => {\n      onChange({\n        width,\n        height\n      });\n    });\n  }, [onChange]);\n  const onLayout = event => {\n    const {\n      width,\n      height\n    } = event.nativeEvent.layout;\n    onChange({\n      width,\n      height\n    });\n  };\n  return /*#__PURE__*/_jsxs(FrameContext.Provider, {\n    value: context,\n    children: [Platform.OS === 'web' ? /*#__PURE__*/_jsx(FrameSizeListenerWeb, {\n      onChange: onChange\n    }) : null, render({\n      ref: viewRef,\n      onLayout\n    })]\n  });\n}\n\n// FIXME: On the Web, `onLayout` doesn't fire on resize\n// So we workaround this by using ResizeObserver\nfunction FrameSizeListenerWeb({\n  onChange\n}) {\n  const elementRef = React.useRef(null);\n  React.useEffect(() => {\n    if (elementRef.current == null) {\n      return;\n    }\n    const rect = elementRef.current.getBoundingClientRect();\n    onChange({\n      width: rect.width,\n      height: rect.height\n    });\n    const observer = new ResizeObserver(entries => {\n      const entry = entries[0];\n      if (entry) {\n        const {\n          width,\n          height\n        } = entry.contentRect;\n        onChange({\n          width,\n          height\n        });\n      }\n    });\n    observer.observe(elementRef.current);\n    return () => {\n      observer.disconnect();\n    };\n  }, [onChange]);\n  return /*#__PURE__*/_jsx(\"div\", {\n    ref: elementRef,\n    style: {\n      position: 'absolute',\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0,\n      pointerEvents: 'none',\n      visibility: 'hidden'\n    }\n  });\n}\n//# sourceMappingURL=useFrameSize.js.map","\"use strict\";\n\nimport { useLocale, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated, Image, Platform, StyleSheet, View } from 'react-native';\nimport backIcon from '../assets/back-icon.png';\nimport backIconMask from '../assets/back-icon-mask.png';\nimport { MaskedView } from '../MaskedView';\nimport { HeaderButton } from \"./HeaderButton.js\";\nimport { HeaderIcon, ICON_MARGIN } from \"./HeaderIcon.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function HeaderBackButton({\n  disabled,\n  allowFontScaling,\n  backImage,\n  label,\n  labelStyle,\n  displayMode = Platform.OS === 'ios' ? 'default' : 'minimal',\n  onLabelLayout,\n  onPress,\n  pressColor,\n  pressOpacity,\n  screenLayout,\n  tintColor,\n  titleLayout,\n  truncatedLabel = 'Back',\n  accessibilityLabel = label && label !== 'Back' ? `${label}, back` : 'Go back',\n  testID,\n  style,\n  href\n}) {\n  const {\n    colors,\n    fonts\n  } = useTheme();\n  const {\n    direction\n  } = useLocale();\n  const [labelWidth, setLabelWidth] = React.useState(null);\n  const [truncatedLabelWidth, setTruncatedLabelWidth] = React.useState(null);\n  const renderBackImage = () => {\n    if (backImage) {\n      return backImage({\n        tintColor: tintColor ?? colors.text\n      });\n    } else {\n      return /*#__PURE__*/_jsx(HeaderIcon, {\n        source: backIcon,\n        tintColor: tintColor,\n        style: [styles.icon, displayMode !== 'minimal' && styles.iconWithLabel]\n      });\n    }\n  };\n  const renderLabel = () => {\n    if (displayMode === 'minimal') {\n      return null;\n    }\n    const availableSpace = titleLayout && screenLayout ? (screenLayout.width - titleLayout.width) / 2 - (ICON_WIDTH + ICON_MARGIN) : null;\n    const potentialLabelText = displayMode === 'default' ? label : truncatedLabel;\n    const finalLabelText = availableSpace && labelWidth && truncatedLabelWidth ? availableSpace > labelWidth ? potentialLabelText : availableSpace > truncatedLabelWidth ? truncatedLabel : null : potentialLabelText;\n    const commonStyle = [fonts.regular, styles.label, labelStyle];\n    const hiddenStyle = [commonStyle, {\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      opacity: 0\n    }];\n    const labelElement = /*#__PURE__*/_jsxs(View, {\n      style: styles.labelWrapper,\n      children: [label && displayMode === 'default' ? /*#__PURE__*/_jsx(Animated.Text, {\n        style: hiddenStyle,\n        numberOfLines: 1,\n        onLayout: e => setLabelWidth(e.nativeEvent.layout.width),\n        children: label\n      }) : null, truncatedLabel ? /*#__PURE__*/_jsx(Animated.Text, {\n        style: hiddenStyle,\n        numberOfLines: 1,\n        onLayout: e => setTruncatedLabelWidth(e.nativeEvent.layout.width),\n        children: truncatedLabel\n      }) : null, finalLabelText ? /*#__PURE__*/_jsx(Animated.Text, {\n        accessible: false,\n        onLayout: onLabelLayout,\n        style: [tintColor ? {\n          color: tintColor\n        } : null, commonStyle],\n        numberOfLines: 1,\n        allowFontScaling: !!allowFontScaling,\n        children: finalLabelText\n      }) : null]\n    });\n    if (backImage || Platform.OS !== 'ios') {\n      // When a custom backimage is specified, we can't mask the label\n      // Otherwise there might be weird effect due to our mask not being the same as the image\n      return labelElement;\n    }\n    return /*#__PURE__*/_jsx(MaskedView, {\n      maskElement: /*#__PURE__*/_jsxs(View, {\n        style: [styles.iconMaskContainer,\n        // Extend the mask to the center of the screen so that label isn't clipped during animation\n        screenLayout ? {\n          minWidth: screenLayout.width / 2 - 27\n        } : null],\n        children: [/*#__PURE__*/_jsx(Image, {\n          source: backIconMask,\n          resizeMode: \"contain\",\n          style: [styles.iconMask, direction === 'rtl' && styles.flip]\n        }), /*#__PURE__*/_jsx(View, {\n          style: styles.iconMaskFillerRect\n        })]\n      }),\n      children: labelElement\n    });\n  };\n  const handlePress = () => {\n    if (onPress) {\n      requestAnimationFrame(() => onPress());\n    }\n  };\n  return /*#__PURE__*/_jsx(HeaderButton, {\n    disabled: disabled,\n    href: href,\n    accessibilityLabel: accessibilityLabel,\n    testID: testID,\n    onPress: handlePress,\n    pressColor: pressColor,\n    pressOpacity: pressOpacity,\n    style: [styles.container, style],\n    children: /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [renderBackImage(), renderLabel()]\n    })\n  });\n}\nconst ICON_WIDTH = Platform.OS === 'ios' ? 13 : 24;\nconst ICON_MARGIN_END = Platform.OS === 'ios' ? 22 : 3;\nconst styles = StyleSheet.create({\n  container: {\n    paddingHorizontal: 0,\n    minWidth: StyleSheet.hairlineWidth,\n    // Avoid collapsing when title is long\n    ...Platform.select({\n      ios: null,\n      default: {\n        marginVertical: 3,\n        marginHorizontal: 11\n      }\n    })\n  },\n  label: {\n    fontSize: 17,\n    // Title and back label are a bit different width due to title being bold\n    // Adjusting the letterSpacing makes them coincide better\n    letterSpacing: 0.35\n  },\n  labelWrapper: {\n    // These styles will make sure that the label doesn't fill the available space\n    // Otherwise it messes with the measurement of the label\n    flexDirection: 'row',\n    alignItems: 'flex-start',\n    marginEnd: ICON_MARGIN\n  },\n  icon: {\n    width: ICON_WIDTH,\n    marginEnd: ICON_MARGIN_END\n  },\n  iconWithLabel: Platform.OS === 'ios' ? {\n    marginEnd: 6\n  } : {},\n  iconMaskContainer: {\n    flex: 1,\n    flexDirection: 'row',\n    justifyContent: 'center'\n  },\n  iconMaskFillerRect: {\n    flex: 1,\n    backgroundColor: '#000'\n  },\n  iconMask: {\n    height: 21,\n    width: 13,\n    marginStart: -14.5,\n    marginVertical: 12,\n    alignSelf: 'center'\n  },\n  flip: {\n    transform: 'scaleX(-1)'\n  }\n});\n//# sourceMappingURL=HeaderBackButton.js.map","\"use strict\";\n\n/**\n * The native MaskedView that we explicitly re-export for supported platforms: Android, iOS.\n */\nimport * as React from 'react';\nimport { UIManager } from 'react-native';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nlet RNCMaskedView;\ntry {\n  // Add try/catch to support usage even if it's not installed, since it's optional.\n  // Newer versions of Metro will handle it properly.\n  RNCMaskedView = require('@react-native-masked-view/masked-view').default;\n} catch (e) {\n  // Ignore\n}\nconst isMaskedViewAvailable = UIManager.getViewManagerConfig('RNCMaskedView') != null;\nexport function MaskedView({\n  children,\n  ...rest\n}) {\n  if (isMaskedViewAvailable && RNCMaskedView) {\n    return /*#__PURE__*/_jsx(RNCMaskedView, {\n      ...rest,\n      children: children\n    });\n  }\n  return children;\n}\n//# sourceMappingURL=MaskedViewNative.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport { PlatformPressable } from \"../PlatformPressable.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction HeaderButtonInternal({\n  disabled,\n  onPress,\n  pressColor,\n  pressOpacity,\n  accessibilityLabel,\n  testID,\n  style,\n  href,\n  children\n}, ref) {\n  return /*#__PURE__*/_jsx(PlatformPressable, {\n    ref: ref,\n    disabled: disabled,\n    href: href,\n    \"aria-label\": accessibilityLabel,\n    testID: testID,\n    onPress: onPress,\n    pressColor: pressColor,\n    pressOpacity: pressOpacity,\n    android_ripple: androidRipple,\n    style: [styles.container, disabled && styles.disabled, style],\n    hitSlop: Platform.select({\n      ios: undefined,\n      default: {\n        top: 16,\n        right: 16,\n        bottom: 16,\n        left: 16\n      }\n    }),\n    children: children\n  });\n}\nexport const HeaderButton = /*#__PURE__*/React.forwardRef(HeaderButtonInternal);\nHeaderButton.displayName = 'HeaderButton';\nconst androidRipple = {\n  borderless: true,\n  foreground: Platform.OS === 'android' && Platform.Version >= 23,\n  radius: 20\n};\nconst styles = StyleSheet.create({\n  container: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    paddingHorizontal: 8,\n    // Roundness for iPad hover effect\n    borderRadius: 10,\n    borderCurve: 'continuous'\n  },\n  disabled: {\n    opacity: 0.5\n  }\n});\n//# sourceMappingURL=HeaderButton.js.map","\"use strict\";\n\nimport { useLocale, useTheme } from '@react-navigation/native';\nimport { Image, Platform, StyleSheet } from 'react-native';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function HeaderIcon({\n  source,\n  style,\n  ...rest\n}) {\n  const {\n    colors\n  } = useTheme();\n  const {\n    direction\n  } = useLocale();\n  return /*#__PURE__*/_jsx(Image, {\n    source: source,\n    resizeMode: \"contain\",\n    fadeDuration: 0,\n    tintColor: colors.text,\n    style: [styles.icon, direction === 'rtl' && styles.flip, style],\n    ...rest\n  });\n}\nexport const ICON_SIZE = Platform.OS === 'ios' ? 21 : 24;\nexport const ICON_MARGIN = Platform.OS === 'ios' ? 8 : 3;\nconst styles = StyleSheet.create({\n  icon: {\n    width: ICON_SIZE,\n    height: ICON_SIZE,\n    margin: ICON_MARGIN\n  },\n  flip: {\n    transform: 'scaleX(-1)'\n  }\n});\n//# sourceMappingURL=HeaderIcon.js.map","\"use strict\";\n\nimport { useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Animated, Platform, StyleSheet } from 'react-native';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function HeaderBackground({\n  style,\n  ...rest\n}) {\n  const {\n    colors,\n    dark\n  } = useTheme();\n  return /*#__PURE__*/_jsx(Animated.View, {\n    style: [styles.container, {\n      backgroundColor: colors.card,\n      borderBottomColor: colors.border,\n      ...(Platform.OS === 'ios' && {\n        shadowColor: dark ? 'rgba(255, 255, 255, 0.45)' : 'rgba(0, 0, 0, 1)'\n      })\n    }, style],\n    ...rest\n  });\n}\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    ...Platform.select({\n      android: {\n        elevation: 4\n      },\n      ios: {\n        shadowOpacity: 0.3,\n        shadowRadius: 0,\n        shadowOffset: {\n          width: 0,\n          height: StyleSheet.hairlineWidth\n        }\n      },\n      default: {\n        borderBottomWidth: StyleSheet.hairlineWidth\n      }\n    })\n  }\n});\n//# sourceMappingURL=HeaderBackground.js.map","\"use strict\";\n\nimport { useNavigation, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport * as React from 'react';\nimport { Animated, Image, Platform, StyleSheet, TextInput, View } from 'react-native';\nimport clearIcon from '../assets/clear-icon.png';\nimport closeIcon from '../assets/close-icon.png';\nimport searchIcon from '../assets/search-icon.png';\nimport { PlatformPressable } from \"../PlatformPressable.js\";\nimport { Text } from \"../Text.js\";\nimport { HeaderButton } from \"./HeaderButton.js\";\nimport { HeaderIcon } from \"./HeaderIcon.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst INPUT_TYPE_TO_MODE = {\n  text: 'text',\n  number: 'numeric',\n  phone: 'tel',\n  email: 'email'\n};\nconst useNativeDriver = Platform.OS !== 'web';\nfunction HeaderSearchBarInternal({\n  visible,\n  inputType,\n  autoFocus = true,\n  autoCapitalize,\n  placeholder = 'Search',\n  cancelButtonText = 'Cancel',\n  enterKeyHint = 'search',\n  onChangeText,\n  onClose,\n  tintColor,\n  style,\n  ...rest\n}, ref) {\n  const navigation = useNavigation();\n  const {\n    dark,\n    colors,\n    fonts\n  } = useTheme();\n  const [value, setValue] = React.useState('');\n  const [rendered, setRendered] = React.useState(visible);\n  const [visibleAnim] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n  const [clearVisibleAnim] = React.useState(() => new Animated.Value(0));\n  const visibleValueRef = React.useRef(visible);\n  const clearVisibleValueRef = React.useRef(false);\n  const inputRef = React.useRef(null);\n  React.useEffect(() => {\n    // Avoid act warning in tests just by rendering header\n    if (visible === visibleValueRef.current) {\n      return;\n    }\n    Animated.timing(visibleAnim, {\n      toValue: visible ? 1 : 0,\n      duration: 100,\n      useNativeDriver\n    }).start(({\n      finished\n    }) => {\n      if (finished) {\n        setRendered(visible);\n        visibleValueRef.current = visible;\n      }\n    });\n    return () => {\n      visibleAnim.stopAnimation();\n    };\n  }, [visible, visibleAnim]);\n  const hasText = value !== '';\n  React.useEffect(() => {\n    if (clearVisibleValueRef.current === hasText) {\n      return;\n    }\n    Animated.timing(clearVisibleAnim, {\n      toValue: hasText ? 1 : 0,\n      duration: 100,\n      useNativeDriver\n    }).start(({\n      finished\n    }) => {\n      if (finished) {\n        clearVisibleValueRef.current = hasText;\n      }\n    });\n  }, [clearVisibleAnim, hasText]);\n  const clearText = React.useCallback(() => {\n    inputRef.current?.clear();\n    inputRef.current?.focus();\n    setValue('');\n  }, []);\n  const onClear = React.useCallback(() => {\n    clearText();\n    // FIXME: figure out how to create a SyntheticEvent\n    // @ts-expect-error: we don't have the native event here\n    onChangeText?.({\n      nativeEvent: {\n        text: ''\n      }\n    });\n  }, [clearText, onChangeText]);\n  const cancelSearch = React.useCallback(() => {\n    onClear();\n    onClose();\n  }, [onClear, onClose]);\n  React.useEffect(() => navigation?.addListener('blur', cancelSearch), [cancelSearch, navigation]);\n  React.useImperativeHandle(ref, () => ({\n    focus: () => {\n      inputRef.current?.focus();\n    },\n    blur: () => {\n      inputRef.current?.blur();\n    },\n    setText: text => {\n      inputRef.current?.setNativeProps({\n        text\n      });\n      setValue(text);\n    },\n    clearText,\n    cancelSearch\n  }), [cancelSearch, clearText]);\n  if (!visible && !rendered) {\n    return null;\n  }\n  const textColor = tintColor ?? colors.text;\n  return /*#__PURE__*/_jsxs(Animated.View, {\n    pointerEvents: visible ? 'auto' : 'none',\n    \"aria-live\": \"polite\",\n    \"aria-hidden\": !visible,\n    style: [styles.container, {\n      opacity: visibleAnim\n    }, style],\n    children: [/*#__PURE__*/_jsxs(View, {\n      style: styles.searchbarContainer,\n      children: [/*#__PURE__*/_jsx(HeaderIcon, {\n        source: searchIcon,\n        tintColor: textColor,\n        style: styles.inputSearchIcon\n      }), /*#__PURE__*/_jsx(TextInput, {\n        ...rest,\n        ref: inputRef,\n        onChange: onChangeText,\n        onChangeText: setValue,\n        autoFocus: autoFocus,\n        autoCapitalize: autoCapitalize === 'systemDefault' ? undefined : autoCapitalize,\n        inputMode: INPUT_TYPE_TO_MODE[inputType ?? 'text'],\n        enterKeyHint: enterKeyHint,\n        placeholder: placeholder,\n        placeholderTextColor: Color(textColor).alpha(0.5).string(),\n        cursorColor: colors.primary,\n        selectionHandleColor: colors.primary,\n        selectionColor: Color(colors.primary).alpha(0.3).string(),\n        style: [fonts.regular, styles.searchbar, {\n          backgroundColor: Platform.select({\n            ios: dark ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)',\n            default: 'transparent'\n          }),\n          color: textColor,\n          borderBottomColor: Color(textColor).alpha(0.2).string()\n        }]\n      }), Platform.OS === 'ios' ? /*#__PURE__*/_jsx(PlatformPressable, {\n        onPress: onClear,\n        style: [{\n          opacity: clearVisibleAnim,\n          transform: [{\n            scale: clearVisibleAnim\n          }]\n        }, styles.clearButton],\n        children: /*#__PURE__*/_jsx(Image, {\n          source: clearIcon,\n          resizeMode: \"contain\",\n          tintColor: textColor,\n          style: styles.clearIcon\n        })\n      }) : null]\n    }), Platform.OS !== 'ios' ? /*#__PURE__*/_jsx(HeaderButton, {\n      onPress: () => {\n        if (value) {\n          onClear();\n        } else {\n          onClose();\n        }\n      },\n      style: styles.closeButton,\n      children: /*#__PURE__*/_jsx(HeaderIcon, {\n        source: closeIcon,\n        tintColor: textColor\n      })\n    }) : null, Platform.OS === 'ios' ? /*#__PURE__*/_jsx(PlatformPressable, {\n      onPress: cancelSearch,\n      style: styles.cancelButton,\n      children: /*#__PURE__*/_jsx(Text, {\n        style: [fonts.regular, {\n          color: tintColor ?? colors.primary\n        }, styles.cancelText],\n        children: cancelButtonText\n      })\n    }) : null]\n  });\n}\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    flexDirection: 'row',\n    alignItems: 'stretch'\n  },\n  inputSearchIcon: {\n    position: 'absolute',\n    opacity: 0.5,\n    left: Platform.select({\n      ios: 16,\n      default: 4\n    }),\n    top: Platform.select({\n      ios: -1,\n      default: 17\n    }),\n    ...Platform.select({\n      ios: {\n        height: 18,\n        width: 18\n      },\n      default: {}\n    })\n  },\n  closeButton: {\n    position: 'absolute',\n    opacity: 0.5,\n    right: Platform.select({\n      ios: 0,\n      default: 8\n    }),\n    top: Platform.select({\n      ios: -2,\n      default: 17\n    })\n  },\n  clearButton: {\n    position: 'absolute',\n    right: 0,\n    top: -7,\n    bottom: 0,\n    justifyContent: 'center',\n    padding: 8\n  },\n  clearIcon: {\n    height: 16,\n    width: 16,\n    opacity: 0.5\n  },\n  cancelButton: {\n    alignSelf: 'center',\n    top: -4\n  },\n  cancelText: {\n    fontSize: 17,\n    marginHorizontal: 12\n  },\n  searchbarContainer: {\n    flex: 1\n  },\n  searchbar: Platform.select({\n    ios: {\n      flex: 1,\n      fontSize: 17,\n      paddingHorizontal: 32,\n      marginLeft: 16,\n      marginTop: -1,\n      marginBottom: 4,\n      borderRadius: 8,\n      borderCurve: 'continuous'\n    },\n    default: {\n      flex: 1,\n      fontSize: 18,\n      paddingHorizontal: 36,\n      marginRight: 8,\n      marginTop: 8,\n      marginBottom: 8,\n      borderBottomWidth: 1\n    }\n  })\n});\nexport const HeaderSearchBar = /*#__PURE__*/React.forwardRef(HeaderSearchBarInternal);\n//# sourceMappingURL=HeaderSearchBar.js.map","\"use strict\";\n\nimport { getNamedContext } from \"../getNamedContext.js\";\nexport const HeaderShownContext = getNamedContext('HeaderShownContext', false);\n//# sourceMappingURL=HeaderShownContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nconst contexts = '__react_navigation__elements_contexts';\n// We use a global variable to keep our contexts so that we can reuse same contexts across packages\nglobalThis[contexts] = globalThis[contexts] ?? new Map();\nexport function getNamedContext(name, initialValue) {\n  let context = globalThis[contexts].get(name);\n  if (context) {\n    return context;\n  }\n  context = /*#__PURE__*/React.createContext(initialValue);\n  context.displayName = name;\n  globalThis[contexts].set(name, context);\n  return context;\n}\n//# sourceMappingURL=getNamedContext.js.map","\"use strict\";\n\nimport { useTheme } from '@react-navigation/native';\nimport { Animated, Platform, StyleSheet } from 'react-native';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function HeaderTitle({\n  tintColor,\n  style,\n  ...rest\n}) {\n  const {\n    colors,\n    fonts\n  } = useTheme();\n  return /*#__PURE__*/_jsx(Animated.Text, {\n    role: \"heading\",\n    \"aria-level\": \"1\",\n    numberOfLines: 1,\n    ...rest,\n    style: [{\n      color: tintColor === undefined ? colors.text : tintColor\n    }, Platform.select({\n      ios: fonts.bold,\n      default: fonts.medium\n    }), styles.title, style]\n  });\n}\nconst styles = StyleSheet.create({\n  title: Platform.select({\n    ios: {\n      fontSize: 17\n    },\n    android: {\n      fontSize: 20\n    },\n    default: {\n      fontSize: 18\n    }\n  })\n});\n//# sourceMappingURL=HeaderTitle.js.map","\"use strict\";\n\nimport { getNamedContext } from \"../getNamedContext.js\";\nexport const HeaderBackContext = getNamedContext('HeaderBackContext', undefined);\n//# sourceMappingURL=HeaderBackContext.js.map","\"use strict\";\n\nimport { getNamedContext } from \"../getNamedContext.js\";\nexport const HeaderHeightContext = getNamedContext('HeaderHeightContext', undefined);\n//# sourceMappingURL=HeaderHeightContext.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { HeaderHeightContext } from \"./HeaderHeightContext.js\";\nexport function useHeaderHeight() {\n  const height = React.useContext(HeaderHeightContext);\n  if (height === undefined) {\n    throw new Error(\"Couldn't find the header height. Are you inside a screen in a navigator with a header?\");\n  }\n  return height;\n}\n//# sourceMappingURL=useHeaderHeight.js.map","\"use strict\";\n\nexport function getLabel(options, fallback) {\n  return options.label !== undefined ? options.label : options.title !== undefined ? options.title : fallback;\n}\n//# sourceMappingURL=getLabel.js.map","\"use strict\";\n\nimport { StyleSheet } from 'react-native';\nimport { Text } from \"../Text.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Label({\n  tintColor,\n  style,\n  ...rest\n}) {\n  return /*#__PURE__*/_jsx(Text, {\n    numberOfLines: 1,\n    ...rest,\n    style: [styles.label, tintColor != null && {\n      color: tintColor\n    }, style]\n  });\n}\nconst styles = StyleSheet.create({\n  label: {\n    textAlign: 'center',\n    backgroundColor: 'transparent'\n  }\n});\n//# sourceMappingURL=Label.js.map","\"use strict\";\n\nimport * as React from 'react';\n/**\n * Render content lazily based on visibility.\n *\n * When enabled:\n * - If content is visible, it will render immediately\n * - If content is not visible, it won't render until it becomes visible\n *\n * Otherwise:\n * - If content is visible, it will render immediately\n * - If content is not visible, it will defer rendering until idle\n *\n * Once rendered, the content remains rendered.\n */\nexport function Lazy({\n  enabled,\n  visible,\n  children\n}) {\n  const [rendered, setRendered] = React.useState(enabled ? visible : false);\n  const shouldRenderInIdle = !(enabled || visible || rendered);\n  React.useEffect(() => {\n    if (shouldRenderInIdle === false) {\n      return;\n    }\n    const id = requestIdleCallback(() => {\n      setRendered(true);\n    });\n    return () => cancelIdleCallback(id);\n  }, [shouldRenderInIdle]);\n  if (visible && rendered === false) {\n    setRendered(true);\n    return children;\n  }\n  if (rendered) {\n    return children;\n  }\n  return null;\n}\n//# sourceMappingURL=Lazy.js.map","\"use strict\";\n\nimport { StyleSheet } from 'react-native';\nimport { Text } from \"./Text.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function MissingIcon({\n  color,\n  size,\n  style\n}) {\n  return /*#__PURE__*/_jsx(Text, {\n    style: [styles.icon, {\n      color,\n      fontSize: size\n    }, style],\n    children: \"\\u23F7\"\n  });\n}\nconst styles = StyleSheet.create({\n  icon: {\n    backgroundColor: 'transparent'\n  }\n});\n//# sourceMappingURL=MissingIcon.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FAR_FAR_AWAY = 30000; // this should be big enough to move the whole view out of its container\n\nexport function ResourceSavingView({\n  visible,\n  children,\n  style,\n  ...rest\n}) {\n  if (Platform.OS === 'web') {\n    return /*#__PURE__*/_jsx(View\n    // @ts-expect-error: hidden exists on web, but not in React Native\n    , {\n      hidden: !visible,\n      style: [{\n        display: visible ? 'flex' : 'none'\n      }, styles.container, style],\n      pointerEvents: visible ? 'auto' : 'none',\n      ...rest,\n      children: children\n    });\n  }\n  return /*#__PURE__*/_jsx(View, {\n    style: [styles.container, style]\n    // box-none doesn't seem to work properly on Android\n    ,\n    pointerEvents: visible ? 'auto' : 'none',\n    children: /*#__PURE__*/_jsx(View, {\n      collapsable: false,\n      removeClippedSubviews:\n      // On iOS & macOS, set removeClippedSubviews to true only when not focused\n      // This is an workaround for a bug where the clipped view never re-appears\n      Platform.OS === 'ios' || Platform.OS === 'macos' ? !visible : true,\n      pointerEvents: visible ? 'auto' : 'none',\n      style: visible ? styles.attached : styles.detached,\n      children: children\n    })\n  });\n}\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    overflow: 'hidden'\n  },\n  attached: {\n    flex: 1\n  },\n  detached: {\n    flex: 1,\n    top: FAR_FAR_AWAY\n  }\n});\n//# sourceMappingURL=ResourceSavingView.js.map","\"use strict\";\n\nimport * as React from 'react';\nimport { Dimensions, Platform, StyleSheet, View } from 'react-native';\nimport { initialWindowMetrics, SafeAreaInsetsContext, SafeAreaProvider } from 'react-native-safe-area-context';\nimport { FrameSizeProvider } from \"./useFrameSize.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst {\n  width = 0,\n  height = 0\n} = Dimensions.get('window');\n\n// To support SSR on web, we need to have empty insets for initial values\n// Otherwise there can be mismatch between SSR and client output\n// We also need to specify empty values to support tests environments\nconst initialMetrics = Platform.OS === 'web' || initialWindowMetrics == null ? {\n  frame: {\n    x: 0,\n    y: 0,\n    width,\n    height\n  },\n  insets: {\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0\n  }\n} : initialWindowMetrics;\nexport function SafeAreaProviderCompat({\n  children,\n  style\n}) {\n  const insets = React.useContext(SafeAreaInsetsContext);\n  return /*#__PURE__*/_jsx(FrameSizeProvider, {\n    initialFrame: initialMetrics.frame,\n    render: ({\n      ref,\n      onLayout\n    }) => {\n      if (insets) {\n        // If we already have insets, don't wrap the stack in another safe area provider\n        // This avoids an issue with updates at the cost of potentially incorrect values\n        // https://github.com/react-navigation/react-navigation/issues/174\n        return /*#__PURE__*/_jsx(View, {\n          ref: ref,\n          onLayout: onLayout,\n          style: [styles.container, style],\n          children: children\n        });\n      }\n\n      // SafeAreaProvider doesn't forward ref\n      // So we only pass onLayout to it\n      return /*#__PURE__*/_jsx(SafeAreaProvider, {\n        initialMetrics: initialMetrics,\n        style: style,\n        onLayout: onLayout,\n        children: children\n      });\n    }\n  });\n}\nSafeAreaProviderCompat.initialMetrics = initialMetrics;\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1\n  }\n});\n//# sourceMappingURL=SafeAreaProviderCompat.js.map","\"use strict\";\n\nimport { NavigationProvider } from '@react-navigation/native';\nimport * as React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { Background } from \"./Background.js\";\nimport { getDefaultHeaderHeight } from \"./Header/getDefaultHeaderHeight.js\";\nimport { HeaderHeightContext } from \"./Header/HeaderHeightContext.js\";\nimport { HeaderShownContext } from \"./Header/HeaderShownContext.js\";\nimport { useFrameSize } from \"./useFrameSize.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function Screen(props) {\n  const insets = useSafeAreaInsets();\n  const isParentHeaderShown = React.useContext(HeaderShownContext);\n  const parentHeaderHeight = React.useContext(HeaderHeightContext);\n  const {\n    focused,\n    modal = false,\n    header,\n    headerShown = true,\n    headerTransparent,\n    headerStatusBarHeight = isParentHeaderShown ? 0 : insets.top,\n    navigation,\n    route,\n    children,\n    style\n  } = props;\n  const defaultHeaderHeight = useFrameSize(size => getDefaultHeaderHeight(size, modal, headerStatusBarHeight));\n  const headerRef = React.useRef(null);\n  const [headerHeight, setHeaderHeight] = React.useState(defaultHeaderHeight);\n  React.useLayoutEffect(() => {\n    headerRef.current?.measure((_x, _y, _width, height) => {\n      setHeaderHeight(height);\n    });\n  }, [route.name]);\n  return /*#__PURE__*/_jsxs(Background, {\n    \"aria-hidden\": !focused,\n    style: [styles.container, style]\n    // On Fabric we need to disable collapsing for the background to ensure\n    // that we won't render unnecessary views due to the view flattening.\n    ,\n    collapsable: false,\n    children: [headerShown ? /*#__PURE__*/_jsx(NavigationProvider, {\n      route: route,\n      navigation: navigation,\n      children: /*#__PURE__*/_jsx(View, {\n        ref: headerRef,\n        pointerEvents: \"box-none\",\n        onLayout: e => {\n          const {\n            height\n          } = e.nativeEvent.layout;\n          setHeaderHeight(height);\n        },\n        style: [styles.header, headerTransparent ? styles.absolute : null],\n        children: header\n      })\n    }) : null, /*#__PURE__*/_jsx(View, {\n      style: styles.content,\n      children: /*#__PURE__*/_jsx(HeaderShownContext.Provider, {\n        value: isParentHeaderShown || headerShown !== false,\n        children: /*#__PURE__*/_jsx(HeaderHeightContext.Provider, {\n          value: headerShown ? headerHeight : parentHeaderHeight ?? 0,\n          children: children\n        })\n      })\n    })]\n  });\n}\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1\n  },\n  content: {\n    flex: 1\n  },\n  header: {\n    zIndex: 1\n  },\n  absolute: {\n    position: 'absolute',\n    top: 0,\n    start: 0,\n    end: 0\n  }\n});\n//# sourceMappingURL=Screen.js.map","\"use strict\";\n\nexport {};\n//# sourceMappingURL=types.js.map","// Side effects import declaration to ensure our TurboModule\n// is loaded.\nimport './fabric/NativeScreensModule';\n\nexport * from './types';\n\n/**\n * Core\n */\nexport {\n  enableScreens,\n  enableFreeze,\n  screensEnabled,\n  freezeEnabled,\n} from './core';\n\n/**\n * RNS Components\n */\nexport {\n  default as Screen,\n  InnerScreen,\n  ScreenContext,\n} from './components/Screen';\n\nexport {\n  ScreenStackHeaderConfig,\n  ScreenStackHeaderSubview,\n  ScreenStackHeaderLeftView,\n  ScreenStackHeaderCenterView,\n  ScreenStackHeaderRightView,\n  ScreenStackHeaderBackButtonImage,\n  ScreenStackHeaderSearchBarView,\n} from './components/ScreenStackHeaderConfig';\n\nexport { default as SearchBar } from './components/SearchBar';\nexport { default as ScreenContainer } from './components/ScreenContainer';\nexport { default as ScreenStack } from './components/ScreenStack';\nexport { default as ScreenStackItem } from './components/ScreenStackItem';\nexport { default as FullWindowOverlay } from './components/FullWindowOverlay';\nexport { default as ScreenFooter } from './components/ScreenFooter';\nexport { default as ScreenContentWrapper } from './components/ScreenContentWrapper';\n\n/**\n * Utils\n */\nexport {\n  isSearchBarAvailableForCurrentPlatform,\n  executeNativeBackPress,\n} from './utils';\n\n/**\n * Flags\n */\nexport { compatibilityFlags, featureFlags } from './flags';\n\n/**\n * Hooks\n */\nexport { default as useTransitionProgress } from './useTransitionProgress';\n\n/**\n * EXPERIMENTAL API BELOW. MIGHT CHANGE W/O ANY NOTICE\n */\nexport { default as BottomTabs } from './components/bottom-tabs/BottomTabs';\nexport { default as BottomTabsScreen } from './components/bottom-tabs/BottomTabsScreen';\nexport { default as ScreenStackHost } from './components/gamma/ScreenStackHost';\nexport {\n  default as StackScreen,\n  StackScreenLifecycleState,\n} from './components/gamma/StackScreen';\nexport { default as SplitViewHost } from './components/gamma/SplitViewHost';\nexport { default as SplitViewScreen } from './components/gamma/SplitViewScreen';\n","'use client';\n\nimport type { TurboModule } from 'react-native';\nimport { TurboModuleRegistry } from 'react-native';\n\nexport interface Spec extends TurboModule {}\n\nexport default TurboModuleRegistry.get<Spec>('RNSModule');\n","import React from 'react';\nimport {\n  Animated,\n  NativeSyntheticEvent,\n  ViewProps,\n  View,\n  TargetedEvent,\n  TextInputFocusEventData,\n  ColorValue,\n} from 'react-native';\nimport { NativeStackNavigatorProps } from './native-stack/types';\n\nexport type SearchBarCommands = {\n  focus: () => void;\n  blur: () => void;\n  clearText: () => void;\n  toggleCancelButton: (show: boolean) => void;\n  setText: (text: string) => void;\n  cancelSearch: () => void;\n};\n\nexport type BackButtonDisplayMode = 'default' | 'generic' | 'minimal';\nexport type StackPresentationTypes =\n  | 'push'\n  | 'modal'\n  | 'transparentModal'\n  | 'containedModal'\n  | 'containedTransparentModal'\n  | 'fullScreenModal'\n  | 'formSheet'\n  | 'pageSheet';\nexport type StackAnimationTypes =\n  | 'default'\n  | 'fade'\n  | 'fade_from_bottom'\n  | 'flip'\n  | 'none'\n  | 'simple_push'\n  | 'slide_from_bottom'\n  | 'slide_from_right'\n  | 'slide_from_left'\n  | 'ios_from_right'\n  | 'ios_from_left';\nexport type BlurEffectTypes =\n  | 'none'\n  | 'extraLight'\n  | 'light'\n  | 'dark'\n  | 'regular'\n  | 'prominent'\n  | 'systemUltraThinMaterial'\n  | 'systemThinMaterial'\n  | 'systemMaterial'\n  | 'systemThickMaterial'\n  | 'systemChromeMaterial'\n  | 'systemUltraThinMaterialLight'\n  | 'systemThinMaterialLight'\n  | 'systemMaterialLight'\n  | 'systemThickMaterialLight'\n  | 'systemChromeMaterialLight'\n  | 'systemUltraThinMaterialDark'\n  | 'systemThinMaterialDark'\n  | 'systemMaterialDark'\n  | 'systemThickMaterialDark'\n  | 'systemChromeMaterialDark';\nexport type ScreenReplaceTypes = 'push' | 'pop';\nexport type SwipeDirectionTypes = 'vertical' | 'horizontal';\nexport type ScreenOrientationTypes =\n  | 'default'\n  | 'all'\n  | 'portrait'\n  | 'portrait_up'\n  | 'portrait_down'\n  | 'landscape'\n  | 'landscape_left'\n  | 'landscape_right';\nexport type HeaderSubviewTypes =\n  | 'back'\n  | 'right'\n  | 'left'\n  | 'center'\n  | 'searchBar';\n\nexport type HeaderHeightChangeEventType = {\n  headerHeight: number;\n};\n\nexport type TransitionProgressEventType = {\n  progress: number;\n  closing: number;\n  goingForward: number;\n};\n\nexport type GestureResponseDistanceType = {\n  start?: number;\n  end?: number;\n  top?: number;\n  bottom?: number;\n};\n\nexport type SearchBarPlacement =\n  | 'automatic'\n  | 'inline' // deprecated starting from iOS 26\n  | 'stacked'\n  | 'integrated'\n  | 'integratedButton'\n  | 'integratedCentered';\n\nexport interface ScreenProps extends ViewProps {\n  active?: 0 | 1 | Animated.AnimatedInterpolation<number>;\n  activityState?: 0 | 1 | 2 | Animated.AnimatedInterpolation<number>;\n  /**\n   * Boolean indicating that the screen should be frozen with `react-freeze`.\n   */\n  shouldFreeze?: boolean;\n  children?: React.ReactNode;\n  /**\n   * Boolean indicating that swipe dismissal should trigger animation provided by `stackAnimation`. Defaults to `false`.\n   *\n   * @platform ios\n   */\n  customAnimationOnSwipe?: boolean;\n  /**\n   * All children screens should have the same value of their \"enabled\" prop as their container.\n   */\n  enabled?: boolean;\n  /**\n   * Internal boolean used to not attach events used only by native-stack. It prevents non native-stack navigators from sending transition progress from their Screen components.\n   */\n  isNativeStack?: boolean;\n  /**\n   * Internal boolean used to detect if current header has large title on iOS.\n   */\n  hasLargeHeader?: boolean;\n  /**\n   * Whether inactive screens should be suspended from re-rendering. Defaults to `false`.\n   * When `enableFreeze()` is run at the top of the application defaults to `true`.\n   */\n  freezeOnBlur?: boolean;\n  /**\n   * Boolean indicating whether the swipe gesture should work on whole screen. Swiping with this option results in the same transition animation as `simple_push` by default.\n   * It can be changed to other custom animations with `customAnimationOnSwipe` prop, but default iOS swipe animation is not achievable due to usage of custom recognizer.\n   * Defaults to `false`.\n   *\n   * @platform ios\n   */\n  fullScreenSwipeEnabled?: boolean;\n  /**\n   * Whether the full screen dismiss gesture has shadow under view during transition.\n   * When enabled, a custom shadow view is added during the transition which tries to mimic the\n   * default iOS shadow. Defaults to `true`.\n   *\n   * This does not affect the behavior of transitions that don't use gestures, enabled by `fullScreenGestureEnabled` prop.\n   *\n   * @platform ios\n   */\n  fullScreenSwipeShadowEnabled?: boolean;\n  /**\n   * Whether you can use gestures to dismiss this screen. Defaults to `true`.\n   *\n   * @platform ios\n   */\n  gestureEnabled?: boolean;\n  /**\n   * Use it to restrict the distance from the edges of screen in which the gesture should be recognized. To be used alongside `fullScreenSwipeEnabled`.\n   *\n   * @platform ios\n   */\n  gestureResponseDistance?: GestureResponseDistanceType;\n  /**\n   * Whether the home indicator should be hidden on this screen. Defaults to `false`.\n   *\n   * @platform ios\n   */\n  homeIndicatorHidden?: boolean;\n  /**\n   * Whether the keyboard should hide when swiping to the previous screen. Defaults to `false`.\n   *\n   * @platform ios\n   */\n  hideKeyboardOnSwipe?: boolean;\n  /**\n   * Boolean indicating whether, when the Android default back button is clicked, the `pop` action should be performed on the native side or on the JS side to be able to prevent it.\n   * Unfortunately the same behavior is not available on iOS since the behavior of native back button cannot be changed there.\n   * Defaults to `false`.\n   *\n   * @platform android\n   */\n  nativeBackButtonDismissalEnabled?: boolean;\n  /**\n   * Sets the navigation bar color. Defaults to initial status bar color.\n   *\n   * @platform android\n   *\n   * @deprecated For all apps targeting Android SDK 35 or above this prop has no effect and is subject to removal in the future.\n   *  For SDK below 35 this works only with specific app setup.\n   *  This prop is subject to removal in the future.\n   *  See: https://developer.android.com/reference/android/view/Window#setNavigationBarColor(int)\n   */\n  navigationBarColor?: ColorValue;\n  /**\n   * Boolean indicating whether the content should be visible behind the navigation bar. Defaults to `false`.\n   *\n   * @platform android\n   *\n   * @deprecated For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n   *  We expect that in future SDKs this option will be enforced.\n   *  This prop is subject to removal in the future.\n   *  See: https://developer.android.com/about/versions/15/behavior-changes-15#window-insets\n   */\n  navigationBarTranslucent?: boolean;\n  /**\n   * Sets the visibility of the navigation bar. Defaults to `false`.\n   *\n   * @platform android\n   */\n  navigationBarHidden?: boolean;\n  /**\n   * A callback that gets called when the current screen appears.\n   */\n  onAppear?: (e: NativeSyntheticEvent<TargetedEvent>) => void;\n  onComponentRef?: (view: unknown) => void;\n  /**\n   * A callback that gets called when the current screen disappears.\n   */\n  onDisappear?: (e: NativeSyntheticEvent<TargetedEvent>) => void;\n  /**\n   * A callback that gets called when the current screen is dismissed by hardware back (on Android) or dismiss gesture (swipe back or down).\n   * The callback takes the number of dismissed screens as an argument since iOS 14 native header back button can pop more than 1 screen at a time.\n   */\n  onDismissed?: (e: NativeSyntheticEvent<{ dismissCount: number }>) => void;\n  /**\n   * A callback that gets called when the header height has changed.\n   */\n  onHeaderHeightChange?: (\n    e: NativeSyntheticEvent<HeaderHeightChangeEventType>,\n  ) => void;\n  /**\n   * A callback that gets called after swipe back is canceled.\n   */\n  onGestureCancel?: (e: NativeSyntheticEvent<null>) => void;\n  /**\n   * An internal callback that gets called when the native header back button is clicked on Android and `enableNativeBackButtonDismissal` is set to `false`. It dismises the screen using `navigation.pop()`.\n   *\n   * @platform android\n   */\n  onHeaderBackButtonClicked?: () => void;\n  /**\n   * An internal callback called when screen is dismissed by gesture or by native header back button and `preventNativeDismiss` is set to `true`.\n   *\n   * @platform ios\n   */\n  onNativeDismissCancelled?: (\n    e: NativeSyntheticEvent<{ dismissCount: number }>,\n  ) => void;\n  /**\n   * A callback that gets called when the current screen is in `formSheet` presentation and its detent has changed.\n   */\n  onSheetDetentChanged?: (\n    e: NativeSyntheticEvent<{ index: number; isStable: boolean }>,\n  ) => void;\n  /**\n   * An internal callback called every frame during the transition of screens of `native-stack`, used to feed transition context.\n   */\n  onTransitionProgress?: (\n    e: NativeSyntheticEvent<TransitionProgressEventType>,\n  ) => void;\n  /**\n   * A callback that gets called when the current screen will appear. This is called as soon as the transition begins.\n   */\n  onWillAppear?: (e: NativeSyntheticEvent<TargetedEvent>) => void;\n  /**\n   * A callback that gets called when the current screen will disappear. This is called as soon as the transition begins.\n   */\n  onWillDisappear?: (e: NativeSyntheticEvent<TargetedEvent>) => void;\n  /**\n   * Boolean indicating whether to prevent current screen from being dismissed.\n   * Defaults to `false`.\n   *\n   * @platform ios\n   */\n  preventNativeDismiss?: boolean;\n  ref?: React.Ref<View>;\n  /**\n   * How should the screen replacing another screen animate. Defaults to `pop`.\n   * The following values are currently supported:\n   * - \"push\" – the new screen will perform push animation.\n   * - \"pop\" – the new screen will perform pop animation.\n   */\n  replaceAnimation?: ScreenReplaceTypes;\n  /**\n   * A way to identify the screen in native code. This value will be passed down to native side,\n   * where it can be later consulted. Meant for native integration with the library.\n   * This should be unique value across all screen instances, however it is not asserted on native side.\n   *\n   * Empty string translates to `undefined`.\n   *\n   * @platform ios\n   */\n  screenId?: string | undefined;\n  /**\n   * In which orientation should the screen appear.\n   * The following values are currently supported:\n   * - \"default\" - resolves to \"all\" without \"portrait_down\" on iOS. On Android, this lets the system decide the best orientation.\n   * - \"all\" – all orientations are permitted\n   * - \"portrait\" – portrait orientations are permitted\n   * - \"portrait_up\" – right-side portrait orientation is permitted\n   * - \"portrait_down\" – upside-down portrait orientation is permitted\n   * - \"landscape\" – landscape orientations are permitted\n   * - \"landscape_left\" – landscape-left orientation is permitted\n   * - \"landscape_right\" – landscape-right orientation is permitted\n   */\n  screenOrientation?: ScreenOrientationTypes;\n  /**\n   * Describes heights where a sheet can rest.\n   * Works only when `presentation` is set to `formSheet`.\n   *\n   * Heights should be described as fraction (a number from `[0, 1]` interval) of screen height / maximum detent height.\n   * You can pass an array of ascending values each defining allowed sheet detent. iOS accepts any number of detents,\n   * while **Android is limited to three**.\n   *\n   * There is also possibility to specify `fitToContents` literal, which intents to set the sheet height\n   * to the height of its contents. On iOS `fitToContents` currently also includes small padding accounting for bottom inset.\n   *\n   * Please note that the array **must** be sorted in ascending order. This invariant is verified only in developement mode,\n   * where violation results in error.\n   *\n   * **Android is limited to up 3 values in the array** -- any surplus values, beside first three are ignored.\n   *\n   * There are also legacy & **deprecated** options available:\n   *\n   * * 'medium' - corresponds to `[0.5]` detent value, around half of the screen height,\n   * * 'large' - corresponds to `[1.0]` detent value, maximum height,\n   * * 'all' - corresponds to `[0.5, 1.0]` value, the name is deceiving due to compatibility reasons.\n   *\n   * These are provided solely for **temporary** backward compatibility and are destined for removal in future versions.\n   *\n   * Defaults to `[1.0]`.\n   */\n  sheetAllowedDetents?: number[] | 'fitToContents' | 'medium' | 'large' | 'all';\n  /**\n   * Integer value describing elevation of the sheet, impacting shadow on the top edge of the sheet.\n   *\n   * Not dynamic - changing it after the component is rendered won't have an effect.\n   *\n   * Defaults to `24`.\n   *\n   * @platform Android\n   */\n  sheetElevation?: number;\n  /**\n   * Whether the sheet should expand to larger detent when scrolling.\n   * Works only when `stackPresentation` is set to `formSheet`.\n   * Defaults to `true`.\n   *\n   * @platform ios\n   */\n  sheetExpandsWhenScrolledToEdge?: boolean;\n  /**\n   * The corner radius that the sheet will try to render with.\n   * Works only when `stackPresentation` is set to `formSheet`.\n   *\n   * If set to non-negative value it will try to render sheet with provided radius, else it will apply system default.\n   *\n   * If left unset system default is used.\n   *\n   * @platform ios\n   */\n  sheetCornerRadius?: number;\n  /**\n   * Boolean indicating whether the sheet shows a grabber at the top.\n   * Works only when `stackPresentation` is set to `formSheet`.\n   * Defaults to `false`.\n   *\n   * @platform ios\n   */\n  sheetGrabberVisible?: boolean;\n  /**\n   * The largest sheet detent for which a view underneath won't be dimmed.\n   * Works only when `stackPresentation` is set to `formSheet`.\n   *\n   * This prop can be set to an number, which indicates index of detent in `sheetAllowedDetents` array for which\n   * there won't be a dimming view beneath the sheet.\n   *\n   * If the specified index is out of bounds of `sheetAllowedDetents` array, in dev environment mode error will be thrown,\n   * in production the value will be reset to default value.\n   *\n   * Additionaly there are following options available:\n   *\n   * * `none` - there will be dimming view for all detents levels,\n   * * `last` - there won't be a dimming view for any detent level.\n   *\n   * There also legacy & **deprecated** prop values available: `medium`, `large` (don't confuse with `largest`), `all`, which work in tandem with\n   * corresponding legacy prop values for `sheetAllowedDetents` prop.\n   *\n   * These are provided solely for **temporary** backward compatibility and are destined for removal in future versions.\n   *\n   * Defaults to `none`, indicating that the dimming view should be always present.\n   */\n  sheetLargestUndimmedDetentIndex?:\n    | number\n    | 'none'\n    | 'last'\n    | 'medium' // deprecated\n    | 'large' // deprecated\n    | 'all'; // deprecated\n  /**\n   * Index of the detent the sheet should expand to after being opened.\n   * Works only when `stackPresentation` is set to `formSheet`.\n   *\n   * If the specified index is out of bounds of `sheetAllowedDetents` array, in dev environment more error will be thrown,\n   * in production the value will be reset to default value.\n   *\n   * Additionaly there is `last` value available, when set the sheet will expand initially to last (largest) detent.\n   *\n   * Defaults to `0` - which represents first detent in the detents array.\n   */\n  sheetInitialDetentIndex?: number | 'last';\n  /**\n   * How the screen should appear/disappear when pushed or popped at the top of the stack.\n   * The following values are currently supported:\n   * - \"default\" – uses a platform default animation\n   * - \"fade\" – fades screen in or out\n   * - \"fade_from_bottom\" – performs a fade from bottom animation\n   * - \"flip\" – flips the screen, requires stackPresentation: \"modal\" (iOS only)\n   * - \"simple_push\" – performs a default animation, but without native header transition (iOS only)\n   * - `slide_from_bottom` – performs a slide from bottom animation\n   * - \"slide_from_right\" - slide in the new screen from right to left (Android only, resolves to default transition on iOS)\n   * - \"slide_from_left\" - slide in the new screen from left to right\n   * - \"ios_from_right\" - iOS like slide in animation. pushes in the new screen from right to left (Android only, resolves to default transition on iOS)\n   * - \"ios_from_left\" - iOS like slide in animation. pushes in the new screen from left to right (Android only, resolves to default transition on iOS)\n   * - \"none\" – the screen appears/dissapears without an animation\n   */\n  stackAnimation?: StackAnimationTypes;\n  /**\n   * How should the screen be presented.\n   * The following values are currently supported:\n   * - \"push\" – the new screen will be pushed onto a stack which on iOS means that the default animation will be slide from the side, the animation on Android may vary depending on the OS version and theme. Supports nested stack rendering.\n   * - \"modal\" – the new screen will be presented modally. On iOS it'll use `UIModalPresentationStyleAutomatic`. On Android this is equivalent to `push` presentation type. Supports nested stack rendering.\n   * - \"transparentModal\" – the new screen will be presented modally but in addition the second to last screen will remain attached to the stack container such that if the top screen is non opaque the content below can still be seen. If \"modal\" is used instead the below screen will get unmounted as soon as the transition ends.\n   * - \"containedModal\" – will use \"UIModalPresentationCurrentContext\" modal style on iOS and will fallback to \"modal\" on Android.\n   * - \"containedTransparentModal\" – will use \"UIModalPresentationOverCurrentContext\" modal style on iOS and will fallback to \"transparentModal\" on Android.\n   * - \"fullScreenModal\" – will use \"UIModalPresentationFullScreen\" modal style on iOS and will fallback to \"modal\" on Android.\n   * - \"formSheet\" – will use \"UIModalPresentationFormSheet\" modal style on iOS, on Android this will use Material BottomSheetBehaviour. On Android neested stack rendering is not yet supported.\n   * - \"pageSheet\" – will use \"UIModalPresentationPageSheet\" modal style on iOS and will fallback to \"modal\" on Android.\n   */\n  stackPresentation?: StackPresentationTypes;\n  /**\n   * Sets the status bar animation (similar to the `StatusBar` component).\n   * On Android, setting either `fade` or `slide` will set the transition of status bar color. On iOS, this option applies to appereance animation of the status bar.\n   * Requires enabling (or deleting) `View controller-based status bar appearance` in your Info.plist file on iOS.\n   *\n   * Defaults to `fade` on iOS and `none` on Android.\n   */\n  statusBarAnimation?: 'none' | 'fade' | 'slide';\n  /**\n   * Sets the status bar color (similar to the `StatusBar` component). Defaults to initial status bar color.\n   *\n   * @platform android\n   *\n   * @deprecated For all apps targeting Android SDK 35 or above this prop has no effect.\n   *  For SDK below 35 this works only with specific app setup.\n   *  This prop is subject to removal in the future.\n   *  See: https://developer.android.com/reference/android/view/Window#setStatusBarColor(int)\n   */\n  statusBarColor?: ColorValue;\n  /**\n   * Whether the status bar should be hidden on this screen. Requires enabling (or deleting) `View controller-based status bar appearance` in your Info.plist file on iOS. Defaults to `false`.\n   */\n  statusBarHidden?: boolean;\n  /**\n   * Sets the status bar color (similar to the `StatusBar` component). Requires enabling (or deleting) `View controller-based status bar appearance` in your Info.plist file on iOS.\n   * `auto` and `inverted` are supported only on iOS. On Android, they will fallback to `light`.\n   * Defaults to `auto` on iOS and `light` on Android.\n   */\n  statusBarStyle?: 'inverted' | 'auto' | 'light' | 'dark';\n  /**\n   * Sets the translucency of the status bar. Defaults to `false`.\n   *\n   * @platform android\n   *\n   * @deprecated For all apps targeting Android SDK 35 or above edge-to-edge mode on Android is enabled by default and this point loses relevance.\n   *  It is expected that the edge-to-edge will be enforced in future SDKs: https://developer.android.com/about/versions/15/behavior-changes-15#ux.\n   */\n  statusBarTranslucent?: boolean;\n  /**\n   * Sets the direction in which you should swipe to dismiss the screen.\n   * When using `vertical` option, options `fullScreenSwipeEnabled: true`, `customAnimationOnSwipe: true` and `stackAnimation: 'slide_from_bottom'` are set by default.\n   * The following values are supported:\n   * - `vertical` – dismiss screen vertically\n   * - `horizontal` – dismiss screen horizontally (default)\n   *\n   * @platform ios\n   */\n  swipeDirection?: SwipeDirectionTypes;\n  /**\n   * Changes the duration (in milliseconds) of `slide_from_bottom`, `fade_from_bottom`, `fade` and `simple_push` transitions on iOS. Defaults to `500`.\n   * The duration of `default` and `flip` transitions isn't customizable.\n   *\n   * @platform ios\n   */\n  transitionDuration?: number;\n  /**\n   * Footer component that can be used alongside formSheet stack presentation style.\n   *\n   * This option is provided, because due to implementation details it might be problematic\n   * to implement such layout with JS-only code.\n   *\n   * Please note that this prop is marked as unstable and might be subject of breaking changes,\n   * including removal, in particular when we find solution that will make implementing it with JS\n   * straightforward.\n   *\n   * @platform android\n   */\n  unstable_sheetFooter?: () => React.ReactNode;\n}\n\nexport interface ScreenContainerProps extends ViewProps {\n  children?: React.ReactNode;\n  /**\n   * A prop that gives users an option to switch between using Screens for the navigator (container). All children screens should have the same value of their \"enabled\" prop as their container.\n   */\n  enabled?: boolean;\n  /**\n   * A prop to be used in navigators always showing only one screen (providing only `0` or `2` `activityState` values) for better implementation of `ScreenContainer` on iOS.\n   */\n  hasTwoStates?: boolean;\n}\n\nexport interface GestureDetectorBridge {\n  stackUseEffectCallback: (\n    stackRef: React.MutableRefObject<React.Ref<NativeStackNavigatorProps>>,\n  ) => void;\n}\n\nexport interface ScreenStackProps extends ViewProps, GestureProps {\n  children?: React.ReactNode;\n  /**\n   * A callback that gets called when the current screen finishes its transition.\n   */\n  onFinishTransitioning?: (e: NativeSyntheticEvent<TargetedEvent>) => void;\n  ref?: React.MutableRefObject<React.Ref<View>>;\n}\n\nexport interface ScreenStackHeaderConfigProps extends ViewProps {\n  /**\n   * Whether to show the back button with custom left side of the header.\n   */\n  backButtonInCustomView?: boolean;\n  /**\n   * Controls the color of the navigation header.\n   */\n  backgroundColor?: ColorValue;\n  /**\n   * Title to display in the back button.\n   * @platform ios.\n   */\n  backTitle?: string;\n  /**\n   * Allows for customizing font family to be used for back button title on iOS.\n   * @platform ios\n   */\n  backTitleFontFamily?: string;\n  /**\n   * Allows for customizing font size to be used for back button title on iOS.\n   * @platform ios\n   */\n  backTitleFontSize?: number;\n  /**\n   * Whether the back button title should be visible or not. Defaults to `true`.\n   *\n   * When set to `false` it works as a \"kill switch\": it enforces `backButtonDisplayMode=minimal` and ignores `backButtonDisplayMode`, `backTitleFontSize`, `backTitleFontFamily`, `disableBackButtonMenu`.\n   * For `backTitle` it works only in back button menu.\n   *\n   * @platform ios\n   */\n  backTitleVisible?: boolean;\n  /**\n   * Blur effect to be applied to the header. Works with backgroundColor's alpha < 1.\n   * @platform ios\n   */\n  blurEffect?: BlurEffectTypes;\n  /**\n   * Pass HeaderLeft, HeaderRight and HeaderTitle\n   */\n  children?: React.ReactNode;\n  /**\n   * Controls the color of items rendered on the header. This includes back icon, back text (iOS only) and title text. If you want the title to have different color use titleColor property.\n   */\n  color?: ColorValue;\n  /**\n   * Whether the stack should be in rtl or ltr form.\n   */\n  direction?: 'rtl' | 'ltr';\n  /**\n   * Boolean indicating whether to show the menu on longPress of iOS >= 14 back button.\n   * @platform ios\n   */\n  disableBackButtonMenu?: boolean;\n  /**\n   * How the back button behaves. It is used only when none of: `backTitleFontFamily`, `backTitleFontSize`, `disableBackButtonMenu` and `backTitleVisible=false` is set.\n   * The following values are currently supported (they correspond to [UINavigationItemBackButtonDisplayMode](https://developer.apple.com/documentation/uikit/uinavigationitembackbuttondisplaymode?language=objc)):\n   *\n   * - `default` – show given back button previous controller title, system generic or just icon based on available space\n   * - `generic` – show given system generic or just icon based on available space\n   * - `minimal` – show just an icon\n   *\n   * @platform ios\n   */\n  backButtonDisplayMode?: BackButtonDisplayMode;\n  /**\n   * When set to true the header will be hidden while the parent Screen is on the top of the stack. The default value is false.\n   */\n  hidden?: boolean;\n  /**\n   * Boolean indicating whether to hide the back button in header.\n   */\n  hideBackButton?: boolean;\n  /**\n   * Boolean indicating whether to hide the elevation shadow or the bottom border on the header.\n   */\n  hideShadow?: boolean;\n  /**\n   * Boolean to set native property to prefer large title header (like in iOS setting).\n   * For large title to collapse on scroll, the content of the screen should be wrapped in a scrollable view such as `ScrollView` or `FlatList`.\n   * If the scrollable area doesn't fill the screen, the large title won't collapse on scroll.\n   * Only supported on iOS.\n   *\n   * @platform ios\n   */\n  largeTitle?: boolean;\n  /**\n   * Controls the color of the navigation header when the edge of any scrollable content reaches the matching edge of the navigation bar.\n   */\n  largeTitleBackgroundColor?: ColorValue;\n  /**\n   * Customize the color to be used for the large title. By default uses the titleColor property.\n   * @platform ios\n   */\n  largeTitleColor?: ColorValue;\n  /**\n   * Customize font family to be used for the large title.\n   * @platform ios\n   */\n  largeTitleFontFamily?: string;\n  /**\n   * Customize the size of the font to be used for the large title.\n   * @platform ios\n   */\n  largeTitleFontSize?: number;\n  /**\n   * Customize the weight of the font to be used for the large title.\n   * @platform ios\n   */\n  largeTitleFontWeight?: string;\n  /**\n   * Boolean that allows for disabling drop shadow under navigation header when the edge of any scrollable content reaches the matching edge of the navigation bar.\n   */\n  largeTitleHideShadow?: boolean;\n  /**\n   * Callback which is executed when screen header is attached\n   */\n  onAttached?: () => void;\n  /**\n   * Callback which is executed when screen header is detached\n   */\n  onDetached?: () => void;\n  /**\n   * String that can be displayed in the header as a fallback for `headerTitle`.\n   */\n  title?: string;\n  /**\n   * Allows for setting text color of the title.\n   */\n  titleColor?: ColorValue;\n  /**\n   * Customize font family to be used for the title.\n   */\n  titleFontFamily?: string;\n  /**\n   * Customize the size of the font to be used for the title.\n   */\n  titleFontSize?: number;\n  /**\n   * Customize the weight of the font to be used for the title.\n   */\n  titleFontWeight?: string;\n  /**\n   * A flag to that lets you opt out of insetting the header. You may want to\n   * set this to `false` if you use an opaque status bar. Defaults to `true`.\n   * Only supported on Android. Insets are always applied on iOS because the\n   * header cannot be opaque.\n   *\n   * @platform android\n   *\n   * @deprecated For apps targeting Android SDK 35 or above edge-to-edge mode is enabled by default\n   *  and it is expected that the edge-to-edge will be enforced in future SDKs - therefore this prop\n   *  loses its relevance and will be removed at some point in the future.\n   */\n  topInsetEnabled?: boolean;\n  /**\n   * Boolean indicating whether the navigation bar is translucent.\n   */\n  translucent?: boolean;\n}\n\nexport interface SearchBarProps {\n  /**\n   * Reference to imperatively modify search bar.\n   *\n   * Currently supported operations are:\n   *\n   * * `focus` - focuses the search bar\n   * * `blur` - removes focus from the search bar\n   * * `clearText` - removes any text present in the search bar input field\n   * * `setText` - sets the search bar's content to given value\n   * * `cancelSearch` - cancel search in search bar.\n   * * `toggleCancelButton` - depending on passed boolean value, hides or shows cancel button (iOS only)\n   */\n  ref?: React.RefObject<SearchBarCommands>;\n\n  /**\n   * The auto-capitalization behavior\n   */\n  autoCapitalize?: 'none' | 'words' | 'sentences' | 'characters';\n  /**\n   * Automatically focuses search bar on mount\n   *\n   * @platform android\n   */\n  autoFocus?: boolean;\n  /**\n   * The search field background color\n   */\n  barTintColor?: ColorValue;\n  /**\n   * The color for the cursor caret and cancel button text.\n   *\n   * @platform ios\n   */\n  tintColor?: ColorValue;\n  /**\n   * The text to be used instead of default `Cancel` button text\n   *\n   * @deprecated Starting from iOS 26, cancel button does not have any text,\n   * therefore this prop has no longer any effect.\n   *\n   * @platform ios\n   */\n  cancelButtonText?: string;\n  /**\n   * Specifies whether the back button should close search bar's text input or not.\n   *\n   * @platform android\n   */\n  disableBackButtonOverride?: boolean;\n  /**\n   * Indicates whether to hide the navigation bar\n   *\n   * @platform ios\n   */\n  hideNavigationBar?: boolean;\n  /**\n   * Indicates whether to hide the search bar when scrolling\n   *\n   * @platform ios\n   */\n  hideWhenScrolling?: boolean;\n\n  /**\n   * Sets type of the input. Defaults to `text`.\n   *\n   * @platform android\n   */\n  inputType?: 'text' | 'phone' | 'number' | 'email';\n  /**\n   * Indicates whether to obscure the underlying content\n   */\n  obscureBackground?: boolean;\n  /**\n   * A callback that gets called when search bar has lost focus\n   */\n  onBlur?: (e: NativeSyntheticEvent<TargetedEvent>) => void;\n  /**\n   * A callback that gets called when the cancel button is pressed\n   *\n   * @platform ios\n   */\n  onCancelButtonPress?: (e: NativeSyntheticEvent<TargetedEvent>) => void;\n\n  /**\n   * A callback that gets called when the text changes. It receives the current text value of the search bar.\n   */\n  onChangeText?: (e: NativeSyntheticEvent<TextInputFocusEventData>) => void;\n\n  /**\n   * A callback that gets called when search bar is closed\n   *\n   * @platform android\n   */\n  onClose?: () => void;\n  /**\n   * A callback that gets called when search bar has received focus\n   */\n  onFocus?: (e: NativeSyntheticEvent<TargetedEvent>) => void;\n  /**\n   * A callback that gets called when search bar is opened\n   *\n   * @platform android\n   */\n  onOpen?: () => void;\n  /**\n   * A callback that gets called when the search button is pressed. It receives the current text value of the search bar.\n   */\n  onSearchButtonPress?: (\n    e: NativeSyntheticEvent<TextInputFocusEventData>,\n  ) => void;\n  /**\n   * Text displayed when search field is empty\n   */\n  placeholder?: string;\n  /**\n   * Position of the search bar\n   *\n   * Supported values:\n   *\n   * * `automatic` - the search bar is placed according to current layout\n   * * `stacked` - the search bar is placed below the other content in navigation bar\n   * * `integrated` - (>= iOS 26) the search bar is placed on the trailing edge of navigation bar. On iPhone,\n   *   it may be integrated into the toolbar\n   * * `integratedButton` - (>= iOS 26) the search bar has the same placement as `integrated`, except that\n   *   the inactive search bar is always shown as a button even when space permits a search field\n   * * `integratedCentered` - (>= iOS 26) the search bar has the same placement as `integrated`, except that\n   *   in the regular width on iPad, the search bar is centered in the navigation bar. Only\n   *   respected in special cases, described in UIKit documentation\n   *\n   * There is also legacy & **deprecated** prop value available:\n   *\n   *  * `inline` - the search bar is placed on the trailing edge of navigation bar\n   *\n   * Starting from iOS 26, `inline` is the same as `integrated`. It is provided for backward\n   * compatibility and is destined for removal in future versions.\n   *\n   * For iOS versions prior to 26, `integrated`, `integratedButton`, `integratedCentered` are\n   * the same as `inline`.\n   *\n   * Defaults to `automatic`.\n   *\n   * Complete list of possible search bar placements is available in the official UIKit documentation:\n   * @see {@link https://developer.apple.com/documentation/uikit/uinavigationitem/searchbarplacement-swift.enum|UINavigationItem.SearchBarPlacement}\n   *\n   * @platform iOS (>= 16.0)\n   */\n  placement?: SearchBarPlacement;\n  /**\n   * Indicates whether the system can place the search bar among other toolbar items on iPhone.\n   *\n   * Set this prop to `false` to prevent the search bar from appearing in the toolbar when\n   * `placement` is `automatic`, `integrated`, `integratedButton` or `integratedCentered`.\n   *\n   * Defaults to `true`.\n   * When `placement` is set to `stacked`, this property's value will be overridden with `false`\n   * to circumvent a UIKit native bug that prevents the search bar from appearing on the root screen.\n   *\n   * @platform iOS (>= 26.0)\n   */\n  allowToolbarIntegration?: boolean;\n  /**\n   * The search field text color\n   */\n  textColor?: ColorValue;\n  /**\n   * The search hint text color\n   *\n   * @plaform android\n   */\n  hintTextColor?: ColorValue;\n  /**\n   * The search and close icon color shown in the header\n   *\n   * @plaform android\n   */\n  headerIconColor?: ColorValue;\n  /**\n   * Show the search hint icon when search bar is focused\n   *\n   * @plaform android\n   * @default true\n   */\n  shouldShowHintSearchIcon?: boolean;\n}\n\n/**\n * Custom Screen Transition\n */\n\n/**\n * copy from GestureHandler to avoid strong dependency\n */\nexport type PanGestureHandlerEventPayload = {\n  x: number;\n  y: number;\n  absoluteX: number;\n  absoluteY: number;\n  translationX: number;\n  translationY: number;\n  velocityX: number;\n  velocityY: number;\n};\n\n/**\n * copy from Reanimated to avoid strong dependency\n */\nexport type GoBackGesture =\n  | 'swipeRight'\n  | 'swipeLeft'\n  | 'swipeUp'\n  | 'swipeDown'\n  | 'verticalSwipe'\n  | 'horizontalSwipe'\n  | 'twoDimensionalSwipe';\n\nexport interface MeasuredDimensions {\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n  pageX: number;\n  pageY: number;\n}\n\nexport type AnimatedScreenTransition = {\n  topScreenStyle: (\n    event: PanGestureHandlerEventPayload,\n    screenSize: MeasuredDimensions,\n  ) => Record<string, unknown>;\n  belowTopScreenStyle: (\n    event: PanGestureHandlerEventPayload,\n    screenSize: MeasuredDimensions,\n  ) => Record<string, unknown>;\n};\n\nexport type ScreensRefsHolder = Record<string, React.RefObject<View>>;\n\nexport interface GestureProps {\n  screensRefs?: React.MutableRefObject<ScreensRefsHolder>;\n  currentScreenId?: string;\n  goBackGesture?: GoBackGesture;\n  transitionAnimation?: AnimatedScreenTransition;\n  screenEdgeGesture?: boolean;\n}\n\nexport interface GestureProviderProps extends GestureProps {\n  children?: React.ReactNode;\n  gestureDetectorBridge: React.MutableRefObject<GestureDetectorBridge>;\n}\n\nexport * from './components/bottom-tabs/BottomTabs.types';\nexport * from './components/bottom-tabs/BottomTabsScreen.types';\n\nexport * from './components/gamma/SplitViewHost.types';\nexport * from './components/gamma/SplitViewScreen.types';\n","'use client';\n\nimport { Platform, UIManager } from 'react-native';\n\nexport const isNativePlatformSupported =\n  Platform.OS === 'ios' ||\n  Platform.OS === 'android' ||\n  Platform.OS === 'windows';\n\nlet ENABLE_SCREENS = isNativePlatformSupported;\n\nexport function enableScreens(shouldEnableScreens = true) {\n  ENABLE_SCREENS = shouldEnableScreens;\n\n  if (!isNativePlatformSupported) {\n    return;\n  }\n\n  if (ENABLE_SCREENS && !UIManager.getViewManagerConfig('RNSScreen')) {\n    console.error(\n      `Screen native module hasn't been linked. Please check the react-native-screens README for more details`,\n    );\n  }\n}\n\nlet ENABLE_FREEZE = false;\n\nexport function enableFreeze(shouldEnableReactFreeze = true) {\n  if (!isNativePlatformSupported) {\n    return;\n  }\n\n  ENABLE_FREEZE = shouldEnableReactFreeze;\n}\n\nexport function screensEnabled() {\n  return ENABLE_SCREENS;\n}\n\nexport function freezeEnabled() {\n  return ENABLE_FREEZE;\n}\n","'use client';\n\nimport React from 'react';\nimport { Animated, View, Platform } from 'react-native';\n\nimport TransitionProgressContext from '../TransitionProgressContext';\nimport DelayedFreeze from './helpers/DelayedFreeze';\nimport { ScreenProps } from '../types';\n\nimport {\n  freezeEnabled,\n  isNativePlatformSupported,\n  screensEnabled,\n} from '../core';\n\n// Native components\nimport ScreenNativeComponent, {\n  NativeProps as ScreenNativeComponentProps,\n} from '../fabric/ScreenNativeComponent';\nimport ModalScreenNativeComponent, {\n  NativeProps as ModalScreenNativeComponentProps,\n} from '../fabric/ModalScreenNativeComponent';\n\nimport { usePrevious } from './helpers/usePrevious';\nimport { EDGE_TO_EDGE, transformEdgeToEdgeProps } from './helpers/edge-to-edge';\nimport {\n  SHEET_DIMMED_ALWAYS,\n  resolveSheetAllowedDetents,\n  resolveSheetInitialDetentIndex,\n  resolveSheetLargestUndimmedDetent,\n} from './helpers/sheet';\n\ntype NativeProps = ScreenNativeComponentProps | ModalScreenNativeComponentProps;\nconst AnimatedNativeScreen = Animated.createAnimatedComponent(\n  ScreenNativeComponent,\n);\nconst AnimatedNativeModalScreen = Animated.createAnimatedComponent(\n  ModalScreenNativeComponent,\n);\n\n// Incomplete type, all accessible properties available at:\n// react-native/Libraries/Components/View/ReactNativeViewViewConfig.js\ninterface ViewConfig extends View {\n  viewConfig: {\n    validAttributes: {\n      style: {\n        display: boolean | null;\n      };\n    };\n  };\n  _viewConfig: {\n    validAttributes: {\n      style: {\n        display: boolean | null;\n      };\n    };\n  };\n}\n\nexport const InnerScreen = React.forwardRef<View, ScreenProps>(\n  function InnerScreen(props, ref) {\n    const innerRef = React.useRef<ViewConfig | null>(null);\n    React.useImperativeHandle(ref, () => innerRef.current!, []);\n    const prevActivityState = usePrevious(props.activityState);\n\n    const setRef = (ref: ViewConfig) => {\n      innerRef.current = ref;\n      props.onComponentRef?.(ref);\n    };\n\n    const closing = React.useRef(new Animated.Value(0)).current;\n    const progress = React.useRef(new Animated.Value(0)).current;\n    const goingForward = React.useRef(new Animated.Value(0)).current;\n\n    const {\n      enabled = screensEnabled(),\n      freezeOnBlur = freezeEnabled(),\n      shouldFreeze,\n      ...rest\n    } = props;\n\n    // To maintain default behavior of formSheet stack presentation style and to have reasonable\n    // defaults for new medium-detent iOS API we need to set defaults here\n    const {\n      // formSheet presentation related props\n      sheetAllowedDetents = [1.0],\n      sheetLargestUndimmedDetentIndex = SHEET_DIMMED_ALWAYS,\n      sheetGrabberVisible = false,\n      sheetCornerRadius = -1.0,\n      sheetExpandsWhenScrolledToEdge = true,\n      sheetElevation = 24,\n      sheetInitialDetentIndex = 0,\n      // Other\n      screenId,\n      stackPresentation,\n      // Events for override\n      onAppear,\n      onDisappear,\n      onWillAppear,\n      onWillDisappear,\n    } = rest;\n\n    if (enabled && isNativePlatformSupported) {\n      const resolvedSheetAllowedDetents =\n        resolveSheetAllowedDetents(sheetAllowedDetents);\n      const resolvedSheetLargestUndimmedDetent =\n        resolveSheetLargestUndimmedDetent(\n          sheetLargestUndimmedDetentIndex,\n          resolvedSheetAllowedDetents.length - 1,\n        );\n      const resolvedSheetInitialDetentIndex = resolveSheetInitialDetentIndex(\n        sheetInitialDetentIndex,\n        resolvedSheetAllowedDetents.length - 1,\n      );\n\n      // Due to how Yoga resolves layout, we need to have different components for modal nad non-modal screens (there is a need for different\n      // shadow nodes).\n      const shouldUseModalScreenComponent = Platform.select({\n        ios: !(\n          stackPresentation === undefined ||\n          stackPresentation === 'push' ||\n          stackPresentation === 'containedModal' ||\n          stackPresentation === 'containedTransparentModal'\n        ),\n        android: false,\n        default: false,\n      });\n\n      const AnimatedScreen = shouldUseModalScreenComponent\n        ? AnimatedNativeModalScreen\n        : AnimatedNativeScreen;\n\n      let {\n        // Filter out active prop in this case because it is unused and\n        // can cause problems depending on react-native version:\n        // https://github.com/react-navigation/react-navigation/issues/4886\n        active,\n        activityState,\n        children,\n        isNativeStack,\n        gestureResponseDistance,\n        onGestureCancel,\n        style,\n        ...props\n      } = rest;\n\n      if (active !== undefined && activityState === undefined) {\n        console.warn(\n          'It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens',\n        );\n        activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition\n      }\n\n      if (\n        isNativeStack &&\n        prevActivityState !== undefined &&\n        activityState !== undefined\n      ) {\n        if (prevActivityState > activityState) {\n          throw new Error(\n            '[RNScreens] activityState cannot be decreased in NativeStack',\n          );\n        }\n      }\n\n      const handleRef = (ref: ViewConfig) => {\n        // Workaround is necessary to prevent React Native from hiding frozen screens.\n        // See this PR: https://github.com/grahammendick/navigation/pull/860\n        if (ref?.viewConfig?.validAttributes?.style) {\n          ref.viewConfig.validAttributes.style = {\n            ...ref.viewConfig.validAttributes.style,\n            display: null,\n          };\n          setRef(ref);\n        } else if (ref?._viewConfig?.validAttributes?.style) {\n          ref._viewConfig.validAttributes.style = {\n            ...ref._viewConfig.validAttributes.style,\n            display: null,\n          };\n          setRef(ref);\n        }\n      };\n\n      const freeze =\n        freezeOnBlur &&\n        (shouldFreeze !== undefined ? shouldFreeze : activityState === 0);\n\n      return (\n        <DelayedFreeze freeze={freeze}>\n          <AnimatedScreen\n            {...props}\n            /**\n             * This messy override is to conform NativeProps used by codegen and\n             * our Public API. To see reasoning go to this PR:\n             * https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995\n             */\n            onAppear={onAppear as NativeProps['onAppear']}\n            onDisappear={onDisappear as NativeProps['onDisappear']}\n            onWillAppear={onWillAppear as NativeProps['onWillAppear']}\n            onWillDisappear={onWillDisappear as NativeProps['onWillDisappear']}\n            onGestureCancel={\n              (onGestureCancel as NativeProps['onGestureCancel']) ??\n              (() => {\n                // for internal use\n              })\n            }\n            //\n            // Hierarchy of screens is handled on the native side and setting zIndex value causes this issue:\n            // https://github.com/software-mansion/react-native-screens/issues/2345\n            // With below change of zIndex, we force RN diffing mechanism to NOT include detaching and attaching mutation in one transaction.\n            // Detailed information can be found here https://github.com/software-mansion/react-native-screens/pull/2351\n            style={[style, { zIndex: undefined }]}\n            activityState={activityState}\n            screenId={screenId}\n            sheetAllowedDetents={resolvedSheetAllowedDetents}\n            sheetLargestUndimmedDetent={resolvedSheetLargestUndimmedDetent}\n            sheetElevation={sheetElevation}\n            sheetGrabberVisible={sheetGrabberVisible}\n            sheetCornerRadius={sheetCornerRadius}\n            sheetExpandsWhenScrolledToEdge={sheetExpandsWhenScrolledToEdge}\n            sheetInitialDetent={resolvedSheetInitialDetentIndex}\n            gestureResponseDistance={{\n              start: gestureResponseDistance?.start ?? -1,\n              end: gestureResponseDistance?.end ?? -1,\n              top: gestureResponseDistance?.top ?? -1,\n              bottom: gestureResponseDistance?.bottom ?? -1,\n            }}\n            // This prevents showing blank screen when navigating between multiple screens with freezing\n            // https://github.com/software-mansion/react-native-screens/pull/1208\n            ref={handleRef}\n            onTransitionProgress={\n              !isNativeStack\n                ? undefined\n                : Animated.event(\n                    [\n                      {\n                        nativeEvent: {\n                          progress,\n                          closing,\n                          goingForward,\n                        },\n                      },\n                    ],\n                    { useNativeDriver: true },\n                  )\n            }>\n            {!isNativeStack ? ( // see comment of this prop in types.tsx for information why it is needed\n              children\n            ) : (\n              <TransitionProgressContext.Provider\n                value={{\n                  progress,\n                  closing,\n                  goingForward,\n                }}>\n                {children}\n              </TransitionProgressContext.Provider>\n            )}\n          </AnimatedScreen>\n        </DelayedFreeze>\n      );\n    } else {\n      // same reason as above\n      let {\n        active,\n        activityState,\n        style,\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        onComponentRef,\n        ...props\n      } = rest;\n\n      if (active !== undefined && activityState === undefined) {\n        activityState = active !== 0 ? 2 : 0;\n      }\n      return (\n        <Animated.View\n          style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}\n          ref={setRef}\n          {...props}\n        />\n      );\n    }\n  },\n);\n\n// context to be used when the user wants to use enhanced implementation\n// e.g. to use `useReanimatedTransitionProgress` (see `reanimated` folder in repo)\nexport const ScreenContext = React.createContext(InnerScreen);\n\nconst Screen = React.forwardRef<View, ScreenProps>((props, ref) => {\n  const ScreenWrapper = React.useContext(ScreenContext) || InnerScreen;\n\n  return (\n    <ScreenWrapper\n      {...(EDGE_TO_EDGE ? transformEdgeToEdgeProps(props) : props)}\n      ref={ref}\n    />\n  );\n});\n\nScreen.displayName = 'Screen';\n\nexport default Screen;\n","'use client';\n\nimport * as React from 'react';\nimport { Animated } from 'react-native';\n\ntype TransitionProgressContextBody = {\n  progress: Animated.Value;\n  closing: Animated.Value;\n  goingForward: Animated.Value;\n};\n\nexport default React.createContext<TransitionProgressContextBody | undefined>(\n  undefined,\n);\n","import React from 'react';\nimport { Freeze } from 'react-freeze';\n\ninterface FreezeWrapperProps {\n  freeze: boolean;\n  children: React.ReactNode;\n}\n\n// This component allows one more render before freezing the screen.\n// Allows activityState to reach the native side and useIsFocused to work correctly.\nfunction DelayedFreeze({ freeze, children }: FreezeWrapperProps) {\n  // flag used for determining whether freeze should be enabled\n  const [freezeState, setFreezeState] = React.useState(false);\n\n  React.useEffect(() => {\n    const id = setTimeout(() => {\n      setFreezeState(freeze);\n    }, 0);\n    return () => {\n      clearTimeout(id);\n    };\n  }, [freeze]);\n\n  return <Freeze freeze={freeze ? freezeState : false}>{children}</Freeze>;\n}\n\nexport default DelayedFreeze;\n","import React, { Suspense, Fragment } from \"react\";\n\nconst infiniteThenable = { then() {} };\n\nfunction Suspender({\n  freeze,\n  children,\n}: {\n  freeze: boolean;\n  children: React.ReactNode;\n}) {\n  if (freeze) {\n    throw infiniteThenable;\n  }\n  return <Fragment>{children}</Fragment>;\n}\n\ninterface Props {\n  freeze: boolean;\n  children: React.ReactNode;\n  placeholder?: React.ReactNode;\n}\n\nexport function Freeze({ freeze, children, placeholder = null }: Props) {\n  return (\n    <Suspense fallback={placeholder}>\n      <Suspender freeze={freeze}>{children}</Suspender>\n    </Suspense>\n  );\n}\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps, ColorValue } from 'react-native';\nimport type {\n  DirectEventHandler,\n  WithDefault,\n  Int32,\n  Float,\n  Double,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype ScreenEvent = Readonly<{}>;\n\ntype ScreenDismissedEvent = Readonly<{\n  dismissCount: Int32;\n}>;\n\ntype TransitionProgressEvent = Readonly<{\n  progress: Double;\n  closing: Int32;\n  goingForward: Int32;\n}>;\n\ntype HeaderHeightChangeEvent = Readonly<{\n  headerHeight: Double;\n}>;\n\ntype SheetDetentChangedEvent = Readonly<{\n  index: Int32;\n  isStable: boolean;\n}>;\n\ntype GestureResponseDistanceType = Readonly<{\n  start: Float;\n  end: Float;\n  top: Float;\n  bottom: Float;\n}>;\n\ntype StackPresentation =\n  | 'push'\n  | 'modal'\n  | 'transparentModal'\n  | 'fullScreenModal'\n  | 'formSheet'\n  | 'pageSheet'\n  | 'containedModal'\n  | 'containedTransparentModal';\n\ntype StackAnimation =\n  | 'default'\n  | 'flip'\n  | 'simple_push'\n  | 'none'\n  | 'fade'\n  | 'slide_from_right'\n  | 'slide_from_left'\n  | 'slide_from_bottom'\n  | 'fade_from_bottom'\n  | 'ios_from_right'\n  | 'ios_from_left';\n\ntype SwipeDirection = 'vertical' | 'horizontal';\n\ntype ReplaceAnimation = 'pop' | 'push';\n\nexport interface NativeProps extends ViewProps {\n  onAppear?: DirectEventHandler<ScreenEvent>;\n  onDisappear?: DirectEventHandler<ScreenEvent>;\n  onDismissed?: DirectEventHandler<ScreenDismissedEvent>;\n  onNativeDismissCancelled?: DirectEventHandler<ScreenDismissedEvent>;\n  onWillAppear?: DirectEventHandler<ScreenEvent>;\n  onWillDisappear?: DirectEventHandler<ScreenEvent>;\n  onHeaderHeightChange?: DirectEventHandler<HeaderHeightChangeEvent>;\n  onTransitionProgress?: DirectEventHandler<TransitionProgressEvent>;\n  onGestureCancel?: DirectEventHandler<ScreenEvent>;\n  onHeaderBackButtonClicked?: DirectEventHandler<ScreenEvent>;\n  onSheetDetentChanged?: DirectEventHandler<SheetDetentChangedEvent>;\n  screenId?: WithDefault<string, ''>;\n  sheetAllowedDetents?: number[];\n  sheetLargestUndimmedDetent?: WithDefault<Int32, -1>;\n  sheetGrabberVisible?: WithDefault<boolean, false>;\n  sheetCornerRadius?: WithDefault<Float, -1.0>;\n  sheetExpandsWhenScrolledToEdge?: WithDefault<boolean, false>;\n  sheetInitialDetent?: WithDefault<Int32, 0>;\n  sheetElevation?: WithDefault<Int32, 24>;\n  customAnimationOnSwipe?: boolean;\n  fullScreenSwipeEnabled?: boolean;\n  fullScreenSwipeShadowEnabled?: WithDefault<boolean, true>;\n  homeIndicatorHidden?: boolean;\n  preventNativeDismiss?: boolean;\n  gestureEnabled?: WithDefault<boolean, true>;\n  statusBarColor?: ColorValue;\n  statusBarHidden?: boolean;\n  screenOrientation?: string;\n  statusBarAnimation?: string;\n  statusBarStyle?: string;\n  statusBarTranslucent?: boolean;\n  gestureResponseDistance?: GestureResponseDistanceType;\n  stackPresentation?: WithDefault<StackPresentation, 'push'>;\n  stackAnimation?: WithDefault<StackAnimation, 'default'>;\n  transitionDuration?: WithDefault<Int32, 500>;\n  replaceAnimation?: WithDefault<ReplaceAnimation, 'pop'>;\n  swipeDirection?: WithDefault<SwipeDirection, 'horizontal'>;\n  hideKeyboardOnSwipe?: boolean;\n  activityState?: WithDefault<Float, -1.0>;\n  navigationBarColor?: ColorValue;\n  navigationBarTranslucent?: boolean;\n  navigationBarHidden?: boolean;\n  nativeBackButtonDismissalEnabled?: boolean;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSScreen', {\n  interfaceOnly: true,\n});\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps, ColorValue } from 'react-native';\nimport type {\n  DirectEventHandler,\n  WithDefault,\n  Int32,\n  Float,\n  Double,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype ScreenEvent = Readonly<{}>;\n\ntype ScreenDismissedEvent = Readonly<{\n  dismissCount: Int32;\n}>;\n\ntype TransitionProgressEvent = Readonly<{\n  progress: Double;\n  closing: Int32;\n  goingForward: Int32;\n}>;\n\ntype HeaderHeightChangeEvent = Readonly<{\n  headerHeight: Double;\n}>;\n\ntype SheetDetentChangedEvent = Readonly<{\n  index: Int32;\n  isStable: boolean;\n}>;\n\ntype GestureResponseDistanceType = Readonly<{\n  start: Float;\n  end: Float;\n  top: Float;\n  bottom: Float;\n}>;\n\ntype StackPresentation =\n  | 'push'\n  | 'modal'\n  | 'transparentModal'\n  | 'fullScreenModal'\n  | 'formSheet'\n  | 'pageSheet'\n  | 'containedModal'\n  | 'containedTransparentModal';\n\ntype StackAnimation =\n  | 'default'\n  | 'flip'\n  | 'simple_push'\n  | 'none'\n  | 'fade'\n  | 'slide_from_right'\n  | 'slide_from_left'\n  | 'slide_from_bottom'\n  | 'fade_from_bottom'\n  | 'ios_from_right'\n  | 'ios_from_left';\n\ntype SwipeDirection = 'vertical' | 'horizontal';\n\ntype ReplaceAnimation = 'pop' | 'push';\n\nexport interface NativeProps extends ViewProps {\n  onAppear?: DirectEventHandler<ScreenEvent>;\n  onDisappear?: DirectEventHandler<ScreenEvent>;\n  onDismissed?: DirectEventHandler<ScreenDismissedEvent>;\n  onNativeDismissCancelled?: DirectEventHandler<ScreenDismissedEvent>;\n  onWillAppear?: DirectEventHandler<ScreenEvent>;\n  onWillDisappear?: DirectEventHandler<ScreenEvent>;\n  onHeaderHeightChange?: DirectEventHandler<HeaderHeightChangeEvent>;\n  onTransitionProgress?: DirectEventHandler<TransitionProgressEvent>;\n  onGestureCancel?: DirectEventHandler<ScreenEvent>;\n  onHeaderBackButtonClicked?: DirectEventHandler<ScreenEvent>;\n  onSheetDetentChanged?: DirectEventHandler<SheetDetentChangedEvent>;\n  screenId?: WithDefault<string, ''>;\n  sheetAllowedDetents?: number[];\n  sheetLargestUndimmedDetent?: WithDefault<Int32, -1>;\n  sheetGrabberVisible?: WithDefault<boolean, false>;\n  sheetCornerRadius?: WithDefault<Float, -1.0>;\n  sheetExpandsWhenScrolledToEdge?: WithDefault<boolean, false>;\n  sheetInitialDetent?: WithDefault<Int32, 0>;\n  sheetElevation?: WithDefault<Int32, 24>;\n  customAnimationOnSwipe?: boolean;\n  fullScreenSwipeEnabled?: boolean;\n  fullScreenSwipeShadowEnabled?: WithDefault<boolean, true>;\n  homeIndicatorHidden?: boolean;\n  preventNativeDismiss?: boolean;\n  gestureEnabled?: WithDefault<boolean, true>;\n  statusBarColor?: ColorValue;\n  statusBarHidden?: boolean;\n  screenOrientation?: string;\n  statusBarAnimation?: string;\n  statusBarStyle?: string;\n  statusBarTranslucent?: boolean;\n  gestureResponseDistance?: GestureResponseDistanceType;\n  stackPresentation?: WithDefault<StackPresentation, 'push'>;\n  stackAnimation?: WithDefault<StackAnimation, 'default'>;\n  transitionDuration?: WithDefault<Int32, 500>;\n  replaceAnimation?: WithDefault<ReplaceAnimation, 'pop'>;\n  swipeDirection?: WithDefault<SwipeDirection, 'horizontal'>;\n  hideKeyboardOnSwipe?: boolean;\n  activityState?: WithDefault<Float, -1.0>;\n  navigationBarColor?: ColorValue;\n  navigationBarTranslucent?: boolean;\n  navigationBarHidden?: boolean;\n  nativeBackButtonDismissalEnabled?: boolean;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSModalScreen', {\n  interfaceOnly: true,\n});\n","import { useEffect, useRef } from 'react';\n\nexport function usePrevious<T>(state: T): T | undefined {\n  const ref = useRef<T>();\n\n  useEffect(() => {\n    ref.current = state;\n  });\n\n  return ref.current;\n}\n","import {\n  controlEdgeToEdgeValues,\n  isEdgeToEdge,\n} from 'react-native-is-edge-to-edge';\nimport { ScreenProps } from '../../types';\n\nexport const EDGE_TO_EDGE = isEdgeToEdge();\n\nexport function transformEdgeToEdgeProps(props: ScreenProps): ScreenProps {\n  const {\n    // Filter out edge-to-edge related props\n    statusBarColor,\n    statusBarTranslucent,\n    navigationBarColor,\n    navigationBarTranslucent,\n    ...rest\n  } = props;\n\n  if (__DEV__) {\n    controlEdgeToEdgeValues({\n      statusBarColor,\n      statusBarTranslucent,\n      navigationBarColor,\n      navigationBarTranslucent,\n    });\n  }\n\n  return rest;\n}\n","import { Platform } from 'react-native';\nimport { ScreenProps } from '../../types';\n\n// This value must be kept in sync with native side.\nexport const SHEET_FIT_TO_CONTENTS = [-1];\nexport const SHEET_COMPAT_LARGE = [1.0];\nexport const SHEET_COMPAT_MEDIUM = [0.5];\nexport const SHEET_COMPAT_ALL = [0.5, 1.0];\nexport const SHEET_DIMMED_ALWAYS = -1;\n\nexport function assertDetentsArrayIsSorted(array: number[]) {\n  for (let i = 1; i < array.length; i++) {\n    if (array[i - 1] > array[i]) {\n      throw new Error(\n        '[RNScreens] The detent array is not sorted in ascending order!',\n      );\n    }\n  }\n}\n\n// These exist to transform old 'legacy' values used by the formsheet API to the new API shape.\n// We can get rid of it, once we get rid of support for legacy values: 'large', 'medium', 'all'.\nexport function resolveSheetAllowedDetents(\n  allowedDetentsCompat: ScreenProps['sheetAllowedDetents'],\n): number[] {\n  if (Array.isArray(allowedDetentsCompat)) {\n    if (Platform.OS === 'android' && allowedDetentsCompat.length > 3) {\n      if (__DEV__) {\n        console.warn(\n          '[RNScreens] Sheets API on Android do accept only up to 3 values. Any surplus value are ignored.',\n        );\n      }\n      allowedDetentsCompat = allowedDetentsCompat.slice(0, 3);\n    }\n    if (__DEV__) {\n      assertDetentsArrayIsSorted(allowedDetentsCompat);\n    }\n    return allowedDetentsCompat;\n  } else if (allowedDetentsCompat === 'fitToContents') {\n    return SHEET_FIT_TO_CONTENTS;\n  } else if (allowedDetentsCompat === 'large') {\n    return SHEET_COMPAT_LARGE;\n  } else if (allowedDetentsCompat === 'medium') {\n    return SHEET_COMPAT_MEDIUM;\n  } else if (allowedDetentsCompat === 'all') {\n    return SHEET_COMPAT_ALL;\n  } else {\n    // Safe default, only large detent is allowed.\n    return SHEET_COMPAT_LARGE;\n  }\n}\n\nexport function resolveSheetLargestUndimmedDetent(\n  lud: ScreenProps['sheetLargestUndimmedDetentIndex'],\n  lastDetentIndex: number,\n): number {\n  if (typeof lud === 'number') {\n    if (!isIndexInClosedRange(lud, SHEET_DIMMED_ALWAYS, lastDetentIndex)) {\n      if (__DEV__) {\n        throw new Error(\n          \"[RNScreens] Provided value of 'sheetLargestUndimmedDetentIndex' prop is out of bounds of 'sheetAllowedDetents' array.\",\n        );\n      }\n      // Return default in production\n      return SHEET_DIMMED_ALWAYS;\n    }\n    return lud;\n  } else if (lud === 'last') {\n    return lastDetentIndex;\n  } else if (lud === 'none' || lud === 'all') {\n    return SHEET_DIMMED_ALWAYS;\n  } else if (lud === 'large') {\n    return 1;\n  } else if (lud === 'medium') {\n    return 0;\n  } else {\n    // Safe default, every detent is dimmed\n    return SHEET_DIMMED_ALWAYS;\n  }\n}\n\nexport function resolveSheetInitialDetentIndex(\n  index: ScreenProps['sheetInitialDetentIndex'],\n  lastDetentIndex: number,\n): number {\n  if (index === 'last') {\n    index = lastDetentIndex;\n  } else if (index == null) {\n    // Intentional check for undefined & null ^\n    index = 0;\n  }\n  if (!isIndexInClosedRange(index, 0, lastDetentIndex)) {\n    if (__DEV__) {\n      throw new Error(\n        \"[RNScreens] Provided value of 'sheetInitialDetentIndex' prop is out of bounds of 'sheetAllowedDetents' array.\",\n      );\n    }\n    // Return default in production\n    return 0;\n  }\n  return index;\n}\n\nfunction isIndexInClosedRange(\n  value: number,\n  lowerBound: number,\n  upperBound: number,\n): boolean {\n  return Number.isInteger(value) && value >= lowerBound && value <= upperBound;\n}\n","'use client';\n\nimport React from 'react';\nimport { ScreenStackHeaderConfigProps } from '../types';\nimport {\n  Image,\n  ImageProps,\n  Platform,\n  StyleSheet,\n  View,\n  ViewProps,\n} from 'react-native';\n\n// Native components\nimport ScreenStackHeaderConfigNativeComponent from '../fabric/ScreenStackHeaderConfigNativeComponent';\nimport ScreenStackHeaderSubviewNativeComponent, {\n  type NativeProps as ScreenStackHeaderSubviewNativeProps,\n} from '../fabric/ScreenStackHeaderSubviewNativeComponent';\nimport { EDGE_TO_EDGE } from './helpers/edge-to-edge';\n\nexport const ScreenStackHeaderSubview: React.ComponentType<ScreenStackHeaderSubviewNativeProps> =\n  ScreenStackHeaderSubviewNativeComponent;\n\nexport const ScreenStackHeaderConfig = React.forwardRef<\n  View,\n  ScreenStackHeaderConfigProps\n>((props, ref) => (\n  <ScreenStackHeaderConfigNativeComponent\n    {...props}\n    ref={ref}\n    topInsetEnabled={EDGE_TO_EDGE ? true : props.topInsetEnabled}\n    style={styles.headerConfig}\n    pointerEvents=\"box-none\"\n  />\n));\n\nScreenStackHeaderConfig.displayName = 'ScreenStackHeaderConfig';\n\nexport const ScreenStackHeaderBackButtonImage = (\n  props: ImageProps,\n): JSX.Element => (\n  <ScreenStackHeaderSubview type=\"back\" style={styles.headerSubview}>\n    <Image resizeMode=\"center\" fadeDuration={0} {...props} />\n  </ScreenStackHeaderSubview>\n);\n\nexport const ScreenStackHeaderRightView = (props: ViewProps): JSX.Element => {\n  const { style, ...rest } = props;\n\n  return (\n    <ScreenStackHeaderSubview\n      {...rest}\n      type=\"right\"\n      style={[styles.headerSubview, style]}\n    />\n  );\n};\n\nexport const ScreenStackHeaderLeftView = (props: ViewProps): JSX.Element => {\n  const { style, ...rest } = props;\n\n  return (\n    <ScreenStackHeaderSubview\n      {...rest}\n      type=\"left\"\n      style={[styles.headerSubview, style]}\n    />\n  );\n};\n\nexport const ScreenStackHeaderCenterView = (props: ViewProps): JSX.Element => {\n  const { style, ...rest } = props;\n\n  return (\n    <ScreenStackHeaderSubview\n      {...rest}\n      type=\"center\"\n      style={[styles.headerSubviewCenter, style]}\n    />\n  );\n};\n\nexport const ScreenStackHeaderSearchBarView = (\n  props: ViewProps,\n): JSX.Element => (\n  <ScreenStackHeaderSubview\n    {...props}\n    type=\"searchBar\"\n    style={styles.headerSubview}\n  />\n);\n\nconst styles = StyleSheet.create({\n  headerSubview: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  headerSubviewCenter: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'center',\n    flexShrink: 1,\n  },\n  headerConfig: {\n    position: 'absolute',\n    width: '100%',\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    // We only want to center align the subviews on iOS.\n    // See https://github.com/software-mansion/react-native-screens/pull/2456\n    alignItems: Platform.OS === 'ios' ? 'center' : undefined,\n  },\n});\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps, ColorValue } from 'react-native';\nimport type {\n  Int32,\n  WithDefault,\n  DirectEventHandler,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\ntype DirectionType = 'rtl' | 'ltr';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype OnAttachedEvent = Readonly<{}>;\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype OnDetachedEvent = Readonly<{}>;\n\ntype BackButtonDisplayMode = 'minimal' | 'default' | 'generic';\n\ntype BlurEffect =\n  | 'none'\n  | 'extraLight'\n  | 'light'\n  | 'dark'\n  | 'regular'\n  | 'prominent'\n  | 'systemUltraThinMaterial'\n  | 'systemThinMaterial'\n  | 'systemMaterial'\n  | 'systemThickMaterial'\n  | 'systemChromeMaterial'\n  | 'systemUltraThinMaterialLight'\n  | 'systemThinMaterialLight'\n  | 'systemMaterialLight'\n  | 'systemThickMaterialLight'\n  | 'systemChromeMaterialLight'\n  | 'systemUltraThinMaterialDark'\n  | 'systemThinMaterialDark'\n  | 'systemMaterialDark'\n  | 'systemThickMaterialDark'\n  | 'systemChromeMaterialDark';\n\nexport interface NativeProps extends ViewProps {\n  onAttached?: DirectEventHandler<OnAttachedEvent>;\n  onDetached?: DirectEventHandler<OnDetachedEvent>;\n  backgroundColor?: ColorValue;\n  backTitle?: string;\n  backTitleFontFamily?: string;\n  backTitleFontSize?: Int32;\n  backTitleVisible?: WithDefault<boolean, 'true'>;\n  color?: ColorValue;\n  direction?: WithDefault<DirectionType, 'ltr'>;\n  hidden?: boolean;\n  hideShadow?: boolean;\n  largeTitle?: boolean;\n  largeTitleFontFamily?: string;\n  largeTitleFontSize?: Int32;\n  largeTitleFontWeight?: string;\n  largeTitleBackgroundColor?: ColorValue;\n  largeTitleHideShadow?: boolean;\n  largeTitleColor?: ColorValue;\n  translucent?: boolean;\n  title?: string;\n  titleFontFamily?: string;\n  titleFontSize?: Int32;\n  titleFontWeight?: string;\n  titleColor?: ColorValue;\n  disableBackButtonMenu?: boolean;\n  backButtonDisplayMode?: WithDefault<BackButtonDisplayMode, 'default'>;\n  hideBackButton?: boolean;\n  backButtonInCustomView?: boolean;\n  blurEffect?: WithDefault<BlurEffect, 'none'>;\n  // TODO: implement this props on iOS\n  topInsetEnabled?: boolean;\n}\n\nexport default codegenNativeComponent<NativeProps>(\n  'RNSScreenStackHeaderConfig',\n  {\n    interfaceOnly: true,\n  },\n);\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\nimport type { WithDefault } from 'react-native/Libraries/Types/CodegenTypes';\n\nexport type HeaderSubviewTypes =\n  | 'back'\n  | 'right'\n  | 'left'\n  | 'title'\n  | 'center'\n  | 'searchBar';\n\nexport interface NativeProps extends ViewProps {\n  type?: WithDefault<HeaderSubviewTypes, 'left'>;\n}\n\nexport default codegenNativeComponent<NativeProps>(\n  'RNSScreenStackHeaderSubview',\n  {\n    interfaceOnly: true,\n  },\n);\n","'use client';\n\nimport React from 'react';\nimport { SearchBarCommands, SearchBarProps } from '../types';\nimport { isSearchBarAvailableForCurrentPlatform } from '../utils';\nimport { View } from 'react-native';\n\n// Native components\nimport SearchBarNativeComponent, {\n  Commands as SearchBarNativeCommands,\n  NativeProps as SearchBarNativeProps,\n  SearchBarEvent,\n  SearchButtonPressedEvent,\n  ChangeTextEvent,\n} from '../fabric/SearchBarNativeComponent';\nimport { DirectEventHandler } from 'react-native/Libraries/Types/CodegenTypes';\n\nconst NativeSearchBar: React.ComponentType<\n  SearchBarNativeProps & { ref?: React.RefObject<SearchBarCommands> }\n> &\n  typeof NativeSearchBarCommands =\n  SearchBarNativeComponent as unknown as React.ComponentType<SearchBarNativeProps> &\n    SearchBarCommandsType;\nconst NativeSearchBarCommands: SearchBarCommandsType =\n  SearchBarNativeCommands as SearchBarCommandsType;\n\ntype NativeSearchBarRef = React.ElementRef<typeof NativeSearchBar>;\n\ntype SearchBarCommandsType = {\n  blur: (viewRef: NativeSearchBarRef) => void;\n  focus: (viewRef: NativeSearchBarRef) => void;\n  clearText: (viewRef: NativeSearchBarRef) => void;\n  toggleCancelButton: (viewRef: NativeSearchBarRef, flag: boolean) => void;\n  setText: (viewRef: NativeSearchBarRef, text: string) => void;\n  cancelSearch: (viewRef: NativeSearchBarRef) => void;\n};\n\nfunction SearchBar(\n  props: SearchBarProps,\n  forwardedRef: React.Ref<SearchBarCommands>,\n) {\n  const searchBarRef = React.useRef<SearchBarCommands | null>(null);\n\n  React.useImperativeHandle(forwardedRef, () => ({\n    blur: () => {\n      _callMethodWithRef(ref => NativeSearchBarCommands.blur(ref));\n    },\n    focus: () => {\n      _callMethodWithRef(ref => NativeSearchBarCommands.focus(ref));\n    },\n    toggleCancelButton: (flag: boolean) => {\n      _callMethodWithRef(ref =>\n        NativeSearchBarCommands.toggleCancelButton(ref, flag),\n      );\n    },\n    clearText: () => {\n      _callMethodWithRef(ref => NativeSearchBarCommands.clearText(ref));\n    },\n    setText: (text: string) => {\n      _callMethodWithRef(ref => NativeSearchBarCommands.setText(ref, text));\n    },\n    cancelSearch: () => {\n      _callMethodWithRef(ref => NativeSearchBarCommands.cancelSearch(ref));\n    },\n  }));\n\n  const _callMethodWithRef = React.useCallback(\n    (method: (ref: SearchBarCommands) => void) => {\n      const ref = searchBarRef.current;\n      if (ref) {\n        method(ref);\n      } else {\n        console.warn(\n          'Reference to native search bar component has not been updated yet',\n        );\n      }\n    },\n    [searchBarRef],\n  );\n\n  if (!isSearchBarAvailableForCurrentPlatform) {\n    console.warn(\n      'Importing SearchBar is only valid on iOS and Android devices.',\n    );\n    return View as unknown as React.ReactNode;\n  }\n\n  return (\n    <NativeSearchBar\n      ref={searchBarRef}\n      {...props}\n      onSearchFocus={props.onFocus as DirectEventHandler<SearchBarEvent>}\n      onSearchBlur={props.onBlur as DirectEventHandler<SearchBarEvent>}\n      onSearchButtonPress={\n        props.onSearchButtonPress as DirectEventHandler<SearchButtonPressedEvent>\n      }\n      onCancelButtonPress={\n        props.onCancelButtonPress as DirectEventHandler<SearchBarEvent>\n      }\n      onChangeText={props.onChangeText as DirectEventHandler<ChangeTextEvent>}\n    />\n  );\n}\n\nexport default React.forwardRef<SearchBarCommands, SearchBarProps>(SearchBar);\n","import { BackHandler, Platform } from 'react-native';\n\nexport const isSearchBarAvailableForCurrentPlatform = [\n  'ios',\n  'android',\n].includes(Platform.OS);\n\nexport function executeNativeBackPress() {\n  // This function invokes the native back press event\n  BackHandler.exitApp();\n  return true;\n}\n","'use client';\n\n/* eslint-disable */\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps, ColorValue, HostComponent } from 'react-native';\nimport type {\n  WithDefault,\n  DirectEventHandler,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\n\nexport type SearchBarEvent = Readonly<{}>;\n\nexport type SearchButtonPressedEvent = Readonly<{\n  text?: string;\n}>;\n\nexport type ChangeTextEvent = Readonly<{\n  text?: string;\n}>;\n\ntype SearchBarPlacement =\n  | 'automatic'\n  | 'inline' // deprecated starting from iOS 26\n  | 'stacked'\n  | 'integrated'\n  | 'integratedButton'\n  | 'integratedCentered';\n\ntype AutoCapitalizeType = 'none' | 'words' | 'sentences' | 'characters';\n\nexport interface NativeProps extends ViewProps {\n  onSearchFocus?: DirectEventHandler<SearchBarEvent> | null;\n  onSearchBlur?: DirectEventHandler<SearchBarEvent> | null;\n  onSearchButtonPress?: DirectEventHandler<SearchButtonPressedEvent> | null;\n  onCancelButtonPress?: DirectEventHandler<SearchBarEvent> | null;\n  onChangeText?: DirectEventHandler<ChangeTextEvent> | null;\n  hideWhenScrolling?: WithDefault<boolean, true>;\n  autoCapitalize?: WithDefault<AutoCapitalizeType, 'none'>;\n  placeholder?: string;\n  placement?: WithDefault<SearchBarPlacement, 'automatic'>;\n  allowToolbarIntegration?: WithDefault<boolean, true>;\n  obscureBackground?: boolean;\n  hideNavigationBar?: boolean;\n  cancelButtonText?: string;\n  // TODO: implement these on iOS\n  barTintColor?: ColorValue;\n  tintColor?: ColorValue;\n  textColor?: ColorValue;\n\n  // Android only\n  disableBackButtonOverride?: boolean;\n  // TODO: consider creating enum here\n  inputType?: string;\n  onClose?: DirectEventHandler<SearchBarEvent> | null;\n  onOpen?: DirectEventHandler<SearchBarEvent> | null;\n  hintTextColor?: ColorValue;\n  headerIconColor?: ColorValue;\n  shouldShowHintSearchIcon?: WithDefault<boolean, true>;\n}\n\ntype ComponentType = HostComponent<NativeProps>;\n\ninterface NativeCommands {\n  blur: (viewRef: React.ElementRef<ComponentType>) => void;\n  focus: (viewRef: React.ElementRef<ComponentType>) => void;\n  clearText: (viewRef: React.ElementRef<ComponentType>) => void;\n  toggleCancelButton: (\n    viewRef: React.ElementRef<ComponentType>,\n    flag: boolean,\n  ) => void;\n  setText: (viewRef: React.ElementRef<ComponentType>, text: string) => void;\n  cancelSearch: (viewRef: React.ElementRef<ComponentType>) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: [\n    'blur',\n    'focus',\n    'clearText',\n    'toggleCancelButton',\n    'setText',\n    'cancelSearch',\n  ],\n});\n\nexport default codegenNativeComponent<NativeProps>('RNSSearchBar', {});\n","'use client';\n\nimport { Platform, View } from 'react-native';\nimport React from 'react';\nimport { ScreenContainerProps } from '../types';\nimport { isNativePlatformSupported, screensEnabled } from '../core';\n\n// Native components\nimport ScreenContainerNativeComponent from '../fabric/ScreenContainerNativeComponent';\nimport ScreenNavigationContainerNativeComponent from '../fabric/ScreenNavigationContainerNativeComponent';\n\nfunction ScreenContainer(props: ScreenContainerProps) {\n  const { enabled = screensEnabled(), hasTwoStates, ...rest } = props;\n\n  if (enabled && isNativePlatformSupported) {\n    if (hasTwoStates) {\n      const ScreenNavigationContainer =\n        Platform.OS === 'ios'\n          ? ScreenNavigationContainerNativeComponent\n          : ScreenContainerNativeComponent;\n      return <ScreenNavigationContainer {...rest} />;\n    }\n    return <ScreenContainerNativeComponent {...rest} />;\n  }\n  return <View {...rest} />;\n}\n\nexport default ScreenContainer;\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\n\ninterface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent<NativeProps>('RNSScreenContainer', {});\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\n\ninterface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent<NativeProps>(\n  'RNSScreenNavigationContainer',\n  {},\n);\n","'use client';\n\nimport React, { PropsWithChildren } from 'react';\nimport {\n  GestureDetectorBridge,\n  ScreensRefsHolder,\n  GestureProviderProps,\n  GoBackGesture,\n  ScreenStackProps,\n} from '../types';\nimport { GHContext, RNSScreensRefContext } from '../contexts';\nimport warnOnce from 'warn-once';\n\n// Native components\nimport ScreenStackNativeComponent, {\n  NativeProps,\n} from '../fabric/ScreenStackNativeComponent';\n\nconst assertGHProvider = (\n  ScreenGestureDetector: (\n    props: PropsWithChildren<GestureProviderProps>,\n  ) => React.JSX.Element,\n  goBackGesture: GoBackGesture | undefined,\n) => {\n  const isGestureDetectorProviderNotDetected =\n    ScreenGestureDetector.name !== 'GHWrapper' && goBackGesture !== undefined;\n\n  warnOnce(\n    isGestureDetectorProviderNotDetected,\n    'Cannot detect GestureDetectorProvider in a screen that uses `goBackGesture`. Make sure your navigator is wrapped in GestureDetectorProvider.',\n  );\n};\n\nconst assertCustomScreenTransitionsProps = (\n  screensRefs: ScreenStackProps['screensRefs'],\n  currentScreenId: ScreenStackProps['currentScreenId'],\n  goBackGesture: ScreenStackProps['goBackGesture'],\n) => {\n  const isGestureDetectorNotConfiguredProperly =\n    goBackGesture !== undefined &&\n    screensRefs === null &&\n    currentScreenId === undefined;\n\n  warnOnce(\n    isGestureDetectorNotConfiguredProperly,\n    'Custom Screen Transition require screensRefs and currentScreenId to be provided.',\n  );\n};\n\nfunction ScreenStack(props: ScreenStackProps) {\n  const {\n    goBackGesture,\n    screensRefs: passedScreenRefs, // TODO: For compatibility with v5, remove once v5 is removed\n    currentScreenId,\n    transitionAnimation,\n    screenEdgeGesture,\n    onFinishTransitioning,\n    children,\n    ...rest\n  } = props;\n\n  const screensRefs = React.useRef<ScreensRefsHolder>(\n    passedScreenRefs?.current ?? {},\n  );\n  const ref = React.useRef(null);\n  const ScreenGestureDetector = React.useContext(GHContext);\n  const gestureDetectorBridge = React.useRef<GestureDetectorBridge>({\n    stackUseEffectCallback: _stackRef => {\n      // this method will be overriden in GestureDetector\n    },\n  });\n\n  React.useEffect(() => {\n    gestureDetectorBridge.current.stackUseEffectCallback(ref);\n  });\n\n  assertGHProvider(ScreenGestureDetector, goBackGesture);\n\n  assertCustomScreenTransitionsProps(\n    screensRefs,\n    currentScreenId,\n    goBackGesture,\n  );\n\n  return (\n    <RNSScreensRefContext.Provider value={screensRefs}>\n      <ScreenGestureDetector\n        gestureDetectorBridge={gestureDetectorBridge}\n        goBackGesture={goBackGesture}\n        transitionAnimation={transitionAnimation}\n        screenEdgeGesture={screenEdgeGesture ?? false}\n        screensRefs={screensRefs}\n        currentScreenId={currentScreenId}>\n        <ScreenStackNativeComponent\n          {...rest}\n          /**\n           * This messy override is to conform NativeProps used by codegen and\n           * our Public API. To see reasoning go to this PR:\n           * https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995\n           */\n          onFinishTransitioning={\n            onFinishTransitioning as NativeProps['onFinishTransitioning']\n          }\n          ref={ref}>\n          {children}\n        </ScreenStackNativeComponent>\n      </ScreenGestureDetector>\n    </RNSScreensRefContext.Provider>\n  );\n}\n\nexport default ScreenStack;\n","import React, { PropsWithChildren } from 'react';\nimport { GestureProviderProps, ScreensRefsHolder } from './types';\n\nexport const GHContext = React.createContext(\n  (props: PropsWithChildren<GestureProviderProps>) => <>{props.children}</>,\n);\n\nexport const RNSScreensRefContext =\n  React.createContext<React.MutableRefObject<ScreensRefsHolder> | null>(null);\n","const DEV = process.env.NODE_ENV !== \"production\";\n\nconst warnings = new Set();\n\nfunction warnOnce(condition, ...rest) {\n  if (DEV && condition) {\n    const key = rest.join(\" \");\n\n    if (warnings.has(key)) {\n      return;\n    }\n\n    warnings.add(key);\n    console.warn(...rest);\n  }\n}\n\nmodule.exports = warnOnce;\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\nimport type { DirectEventHandler } from 'react-native/Libraries/Types/CodegenTypes';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype FinishTransitioningEvent = Readonly<{}>;\n\nexport interface NativeProps extends ViewProps {\n  onFinishTransitioning?: DirectEventHandler<FinishTransitioningEvent>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSScreenStack', {});\n","import * as React from 'react';\nimport {\n  Platform,\n  type StyleProp,\n  StyleSheet,\n  type ViewStyle,\n  View,\n} from 'react-native';\nimport warnOnce from 'warn-once';\n\nimport DebugContainer from './DebugContainer';\nimport { ScreenProps, ScreenStackHeaderConfigProps } from '../types';\nimport { ScreenStackHeaderConfig } from './ScreenStackHeaderConfig';\nimport Screen from './Screen';\nimport ScreenStack from './ScreenStack';\nimport { RNSScreensRefContext } from '../contexts';\nimport { FooterComponent } from './ScreenFooter';\n\ntype Props = Omit<\n  ScreenProps,\n  'enabled' | 'isNativeStack' | 'hasLargeHeader'\n> & {\n  screenId: string;\n  headerConfig?: ScreenStackHeaderConfigProps;\n  contentStyle?: StyleProp<ViewStyle>;\n};\n\nfunction ScreenStackItem(\n  {\n    children,\n    headerConfig,\n    activityState,\n    shouldFreeze,\n    stackPresentation,\n    sheetAllowedDetents,\n    contentStyle,\n    style,\n    screenId,\n    // eslint-disable-next-line camelcase\n    unstable_sheetFooter,\n    ...rest\n  }: Props,\n  ref: React.ForwardedRef<View>,\n) {\n  const currentScreenRef = React.useRef<View | null>(null);\n  const screenRefs = React.useContext(RNSScreensRefContext);\n\n  React.useImperativeHandle(ref, () => currentScreenRef.current!);\n\n  const isHeaderInModal =\n    Platform.OS === 'android'\n      ? false\n      : stackPresentation !== 'push' && headerConfig?.hidden === false;\n\n  const headerHiddenPreviousRef = React.useRef(headerConfig?.hidden);\n\n  React.useEffect(() => {\n    warnOnce(\n      Platform.OS !== 'android' &&\n        stackPresentation !== 'push' &&\n        headerHiddenPreviousRef.current !== headerConfig?.hidden,\n      `Dynamically changing header's visibility in modals will result in remounting the screen and losing all local state.`,\n    );\n\n    headerHiddenPreviousRef.current = headerConfig?.hidden;\n  }, [headerConfig?.hidden, stackPresentation]);\n\n  const content = (\n    <>\n      <DebugContainer\n        style={[\n          stackPresentation === 'formSheet'\n            ? Platform.OS === 'ios'\n              ? styles.absolute\n              : sheetAllowedDetents === 'fitToContents'\n              ? null\n              : styles.container\n            : styles.container,\n          contentStyle,\n        ]}\n        stackPresentation={stackPresentation ?? 'push'}>\n        {children}\n      </DebugContainer>\n      {/**\n       * `HeaderConfig` needs to be the direct child of `Screen` without any intermediate `View`\n       * We don't render it conditionally based on visibility to make it possible to dynamically render a custom `header`\n       * Otherwise dynamically rendering a custom `header` leaves the native header visible\n       *\n       * https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md#screenstackheaderconfig\n       *\n       * HeaderConfig must not be first child of a Screen.\n       * See https://github.com/software-mansion/react-native-screens/pull/1825\n       * for detailed explanation.\n       */}\n      <ScreenStackHeaderConfig {...headerConfig} />\n      {/* eslint-disable-next-line camelcase */}\n      {stackPresentation === 'formSheet' && unstable_sheetFooter && (\n        <FooterComponent>{unstable_sheetFooter()}</FooterComponent>\n      )}\n    </>\n  );\n\n  // We take backgroundColor from contentStyle and apply it on Screen.\n  // This allows to workaround one issue with truncated\n  // content with formSheet presentation.\n  let internalScreenStyle;\n\n  if (stackPresentation === 'formSheet' && contentStyle) {\n    const flattenContentStyles = StyleSheet.flatten(contentStyle);\n    internalScreenStyle = {\n      backgroundColor: flattenContentStyles?.backgroundColor,\n    };\n  }\n\n  return (\n    <Screen\n      ref={node => {\n        currentScreenRef.current = node;\n\n        if (screenRefs === null) {\n          console.warn(\n            'Looks like RNSScreensRefContext is missing. Make sure the ScreenStack component is wrapped in it',\n          );\n          return;\n        }\n\n        const currentRefs = screenRefs.current;\n\n        if (node === null) {\n          // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n          delete currentRefs[screenId];\n        } else {\n          currentRefs[screenId] = { current: node };\n        }\n      }}\n      enabled\n      isNativeStack\n      activityState={activityState}\n      shouldFreeze={shouldFreeze}\n      screenId={screenId}\n      stackPresentation={stackPresentation}\n      hasLargeHeader={headerConfig?.largeTitle ?? false}\n      sheetAllowedDetents={sheetAllowedDetents}\n      style={[style, internalScreenStyle]}\n      {...rest}>\n      {isHeaderInModal ? (\n        <ScreenStack style={styles.container}>\n          <Screen\n            enabled\n            isNativeStack\n            activityState={activityState}\n            shouldFreeze={shouldFreeze}\n            hasLargeHeader={headerConfig?.largeTitle ?? false}\n            style={StyleSheet.absoluteFill}>\n            {content}\n          </Screen>\n        </ScreenStack>\n      ) : (\n        content\n      )}\n    </Screen>\n  );\n}\n\nexport default React.forwardRef(ScreenStackItem);\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n  },\n  absolute: {\n    position: 'absolute',\n    top: 0,\n    start: 0,\n    end: 0,\n  },\n});\n","import * as React from 'react';\nimport { Platform, type ViewProps } from 'react-native';\n// @ts-expect-error importing private component\n\nimport AppContainer from 'react-native/Libraries/ReactNative/AppContainer';\nimport ScreenContentWrapper from './ScreenContentWrapper';\nimport { StackPresentationTypes } from '../types';\n\ntype ContainerProps = ViewProps & {\n  stackPresentation: StackPresentationTypes;\n  children: React.ReactNode;\n};\n\n/**\n * This view must *not* be flattened.\n * See https://github.com/software-mansion/react-native-screens/pull/1825\n * for detailed explanation.\n */\nlet DebugContainer: React.ComponentType<ContainerProps> = props => {\n  return <ScreenContentWrapper {...props} />;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  DebugContainer = (props: ContainerProps) => {\n    const { stackPresentation, ...rest } = props;\n\n    if (\n      Platform.OS === 'ios' &&\n      stackPresentation !== 'push' &&\n      stackPresentation !== 'formSheet'\n    ) {\n      // This is necessary for LogBox\n      return (\n        <AppContainer>\n          <ScreenContentWrapper {...rest} />\n        </AppContainer>\n      );\n    }\n\n    return <ScreenContentWrapper {...rest} />;\n  };\n\n  DebugContainer.displayName = 'DebugContainer';\n}\n\nexport default DebugContainer;\n","import React from 'react';\nimport { ViewProps } from 'react-native';\nimport ScreenContentWrapperNativeComponent from '../fabric/ScreenContentWrapperNativeComponent';\n\nfunction ScreenContentWrapper(props: ViewProps) {\n  return <ScreenContentWrapperNativeComponent collapsable={false} {...props} />;\n}\n\nexport default ScreenContentWrapper;\n","// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\n\nexport interface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent<NativeProps>(\n  'RNSScreenContentWrapper',\n  {},\n);\n","import React from 'react';\nimport { ViewProps } from 'react-native';\nimport ScreenFooterNativeComponent from '../fabric/ScreenFooterNativeComponent';\n\n/**\n * Unstable API\n */\nfunction ScreenFooter(props: ViewProps) {\n  return <ScreenFooterNativeComponent {...props} />;\n}\n\ntype FooterProps = {\n  children?: React.ReactNode;\n};\n\nexport function FooterComponent({ children }: FooterProps) {\n  return <ScreenFooter collapsable={false}>{children}</ScreenFooter>;\n}\n\nexport default ScreenFooter;\n","// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\n\nexport interface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent<NativeProps>('RNSScreenFooter', {});\n","import React, { PropsWithChildren, ReactNode } from 'react';\nimport {\n  Platform,\n  StyleProp,\n  StyleSheet,\n  View,\n  ViewStyle,\n  useWindowDimensions,\n} from 'react-native';\n\n// Native components\nimport FullWindowOverlayNativeComponent from '../fabric/FullWindowOverlayNativeComponent';\nimport type { NativeProps } from '../fabric/FullWindowOverlayNativeComponent';\n\nconst NativeFullWindowOverlay: React.ComponentType<\n  PropsWithChildren<{\n    style: StyleProp<ViewStyle>;\n  }> &\n    NativeProps\n> = FullWindowOverlayNativeComponent as any;\n\ntype FullWindowOverlayProps = {\n  children: ReactNode;\n  unstable_accessibilityContainerViewIsModal?: boolean;\n};\n\nfunction FullWindowOverlay(props: FullWindowOverlayProps) {\n  const { width, height } = useWindowDimensions();\n  if (Platform.OS !== 'ios') {\n    console.warn('Using FullWindowOverlay is only valid on iOS devices.');\n    return <View {...props} />;\n  }\n  return (\n    <NativeFullWindowOverlay\n      style={[StyleSheet.absoluteFill, { width, height }]}\n      accessibilityContainerViewIsModal={\n        props.unstable_accessibilityContainerViewIsModal\n      }>\n      {props.children}\n    </NativeFullWindowOverlay>\n  );\n}\n\nexport default FullWindowOverlay;\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\nimport { WithDefault } from 'react-native/Libraries/Types/CodegenTypes';\n\n// Internal export, not part of stable library API.\nexport interface NativeProps extends ViewProps {\n  accessibilityContainerViewIsModal?: WithDefault<boolean, true>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSFullWindowOverlay', {\n  interfaceOnly: true,\n});\n","const RNS_CONTROLLED_BOTTOM_TABS_DEFAULT = true;\n\n// TODO: Migrate freeze here\n\n/**\n * Exposes information useful for downstream navigation library implementers,\n * so they can keep reasonable backward compatibility, if desired.\n *\n * We don't mean for this object to only grow in number of fields, however at the same time\n * we won't be very hasty to reduce it. Expect gradual changes.\n */\nexport const compatibilityFlags = {\n  /**\n   * Because of a bug introduced in https://github.com/software-mansion/react-native-screens/pull/1646\n   * react-native-screens v3.21 changed how header's backTitle handles whitespace strings in https://github.com/software-mansion/react-native-screens/pull/1726\n   * To allow for backwards compatibility in @react-navigation/native-stack we need a way to check if this version or newer is used.\n   * See https://github.com/react-navigation/react-navigation/pull/11423 for more context.\n   */\n  isNewBackTitleImplementation: true,\n\n  /**\n   * With version 4.0.0 the header implementation has been changed. To allow for backward compat\n   * with native-stack@v6 we want to expose a way to check whether the new implementation\n   * is in use or not.\n   *\n   * See:\n   * * https://github.com/software-mansion/react-native-screens/pull/2325\n   * * https://github.com/react-navigation/react-navigation/pull/12125\n   */\n  usesHeaderFlexboxImplementation: true,\n} as const;\n\nconst _featureFlags = {\n  experiment: {\n    controlledBottomTabs: RNS_CONTROLLED_BOTTOM_TABS_DEFAULT,\n  },\n  stable: {},\n};\n\n/**\n * Exposes configurable global behaviour of the library.\n *\n * Most of these can be overridden on particular component level, these are global switches.\n */\nexport const featureFlags = {\n  /**\n   *  Flags to enable experimental features. These might be removed w/o notice or moved to stable.\n   */\n  experiment: {\n    get controlledBottomTabs() {\n      return _featureFlags.experiment.controlledBottomTabs;\n    },\n    set controlledBottomTabs(value: boolean) {\n      if (\n        value !== _featureFlags.experiment.controlledBottomTabs &&\n        _featureFlags.experiment.controlledBottomTabs !==\n          RNS_CONTROLLED_BOTTOM_TABS_DEFAULT\n      ) {\n        console.error(\n          `[RNScreens] controlledBottomTabs feature flag modified for a second time; this might lead to unexpected effects`,\n        );\n      }\n      _featureFlags.experiment.controlledBottomTabs = value;\n    },\n  },\n  /**\n   * Section for stable flags, which can be used to configure library behaviour.\n   */\n  stable: {},\n};\n\nexport default featureFlags;\n","import * as React from 'react';\n\nimport TransitionProgressContext from './TransitionProgressContext';\n\nexport default function useTransitionProgress() {\n  const progress = React.useContext(TransitionProgressContext);\n\n  if (progress === undefined) {\n    throw new Error(\n      \"Couldn't find values for transition progress. Are you inside a screen in Native Stack?\",\n    );\n  }\n\n  return progress;\n}\n","'use client';\n\nimport React from 'react';\nimport {\n  StyleSheet,\n  findNodeHandle,\n  type NativeSyntheticEvent,\n} from 'react-native';\nimport BottomTabsNativeComponent, {\n  type NativeProps as BottomTabsNativeComponentProps,\n} from '../../fabric/bottom-tabs/BottomTabsNativeComponent';\nimport featureFlags from '../../flags';\nimport type {\n  BottomTabsProps,\n  NativeFocusChangeEvent,\n} from './BottomTabs.types';\nimport { bottomTabsDebugLog } from '../../private/logging';\n\n/**\n * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE\n */\nfunction BottomTabs(props: BottomTabsProps) {\n  bottomTabsDebugLog(`BottomTabs render`);\n\n  const {\n    onNativeFocusChange,\n    experimentalControlNavigationStateInJS = featureFlags.experiment\n      .controlledBottomTabs,\n    ...filteredProps\n  } = props;\n\n  const componentNodeRef =\n    React.useRef<React.Component<BottomTabsNativeComponentProps>>(null);\n  const componentNodeHandle = React.useRef<number>(-1);\n\n  React.useEffect(() => {\n    if (componentNodeRef.current != null) {\n      componentNodeHandle.current =\n        findNodeHandle(componentNodeRef.current) ?? -1;\n    } else {\n      componentNodeHandle.current = -1;\n    }\n  }, []);\n\n  const onNativeFocusChangeCallback = React.useCallback(\n    (event: NativeSyntheticEvent<NativeFocusChangeEvent>) => {\n      bottomTabsDebugLog(\n        `BottomTabs [${\n          componentNodeHandle.current ?? -1\n        }] onNativeFocusChange: ${JSON.stringify(event.nativeEvent)}`,\n      );\n      onNativeFocusChange?.(event);\n    },\n    [onNativeFocusChange],\n  );\n\n  return (\n    <BottomTabsNativeComponent\n      style={styles.fillParent}\n      onNativeFocusChange={onNativeFocusChangeCallback}\n      controlNavigationStateInJS={experimentalControlNavigationStateInJS}\n      // @ts-ignore suppress ref - debug only\n      ref={componentNodeRef}\n      {...filteredProps}>\n      {filteredProps.children}\n    </BottomTabsNativeComponent>\n  );\n}\n\nexport default BottomTabs;\n\nconst styles = StyleSheet.create({\n  fillParent: {\n    flex: 1,\n    width: '100%',\n    height: '100%',\n  },\n});\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ColorValue, ViewProps } from 'react-native';\nimport type {\n  DirectEventHandler,\n  Float,\n  WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\n// TODO: Report issue on RN repo, that nesting color value inside a struct does not work.\n// Generated code is ok, but the value is not passed down correctly - whatever color is set\n// host component receives RGBA(0, 0, 0, 0) anyway.\n// type TabBarAppearance = {\n//   backgroundColor?: ColorValue;\n// };\n\ntype NativeFocusChangeEvent = {\n  tabKey: string;\n};\n\ntype TabBarItemLabelVisibilityMode =\n  | 'auto'\n  | 'selected'\n  | 'labeled'\n  | 'unlabeled';\n\ntype TabBarMinimizeBehavior =\n  | 'automatic'\n  | 'never'\n  | 'onScrollDown'\n  | 'onScrollUp';\n\nexport interface NativeProps extends ViewProps {\n  // Events\n  onNativeFocusChange?: DirectEventHandler<NativeFocusChangeEvent>;\n\n  // Appearance\n  // tabBarAppearance?: TabBarAppearance; // Does not work due to codegen issue.\n\n  // Android-specific\n  tabBarBackgroundColor?: ColorValue;\n  tabBarItemTitleFontFamily?: string;\n  tabBarItemTitleFontSize?: Float;\n  tabBarItemTitleFontSizeActive?: Float;\n  tabBarItemTitleFontWeight?: string;\n  tabBarItemTitleFontStyle?: string;\n  tabBarItemTitleFontColor?: ColorValue;\n  tabBarItemTitleFontColorActive?: ColorValue;\n  tabBarItemIconColor?: ColorValue;\n  tabBarItemIconColorActive?: ColorValue;\n  tabBarItemActiveIndicatorColor?: ColorValue;\n  tabBarItemActiveIndicatorEnabled?: WithDefault<boolean, true>;\n  tabBarItemRippleColor?: ColorValue;\n  tabBarItemLabelVisibilityMode?: WithDefault<\n    TabBarItemLabelVisibilityMode,\n    'auto'\n  >;\n\n  // iOS-specific\n  tabBarTintColor?: ColorValue;\n  tabBarMinimizeBehavior?: WithDefault<TabBarMinimizeBehavior, 'automatic'>;\n\n  // Control\n\n  // Experimental support\n  controlNavigationStateInJS?: WithDefault<boolean, false>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSBottomTabs', {\n  interfaceOnly: true,\n});\n","let isDetailedLoggingEnabled = false;\n\nexport function bottomTabsDebugLog(\n  ...args: Parameters<(typeof console)['log']>\n) {\n  if (isDetailedLoggingEnabled) {\n    console.log(...args);\n  }\n}\n\nexport function internalEnableDetailedBottomTabsLogging() {\n  isDetailedLoggingEnabled = true;\n}\n","'use client';\n\nimport React from 'react';\nimport { Freeze } from 'react-freeze';\nimport {\n  Image,\n  StyleSheet,\n  findNodeHandle,\n  processColor,\n  type ImageSourcePropType,\n  type NativeSyntheticEvent,\n} from 'react-native';\nimport { freezeEnabled } from '../../core';\nimport BottomTabsScreenNativeComponent, {\n  type IconType,\n  type NativeProps,\n  type Appearance,\n  type ItemAppearance,\n  type ItemStateAppearance,\n} from '../../fabric/bottom-tabs/BottomTabsScreenNativeComponent';\nimport { featureFlags } from '../../flags';\nimport type {\n  BottomTabsScreenAppearance,\n  BottomTabsScreenItemAppearance,\n  BottomTabsScreenItemStateAppearance,\n  BottomTabsScreenProps,\n  EmptyObject,\n  Icon,\n} from './BottomTabsScreen.types';\nimport { bottomTabsDebugLog } from '../../private/logging';\n\n/**\n * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE\n */\nfunction BottomTabsScreen(props: BottomTabsScreenProps) {\n  const componentNodeRef = React.useRef<React.Component<NativeProps>>(null);\n  const componentNodeHandle = React.useRef<number>(-1);\n\n  React.useEffect(() => {\n    if (componentNodeRef.current != null) {\n      componentNodeHandle.current =\n        findNodeHandle(componentNodeRef.current) ?? -1;\n    } else {\n      componentNodeHandle.current = -1;\n    }\n  }, []);\n\n  const [nativeViewIsVisible, setNativeViewIsVisible] = React.useState(false);\n\n  const {\n    onWillAppear,\n    onDidAppear,\n    onWillDisappear,\n    onDidDisappear,\n    isFocused = false,\n    freezeContents,\n    icon,\n    iconResource,\n    selectedIcon,\n    standardAppearance,\n    scrollEdgeAppearance,\n    ...rest\n  } = props;\n\n  const shouldFreeze = shouldFreezeScreen(\n    nativeViewIsVisible,\n    isFocused,\n    freezeContents,\n  );\n\n  const onWillAppearCallback = React.useCallback(\n    (event: NativeSyntheticEvent<EmptyObject>) => {\n      bottomTabsDebugLog(\n        `TabsScreen [${componentNodeHandle.current}] onWillAppear received`,\n      );\n      setNativeViewIsVisible(true);\n      onWillAppear?.(event);\n    },\n    [onWillAppear],\n  );\n\n  const onDidAppearCallback = React.useCallback(\n    (event: NativeSyntheticEvent<EmptyObject>) => {\n      bottomTabsDebugLog(\n        `TabsScreen [${componentNodeHandle.current}] onDidAppear received`,\n      );\n      onDidAppear?.(event);\n    },\n    [onDidAppear],\n  );\n\n  const onWillDisappearCallback = React.useCallback(\n    (event: NativeSyntheticEvent<EmptyObject>) => {\n      bottomTabsDebugLog(\n        `TabsScreen [${componentNodeHandle.current}] onWillDisappear received`,\n      );\n      onWillDisappear?.(event);\n    },\n    [onWillDisappear],\n  );\n\n  const onDidDisappearCallback = React.useCallback(\n    (event: NativeSyntheticEvent<EmptyObject>) => {\n      bottomTabsDebugLog(\n        `TabsScreen [${componentNodeHandle.current}] onDidDisappear received`,\n      );\n      setNativeViewIsVisible(false);\n      onDidDisappear?.(event);\n    },\n    [onDidDisappear],\n  );\n\n  bottomTabsDebugLog(\n    `TabsScreen [${componentNodeHandle.current ?? -1}] render; tabKey: ${\n      rest.tabKey\n    } shouldFreeze: ${shouldFreeze}, isFocused: ${isFocused} nativeViewIsVisible: ${nativeViewIsVisible}`,\n  );\n\n  const iconProps = parseIconsToNativeProps(icon, selectedIcon);\n\n  let parsedIconResource;\n  if (iconResource) {\n    parsedIconResource = Image.resolveAssetSource(iconResource);\n    if (!parsedIconResource) {\n      console.error(\n        '[RNScreens] failed to resolve an asset for bottom tab icon',\n      );\n    }\n  }\n\n  return (\n    <BottomTabsScreenNativeComponent\n      collapsable={false}\n      style={styles.fillParent}\n      onWillAppear={onWillAppearCallback}\n      onDidAppear={onDidAppearCallback}\n      onWillDisappear={onWillDisappearCallback}\n      onDidDisappear={onDidDisappearCallback}\n      isFocused={isFocused}\n      // I'm keeping undefined as a fallback if `Image.resolveAssetSource` has failed for some reason.\n      // It won't render any icon, but it will prevent from crashing on the native side which is expecting\n      // ReadableMap. Passing `iconResource` directly will result in crash, because `require` API is returning\n      // double as a value.\n      iconResource={parsedIconResource || undefined}\n      {...iconProps}\n      standardAppearance={mapAppearanceToNativeProp(standardAppearance)}\n      scrollEdgeAppearance={mapAppearanceToNativeProp(scrollEdgeAppearance)}\n      // @ts-ignore - This is debug only anyway\n      ref={componentNodeRef}\n      {...rest}>\n      <Freeze freeze={shouldFreeze} placeholder={rest.placeholder}>\n        {rest.children}\n      </Freeze>\n    </BottomTabsScreenNativeComponent>\n  );\n}\n\nfunction mapAppearanceToNativeProp(\n  appearance?: BottomTabsScreenAppearance,\n): Appearance | undefined {\n  if (!appearance) return undefined;\n\n  const {\n    stacked,\n    inline,\n    compactInline,\n    tabBarBackgroundColor,\n    tabBarShadowColor,\n  } = appearance;\n\n  return {\n    ...appearance,\n    stacked: mapItemAppearanceToNativeProp(stacked),\n    inline: mapItemAppearanceToNativeProp(inline),\n    compactInline: mapItemAppearanceToNativeProp(compactInline),\n    tabBarBackgroundColor: processColor(tabBarBackgroundColor),\n    tabBarShadowColor: processColor(tabBarShadowColor),\n  };\n}\n\nfunction mapItemAppearanceToNativeProp(\n  itemAppearance?: BottomTabsScreenItemAppearance,\n): ItemAppearance | undefined {\n  if (!itemAppearance) return undefined;\n\n  const { normal, selected, focused, disabled } = itemAppearance;\n\n  return {\n    ...itemAppearance,\n    normal: mapItemStateAppearanceToNativeProp(normal),\n    selected: mapItemStateAppearanceToNativeProp(selected),\n    focused: mapItemStateAppearanceToNativeProp(focused),\n    disabled: mapItemStateAppearanceToNativeProp(disabled),\n  };\n}\n\nfunction mapItemStateAppearanceToNativeProp(\n  itemStateAppearance?: BottomTabsScreenItemStateAppearance,\n): ItemStateAppearance | undefined {\n  if (!itemStateAppearance) return undefined;\n\n  const {\n    tabBarItemTitleFontColor,\n    tabBarItemIconColor,\n    tabBarItemBadgeBackgroundColor,\n    tabBarItemTitleFontWeight,\n  } = itemStateAppearance;\n\n  return {\n    ...itemStateAppearance,\n    tabBarItemTitleFontColor: processColor(tabBarItemTitleFontColor),\n    tabBarItemIconColor: processColor(tabBarItemIconColor),\n    tabBarItemBadgeBackgroundColor: processColor(\n      tabBarItemBadgeBackgroundColor,\n    ),\n    tabBarItemTitleFontWeight:\n      tabBarItemTitleFontWeight !== undefined\n        ? String(tabBarItemTitleFontWeight)\n        : undefined,\n  };\n}\n\nfunction shouldFreezeScreen(\n  nativeViewVisible: boolean,\n  screenFocused: boolean,\n  freezeOverride: boolean | undefined,\n) {\n  if (!freezeEnabled()) {\n    return false;\n  }\n\n  if (freezeOverride !== undefined) {\n    return freezeOverride;\n  }\n\n  if (featureFlags.experiment.controlledBottomTabs) {\n    // If the tabs are JS controlled, we want to freeze only when given view is not focused && it is not currently visible\n    return !nativeViewVisible && !screenFocused;\n  }\n\n  return !nativeViewVisible;\n}\n\nfunction parseIconToNativeProps(icon: Icon | undefined): {\n  iconType?: IconType;\n  iconImageSource?: ImageSourcePropType;\n  iconSfSymbolName?: string;\n} {\n  if (!icon) {\n    return {};\n  }\n\n  if ('sfSymbolName' in icon) {\n    // iOS-specific: SFSymbol usage\n    return {\n      iconType: 'sfSymbol',\n      iconSfSymbolName: icon.sfSymbolName,\n    };\n  } else if ('imageSource' in icon) {\n    return {\n      iconType: 'image',\n      iconImageSource: icon.imageSource,\n    };\n  } else if ('templateSource' in icon) {\n    // iOS-specifig: image as a template usage\n    return {\n      iconType: 'template',\n      iconImageSource: icon.templateSource,\n    };\n  } else {\n    // iOS-specific: SFSymbol, image as a template usage\n    throw new Error(\n      '[RNScreens] Incorrect icon format. You must provide sfSymbolName, imageSource or templateSource.',\n    );\n  }\n}\n\nfunction parseIconsToNativeProps(\n  icon: Icon | undefined,\n  selectedIcon: Icon | undefined,\n): {\n  iconType?: IconType;\n  iconImageSource?: ImageSourcePropType;\n  iconSfSymbolName?: string;\n  selectedIconImageSource?: ImageSourcePropType;\n  selectedIconSfSymbolName?: string;\n} {\n  const { iconImageSource, iconSfSymbolName, iconType } =\n    parseIconToNativeProps(icon);\n  const {\n    iconImageSource: selectedIconImageSource,\n    iconSfSymbolName: selectedIconSfSymbolName,\n    iconType: selectedIconType,\n  } = parseIconToNativeProps(selectedIcon);\n\n  if (\n    iconType !== undefined &&\n    selectedIconType !== undefined &&\n    iconType !== selectedIconType\n  ) {\n    throw new Error('[RNScreens] icon and selectedIcon must be same type.');\n  } else if (iconType === undefined && selectedIconType !== undefined) {\n    // iOS-specific: UIKit requirement\n    throw new Error(\n      '[RNScreens] To use selectedIcon prop, the icon prop must also be provided.',\n    );\n  }\n\n  return {\n    iconType,\n    iconImageSource,\n    iconSfSymbolName,\n    selectedIconImageSource,\n    selectedIconSfSymbolName,\n  };\n}\n\nexport default BottomTabsScreen;\n\nconst styles = StyleSheet.create({\n  fillParent: {\n    position: 'absolute',\n    flex: 1,\n    width: '100%',\n    height: '100%',\n  },\n});\n","'use client';\n\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type {\n  ColorValue,\n  ImageSource,\n  ProcessedColorValue,\n  ViewProps,\n} from 'react-native';\nimport {\n  DirectEventHandler,\n  Float,\n  Int32,\n  WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\nimport { UnsafeMixed } from './codegenUtils';\n\n// iOS-specific: SFSymbol, image as a template usage\nexport type IconType = 'image' | 'template' | 'sfSymbol';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype GenericEmptyEvent = Readonly<{}>;\n\ntype LifecycleStateChangeEvent = Readonly<{\n  previousState: Int32;\n  newState: Int32;\n}>;\n\nexport type ItemStateAppearance = {\n  tabBarItemTitleFontFamily?: string;\n  tabBarItemTitleFontSize?: Float;\n  tabBarItemTitleFontWeight?: string;\n  tabBarItemTitleFontStyle?: string;\n  tabBarItemTitleFontColor?: ProcessedColorValue | null;\n  tabBarItemTitlePositionAdjustment?: {\n    horizontal?: Float;\n    vertical?: Float;\n  };\n  tabBarItemIconColor?: ProcessedColorValue | null;\n  tabBarItemBadgeBackgroundColor?: ProcessedColorValue | null;\n};\n\nexport type ItemAppearance = {\n  normal?: ItemStateAppearance;\n  selected?: ItemStateAppearance;\n  focused?: ItemStateAppearance;\n  disabled?: ItemStateAppearance;\n};\n\nexport type Appearance = {\n  stacked?: ItemAppearance;\n  inline?: ItemAppearance;\n  compactInline?: ItemAppearance;\n\n  tabBarBackgroundColor?: ProcessedColorValue | null;\n  tabBarShadowColor?: ProcessedColorValue | null;\n  tabBarBlurEffect?: WithDefault<BlurEffect, 'systemDefault'>;\n};\n\ntype BlurEffect =\n  | 'none'\n  | 'systemDefault'\n  | 'extraLight'\n  | 'light'\n  | 'dark'\n  | 'regular'\n  | 'prominent'\n  | 'systemUltraThinMaterial'\n  | 'systemThinMaterial'\n  | 'systemMaterial'\n  | 'systemThickMaterial'\n  | 'systemChromeMaterial'\n  | 'systemUltraThinMaterialLight'\n  | 'systemThinMaterialLight'\n  | 'systemMaterialLight'\n  | 'systemThickMaterialLight'\n  | 'systemChromeMaterialLight'\n  | 'systemUltraThinMaterialDark'\n  | 'systemThinMaterialDark'\n  | 'systemMaterialDark'\n  | 'systemThickMaterialDark'\n  | 'systemChromeMaterialDark';\n\ntype Orientation =\n  | 'inherit'\n  | 'all'\n  | 'allButUpsideDown'\n  | 'portrait'\n  | 'portraitUp'\n  | 'portraitDown'\n  | 'landscape'\n  | 'landscapeLeft'\n  | 'landscapeRight';\n\ntype SystemItem =\n  | 'none'\n  | 'bookmarks'\n  | 'contacts'\n  | 'downloads'\n  | 'favorites'\n  | 'featured'\n  | 'history'\n  | 'more'\n  | 'mostRecent'\n  | 'mostViewed'\n  | 'recents'\n  | 'search'\n  | 'topRated';\n\nexport interface NativeProps extends ViewProps {\n  // Events\n  onLifecycleStateChange?: DirectEventHandler<LifecycleStateChangeEvent>;\n  onWillAppear?: DirectEventHandler<GenericEmptyEvent>;\n  onDidAppear?: DirectEventHandler<GenericEmptyEvent>;\n  onWillDisappear?: DirectEventHandler<GenericEmptyEvent>;\n  onDidDisappear?: DirectEventHandler<GenericEmptyEvent>;\n\n  // Control\n  isFocused?: boolean;\n  tabKey: string;\n\n  // General\n  title?: string | undefined | null;\n  badgeValue?: string;\n\n  // Currently iOS-only\n  orientation?: WithDefault<Orientation, 'inherit'>;\n\n  // Android-specific image handling\n  iconResourceName?: string;\n  iconResource?: ImageSource;\n  tabBarItemBadgeTextColor?: ColorValue;\n  tabBarItemBadgeBackgroundColor?: ColorValue;\n\n  // iOS-specific\n  standardAppearance?: UnsafeMixed<Appearance>;\n  scrollEdgeAppearance?: UnsafeMixed<Appearance>;\n\n  iconType?: WithDefault<IconType, 'sfSymbol'>;\n\n  iconImageSource?: ImageSource;\n  iconSfSymbolName?: string;\n\n  selectedIconImageSource?: ImageSource;\n  selectedIconSfSymbolName?: string;\n\n  systemItem?: WithDefault<SystemItem, 'none'>;\n\n  specialEffects?: {\n    repeatedTabSelection?: {\n      popToRoot?: WithDefault<boolean, true>;\n      scrollToTop?: WithDefault<boolean, true>;\n    };\n  };\n\n  overrideScrollViewContentInsetAdjustmentBehavior?: WithDefault<boolean, true>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSBottomTabsScreen', {});\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport type { ViewProps } from 'react-native';\nimport type { NativeProps } from '../../fabric/gamma/ScreenStackHostNativeComponent';\nimport ScreenStackHostNativeComponent from '../../fabric/gamma/ScreenStackHostNativeComponent';\n\nexport type ScreenStackNativeProps = NativeProps & {\n  // Overrides\n};\n\ntype ScreenStackHostProps = {\n  children?: ViewProps['children'];\n} & ScreenStackNativeProps;\n\n/**\n * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE\n */\nfunction ScreenStackHost({ children }: ScreenStackHostProps) {\n  return (\n    <ScreenStackHostNativeComponent style={styles.container}>\n      {children}\n    </ScreenStackHostNativeComponent>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n  },\n});\n\nexport default ScreenStackHost;\n","'use client';\n\nimport type { ViewProps } from 'react-native';\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\nexport interface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent<NativeProps>('RNSScreenStackHost', {});\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport StackScreenNativeComponent from '../../fabric/gamma/StackScreenNativeComponent';\nimport type { NativeSyntheticEvent, ViewProps } from 'react-native';\nimport type { NativeProps } from '../../fabric/gamma/StackScreenNativeComponent';\n\nexport const StackScreenLifecycleState = {\n  INITIAL: 0,\n  DETACHED: 1,\n  ATTACHED: 2,\n} as const;\n\nexport type StackScreenNativeProps = NativeProps & {\n  // Overrides\n  maxLifecycleState: (typeof StackScreenLifecycleState)[keyof typeof StackScreenLifecycleState];\n};\n\ntype StackScreenProps = {\n  children?: ViewProps['children'];\n  // Custom events\n  onPop?: (screenKey: string) => void;\n} & StackScreenNativeProps;\n\n/**\n * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE\n */\nfunction StackScreen({\n  children,\n  // Control\n  maxLifecycleState,\n  screenKey,\n  // Events\n  onWillAppear,\n  onWillDisappear,\n  onDidAppear,\n  onDidDisappear,\n  // Custom events\n  onPop,\n}: StackScreenProps) {\n  const handleOnDidDisappear = React.useCallback(\n    (e: NativeSyntheticEvent<Record<string, never>>) => {\n      onDidDisappear?.(e);\n      onPop?.(screenKey);\n    },\n    [onDidDisappear, onPop, screenKey],\n  );\n\n  return (\n    <StackScreenNativeComponent\n      style={StyleSheet.absoluteFill}\n      // Control\n      maxLifecycleState={maxLifecycleState}\n      screenKey={screenKey}\n      // Events\n      onWillAppear={onWillAppear}\n      onDidAppear={onDidAppear}\n      onWillDisappear={onWillDisappear}\n      onDidDisappear={handleOnDidDisappear}>\n      {children}\n    </StackScreenNativeComponent>\n  );\n}\n\nexport default StackScreen;\n","'use client';\n\nimport type { ViewProps } from 'react-native';\nimport {\n  DirectEventHandler,\n  Int32,\n} from 'react-native/Libraries/Types/CodegenTypes';\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type GenericEmptyEvent = Readonly<{}>;\n\nexport interface NativeProps extends ViewProps {\n  // Control\n  maxLifecycleState: Int32;\n  screenKey: string;\n\n  // Events\n  onWillAppear?: DirectEventHandler<GenericEmptyEvent>;\n  onDidAppear?: DirectEventHandler<GenericEmptyEvent>;\n  onWillDisappear?: DirectEventHandler<GenericEmptyEvent>;\n  onDidDisappear?: DirectEventHandler<GenericEmptyEvent>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSStackScreen', {});\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport SplitViewHostNativeComponent from '../../fabric/gamma/SplitViewHostNativeComponent';\nimport type {\n  SplitViewDisplayMode,\n  SplitViewHostProps,\n  SplitViewSplitBehavior,\n} from './SplitViewHost.types';\n\n// According to the UIKit documentation: https://developer.apple.com/documentation/uikit/uisplitviewcontroller/displaymode-swift.enum\n// Only specific pairs for displayMode - splitBehavior are valid and others may lead to unexpected results.\n// Therefore, we're adding check on the JS side to return a feedback to the client when that pairing isn't valid.\n// However, we're not blocking these props to be set on the native side, because it doesn't crash, just the result or transitions may not work as expected.\nconst displayModeForSplitViewCompatibilityMap: Record<\n  SplitViewSplitBehavior,\n  SplitViewDisplayMode[]\n> = {\n  tile: ['secondaryOnly', 'oneBesideSecondary', 'twoBesideSecondary'],\n  overlay: ['secondaryOnly', 'oneOverSecondary', 'twoOverSecondary'],\n  displace: ['secondaryOnly', 'oneBesideSecondary', 'twoDisplaceSecondary'],\n  automatic: [], // placeholder for satisfying types; we'll handle it specially in logic\n};\n\nconst isValidDisplayModeForSplitBehavior = (\n  displayMode: SplitViewDisplayMode,\n  splitBehavior: SplitViewSplitBehavior,\n) => {\n  if (splitBehavior === 'automatic') {\n    // for automatic we cannot easily verify the compatibility, because it depends on the system preference for display mode, therefore we're assuming that 'automatic' has only valid combinations\n    return true;\n  }\n  return displayModeForSplitViewCompatibilityMap[splitBehavior].includes(\n    displayMode,\n  );\n};\n\n/**\n * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE\n */\nfunction SplitViewHost(props: SplitViewHostProps) {\n  const { preferredDisplayMode, preferredSplitBehavior } = props;\n\n  React.useEffect(() => {\n    if (preferredDisplayMode && preferredSplitBehavior) {\n      const isValid = isValidDisplayModeForSplitBehavior(\n        preferredDisplayMode,\n        preferredSplitBehavior,\n      );\n      if (!isValid) {\n        const validDisplayModes =\n          displayModeForSplitViewCompatibilityMap[preferredSplitBehavior];\n        console.warn(\n          `Invalid display mode \"${preferredDisplayMode}\" for split behavior \"${preferredSplitBehavior}\".` +\n            `\\nValid modes for \"${preferredSplitBehavior}\" are: ${validDisplayModes.join(\n              ', ',\n            )}.`,\n        );\n      }\n    }\n  }, [preferredDisplayMode, preferredSplitBehavior]);\n\n  return (\n    <SplitViewHostNativeComponent {...props} style={styles.container}>\n      {props.children}\n    </SplitViewHostNativeComponent>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n  },\n});\n\nexport default SplitViewHost;\n","'use client';\n\nimport type { ViewProps } from 'react-native';\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type {\n  DirectEventHandler,\n  Float,\n  WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype GenericEmptyEvent = Readonly<{}>;\n\ntype DisplayModeWillChangeEvent = {\n  currentDisplayMode: string;\n  nextDisplayMode: string;\n};\n\ntype SplitViewDisplayModeButtonVisibility = 'always' | 'automatic' | 'never';\n\ntype SplitViewSplitBehavior = 'automatic' | 'displace' | 'overlay' | 'tile';\n\ntype SplitViewPrimaryEdge = 'leading' | 'trailing';\n\ntype SplitViewDisplayMode =\n  | 'automatic'\n  | 'secondaryOnly'\n  | 'oneBesideSecondary'\n  | 'oneOverSecondary'\n  | 'twoBesideSecondary'\n  | 'twoOverSecondary'\n  | 'twoDisplaceSecondary';\n\ntype SplitViewOrientation =\n  | 'inherit'\n  | 'all'\n  | 'allButUpsideDown'\n  | 'portrait'\n  | 'portraitUp'\n  | 'portraitDown'\n  | 'landscape'\n  | 'landscapeLeft'\n  | 'landscapeRight';\n\ninterface ColumnMetrics {\n  minimumPrimaryColumnWidth?: WithDefault<Float, -1.0>;\n  maximumPrimaryColumnWidth?: WithDefault<Float, -1.0>;\n  preferredPrimaryColumnWidthOrFraction?: WithDefault<Float, -1.0>;\n  minimumSupplementaryColumnWidth?: WithDefault<Float, -1.0>;\n  maximumSupplementaryColumnWidth?: WithDefault<Float, -1.0>;\n  preferredSupplementaryColumnWidthOrFraction?: WithDefault<Float, -1.0>;\n\n  // iOS 26 only\n  minimumSecondaryColumnWidth?: WithDefault<Float, -1.0>;\n  preferredSecondaryColumnWidthOrFraction?: WithDefault<Float, -1.0>;\n  minimumInspectorColumnWidth?: WithDefault<Float, -1.0>;\n  maximumInspectorColumnWidth?: WithDefault<Float, -1.0>;\n  preferredInspectorColumnWidthOrFraction?: WithDefault<Float, -1.0>;\n}\n\ninterface NativeProps extends ViewProps {\n  // Appearance\n\n  preferredDisplayMode?: WithDefault<SplitViewDisplayMode, 'automatic'>;\n  preferredSplitBehavior?: WithDefault<SplitViewSplitBehavior, 'automatic'>;\n  primaryEdge?: WithDefault<SplitViewPrimaryEdge, 'leading'>;\n  showSecondaryToggleButton?: WithDefault<boolean, false>;\n  displayModeButtonVisibility?: WithDefault<\n    SplitViewDisplayModeButtonVisibility,\n    'automatic'\n  >;\n  columnMetrics?: ColumnMetrics;\n  orientation?: WithDefault<SplitViewOrientation, 'inherit'>;\n\n  // Interactions\n\n  presentsWithGesture?: WithDefault<boolean, true>;\n  showInspector?: WithDefault<boolean, false>;\n\n  // Custom events\n\n  onCollapse?: DirectEventHandler<GenericEmptyEvent>;\n  onDisplayModeWillChange?: DirectEventHandler<DisplayModeWillChangeEvent>;\n  onExpand?: DirectEventHandler<GenericEmptyEvent>;\n  onInspectorHide?: DirectEventHandler<GenericEmptyEvent>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSSplitViewHost', {});\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport SplitViewScreenNativeComponent from '../../fabric/gamma/SplitViewScreenNativeComponent';\nimport { SplitViewScreenProps } from './SplitViewScreen.types';\n\n/**\n * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE\n */\nfunction Column(props: SplitViewScreenProps) {\n  return (\n    <SplitViewScreenNativeComponent\n      columnType=\"column\"\n      {...props}\n      style={StyleSheet.absoluteFill}>\n      {props.children}\n    </SplitViewScreenNativeComponent>\n  );\n}\n\n/**\n * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE\n */\nfunction Inspector(props: SplitViewScreenProps) {\n  return (\n    <SplitViewScreenNativeComponent\n      columnType=\"inspector\"\n      {...props}\n      style={StyleSheet.absoluteFill}>\n      {props.children}\n    </SplitViewScreenNativeComponent>\n  );\n}\n\n/**\n * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE\n */\n// TODO: refactor to drop `Screen` suffix as the API name is really long at the moment\nconst SplitViewScreen = {\n  Column,\n  Inspector,\n};\n\nexport default SplitViewScreen;\n","'use client';\n\nimport type { ViewProps } from 'react-native';\nimport {\n  DirectEventHandler,\n  WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\n// eslint-disable-next-line @react-native/no-deep-imports\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype GenericEmptyEvent = Readonly<{}>;\n\ntype SplitViewScreenColumnType = 'column' | 'inspector';\n\ninterface NativeProps extends ViewProps {\n  // Config\n  columnType?: WithDefault<SplitViewScreenColumnType, 'column'>;\n\n  // Events\n  onWillAppear?: DirectEventHandler<GenericEmptyEvent>;\n  onDidAppear?: DirectEventHandler<GenericEmptyEvent>;\n  onWillDisappear?: DirectEventHandler<GenericEmptyEvent>;\n  onDidDisappear?: DirectEventHandler<GenericEmptyEvent>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNSSplitViewScreen', {\n  interfaceOnly: true,\n});\n","\"use strict\";\n\nexport function debounce(func, duration) {\n  let timeout;\n  return function (...args) {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      func.apply(this, args);\n    }, duration);\n  };\n}\n//# sourceMappingURL=debounce.js.map","\"use strict\";\n\nexport const getModalRouteKeys = (routes, descriptors) => routes.reduce((acc, route) => {\n  const {\n    presentation\n  } = descriptors[route.key]?.options ?? {};\n  if (acc.length && !presentation || presentation === 'modal' || presentation === 'transparentModal' || presentation === 'containedModal' || presentation === 'containedTransparentModal' || presentation === 'fullScreenModal' || presentation === 'formSheet' || presentation === 'pageSheet') {\n    acc.push(route.key);\n  }\n  return acc;\n}, []);\n//# sourceMappingURL=getModalRoutesKeys.js.map","\"use strict\";\n\nimport * as React from 'react';\nexport const AnimatedHeaderHeightContext = /*#__PURE__*/React.createContext(undefined);\nexport function useAnimatedHeaderHeight() {\n  const animatedValue = React.useContext(AnimatedHeaderHeightContext);\n  if (animatedValue === undefined) {\n    throw new Error(\"Couldn't find the header height. Are you inside a screen in a native stack navigator?\");\n  }\n  return animatedValue;\n}\n//# sourceMappingURL=useAnimatedHeaderHeight.js.map","\"use strict\";\n\nimport * as React from 'react';\nexport function useDismissedRouteError(state) {\n  const [nextDismissedKey, setNextDismissedKey] = React.useState(null);\n  const dismissedRouteName = nextDismissedKey ? state.routes.find(route => route.key === nextDismissedKey)?.name : null;\n  React.useEffect(() => {\n    if (dismissedRouteName) {\n      const message = `The screen '${dismissedRouteName}' was removed natively but didn't get removed from JS state. ` + `This can happen if the action was prevented in a 'beforeRemove' listener, which is not fully supported in native-stack.\\n\\n` + `Consider using a 'usePreventRemove' hook with 'headerBackButtonMenuEnabled: false' to prevent users from natively going back multiple screens.`;\n      console.error(message);\n    }\n  }, [dismissedRouteName]);\n  return {\n    setNextDismissedKey\n  };\n}\n//# sourceMappingURL=useDismissedRouteError.js.map","\"use strict\";\n\nimport { usePreventRemoveContext } from '@react-navigation/native';\nimport * as React from 'react';\nexport function useInvalidPreventRemoveError(descriptors) {\n  const {\n    preventedRoutes\n  } = usePreventRemoveContext();\n  const preventedRouteKey = Object.keys(preventedRoutes)[0];\n  const preventedDescriptor = descriptors[preventedRouteKey];\n  const isHeaderBackButtonMenuEnabledOnPreventedScreen = preventedDescriptor?.options?.headerBackButtonMenuEnabled;\n  const preventedRouteName = preventedDescriptor?.route?.name;\n  React.useEffect(() => {\n    if (preventedRouteKey != null && isHeaderBackButtonMenuEnabledOnPreventedScreen) {\n      const message = `The screen ${preventedRouteName} uses 'usePreventRemove' hook alongside 'headerBackButtonMenuEnabled: true', which is not supported. \\n\\n` + `Consider removing 'headerBackButtonMenuEnabled: true' from ${preventedRouteName} screen to get rid of this error.`;\n      console.error(message);\n    }\n  }, [preventedRouteKey, isHeaderBackButtonMenuEnabledOnPreventedScreen, preventedRouteName]);\n}\n//# sourceMappingURL=useInvalidPreventRemoveError.js.map","\"use strict\";\n\nimport { getHeaderTitle, HeaderTitle } from '@react-navigation/elements';\nimport { useLocale, useTheme } from '@react-navigation/native';\nimport color from 'color';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport { isSearchBarAvailableForCurrentPlatform, ScreenStackHeaderBackButtonImage, ScreenStackHeaderCenterView, ScreenStackHeaderLeftView, ScreenStackHeaderRightView, ScreenStackHeaderSearchBarView, SearchBar } from 'react-native-screens';\nimport { processFonts } from './FontProcessor';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst processBarButtonItems = (items, colors, fonts) => {\n  return items?.map((item, index) => {\n    if (item.type === 'custom') {\n      // Handled with `ScreenStackHeaderLeftView` or `ScreenStackHeaderRightView`\n      return null;\n    }\n    if (item.type === 'spacing') {\n      if (item.spacing == null) {\n        throw new Error(`Spacing item must have a 'spacing' property defined: ${JSON.stringify(item)}`);\n      }\n      return item;\n    }\n    if (item.type === 'button' || item.type === 'menu') {\n      if (item.type === 'menu' && item.menu == null) {\n        throw new Error(`Menu item must have a 'menu' property defined: ${JSON.stringify(item)}`);\n      }\n      const {\n        badge,\n        label,\n        labelStyle,\n        icon,\n        ...rest\n      } = item;\n      const processedItemCommon = {\n        ...rest,\n        index,\n        title: label,\n        titleStyle: {\n          ...fonts.regular,\n          ...labelStyle\n        },\n        icon: transformIcon(icon)\n      };\n      let processedItem;\n      if (processedItemCommon.type === 'menu' && item.type === 'menu') {\n        const {\n          multiselectable,\n          layout\n        } = item.menu;\n        processedItem = {\n          ...processedItemCommon,\n          menu: {\n            ...processedItemCommon.menu,\n            singleSelection: !multiselectable,\n            displayAsPalette: layout === 'palette',\n            items: item.menu.items.map(getMenuItem)\n          }\n        };\n      } else if (processedItemCommon.type === 'button' && item.type === 'button') {\n        processedItem = processedItemCommon;\n      } else {\n        throw new Error(`Invalid item type: ${JSON.stringify(item)}. Valid types are 'button' and 'menu'.`);\n      }\n      if (badge) {\n        const badgeBackgroundColor = badge.style?.backgroundColor ?? colors.notification;\n        const badgeTextColor = color(badgeBackgroundColor).isLight() ? 'black' : 'white';\n        processedItem = {\n          ...processedItem,\n          badge: {\n            ...badge,\n            value: String(badge.value),\n            style: {\n              backgroundColor: badgeBackgroundColor,\n              color: badgeTextColor,\n              ...fonts.regular,\n              ...badge.style\n            }\n          }\n        };\n      }\n      return processedItem;\n    }\n    throw new Error(`Invalid item type: ${JSON.stringify(item)}. Valid types are 'button', 'menu', 'custom' and 'spacing'.`);\n  }).filter(item => item != null);\n};\nconst transformIcon = icon => {\n  if (icon?.type === 'image') {\n    return icon.tinted === false ? {\n      type: 'imageSource',\n      imageSource: icon.source\n    } : {\n      type: 'templateSource',\n      templateSource: icon.source\n    };\n  }\n  return icon;\n};\nconst getMenuItem = item => {\n  if (item.type === 'submenu') {\n    const {\n      label,\n      icon,\n      inline,\n      layout,\n      items,\n      multiselectable,\n      ...rest\n    } = item;\n    return {\n      ...rest,\n      icon: transformIcon(icon),\n      title: label,\n      displayAsPalette: layout === 'palette',\n      displayInline: inline,\n      singleSelection: !multiselectable,\n      items: items.map(getMenuItem)\n    };\n  }\n  const {\n    label,\n    icon,\n    description,\n    ...rest\n  } = item;\n  return {\n    ...rest,\n    icon: transformIcon(icon),\n    title: label,\n    subtitle: description\n  };\n};\nexport function useHeaderConfigProps({\n  headerBackIcon,\n  headerBackImageSource,\n  headerBackButtonDisplayMode,\n  headerBackButtonMenuEnabled,\n  headerBackTitle,\n  headerBackTitleStyle,\n  headerBackVisible,\n  headerShadowVisible,\n  headerLargeStyle,\n  headerLargeTitle: headerLargeTitleDeprecated,\n  headerLargeTitleEnabled = headerLargeTitleDeprecated,\n  headerLargeTitleShadowVisible,\n  headerLargeTitleStyle,\n  headerBackground,\n  headerLeft,\n  headerRight,\n  headerShown,\n  headerStyle,\n  headerBlurEffect,\n  headerTintColor,\n  headerTitle,\n  headerTitleAlign,\n  headerTitleStyle,\n  headerTransparent,\n  headerSearchBarOptions,\n  headerTopInsetEnabled,\n  headerBack,\n  route,\n  title,\n  unstable_headerLeftItems: headerLeftItems,\n  unstable_headerRightItems: headerRightItems\n}) {\n  const {\n    direction\n  } = useLocale();\n  const {\n    colors,\n    fonts,\n    dark\n  } = useTheme();\n  const tintColor = headerTintColor ?? (Platform.OS === 'ios' ? colors.primary : colors.text);\n  const headerBackTitleStyleFlattened = StyleSheet.flatten([fonts.regular, headerBackTitleStyle]) || {};\n  const headerLargeTitleStyleFlattened = StyleSheet.flatten([Platform.select({\n    ios: fonts.heavy,\n    default: fonts.medium\n  }), headerLargeTitleStyle]) || {};\n  const headerTitleStyleFlattened = StyleSheet.flatten([Platform.select({\n    ios: fonts.bold,\n    default: fonts.medium\n  }), headerTitleStyle]) || {};\n  const headerStyleFlattened = StyleSheet.flatten(headerStyle) || {};\n  const headerLargeStyleFlattened = StyleSheet.flatten(headerLargeStyle) || {};\n  const headerBackgroundColor = headerStyleFlattened.backgroundColor ?? (headerBackground != null || headerTransparent ||\n  // The title becomes invisible if background color is set with large title on iOS 26\n  Platform.OS === 'ios' && headerLargeTitleEnabled ? 'transparent' : colors.card);\n  const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] = processFonts([headerBackTitleStyleFlattened.fontFamily, headerLargeTitleStyleFlattened.fontFamily, headerTitleStyleFlattened.fontFamily]);\n  const backTitleFontSize = 'fontSize' in headerBackTitleStyleFlattened ? headerBackTitleStyleFlattened.fontSize : undefined;\n  const titleText = getHeaderTitle({\n    title,\n    headerTitle\n  }, route.name);\n  const titleColor = 'color' in headerTitleStyleFlattened ? headerTitleStyleFlattened.color : Platform.OS === 'ios' && (headerTransparent || headerBackgroundColor === 'transparent') ?\n  // On iOS 26, we want header title to change color based on content underneath\n  // So we don't set an explicit color when header is transparent\n  undefined : headerTintColor ?? colors.text;\n  const titleFontSize = 'fontSize' in headerTitleStyleFlattened ? headerTitleStyleFlattened.fontSize : undefined;\n  const titleFontWeight = headerTitleStyleFlattened.fontWeight;\n  const largeTitleBackgroundColor = headerLargeStyleFlattened.backgroundColor;\n  const largeTitleColor = 'color' in headerLargeTitleStyleFlattened ? headerLargeTitleStyleFlattened.color : undefined;\n  const largeTitleFontSize = 'fontSize' in headerLargeTitleStyleFlattened ? headerLargeTitleStyleFlattened.fontSize : undefined;\n  const largeTitleFontWeight = headerLargeTitleStyleFlattened.fontWeight;\n  const headerTitleStyleSupported = {\n    color: titleColor\n  };\n  if (headerTitleStyleFlattened.fontFamily != null) {\n    headerTitleStyleSupported.fontFamily = headerTitleStyleFlattened.fontFamily;\n  }\n  if (titleFontSize != null) {\n    headerTitleStyleSupported.fontSize = titleFontSize;\n  }\n  if (titleFontWeight != null) {\n    headerTitleStyleSupported.fontWeight = titleFontWeight;\n  }\n  const canGoBack = headerBack != null;\n  const headerLeftElement = headerLeft?.({\n    tintColor,\n    canGoBack,\n    label: headerBackTitle ?? headerBack?.title,\n    // `href` is only applicable to web\n    href: undefined\n  });\n  const headerRightElement = headerRight?.({\n    tintColor,\n    canGoBack\n  });\n  const headerTitleElement = typeof headerTitle === 'function' ? headerTitle({\n    tintColor,\n    children: titleText\n  }) : null;\n  const supportsHeaderSearchBar = typeof isSearchBarAvailableForCurrentPlatform === 'boolean' ? isSearchBarAvailableForCurrentPlatform :\n  // Fallback for older versions of react-native-screens\n  Platform.OS === 'ios' && SearchBar != null;\n  const hasHeaderSearchBar = supportsHeaderSearchBar && headerSearchBarOptions != null;\n\n  /**\n   * We need to set this in if:\n   * - Back button should stay visible when `headerLeft` is specified\n   * - If `headerTitle` for Android is specified, so we only need to remove the title and keep the back button\n   */\n  const backButtonInCustomView = headerBackVisible || Platform.OS === 'android' && headerTitleElement != null && headerLeftElement == null;\n  const translucent = headerBackground != null || headerTransparent ||\n  // When using a SearchBar or large title, the header needs to be translucent for it to work on iOS\n  (hasHeaderSearchBar || headerLargeTitleEnabled) && Platform.OS === 'ios' && headerTransparent !== false;\n  const isBackButtonDisplayModeAvailable =\n  // On iOS 14+\n  Platform.OS === 'ios' && parseInt(Platform.Version, 10) >= 14 && (\n  // Doesn't have custom styling, by default System, see: https://github.com/software-mansion/react-native-screens/pull/2105#discussion_r1565222738\n  backTitleFontFamily == null || backTitleFontFamily === 'System') && backTitleFontSize == null &&\n  // Back button menu is not disabled\n  headerBackButtonMenuEnabled !== false;\n  const isCenterViewRenderedAndroid = headerTitleAlign === 'center';\n  const leftItems = headerLeftItems?.({\n    tintColor,\n    canGoBack\n  });\n  let rightItems = headerRightItems?.({\n    tintColor,\n    canGoBack\n  });\n  if (rightItems) {\n    // iOS renders right items in reverse order\n    // So we need to reverse them here to match the order\n    rightItems = [...rightItems].reverse();\n  }\n  const children = /*#__PURE__*/_jsxs(_Fragment, {\n    children: [Platform.OS === 'ios' ? /*#__PURE__*/_jsxs(_Fragment, {\n      children: [leftItems ? leftItems.map((item, index) => {\n        if (item.type === 'custom') {\n          return /*#__PURE__*/_jsx(ScreenStackHeaderLeftView\n          // eslint-disable-next-line @eslint-react/no-array-index-key\n          , {\n            hidesSharedBackground: item.hidesSharedBackground,\n            children: item.element\n          }, index);\n        }\n        return null;\n      }) : headerLeftElement != null ? /*#__PURE__*/_jsx(ScreenStackHeaderLeftView, {\n        children: headerLeftElement\n      }) : null, headerTitleElement != null ? /*#__PURE__*/_jsx(ScreenStackHeaderCenterView, {\n        children: headerTitleElement\n      }) : null]\n    }) : /*#__PURE__*/_jsxs(_Fragment, {\n      children: [headerLeftElement != null || typeof headerTitle === 'function' ?\n      /*#__PURE__*/\n      // The style passed to header left, together with title element being wrapped\n      // in flex view is reqruied for proper header layout, in particular,\n      // for the text truncation to work.\n      _jsxs(ScreenStackHeaderLeftView, {\n        style: !isCenterViewRenderedAndroid ? {\n          flex: 1\n        } : null,\n        children: [headerLeftElement, headerTitleAlign !== 'center' ? typeof headerTitle === 'function' ? /*#__PURE__*/_jsx(View, {\n          style: {\n            flex: 1\n          },\n          children: headerTitleElement\n        }) : /*#__PURE__*/_jsx(View, {\n          style: {\n            flex: 1\n          },\n          children: /*#__PURE__*/_jsx(HeaderTitle, {\n            tintColor: tintColor,\n            style: headerTitleStyleSupported,\n            children: titleText\n          })\n        }) : null]\n      }) : null, isCenterViewRenderedAndroid ? /*#__PURE__*/_jsx(ScreenStackHeaderCenterView, {\n        children: typeof headerTitle === 'function' ? headerTitleElement : /*#__PURE__*/_jsx(HeaderTitle, {\n          tintColor: tintColor,\n          style: headerTitleStyleSupported,\n          children: titleText\n        })\n      }) : null]\n    }), headerBackIcon !== undefined || headerBackImageSource !== undefined ? /*#__PURE__*/_jsx(ScreenStackHeaderBackButtonImage, {\n      source: headerBackIcon?.source ?? headerBackImageSource\n    }) : null, Platform.OS === 'ios' && rightItems ? rightItems.map((item, index) => {\n      if (item.type === 'custom') {\n        return /*#__PURE__*/_jsx(ScreenStackHeaderRightView\n        // eslint-disable-next-line @eslint-react/no-array-index-key\n        , {\n          hidesSharedBackground: item.hidesSharedBackground,\n          children: item.element\n        }, index);\n      }\n      return null;\n    }) : headerRightElement != null ? /*#__PURE__*/_jsx(ScreenStackHeaderRightView, {\n      children: headerRightElement\n    }) : null, hasHeaderSearchBar ? /*#__PURE__*/_jsx(ScreenStackHeaderSearchBarView, {\n      children: /*#__PURE__*/_jsx(SearchBar, {\n        ...headerSearchBarOptions\n      })\n    }) : null]\n  });\n  return {\n    backButtonInCustomView,\n    backgroundColor: headerBackgroundColor,\n    backTitle: headerBackTitle,\n    backTitleVisible: isBackButtonDisplayModeAvailable ? undefined : headerBackButtonDisplayMode !== 'minimal',\n    backButtonDisplayMode: isBackButtonDisplayModeAvailable ? headerBackButtonDisplayMode : undefined,\n    backTitleFontFamily,\n    backTitleFontSize,\n    blurEffect: headerBlurEffect,\n    color: tintColor,\n    direction,\n    disableBackButtonMenu: headerBackButtonMenuEnabled === false,\n    hidden: headerShown === false,\n    hideBackButton: headerBackVisible === false,\n    hideShadow: headerShadowVisible === false || headerBackground != null || headerTransparent && headerShadowVisible !== true,\n    largeTitle: headerLargeTitleEnabled,\n    largeTitleBackgroundColor,\n    largeTitleColor,\n    largeTitleFontFamily,\n    largeTitleFontSize,\n    largeTitleFontWeight,\n    largeTitleHideShadow: headerLargeTitleShadowVisible === false,\n    title: titleText,\n    titleColor,\n    titleFontFamily,\n    titleFontSize,\n    titleFontWeight: String(titleFontWeight),\n    topInsetEnabled: headerTopInsetEnabled,\n    translucent: translucent === true,\n    children,\n    headerLeftBarButtonItems: processBarButtonItems(leftItems, colors, fonts),\n    headerRightBarButtonItems: processBarButtonItems(rightItems, colors, fonts),\n    experimental_userInterfaceStyle: dark ? 'dark' : 'light'\n  };\n}\n//# sourceMappingURL=useHeaderConfigProps.js.map","\"use strict\";\n\n// @ts-expect-error importing private module\nimport ReactNativeStyleAttributes from 'react-native/Libraries/Components/View/ReactNativeStyleAttributes';\nexport function processFonts(fontFamilies) {\n  const fontFamilyProcessor = ReactNativeStyleAttributes.fontFamily?.process;\n  if (typeof fontFamilyProcessor === 'function') {\n    return fontFamilies.map(fontFamilyProcessor);\n  }\n  return fontFamilies;\n}\n//# sourceMappingURL=FontProcessor.native.js.map","import * as SecureStore from \"expo-secure-store\";\nimport type { MobileUser } from \"../types/auth\";\n\nconst ACCESS_TOKEN_KEY = \"cc_access_token\";\nconst REFRESH_TOKEN_KEY = \"cc_refresh_token\";\nconst USER_KEY = \"cc_user\";\n\nexport async function saveSession(\n  accessToken: string,\n  refreshToken: string,\n  user: MobileUser\n): Promise<void> {\n  await Promise.all([\n    SecureStore.setItemAsync(ACCESS_TOKEN_KEY, accessToken),\n    SecureStore.setItemAsync(REFRESH_TOKEN_KEY, refreshToken),\n    SecureStore.setItemAsync(USER_KEY, JSON.stringify(user)),\n  ]);\n}\n\nexport async function readSession(): Promise<{\n  accessToken: string | null;\n  refreshToken: string | null;\n  user: MobileUser | null;\n}> {\n  const [accessToken, refreshToken, userRaw] = await Promise.all([\n    SecureStore.getItemAsync(ACCESS_TOKEN_KEY),\n    SecureStore.getItemAsync(REFRESH_TOKEN_KEY),\n    SecureStore.getItemAsync(USER_KEY),\n  ]);\n\n  let user: MobileUser | null = null;\n  if (userRaw) {\n    try {\n      user = JSON.parse(userRaw) as MobileUser;\n    } catch {\n      user = null;\n    }\n  }\n\n  return { accessToken, refreshToken, user };\n}\n\nexport async function clearSession(): Promise<void> {\n  await Promise.all([\n    SecureStore.deleteItemAsync(ACCESS_TOKEN_KEY),\n    SecureStore.deleteItemAsync(REFRESH_TOKEN_KEY),\n    SecureStore.deleteItemAsync(USER_KEY),\n  ]);\n}\n","import ExpoSecureStore from './ExpoSecureStore';\nimport { byteCountOverLimit, VALUE_BYTES_LIMIT } from './byteCounter';\n// @needsAudit\n/**\n * The data in the keychain item cannot be accessed after a restart until the device has been\n * unlocked once by the user. This may be useful if you need to access the item when the phone\n * is locked.\n */\nexport const AFTER_FIRST_UNLOCK = ExpoSecureStore.AFTER_FIRST_UNLOCK;\n// @needsAudit\n/**\n * Similar to `AFTER_FIRST_UNLOCK`, except the entry is not migrated to a new device when restoring\n * from a backup.\n */\nexport const AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY = ExpoSecureStore.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * The data in the keychain item can always be accessed regardless of whether the device is locked.\n * This is the least secure option.\n *\n * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK`.\n */\nexport const ALWAYS = ExpoSecureStore.ALWAYS;\n// @needsAudit\n/**\n * Similar to `WHEN_UNLOCKED_THIS_DEVICE_ONLY`, except the user must have set a passcode in order to\n * store an entry. If the user removes their passcode, the entry will be deleted.\n */\nexport const WHEN_PASSCODE_SET_THIS_DEVICE_ONLY = ExpoSecureStore.WHEN_PASSCODE_SET_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * Similar to `ALWAYS`, except the entry is not migrated to a new device when restoring from a backup.\n *\n * @deprecated Use an accessibility level that provides some user protection, such as `AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY`.\n */\nexport const ALWAYS_THIS_DEVICE_ONLY = ExpoSecureStore.ALWAYS_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * The data in the keychain item can be accessed only while the device is unlocked by the user.\n */\nexport const WHEN_UNLOCKED = ExpoSecureStore.WHEN_UNLOCKED;\n// @needsAudit\n/**\n * Similar to `WHEN_UNLOCKED`, except the entry is not migrated to a new device when restoring from\n * a backup.\n */\nexport const WHEN_UNLOCKED_THIS_DEVICE_ONLY = ExpoSecureStore.WHEN_UNLOCKED_THIS_DEVICE_ONLY;\n// @needsAudit\n/**\n * Returns whether the SecureStore API is enabled on the current device. This does not check the app\n * permissions.\n *\n * @return Promise which fulfils with a `boolean`, indicating whether the SecureStore API is available\n * on the current device. Currently, this resolves `true` on Android and iOS only.\n */\nexport async function isAvailableAsync() {\n    return !!ExpoSecureStore.getValueWithKeyAsync;\n}\n// @needsAudit\n/**\n * Delete the value associated with the provided key.\n *\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that rejects if the value can't be deleted.\n */\nexport async function deleteItemAsync(key, options = {}) {\n    ensureValidKey(key);\n    await ExpoSecureStore.deleteValueWithKeyAsync(key, options);\n}\n// @needsAudit\n/**\n * Reads the stored value associated with the provided key.\n *\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that resolves to the previously stored value. It resolves with `null` if there is no entry\n * for the given key or if the key has been invalidated. It rejects if an error occurs while retrieving the value.\n *\n * > Keys are invalidated by the system when biometrics change, such as adding a new fingerprint or changing the face profile used for face recognition.\n * > After a key has been invalidated, it becomes impossible to read its value.\n * > This only applies to values stored with `requireAuthentication` set to `true`.\n */\nexport async function getItemAsync(key, options = {}) {\n    ensureValidKey(key);\n    return await ExpoSecureStore.getValueWithKeyAsync(key, options);\n}\n// @needsAudit\n/**\n * Stores a key–value pair.\n *\n * @param key The key to associate with the stored value. Keys may contain alphanumeric characters, `.`, `-`, and `_`.\n * @param value The value to store. Size limit is 2048 bytes.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return A promise that rejects if value cannot be stored on the device.\n */\nexport async function setItemAsync(key, value, options = {}) {\n    ensureValidKey(key);\n    if (!isValidValue(value)) {\n        throw new Error(`Invalid value provided to SecureStore. Values must be strings; consider JSON-encoding your values if they are serializable.`);\n    }\n    await ExpoSecureStore.setValueWithKeyAsync(value, key, options);\n}\n/**\n * Stores a key–value pair synchronously.\n * > **Note:** This function blocks the JavaScript thread, so the application may not be interactive when the `requireAuthentication` option is set to `true` until the user authenticates.\n *\n * @param key The key to associate with the stored value. Keys may contain alphanumeric characters, `.`, `-`, and `_`.\n * @param value The value to store. Size limit is 2048 bytes.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n */\nexport function setItem(key, value, options = {}) {\n    ensureValidKey(key);\n    if (!isValidValue(value)) {\n        throw new Error(`Invalid value provided to SecureStore. Values must be strings; consider JSON-encoding your values if they are serializable.`);\n    }\n    return ExpoSecureStore.setValueWithKeySync(value, key, options);\n}\n/**\n * Synchronously reads the stored value associated with the provided key.\n * > **Note:** This function blocks the JavaScript thread, so the application may not be interactive when reading a value with `requireAuthentication`\n * > option set to `true` until the user authenticates.\n * @param key The key that was used to store the associated value.\n * @param options An [`SecureStoreOptions`](#securestoreoptions) object.\n *\n * @return Previously stored value. It resolves with `null` if there is no entry\n * for the given key or if the key has been invalidated.\n */\nexport function getItem(key, options = {}) {\n    ensureValidKey(key);\n    return ExpoSecureStore.getValueWithKeySync(key, options);\n}\n/**\n * Checks if the value can be saved with `requireAuthentication` option enabled.\n * @return `true` if the device supports biometric authentication and the enrolled method is sufficiently secure. Otherwise, returns `false`. Always returns false on tvOS.\n * @platform android\n * @platform ios\n */\nexport function canUseBiometricAuthentication() {\n    return ExpoSecureStore.canUseBiometricAuthentication();\n}\nfunction ensureValidKey(key) {\n    if (!isValidKey(key)) {\n        throw new Error(`Invalid key provided to SecureStore. Keys must not be empty and contain only alphanumeric characters, \".\", \"-\", and \"_\".`);\n    }\n}\nfunction isValidKey(key) {\n    return typeof key === 'string' && /^[\\w.-]+$/.test(key);\n}\nfunction isValidValue(value) {\n    if (typeof value !== 'string') {\n        return false;\n    }\n    if (byteCountOverLimit(value, VALUE_BYTES_LIMIT)) {\n        console.warn(`Value being stored in SecureStore is larger than ${VALUE_BYTES_LIMIT} bytes and it may not be stored successfully. In a future SDK version, this call may throw an error.`);\n    }\n    return true;\n}\n//# sourceMappingURL=SecureStore.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoSecureStore');\n//# sourceMappingURL=ExpoSecureStore.js.map","export const VALUE_BYTES_LIMIT = 2048;\n// note this probably could be JS-engine dependent\n// inspired by https://stackoverflow.com/a/39488643\nexport function byteCountOverLimit(value, limit) {\n    let bytes = 0;\n    for (let i = 0; i < value.length; i++) {\n        const codePoint = value.charCodeAt(i);\n        // Lone surrogates cannot be passed to encodeURI\n        if (codePoint >= 0xd800 && codePoint < 0xe000) {\n            if (codePoint < 0xdc00 && i + 1 < value.length) {\n                const next = value.charCodeAt(i + 1);\n                if (next >= 0xdc00 && next < 0xe000) {\n                    bytes += 4;\n                    if (bytes > limit) {\n                        return true;\n                    }\n                    i++;\n                    continue;\n                }\n            }\n        }\n        bytes += codePoint < 0x80 ? 1 : codePoint < 0x800 ? 2 : 3;\n        if (bytes > limit) {\n            return true;\n        }\n    }\n    return bytes > limit;\n}\n//# sourceMappingURL=byteCounter.js.map","import { Platform } from \"react-native\";\nimport apiClient, { ApiClientError } from \"./apiClient\";\nimport type { ApiEnvelope, LoginData, MobileUser, RefreshData } from \"../types/auth\";\n\nfunction buildDevicePayload() {\n  return {\n    device_id: `mobile-${Platform.OS}`,\n    device_name: Platform.OS,\n    platform: Platform.OS,\n  };\n}\n\nasync function postWithEndpointFallback<T>(\n  endpoints: string[],\n  body: unknown,\n  headers: Record<string, string>\n): Promise<T> {\n  // Essaie tous les endpoints sauf le dernier en ignorant les 404 (fallback).\n  // Le dernier endpoint propage ses erreurs telles quelles.\n  for (let index = 0; index < endpoints.length - 1; index += 1) {\n    try {\n      const response = await apiClient.post<T>(endpoints[index], body, { headers });\n      return response.data;\n    } catch (error) {\n      const is404 = error instanceof ApiClientError && error.status === 404;\n      if (!is404) {\n        throw error;\n      }\n    }\n  }\n  const last = await apiClient.post<T>(endpoints[endpoints.length - 1], body, { headers });\n  return last.data;\n}\n\nasync function getWithEndpointFallback<T>(endpoints: string[]): Promise<T> {\n  for (let index = 0; index < endpoints.length - 1; index += 1) {\n    try {\n      const response = await apiClient.get<T>(endpoints[index]);\n      return response.data;\n    } catch (error) {\n      const is404 = error instanceof ApiClientError && error.status === 404;\n      if (!is404) {\n        throw error;\n      }\n    }\n  }\n  const last = await apiClient.get<T>(endpoints[endpoints.length - 1]);\n  return last.data;\n}\n\n// L'API auth mobile vit sous /api/mobile/* sur le backend. Le baseUrl\n// stocke pointe sur /api (racine), donc on prefixe explicitement.\nexport async function login(\n  email: string,\n  password: string,\n  inviteToken?: string | null\n): Promise<LoginData> {\n  const payload = await postWithEndpointFallback<ApiEnvelope<LoginData>>(\n    [\"/mobile/login.php\", \"/mobile/login\"],\n    {\n      email,\n      password,\n      ...(inviteToken ? { invite_token: inviteToken } : {}),\n      ...buildDevicePayload(),\n    },\n    {\n      \"X-Skip-Auth\": \"1\",\n      \"X-Skip-Refresh\": \"1\",\n    }\n  );\n\n  if (!payload?.success || !payload.data) {\n    throw new Error(payload?.message || \"Login failed\");\n  }\n\n  return payload.data;\n}\n\nexport async function me(): Promise<MobileUser> {\n  const payload = await getWithEndpointFallback<ApiEnvelope<{ user: MobileUser }>>([\n    \"/mobile/me.php\",\n    \"/mobile/me\",\n  ]);\n\n  if (!payload?.success || !payload.data?.user) {\n    throw new Error(payload?.message || \"Invalid session\");\n  }\n\n  return payload.data.user;\n}\n\nexport async function refresh(refreshToken: string): Promise<RefreshData> {\n  const payload = await postWithEndpointFallback<ApiEnvelope<RefreshData>>(\n    [\"/mobile/refresh.php\", \"/mobile/refresh\"],\n    {\n      refresh_token: refreshToken,\n      ...buildDevicePayload(),\n    },\n    {\n      \"X-Skip-Auth\": \"1\",\n      \"X-Skip-Refresh\": \"1\",\n    }\n  );\n\n  if (!payload?.success || !payload.data) {\n    throw new Error(payload?.message || \"Refresh failed\");\n  }\n\n  return payload.data;\n}\n\nexport async function logout(refreshToken: string): Promise<void> {\n  await postWithEndpointFallback<ApiEnvelope<null>>(\n    [\"/mobile/logout.php\", \"/mobile/logout\"],\n    {\n      refresh_token: refreshToken,\n    },\n    {\n      \"X-Skip-Auth\": \"1\",\n      \"X-Skip-Refresh\": \"1\",\n    }\n  );\n}\n","import { Platform } from \"react-native\";\nimport {\n  getRequestTimeoutMs,\n  requireEnvironmentBaseUrl,\n} from \"../core/environmentService\";\nimport { getMobileConfigForBaseUrl } from \"../core/mobileConfigService\";\nimport type { ApiEnvelope, RefreshData } from \"../types/auth\";\nimport { clearSession, readSession, saveSession } from \"./tokenStorage\";\n\ntype Primitive = string | number | boolean | null | undefined;\n\nexport type ApiRequestConfig = {\n  headers?: Record<string, string>;\n  params?: Record<string, Primitive>;\n  signal?: AbortSignal;\n};\n\ntype ApiResponse<T> = {\n  data: T;\n  status: number;\n  headers: Headers;\n};\n\ntype InternalRequestConfig = ApiRequestConfig & {\n  _retry?: boolean;\n};\n\nexport class ApiClientError extends Error {\n  status?: number;\n  // Code metier renvoye par le backend dans le body (ex: \"SESSION_REVOKED\").\n  // Permet aux appelants de distinguer un 401 \"evince\" d'un 401 \"expire\".\n  code?: string;\n\n  constructor(message: string, status?: number, code?: string) {\n    super(message);\n    this.name = \"ApiClientError\";\n    this.status = status;\n    this.code = code;\n  }\n}\n\nlet hydrated = false;\nlet accessTokenCache: string | null = null;\nlet refreshTokenCache: string | null = null;\nlet refreshPromise: Promise<string | null> | null = null;\n\n// Code envoye par le guard per-seat (Lot 5) quand le compte a ete reconnecte\n// ailleurs (web ou autre appareil). Le backend l'expose dans le body du 401\n// via le claim `sepoch` compare a chaque requete par MobileJwtMiddleware.\nconst SESSION_REVOKED_CODE = \"SESSION_REVOKED\";\n\n// Handler global \"session evincee\" : l'apiClient etant decouple de l'UI, App\n// l'enregistre au montage pour pouvoir ramener l'utilisateur a l'ecran de login\n// avec un message dedie. Invoque UNE fois par detection de SESSION_REVOKED.\nlet sessionRevokedHandler: (() => void) | null = null;\n\nexport function registerSessionRevokedHandler(handler: (() => void) | null): void {\n  sessionRevokedHandler = handler;\n}\n\nfunction buildDevicePayload() {\n  return {\n    device_id: `mobile-${Platform.OS}`,\n    device_name: Platform.OS,\n    platform: Platform.OS,\n  };\n}\n\nfunction normalizeHeaders(headers?: Record<string, string>): Record<string, string> {\n  return headers ? { ...headers } : {};\n}\n\nfunction getHeader(config: InternalRequestConfig, name: string): string {\n  const headers = normalizeHeaders(config.headers);\n  const matchKey = Object.keys(headers).find((key) => key.toLowerCase() === name.toLowerCase());\n  return matchKey ? String(headers[matchKey]) : \"\";\n}\n\nfunction setHeader(config: InternalRequestConfig, name: string, value: string): void {\n  const headers = normalizeHeaders(config.headers);\n  headers[name] = value;\n  config.headers = headers;\n}\n\nfunction deleteHeader(config: InternalRequestConfig, name: string): void {\n  const headers = normalizeHeaders(config.headers);\n  const matchKey = Object.keys(headers).find((key) => key.toLowerCase() === name.toLowerCase());\n  if (matchKey) {\n    delete headers[matchKey];\n  }\n  config.headers = headers;\n}\n\nasync function buildUrl(path: string, params?: Record<string, Primitive>): Promise<string> {\n  const baseUrl = await requireEnvironmentBaseUrl();\n  const basePath = path.startsWith(\"http\") ? path : `${baseUrl}${path}`;\n\n  if (!params || Object.keys(params).length === 0) {\n    return basePath;\n  }\n\n  const search = new URLSearchParams();\n  Object.entries(params).forEach(([key, value]) => {\n    if (value !== null && value !== undefined) {\n      search.append(key, String(value));\n    }\n  });\n\n  const queryString = search.toString();\n  if (!queryString) {\n    return basePath;\n  }\n\n  return `${basePath}${basePath.includes(\"?\") ? \"&\" : \"?\"}${queryString}`;\n}\n\n// Renvoie un signal d'abort temporise + un disposer. Le disposer DOIT etre\n// appele une fois la requete reglee (clearTimeout) : sinon le timer de 15 s\n// survit a la reponse -> il garde l'event loop en vie (worker jest qui ne quitte\n// pas) et, en prod, laisse un abort() fantome programme par requete.\nfunction createTimeoutSignal(timeoutMs: number): { signal: AbortSignal; clear: () => void } {\n  const controller = new AbortController();\n  const timer = setTimeout(() => controller.abort(), timeoutMs);\n  return { signal: controller.signal, clear: () => clearTimeout(timer) };\n}\n\nasync function hydrateTokensFromStorage(): Promise<void> {\n  if (hydrated) {\n    return;\n  }\n  const session = await readSession();\n  accessTokenCache = session.accessToken;\n  refreshTokenCache = session.refreshToken;\n  hydrated = true;\n}\n\nasync function refreshAccessToken(): Promise<string | null> {\n  try {\n    const baseUrl = await requireEnvironmentBaseUrl();\n    const refreshEndpoints = [`${baseUrl}/mobile/refresh.php`, `${baseUrl}/mobile/refresh`];\n\n    let payload: ApiEnvelope<RefreshData> | null = null;\n    let lastMessage: string | null = null;\n\n    for (let index = 0; index < refreshEndpoints.length; index += 1) {\n      const timeout = createTimeoutSignal(getRequestTimeoutMs());\n      let response: Response;\n      try {\n        response = await fetch(refreshEndpoints[index], {\n          method: \"POST\",\n          headers: { \"Content-Type\": \"application/json\" },\n          body: JSON.stringify({\n            refresh_token: refreshTokenCache,\n            ...buildDevicePayload(),\n          }),\n          signal: timeout.signal,\n        });\n      } finally {\n        timeout.clear();\n      }\n\n      try {\n        payload = (await response.json()) as ApiEnvelope<RefreshData>;\n      } catch {\n        payload = null;\n      }\n\n      if (response.ok && payload?.success && payload.data) {\n        break;\n      }\n\n      if (payload?.message) {\n        lastMessage = payload.message;\n      }\n\n      const is404 = response.status === 404;\n      const hasNext = index < refreshEndpoints.length - 1;\n      if (!(is404 && hasNext)) {\n        throw new Error(lastMessage || \"Refresh failed\");\n      }\n    }\n\n    const refreshed = payload!.data!;\n    accessTokenCache = refreshed.access_token;\n    refreshTokenCache = refreshed.refresh_token;\n    hydrated = true;\n\n    await saveSession(refreshed.access_token, refreshed.refresh_token, refreshed.user);\n    return refreshed.access_token;\n  } catch {\n    await clearSession();\n    accessTokenCache = null;\n    refreshTokenCache = null;\n    hydrated = true;\n    return null;\n  }\n}\n\nasync function applyRequestHeaders(\n  method: \"GET\" | \"POST\",\n  config: InternalRequestConfig,\n  baseUrl: string\n): Promise<{ skipAuth: boolean; skipRefresh: boolean }> {\n  const storedConfig = await getMobileConfigForBaseUrl(baseUrl);\n  const tenantId = storedConfig?.config.tenant_id;\n  if (tenantId !== null && tenantId !== undefined && getHeader(config, \"X-Tenant-Id\") === \"\") {\n    setHeader(config, \"X-Tenant-Id\", String(tenantId));\n  }\n\n  const skipAuth = getHeader(config, \"X-Skip-Auth\") === \"1\";\n  const skipRefresh = getHeader(config, \"X-Skip-Refresh\") === \"1\";\n  deleteHeader(config, \"X-Skip-Auth\");\n  deleteHeader(config, \"X-Skip-Refresh\");\n\n  if (!skipAuth && accessTokenCache && getHeader(config, \"Authorization\") === \"\") {\n    setHeader(config, \"Authorization\", `Bearer ${accessTokenCache}`);\n  }\n\n  if (method === \"POST\" && getHeader(config, \"Content-Type\") === \"\") {\n    setHeader(config, \"Content-Type\", \"application/json\");\n  }\n\n  return { skipAuth, skipRefresh };\n}\n\nasync function executeFetch(\n  method: \"GET\" | \"POST\",\n  url: string,\n  body: unknown,\n  config: InternalRequestConfig\n): Promise<Response> {\n  const timeout = createTimeoutSignal(getRequestTimeoutMs());\n  const signal = config.signal ?? timeout.signal;\n  try {\n    return await fetch(url, {\n      method,\n      headers: config.headers,\n      body: method === \"POST\" ? JSON.stringify(body ?? {}) : undefined,\n      signal,\n    });\n  } catch (error) {\n    const message = error instanceof Error ? error.message : \"Network error\";\n    throw new ApiClientError(message);\n  } finally {\n    timeout.clear();\n  }\n}\n\nasync function parseJsonSafely<T>(response: Response): Promise<T | null> {\n  try {\n    return (await response.json()) as T;\n  } catch {\n    return null;\n  }\n}\n\nasync function handle401Retry<T>(\n  method: \"GET\" | \"POST\",\n  path: string,\n  body: unknown,\n  mergedConfig: InternalRequestConfig\n): Promise<ApiResponse<T>> {\n  await hydrateTokensFromStorage();\n  if (!refreshTokenCache) {\n    throw new ApiClientError(\"Unauthorized\", 401);\n  }\n\n  refreshPromise ??= refreshAccessToken().finally(() => {\n    refreshPromise = null;\n  });\n\n  const newAccessToken = await refreshPromise;\n  if (!newAccessToken) {\n    throw new ApiClientError(\"Unauthorized\", 401);\n  }\n\n  const retryConfig: InternalRequestConfig = { ...mergedConfig, _retry: true };\n  setHeader(retryConfig, \"Authorization\", `Bearer ${newAccessToken}`);\n  return request<T>(method, path, body, retryConfig);\n}\n\nfunction extractResponseCode<T>(payload: T | null): string | null {\n  if (payload && typeof payload === \"object\" && \"code\" in payload) {\n    const raw = (payload as { code?: unknown }).code;\n    return typeof raw === \"string\" && raw ? raw : null;\n  }\n  return null;\n}\n\nfunction buildErrorMessage<T>(payload: T | null, fallback: string): string {\n  if (payload && typeof payload === \"object\" && \"message\" in payload) {\n    const raw = (payload as { message?: unknown }).message;\n    if (typeof raw === \"string\" && raw) {\n      return raw;\n    }\n  }\n  return fallback;\n}\n\nfunction buildErrorFromResponse<T>(payload: T | null, status: number): ApiClientError {\n  // On propage le code metier du body (ex: \"BILLING_WALL\") sur l'erreur, pas\n  // seulement pour SESSION_REVOKED : la sync s'en sert pour distinguer un 402\n  // mur de facturation d'un 402 generique (cf. classifySyncError).\n  const code = extractResponseCode(payload) ?? undefined;\n  if (payload && typeof payload === \"object\" && \"message\" in payload) {\n    return new ApiClientError(buildErrorMessage(payload, \"Request failed\"), status, code);\n  }\n  return new ApiClientError(`HTTP ${status}`, status, code);\n}\n\nasync function request<T>(\n  method: \"GET\" | \"POST\",\n  path: string,\n  body?: unknown,\n  config: InternalRequestConfig = {}\n): Promise<ApiResponse<T>> {\n  await hydrateTokensFromStorage();\n  const baseUrl = await requireEnvironmentBaseUrl();\n\n  const mergedConfig: InternalRequestConfig = {\n    ...config,\n    headers: normalizeHeaders(config.headers),\n  };\n\n  const { skipRefresh } = await applyRequestHeaders(method, mergedConfig, baseUrl);\n  const url = await buildUrl(path, mergedConfig.params);\n  const response = await executeFetch(method, url, body, mergedConfig);\n  const payload = await parseJsonSafely<T>(response);\n\n  // Lot 5 (verrouillage session unique) : un 401 portant code=SESSION_REVOKED\n  // signifie que le compte s'est reconnecte ailleurs. Le refresh token a deja\n  // ete revoque cote backend -> inutile (et trompeur) de tenter handle401Retry.\n  // On purge la session et on delegue le re-login a App via le handler global.\n  if (response.status === 401 && extractResponseCode(payload) === SESSION_REVOKED_CODE) {\n    await clearSession();\n    accessTokenCache = null;\n    refreshTokenCache = null;\n    hydrated = true;\n    sessionRevokedHandler?.();\n    throw new ApiClientError(\n      buildErrorMessage(payload, \"Session revoquee\"),\n      401,\n      SESSION_REVOKED_CODE\n    );\n  }\n\n  if (response.status === 401 && !skipRefresh && !mergedConfig._retry) {\n    return handle401Retry<T>(method, path, body, mergedConfig);\n  }\n\n  if (!response.ok) {\n    throw buildErrorFromResponse(payload, response.status);\n  }\n\n  return {\n    data: (payload ?? {}) as T,\n    status: response.status,\n    headers: response.headers,\n  };\n}\n\nconst apiClient = {\n  get<T>(path: string, config?: ApiRequestConfig): Promise<ApiResponse<T>> {\n    return request<T>(\"GET\", path, undefined, config);\n  },\n  post<T>(path: string, body?: unknown, config?: ApiRequestConfig): Promise<ApiResponse<T>> {\n    return request<T>(\"POST\", path, body, config);\n  },\n};\n\nexport function isApiClientError(error: unknown): error is ApiClientError {\n  return error instanceof ApiClientError;\n}\n\nexport async function initializeApiClientAuth(): Promise<void> {\n  await hydrateTokensFromStorage();\n}\n\nexport function setApiAuthTokens(\n  accessToken: string | null,\n  refreshToken: string | null\n): void {\n  accessTokenCache = accessToken;\n  refreshTokenCache = refreshToken;\n  hydrated = true;\n}\n\nexport function clearApiAuthTokens(): void {\n  accessTokenCache = null;\n  refreshTokenCache = null;\n  hydrated = true;\n}\n\n// Acces lecture-seule au token courant. Utile pour le composant Image\n// (RN supporte source.headers, mais le composant n'a pas acces au request()\n// du client). Hydrate depuis SecureStore au premier appel pour eviter null\n// quand le tableau de bord est ouvert juste apres un cold start.\nexport async function getApiAccessToken(): Promise<string | null> {\n  await hydrateTokensFromStorage();\n  return accessTokenCache;\n}\n\n// URL absolue construite a partir de la baseUrl + path relatif (commencant\n// par \"/\"). Utilisee pour les fichiers servis par l'API (preview photos)\n// que le mobile doit charger via <Image source={{ uri, headers }} />.\nexport async function buildApiUrl(path: string): Promise<string> {\n  return buildUrl(path);\n}\n\nexport default apiClient;\n","import * as SecureStore from \"expo-secure-store\";\n\nconst API_BASE_URL_KEY = \"mf_api_base_url\";\nconst INVITE_TOKEN_KEY = \"mf_invite_token\";\nconst REQUEST_TIMEOUT_MS = 15000;\n\nfunction normalizeUrl(value: string): string {\n  const trimmed = value.trim();\n  if (!trimmed) {\n    throw new Error(\"L'URL de l'instance est requise.\");\n  }\n\n  const withProtocol = /^https?:\\/\\//i.test(trimmed) ? trimmed : `https://${trimmed}`;\n\n  let parsed: URL;\n  try {\n    parsed = new URL(withProtocol);\n  } catch {\n    throw new Error(\"URL d'instance invalide.\");\n  }\n\n  // On exige https:// en production : sans TLS, le Bearer JWT (et les\n  // identifiants au login) transiteraient en clair -> MITM trivial via un QR\n  // d'onboarding ou une URL saisie pointant sur http://attaquant. http:// reste\n  // tolere uniquement en developpement (__DEV__) pour cibler un backend local.\n  const isHttps = parsed.protocol === \"https:\";\n  const devHttpAllowed =\n    parsed.protocol === \"http:\" && typeof __DEV__ !== \"undefined\" && __DEV__;\n  if (!isHttps && !devHttpAllowed) {\n    throw new Error(\"L'URL doit utiliser https:// (http n'est autorise qu'en developpement).\");\n  }\n\n  let cleaned = parsed.toString();\n  while (cleaned.endsWith(\"/\")) {\n    cleaned = cleaned.slice(0, -1);\n  }\n\n  // Strip trailing /mobile : on accepte les URLs d'onboarding finissant par\n  // .../api/mobile (forme historique, suggeree dans le placeholder de\n  // l'OnboardingScreen) tout en stockant la racine /api. Les endpoints metier\n  // sont a /api/X.php et l'auth a /api/mobile/X.php — un seul stockage gere\n  // les deux via concatenation de path.\n  if (cleaned.endsWith(\"/api/mobile\")) {\n    cleaned = cleaned.slice(0, -\"/mobile\".length);\n  }\n\n  return cleaned;\n}\n\nexport function getRequestTimeoutMs(): number {\n  return REQUEST_TIMEOUT_MS;\n}\n\nexport async function setEnvironmentBaseUrl(value: string): Promise<string> {\n  const normalized = normalizeUrl(value);\n  await SecureStore.setItemAsync(API_BASE_URL_KEY, normalized);\n  return normalized;\n}\n\nexport async function getEnvironmentBaseUrl(): Promise<string | null> {\n  const value = await SecureStore.getItemAsync(API_BASE_URL_KEY);\n  if (!value) {\n    return null;\n  }\n\n  try {\n    return normalizeUrl(value);\n  } catch {\n    return null;\n  }\n}\n\nexport async function requireEnvironmentBaseUrl(): Promise<string> {\n  const value = await getEnvironmentBaseUrl();\n  if (!value) {\n    throw new Error(\"Aucune instance configuree. Configurez l'URL avant de vous connecter.\");\n  }\n  return value;\n}\n\nexport async function clearEnvironmentConfig(): Promise<void> {\n  await Promise.all([\n    SecureStore.deleteItemAsync(API_BASE_URL_KEY),\n    SecureStore.deleteItemAsync(INVITE_TOKEN_KEY),\n  ]);\n}\n\nexport async function saveInviteToken(token: string | null): Promise<void> {\n  if (!token || token.trim() === \"\") {\n    await SecureStore.deleteItemAsync(INVITE_TOKEN_KEY);\n    return;\n  }\n  await SecureStore.setItemAsync(INVITE_TOKEN_KEY, token.trim());\n}\n\nexport async function getInviteToken(): Promise<string | null> {\n  const value = await SecureStore.getItemAsync(INVITE_TOKEN_KEY);\n  return value && value.trim() !== \"\" ? value : null;\n}\n","import * as SecureStore from \"expo-secure-store\";\nimport type { MobileConfig, StoredMobileConfig } from \"../types/mobileConfig\";\n\nconst MOBILE_CONFIG_KEY = \"mf_mobile_config\";\n\nlet mobileConfigCache: StoredMobileConfig | null = null;\n\nfunction isValidHexColor(value: string): boolean {\n  return /^#[0-9A-Fa-f]{6}$/.test(value);\n}\n\nfunction stripTrailingSlashes(value: string): string {\n  let out = value;\n  while (out.endsWith(\"/\")) {\n    out = out.slice(0, -1);\n  }\n  return out;\n}\n\nfunction sanitizeMobileConfig(raw: MobileConfig): MobileConfig {\n  const appName = String(raw.app_name || \"\").trim();\n  const primaryColor = String(raw.primary_color || \"\").trim();\n\n  if (!appName) {\n    throw new Error(\"mobile-config invalide: app_name manquant.\");\n  }\n\n  if (!isValidHexColor(primaryColor)) {\n    throw new Error(\"mobile-config invalide: primary_color doit etre un hex #RRGGBB.\");\n  }\n\n  const supportEmail = raw.support_email ? String(raw.support_email).trim() : \"\";\n  const supportPhone = raw.support_phone ? String(raw.support_phone).trim() : \"\";\n\n  return {\n    app_name: appName,\n    primary_color: primaryColor,\n    logo_url: raw.logo_url ? String(raw.logo_url).trim() : null,\n    tenant_id: raw.tenant_id ?? null,\n    support_email: supportEmail || null,\n    support_phone: supportPhone || null,\n  };\n}\n\nexport async function saveMobileConfig(\n  baseUrl: string,\n  config: MobileConfig\n): Promise<StoredMobileConfig> {\n  const stored: StoredMobileConfig = {\n    base_url: stripTrailingSlashes(baseUrl),\n    config: sanitizeMobileConfig(config),\n    saved_at: new Date().toISOString(),\n  };\n\n  mobileConfigCache = stored;\n  await SecureStore.setItemAsync(MOBILE_CONFIG_KEY, JSON.stringify(stored));\n  return stored;\n}\n\nexport async function getMobileConfig(): Promise<StoredMobileConfig | null> {\n  if (mobileConfigCache) {\n    return mobileConfigCache;\n  }\n\n  const raw = await SecureStore.getItemAsync(MOBILE_CONFIG_KEY);\n  if (!raw) {\n    return null;\n  }\n\n  try {\n    const parsed = JSON.parse(raw) as StoredMobileConfig;\n    if (!parsed || typeof parsed.base_url !== \"string\" || !parsed.config) {\n      return null;\n    }\n\n    const normalized: StoredMobileConfig = {\n      base_url: stripTrailingSlashes(parsed.base_url),\n      config: sanitizeMobileConfig(parsed.config),\n      saved_at: String(parsed.saved_at || \"\"),\n    };\n\n    mobileConfigCache = normalized;\n    return normalized;\n  } catch {\n    return null;\n  }\n}\n\nexport async function getMobileConfigForBaseUrl(\n  baseUrl: string\n): Promise<StoredMobileConfig | null> {\n  const stored = await getMobileConfig();\n  if (!stored) {\n    return null;\n  }\n\n  return stored.base_url === stripTrailingSlashes(baseUrl) ? stored : null;\n}\n\nexport async function clearMobileConfig(): Promise<void> {\n  mobileConfigCache = null;\n  await SecureStore.deleteItemAsync(MOBILE_CONFIG_KEY);\n}\n","import apiClient from \"./apiClient\";\nimport {\n  applyServerStepsDelta,\n  getInterventionDetailById,\n  getInterventionsSnapshot,\n  saveInterventionDetail,\n  saveInterventionsSnapshot,\n} from \"../core/localDatabase\";\nimport { requireEnvironmentBaseUrl } from \"../core/environmentService\";\nimport { readSession } from \"./tokenStorage\";\nimport { enqueueOfflineAction } from \"./syncService\";\nimport type { ApiEnvelope } from \"../types/auth\";\nimport type {\n  InterventionsPayload,\n  MobileInterventionDetails,\n  MobilePrecheckPayload,\n  MobilePrecheckState,\n  MobileStep,\n} from \"../types/intervention\";\n\ntype InterventionsQuery = {\n  date_debut?: string;\n  date_fin?: string;\n};\n\nexport async function getMyInterventions(\n  query: InterventionsQuery = {}\n): Promise<InterventionsPayload> {\n  try {\n    const response = await apiClient.get<ApiEnvelope<InterventionsPayload>>(\n      \"/mobile/interventions.php\",\n      {\n        params: query,\n      }\n    );\n\n    if (!response.data?.success || !response.data.data) {\n      throw new Error(response.data?.message || \"Unable to fetch interventions\");\n    }\n\n    const payload = response.data.data;\n    const items = Array.isArray(payload.items) ? payload.items : [];\n    await saveInterventionsSnapshot(items);\n\n    return {\n      items,\n      count: Number.isFinite(payload.count)\n        ? Number(payload.count)\n        : items.length,\n      technicien_id: Number(payload.technicien_id || 0),\n      date_debut: String(payload.date_debut || \"\"),\n      date_fin: String(payload.date_fin || \"\"),\n    };\n  } catch (error) {\n    const local = await getInterventionsSnapshot();\n    if (local.items.length > 0) {\n      return {\n        items: local.items,\n        count: local.count,\n        technicien_id: 0,\n        date_debut: \"\",\n        date_fin: \"\",\n      };\n    }\n    throw error;\n  }\n}\n\nexport async function getInterventionById(\n  id: number\n): Promise<MobileInterventionDetails> {\n  try {\n    const response = await apiClient.get<\n      ApiEnvelope<{ item: MobileInterventionDetails }>\n    >(\"/mobile/intervention.php\", {\n      params: { id },\n    });\n\n    if (!response.data?.success || !response.data.data?.item) {\n      throw new Error(response.data?.message || \"Unable to fetch intervention\");\n    }\n\n    const item = response.data.data.item;\n    await saveInterventionDetail(item);\n\n    // Prefetch des steps dans la foulee : le WorkflowInterventionScreen\n    // lit depuis la base locale, donc il faut que les steps soient synces\n    // ici sinon l'ecran affiche \"aucune etape disponible\". On n'echoue pas\n    // le detail si le fetch steps plante (l'utilisateur verra la mission\n    // sans les etapes, ce qui est mieux que rien).\n    try {\n      await fetchAndStoreInterventionSteps(id);\n    } catch {\n      // best-effort: l'utilisateur peut re-ouvrir l'ecran plus tard\n    }\n\n    return item;\n  } catch (error) {\n    const local = await getInterventionDetailById(id);\n    if (local) {\n      return local.item;\n    }\n    throw error;\n  }\n}\n\n/**\n * Fetch les etapes workflow d'une intervention depuis le backend et les\n * persiste en base locale. Peut etre appelee ponctuellement (apres\n * getInterventionById, apres start, ou via pull-to-refresh).\n *\n * Retourne aussi la version + status du workflow : la version est requise\n * pour appeler complete_workflow (verrou optimiste serveur).\n */\nexport async function fetchAndStoreInterventionSteps(\n  interventionId: number\n): Promise<{ count: number; workflowVersion: number; workflowStatus: string }> {\n  const response = await apiClient.get<\n    ApiEnvelope<{\n      items: MobileStep[];\n      workflow?: { version?: number; status?: string };\n    }>\n  >(\"/mobile/intervention_steps.php\", {\n    params: { id: interventionId },\n  });\n\n  if (!response.data?.success || !response.data.data?.items) {\n    return { count: 0, workflowVersion: 0, workflowStatus: \"unknown\" };\n  }\n\n  const steps = response.data.data.items;\n  const wf = response.data.data.workflow ?? {};\n  const count = steps.length > 0 ? await applyServerStepsDelta(steps) : 0;\n\n  return {\n    count,\n    workflowVersion: Number(wf.version ?? 0),\n    workflowStatus: String(wf.status ?? \"in_progress\"),\n  };\n}\n\n/**\n * Precharge les workflows d'une liste d'interventions, pour garantir le mode\n * hors-ligne. Deux choses manquent au cache tant qu'une intervention n'a pas\n * ete ouverte au moins une fois EN LIGNE :\n *   1. le DETAIL (table `interventions`) : la liste (getMyInterventions) ne\n *      stocke qu'un resume ; MissionDetailScreen lit le detail complet via\n *      getInterventionById -> sans cache, l'ouverture offline echoue avec une\n *      erreur reseau (\"Erreur chargement intervention\").\n *   2. les ETAPES (table `steps`) : elles ne sont PAS dans la liste et, cote\n *      serveur, sont materialisees paresseusement a la 1ere lecture\n *      (getWorkflowState -> createWorkflow). Sans prechargement, le tech voit\n *      \"aucune etape\".\n *\n * On passe donc par getInterventionById : il persiste le detail ET enchaine\n * fetchAndStoreInterventionSteps dans la foulee -> les deux caches sont\n * remplis en une seule passe.\n *\n * Appelee au login et au boot (online). Best-effort et sequentiel : une\n * intervention qui echoue (ou un passage offline en cours de boucle)\n * n'interrompt pas les autres. Retourne le nombre d'interventions prechargees.\n */\nexport async function prefetchWorkflows(ids: number[]): Promise<number> {\n  let prefetched = 0;\n  for (const id of ids) {\n    try {\n      // getInterventionById echoue (throw) si offline ET pas de cache local ;\n      // le catch ci-dessous absorbe et on continue avec les suivantes.\n      await getInterventionById(id);\n      prefetched += 1;\n    } catch {\n      // best-effort : reseau coupe en cours de boucle / intervention sans\n      // workflow -> on continue avec les suivantes.\n    }\n  }\n  return prefetched;\n}\n\n/**\n * Upload d'une photo pour une etape workflow. Le backend\n * /mobile/intervention_workflow_files.php attend un multipart/form-data :\n *   - workflow_step_id (INT, l'id DB de la step, pas le step_key UUID)\n *   - idempotency_key (UUID)\n *   - file (le binaire image)\n *\n * Retourne les infos du fichier cree (dont l'id serveur).\n */\nexport async function uploadWorkflowStepPhoto(args: {\n  workflowStepId: number;\n  photoUri: string;\n  photoName: string;\n  mimeType: string;\n  idempotencyKey: string;\n}): Promise<{ id?: number } | null> {\n  const baseUrl = await requireEnvironmentBaseUrl();\n  const session = await readSession();\n  if (!session.accessToken) {\n    throw new Error(\"Session expiree : reconnexion requise\");\n  }\n\n  const form = new FormData();\n  form.append(\"workflow_step_id\", String(args.workflowStepId));\n  form.append(\"idempotency_key\", args.idempotencyKey);\n  // React Native FormData : pour un fichier local, on passe un objet\n  // { uri, name, type }. Pas de Blob / File en RN.\n  form.append(\"file\", {\n    uri: args.photoUri,\n    name: args.photoName,\n    type: args.mimeType,\n  } as unknown as Blob);\n\n  const response = await fetch(`${baseUrl}/mobile/intervention_workflow_files.php`, {\n    method: \"POST\",\n    headers: {\n      Authorization: `Bearer ${session.accessToken}`,\n      // PAS de Content-Type : fetch met automatiquement le multipart boundary.\n    },\n    body: form as unknown as BodyInit,\n  });\n\n  let payload: { success?: boolean; message?: string; data?: { id?: number } } | null = null;\n  try {\n    payload = await response.json();\n  } catch {\n    payload = null;\n  }\n\n  if (!response.ok || !payload?.success) {\n    throw new Error(payload?.message || `Upload photo echoue (HTTP ${response.status})`);\n  }\n\n  return payload.data ?? null;\n}\n\n/**\n * Met une photo d'etape en file de synchronisation hors-ligne (replay au\n * reconnect). Appelee quand l'upload immediat echoue (reseau coupe) : sans ca\n * la photo restait un fichier local jamais rejoue, et la finalisation echouait\n * (\"Nombre de photos insuffisant\", activeFileCount=0 cote DB).\n *\n * Le payload suit le format multipart de la sync_queue (syncService :\n * isMultipartQueuePayload / postMultipartFromQueue) : `__multipart`,\n * `upload_files` (le binaire, field \"file\"), et les champs texte\n * (workflow_step_id, idempotency_key) appliques tels quels en form-data.\n *\n * IMPORTANT : l'idempotency_key DOIT etre le MEME que celui de la tentative\n * immediate. Si l'upload immediat avait en fait atteint le serveur mais que la\n * reponse s'est perdue (timeout), le replay sera dedoublonne cote backend\n * (workflow_idempotency_keys, TTL 24h) au lieu de creer un doublon.\n */\nexport async function enqueueWorkflowStepPhoto(args: {\n  workflowStepId: number;\n  photoUri: string;\n  photoName: string;\n  mimeType: string;\n  idempotencyKey: string;\n}): Promise<void> {\n  await enqueueOfflineAction({\n    endpoint: \"/mobile/intervention_workflow_files.php\",\n    method: \"POST\",\n    payload: {\n      __multipart: true,\n      workflow_step_id: args.workflowStepId,\n      idempotency_key: args.idempotencyKey,\n      upload_files: [\n        {\n          field: \"file\",\n          uri: args.photoUri,\n          name: args.photoName,\n          type: args.mimeType,\n        },\n      ],\n    },\n    entityType: \"workflow_photo\",\n    entityId: String(args.workflowStepId),\n  });\n}\n\n/**\n * Sauvegarde une etape via action save_step sur le workflow endpoint.\n * Cote serveur, InterventionWorkflowService::saveStep persiste value +\n * comment dans intervention_workflow_steps + recompute la visibilite +\n * applique les calculs automatiques. Retourne le workflow state a jour\n * (version incrementee).\n *\n * Le idempotency_key permet aux tentatives multiples (retry offline) de\n * ne pas dupliquer.\n */\nexport async function saveStepToServer(args: {\n  interventionId: number;\n  stepKey: string;\n  value: unknown;\n  comment: string | null;\n  version: number;\n  idempotencyKey: string;\n}): Promise<{ version: number; status: string }> {\n  const response = await apiClient.post<\n    ApiEnvelope<{\n      workflow?: { version?: number; status?: string };\n    }>\n  >(\"/mobile/intervention_workflow.php\", {\n    action: \"save_step\",\n    intervention_id: args.interventionId,\n    step_key: args.stepKey,\n    value: args.value,\n    comment: args.comment,\n    version: args.version,\n    idempotency_key: args.idempotencyKey,\n  });\n\n  if (!response.data?.success) {\n    throw new Error(response.data?.message || \"Echec save_step\");\n  }\n\n  const wf = response.data.data?.workflow ?? {};\n  return {\n    version: Number(wf.version ?? args.version),\n    status: String(wf.status ?? \"in_progress\"),\n  };\n}\n\n/**\n * Finalise une intervention via action complete_workflow. Cote serveur,\n * InterventionWorkflowService::completeWorkflow se charge de :\n *   - Marquer l'intervention comme terminee (statut + date_fin)\n *   - Stocker les signatures\n *   - Generer automatiquement le rapport PDF\n *   - Creer une demande de devis si problemes/pannes signales\n *   - Creer les prelevements huile si renseignes\n *\n * Donc cote mobile, un seul appel suffit pour declencher tout le pipeline.\n */\n/**\n * Upload une photo de la machine liee a l'intervention.\n * La photo est sauvegardee en base64 dans machines.photos (backend)\n * et sera reutilisee sur tous les futurs rapports de cette machine.\n */\nexport async function uploadMachinePhoto(\n  interventionId: number,\n  photoBase64: string\n): Promise<boolean> {\n  const response = await apiClient.post<ApiEnvelope<null>>(\n    \"/mobile/intervention_workflow.php\",\n    {\n      action: \"upload_machine_photo\",\n      intervention_id: interventionId,\n      photo: photoBase64,\n    }\n  );\n  return response.data?.success === true;\n}\n\nexport async function completeMobileWorkflow(\n  interventionId: number,\n  workflowVersion: number,\n  signatures: {\n    signature_technicien: string;\n    signature_client: string;\n    client_present: boolean;\n  }\n): Promise<void> {\n  const response = await apiClient.post<\n    ApiEnvelope<unknown> & {\n      errors?: Array<{ step_key?: string; item?: string; errors?: string[] }>;\n    }\n  >(\"/mobile/intervention_workflow.php\", {\n    action: \"complete_workflow\",\n    intervention_id: interventionId,\n    version: workflowVersion,\n    signature_technicien: signatures.signature_technicien,\n    signature_client: signatures.signature_client,\n    client_present: signatures.client_present,\n  });\n\n  if (!response.data?.success) {\n    const baseMsg = response.data?.message || \"Echec de la finalisation\";\n    // Le serveur peut inclure 'errors' : tableau d'etapes invalides avec\n    // leur item + messages. On les remonte au user pour qu'il sache\n    // quelles etapes completer.\n    const errs = (\n      response.data as {\n        errors?: Array<{ item?: string; step_key?: string; errors?: string[] }>;\n      } | undefined\n    )?.errors;\n    if (Array.isArray(errs) && errs.length > 0) {\n      const detail = errs\n        .slice(0, 5)\n        .map((e) => {\n          const label = e.item ?? e.step_key ?? \"?\";\n          const msgs = Array.isArray(e.errors) ? e.errors.join(\", \") : \"invalide\";\n          return `• ${label}: ${msgs}`;\n        })\n        .join(\"\\n\");\n      const extra = errs.length > 5 ? `\\n... et ${errs.length - 5} autre(s)` : \"\";\n      throw new Error(`${baseMsg}\\n${detail}${extra}`);\n    }\n    throw new Error(baseMsg);\n  }\n}\n\nexport async function getInterventionPrecheck(\n  interventionId: number\n): Promise<MobilePrecheckState> {\n  const response = await apiClient.get<ApiEnvelope<MobilePrecheckState>>(\n    \"/mobile/intervention_precheck.php\",\n    {\n      params: { id: interventionId },\n    }\n  );\n\n  if (!response.data?.success || !response.data.data) {\n    throw new Error(response.data?.message || \"Unable to fetch precheck\");\n  }\n\n  return response.data.data;\n}\n\nasync function postPrecheckOrEnqueue(\n  endpoint: string,\n  entityType: string,\n  errorMsg: string,\n  payload: MobilePrecheckPayload\n): Promise<MobilePrecheckState> {\n  try {\n    const response = await apiClient.post<ApiEnvelope<MobilePrecheckState>>(endpoint, payload);\n    if (!response.data?.success || !response.data.data) {\n      throw new Error(response.data?.message || errorMsg);\n    }\n    return response.data.data;\n  } catch (error) {\n    await enqueueOfflineAction({\n      endpoint,\n      method: \"POST\",\n      payload: payload as unknown as Record<string, unknown>,\n      entityType,\n      entityId: String(payload.intervention_id),\n    });\n    throw error;\n  }\n}\n\nexport async function saveInterventionPrecheck(\n  payload: MobilePrecheckPayload\n): Promise<MobilePrecheckState> {\n  return postPrecheckOrEnqueue(\n    \"/mobile/intervention_precheck.php\",\n    \"precheck\",\n    \"Unable to save precheck\",\n    payload\n  );\n}\n\nexport async function startIntervention(\n  payload: MobilePrecheckPayload\n): Promise<MobilePrecheckState> {\n  return postPrecheckOrEnqueue(\n    \"/mobile/intervention_start.php\",\n    \"intervention_start\",\n    \"Unable to start intervention\",\n    payload\n  );\n}\n","import * as SQLite from \"expo-sqlite\";\nimport type {\n  LocalInterventionRecord,\n  LocalInterventionsSnapshot,\n  SyncQueueItem,\n  SyncQueueMethod,\n} from \"../types/offline\";\nimport type {\n  MobileIntervention,\n  MobileInterventionDetails,\n  MobileStep,\n} from \"../types/intervention\";\n\nconst DB_NAME = \"missioflow-mobile.db\";\n\nlet dbPromise: Promise<SQLite.SQLiteDatabase> | null = null;\n\nasync function getDb(): Promise<SQLite.SQLiteDatabase> {\n  dbPromise ??= SQLite.openDatabaseAsync(DB_NAME);\n  return dbPromise;\n}\n\nasync function getTableColumns(tableName: string): Promise<Set<string>> {\n  const db = await getDb();\n  const rows = await db.getAllAsync<{ name: string }>(`PRAGMA table_info(${tableName})`);\n  return new Set(rows.map((row) => row.name));\n}\n\nasync function upsertLocalMeta(key: string, value: string, now: string): Promise<void> {\n  const db = await getDb();\n  await db.runAsync(\n    `INSERT INTO local_meta (key, value, updated_at)\n     VALUES (?, ?, ?)\n     ON CONFLICT(key) DO UPDATE SET value=excluded.value, updated_at=excluded.updated_at`,\n    [key, value, now]\n  );\n}\n\nfunction safeIso(value: string | null | undefined): string {\n  const parsed = value ? Date.parse(value) : Number.NaN;\n  return Number.isNaN(parsed) ? \"1970-01-01T00:00:00.000Z\" : new Date(parsed).toISOString();\n}\n\nasync function ensureStepsSchema(): Promise<void> {\n  const db = await getDb();\n  const columns = await getTableColumns(\"steps\");\n\n  // Migration from legacy schema (step_key/payload blob) to structured columns.\n  // Files column = miniatures photos remontees par mobile/intervention_steps.php\n  // pour l'affichage lecture seule, persistees pour survivre a un cold start.\n  const STEPS_COLUMNS: Array<[string, string]> = [\n    [\"step_id\", \"TEXT\"],\n    [\"order_index\", \"INTEGER NOT NULL DEFAULT 0\"],\n    [\"type\", \"TEXT NOT NULL DEFAULT 'text'\"],\n    [\"label\", \"TEXT NOT NULL DEFAULT ''\"],\n    [\"required\", \"INTEGER NOT NULL DEFAULT 0\"],\n    [\"status\", \"TEXT NOT NULL DEFAULT 'todo'\"],\n    [\"value_json\", \"TEXT\"],\n    [\"unit\", \"TEXT\"],\n    [\"constraints_json\", \"TEXT\"],\n    [\"options_json\", \"TEXT\"],\n    [\"metadata_json\", \"TEXT\"],\n    [\"files_json\", \"TEXT\"],\n    // Visibilite serveur (contrat #168). NULL = inconnu (ancienne donnee) ->\n    // traite comme visible a la lecture. 1 = visible, 0 = masquee.\n    [\"is_visible\", \"INTEGER\"],\n    [\"version\", \"INTEGER NOT NULL DEFAULT 1\"],\n    [\"dirty\", \"INTEGER NOT NULL DEFAULT 0\"],\n  ];\n\n  for (const [name, def] of STEPS_COLUMNS) {\n    if (!columns.has(name)) {\n      await db.runAsync(`ALTER TABLE steps ADD COLUMN ${name} ${def}`);\n    }\n  }\n\n  await db.execAsync(`\n    UPDATE steps\n    SET step_id = COALESCE(step_id, step_key)\n    WHERE step_id IS NULL AND step_key IS NOT NULL;\n\n    UPDATE steps\n    SET value_json = payload\n    WHERE value_json IS NULL AND payload IS NOT NULL;\n\n    UPDATE steps\n    SET step_id = CAST(id AS TEXT)\n    WHERE step_id IS NULL OR TRIM(step_id) = '';\n\n    DELETE FROM steps\n    WHERE id IN (\n      SELECT s1.id\n      FROM steps s1\n      JOIN steps s2\n        ON s1.intervention_id = s2.intervention_id\n       AND s1.step_id = s2.step_id\n       AND s1.id < s2.id\n    );\n\n    CREATE INDEX IF NOT EXISTS idx_steps_intervention\n    ON steps(intervention_id, order_index);\n\n    CREATE INDEX IF NOT EXISTS idx_steps_dirty\n    ON steps(dirty, intervention_id);\n\n    CREATE UNIQUE INDEX IF NOT EXISTS uq_steps_intervention_step\n    ON steps(intervention_id, step_id);\n\n    CREATE TABLE IF NOT EXISTS step_conflicts (\n      id INTEGER PRIMARY KEY AUTOINCREMENT,\n      intervention_id INTEGER NOT NULL,\n      step_id TEXT NOT NULL,\n      local_value_json TEXT,\n      server_value_json TEXT,\n      local_version INTEGER,\n      server_version INTEGER,\n      created_at TEXT NOT NULL\n    );\n  `);\n}\n\nexport async function initializeLocalDatabase(): Promise<void> {\n  const db = await getDb();\n\n  await db.execAsync(`\n    PRAGMA journal_mode = WAL;\n\n    CREATE TABLE IF NOT EXISTS local_meta (\n      key TEXT PRIMARY KEY NOT NULL,\n      value TEXT,\n      updated_at TEXT NOT NULL\n    );\n\n    CREATE TABLE IF NOT EXISTS missions (\n      id INTEGER PRIMARY KEY NOT NULL,\n      payload TEXT NOT NULL,\n      updated_at TEXT NOT NULL\n    );\n\n    CREATE TABLE IF NOT EXISTS interventions (\n      id INTEGER PRIMARY KEY NOT NULL,\n      payload TEXT NOT NULL,\n      updated_at TEXT NOT NULL\n    );\n\n    CREATE TABLE IF NOT EXISTS steps (\n      id INTEGER PRIMARY KEY AUTOINCREMENT,\n      intervention_id INTEGER NOT NULL,\n      step_key TEXT,\n      payload TEXT,\n      step_id TEXT,\n      order_index INTEGER NOT NULL DEFAULT 0,\n      type TEXT NOT NULL DEFAULT 'text',\n      label TEXT NOT NULL DEFAULT '',\n      required INTEGER NOT NULL DEFAULT 0,\n      status TEXT NOT NULL DEFAULT 'todo',\n      value_json TEXT,\n      unit TEXT,\n      constraints_json TEXT,\n      options_json TEXT,\n      metadata_json TEXT,\n      version INTEGER NOT NULL DEFAULT 1,\n      dirty INTEGER NOT NULL DEFAULT 0,\n      updated_at TEXT NOT NULL\n    );\n\n    CREATE TABLE IF NOT EXISTS sync_queue (\n      id INTEGER PRIMARY KEY AUTOINCREMENT,\n      endpoint TEXT NOT NULL,\n      method TEXT NOT NULL,\n      payload TEXT NOT NULL,\n      entity_type TEXT NOT NULL,\n      entity_id TEXT NOT NULL,\n      status TEXT NOT NULL DEFAULT 'pending',\n      attempts INTEGER NOT NULL DEFAULT 0,\n      last_error TEXT,\n      created_at TEXT NOT NULL,\n      updated_at TEXT NOT NULL\n    );\n\n    CREATE TABLE IF NOT EXISTS step_conflicts (\n      id INTEGER PRIMARY KEY AUTOINCREMENT,\n      intervention_id INTEGER NOT NULL,\n      step_id TEXT NOT NULL,\n      local_value_json TEXT,\n      server_value_json TEXT,\n      local_version INTEGER,\n      server_version INTEGER,\n      created_at TEXT NOT NULL\n    );\n  `);\n\n  await ensureStepsSchema();\n}\n\nexport async function clearLocalDatabase(): Promise<void> {\n  const db = await getDb();\n  await db.execAsync(`\n    DELETE FROM missions;\n    DELETE FROM interventions;\n    DELETE FROM steps;\n    DELETE FROM step_conflicts;\n    DELETE FROM sync_queue;\n    DELETE FROM local_meta;\n  `);\n}\n\nexport async function saveOrUpdateStep(step: MobileStep, dirty = false): Promise<void> {\n  const db = await getDb();\n\n  await db.runAsync(\n    `INSERT INTO steps (\n      intervention_id,\n      step_id,\n      order_index,\n      type,\n      label,\n      required,\n      status,\n      value_json,\n      unit,\n      constraints_json,\n      options_json,\n      metadata_json,\n      files_json,\n      is_visible,\n      version,\n      dirty,\n      updated_at\n    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n    ON CONFLICT(intervention_id, step_id)\n    DO UPDATE SET\n      order_index = excluded.order_index,\n      type = excluded.type,\n      label = excluded.label,\n      required = excluded.required,\n      status = excluded.status,\n      value_json = excluded.value_json,\n      unit = excluded.unit,\n      constraints_json = excluded.constraints_json,\n      options_json = excluded.options_json,\n      metadata_json = excluded.metadata_json,\n      files_json = excluded.files_json,\n      is_visible = excluded.is_visible,\n      version = excluded.version,\n      dirty = excluded.dirty,\n      updated_at = excluded.updated_at`,\n    [\n      step.intervention_id,\n      step.id,\n      step.order_index,\n      step.type,\n      step.label,\n      step.required ? 1 : 0,\n      step.status,\n      JSON.stringify(step.value ?? null),\n      step.unit ?? null,\n      JSON.stringify(step.constraints ?? {}),\n      JSON.stringify(step.options ?? []),\n      JSON.stringify(step.metadata ?? {}),\n      JSON.stringify(step.files ?? []),\n      step.is_visible === undefined || step.is_visible === null\n        ? null\n        : step.is_visible\n          ? 1\n          : 0,\n      step.version,\n      dirty ? 1 : 0,\n      safeIso(step.updated_at),\n    ]\n  );\n}\n\nexport async function applyServerStepsDelta(steps: MobileStep[]): Promise<number> {\n  const db = await getDb();\n  let applied = 0;\n\n  await db.withTransactionAsync(async () => {\n    for (const step of steps) {\n      const local = await db.getFirstAsync<{\n        value_json: string | null;\n        version: number;\n        updated_at: string;\n        dirty: number;\n      }>(\n        `SELECT value_json, version, updated_at, dirty\n         FROM steps\n         WHERE intervention_id = ? AND step_id = ?`,\n        [step.intervention_id, step.id]\n      );\n\n      let shouldApply = !local;\n      if (local) {\n        const localVersion = Number(local.version || 0);\n        const serverVersion = Number(step.version || 0);\n\n        if (serverVersion > localVersion) {\n          shouldApply = true;\n        } else if (serverVersion === localVersion) {\n          shouldApply = safeIso(step.updated_at) > safeIso(local.updated_at);\n        }\n\n        if (shouldApply && Number(local.dirty || 0) === 1) {\n          await db.runAsync(\n            `INSERT INTO step_conflicts (\n              intervention_id, step_id, local_value_json, server_value_json,\n              local_version, server_version, created_at\n            ) VALUES (?, ?, ?, ?, ?, ?, ?)`,\n            [\n              step.intervention_id,\n              step.id,\n              local.value_json,\n              JSON.stringify(step.value ?? null),\n              localVersion,\n              serverVersion,\n              new Date().toISOString(),\n            ]\n          );\n        }\n      }\n\n      if (shouldApply) {\n        await saveOrUpdateStep(step, false);\n        applied += 1;\n      }\n    }\n  });\n\n  return applied;\n}\n\nexport async function saveInterventionsSnapshot(items: MobileIntervention[]): Promise<void> {\n  const db = await getDb();\n  const now = new Date().toISOString();\n\n  await db.withTransactionAsync(async () => {\n    await db.runAsync(\"DELETE FROM missions\");\n\n    for (const item of items) {\n      await db.runAsync(\n        \"INSERT INTO missions (id, payload, updated_at) VALUES (?, ?, ?)\",\n        [item.id, JSON.stringify(item), now]\n      );\n    }\n\n    await upsertLocalMeta(\"missions_snapshot_count\", String(items.length), now);\n    await upsertLocalMeta(\"missions_snapshot_updated_at\", now, now);\n  });\n}\n\n/**\n * Fusion NON destructive du snapshot interventions, pour le delta de\n * synchronisation (sync_pull.php). Contrairement a saveInterventionsSnapshot\n * (qui vide puis recree la table), on :\n *   - upsert chaque intervention changee (INSERT OR REPLACE par id) ;\n *   - purge les interventions absentes de `keepIds` (reassignees a un autre\n *     technicien, supprimees, hors fenetre serveur).\n *\n * `keepIds` = liste COMPLETE des ids cote serveur (pas seulement les changes).\n *   - null  -> aucune purge (payload partiel / pas d'info de purge) ;\n *   - []    -> le tech n'a plus aucune intervention -> on vide la table.\n *\n * Sans ce merge, nourrir saveInterventionsSnapshot avec un delta effacerait\n * toutes les interventions non modifiees (DELETE FROM missions global).\n */\nexport async function mergeInterventionsSnapshot(\n  items: MobileIntervention[],\n  keepIds: number[] | null\n): Promise<void> {\n  const db = await getDb();\n  const now = new Date().toISOString();\n\n  await db.withTransactionAsync(async () => {\n    for (const item of items) {\n      await db.runAsync(\n        \"INSERT OR REPLACE INTO missions (id, payload, updated_at) VALUES (?, ?, ?)\",\n        [item.id, JSON.stringify(item), now]\n      );\n    }\n\n    if (keepIds) {\n      if (keepIds.length === 0) {\n        await db.runAsync(\"DELETE FROM missions\");\n      } else {\n        const placeholders = keepIds.map(() => \"?\").join(\", \");\n        await db.runAsync(\n          `DELETE FROM missions WHERE id NOT IN (${placeholders})`,\n          keepIds\n        );\n      }\n    }\n\n    const countRow = await db.getFirstAsync<{ c: number }>(\n      \"SELECT COUNT(*) as c FROM missions\"\n    );\n    const count = Number(countRow?.c ?? 0);\n    await upsertLocalMeta(\"missions_snapshot_count\", String(count), now);\n    await upsertLocalMeta(\"missions_snapshot_updated_at\", now, now);\n  });\n}\n\nexport async function getInterventionsSnapshot(): Promise<LocalInterventionsSnapshot> {\n  const db = await getDb();\n  const rows = await db.getAllAsync<{ id: number; payload: string; updated_at: string }>(\n    \"SELECT id, payload, updated_at FROM missions ORDER BY id DESC\"\n  );\n\n  const items: MobileIntervention[] = [];\n  for (const row of rows) {\n    try {\n      items.push(JSON.parse(row.payload) as MobileIntervention);\n    } catch {\n      // Ignore malformed rows.\n    }\n  }\n\n  const updatedRow = await db.getFirstAsync<{ value: string }>(\n    \"SELECT value FROM local_meta WHERE key = 'missions_snapshot_updated_at'\"\n  );\n\n  return {\n    items,\n    count: items.length,\n    updated_at: updatedRow?.value || \"\",\n  };\n}\n\nexport async function saveInterventionDetail(item: MobileInterventionDetails): Promise<void> {\n  const db = await getDb();\n  const now = new Date().toISOString();\n\n  await db.runAsync(\n    `INSERT INTO interventions (id, payload, updated_at)\n     VALUES (?, ?, ?)\n     ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, updated_at=excluded.updated_at`,\n    [item.id, JSON.stringify(item), now]\n  );\n}\n\nexport async function getInterventionDetailById(\n  interventionId: number\n): Promise<LocalInterventionRecord | null> {\n  const db = await getDb();\n  const row = await db.getFirstAsync<{ payload: string; updated_at: string }>(\n    \"SELECT payload, updated_at FROM interventions WHERE id = ?\",\n    [interventionId]\n  );\n\n  if (!row) {\n    return null;\n  }\n\n  try {\n    return {\n      item: JSON.parse(row.payload) as MobileInterventionDetails,\n      updated_at: row.updated_at,\n    };\n  } catch {\n    return null;\n  }\n}\n\n/**\n * Purge locale d'une intervention (et ses etapes). Utilisee par la sync en\n * arriere-plan (couche 2) sur un data push action=\"delete\" : l'intervention a\n * ete supprimee/reassignee cote serveur, on retire son cache local pour ne pas\n * la presenter au tech. Ne touche pas la file de sync (une ecriture en attente\n * sur une intervention supprimee mourra proprement cote serveur).\n */\nexport async function deleteInterventionLocally(interventionId: number): Promise<void> {\n  const db = await getDb();\n  await db.withTransactionAsync(async () => {\n    await db.runAsync(\"DELETE FROM steps WHERE intervention_id = ?\", [interventionId]);\n    await db.runAsync(\"DELETE FROM interventions WHERE id = ?\", [interventionId]);\n    await db.runAsync(\"DELETE FROM missions WHERE id = ?\", [interventionId]);\n  });\n}\n\nexport async function enqueueSyncAction(input: {\n  endpoint: string;\n  method: SyncQueueMethod;\n  payload: Record<string, unknown>;\n  entityType: string;\n  entityId: string;\n}): Promise<void> {\n  const db = await getDb();\n  const now = new Date().toISOString();\n\n  await db.runAsync(\n    `INSERT INTO sync_queue (\n      endpoint, method, payload, entity_type, entity_id, status, attempts, created_at, updated_at\n    ) VALUES (?, ?, ?, ?, ?, 'pending', 0, ?, ?)`,\n    [\n      input.endpoint,\n      input.method,\n      JSON.stringify(input.payload),\n      input.entityType,\n      input.entityId,\n      now,\n      now,\n    ]\n  );\n}\n\nexport async function getPendingQueueItems(limit = 50): Promise<SyncQueueItem[]> {\n  const db = await getDb();\n  const rows = await db.getAllAsync<{\n    id: number;\n    endpoint: string;\n    method: SyncQueueMethod;\n    payload: string;\n    entity_type: string;\n    entity_id: string;\n    created_at: string;\n    attempts: number;\n  }>(\n    `SELECT id, endpoint, method, payload, entity_type, entity_id, created_at, attempts\n     FROM sync_queue\n     WHERE status = 'pending'\n     ORDER BY id ASC\n     LIMIT ?`,\n    [limit]\n  );\n\n  const mapped: SyncQueueItem[] = [];\n  for (const row of rows) {\n    try {\n      mapped.push({\n        id: row.id,\n        endpoint: row.endpoint,\n        method: row.method,\n        payload: JSON.parse(row.payload) as Record<string, unknown>,\n        entity_type: row.entity_type,\n        entity_id: row.entity_id,\n        created_at: row.created_at,\n        attempts: row.attempts,\n      });\n    } catch {\n      // Skip malformed queue payload.\n    }\n  }\n\n  return mapped;\n}\n\nexport async function markQueueItemDone(id: number): Promise<void> {\n  const db = await getDb();\n  await db.runAsync(\"DELETE FROM sync_queue WHERE id = ?\", [id]);\n}\n\n// Au-dela de ce nombre de tentatives, un item retryable (5xx / reseau) est\n// bascule en 'dead' : il n'est plus rejoue (evite le retry infini d'un item\n// qui echoue durablement et qui, en tete de file, bloquait tout le reste).\nexport const MAX_SYNC_ATTEMPTS = 8;\n\n/**\n * Echec RETRYABLE (5xx, reseau) : incremente attempts + memorise l'erreur.\n * Quand attempts atteint MAX_SYNC_ATTEMPTS, l'item passe 'dead' (plus rejoue).\n */\nexport async function markQueueItemFailed(id: number, message: string): Promise<void> {\n  const db = await getDb();\n  const now = new Date().toISOString();\n  await db.runAsync(\n    `UPDATE sync_queue\n     SET attempts = attempts + 1,\n         last_error = ?,\n         updated_at = ?,\n         status = CASE WHEN attempts + 1 >= ? THEN 'dead' ELSE status END\n     WHERE id = ?`,\n    [message.slice(0, 500), now, MAX_SYNC_ATTEMPTS, id]\n  );\n}\n\n/**\n * Echec DEFINITIF (erreur de contrat 400/404/409/422 propre a l'item) :\n * l'item est sorti de la file ('dead') sans nouvelle tentative. Sans ca un\n * 404 restait 'pending' et bloquait le drain de toute la file (ORDER BY id).\n */\nexport async function markQueueItemDead(id: number, message: string): Promise<void> {\n  const db = await getDb();\n  const now = new Date().toISOString();\n  await db.runAsync(\n    `UPDATE sync_queue\n     SET status = 'dead',\n         attempts = attempts + 1,\n         last_error = ?,\n         updated_at = ?\n     WHERE id = ?`,\n    [message.slice(0, 500), now, id]\n  );\n}\n\n/**\n * Mur de facturation (402 BILLING_WALL) : l'ecriture est refusee parce que\n * l'abonnement du tenant n'est plus actif. Ce N'EST PAS une erreur d'item :\n * l'intervention est valide, seul le paiement manque. On garde donc l'item\n * 'pending' SANS toucher 'attempts' (sinon il finirait 'dead' au cap\n * MAX_SYNC_ATTEMPTS comme un retryable, ce qui perdrait l'ecriture). Ainsi il\n * se re-poussera tel quel a la reactivation (frontiere de responsabilite, cf.\n * mur de facturation §3.2bis cote serveur). On memorise quand meme l'erreur.\n */\nexport async function markQueueItemWalled(id: number, message: string): Promise<void> {\n  const db = await getDb();\n  const now = new Date().toISOString();\n  await db.runAsync(\n    `UPDATE sync_queue\n     SET last_error = ?,\n         updated_at = ?\n     WHERE id = ?`,\n    [message.slice(0, 500), now, id]\n  );\n}\n\n// Identite du technicien proprietaire du cache local courant. Permet de\n// detecter, au login, qu'un AUTRE compte se connecte sur ce device et de\n// purger les donnees du precedent (interventions, steps, file de sync, drafts)\n// avant de charger les siennes -> pas de fuite de donnees entre comptes.\nconst OWNER_USER_ID_KEY = \"owner_user_id\";\n\nexport async function getLocalDbOwnerId(): Promise<number | null> {\n  const db = await getDb();\n  const row = await db.getFirstAsync<{ value: string }>(\n    \"SELECT value FROM local_meta WHERE key = ?\",\n    [OWNER_USER_ID_KEY]\n  );\n  const parsed = row?.value ? Number(row.value) : Number.NaN;\n  return Number.isFinite(parsed) ? parsed : null;\n}\n\nexport async function setLocalDbOwnerId(userId: number): Promise<void> {\n  await upsertLocalMeta(OWNER_USER_ID_KEY, String(userId), new Date().toISOString());\n}\n\nexport async function getLastSyncTimestamp(): Promise<string | null> {\n  const db = await getDb();\n  const row = await db.getFirstAsync<{ value: string }>(\n    \"SELECT value FROM local_meta WHERE key = 'last_sync_at'\"\n  );\n  return row?.value || null;\n}\n\nexport async function setLastSyncTimestamp(value: string): Promise<void> {\n  await upsertLocalMeta(\"last_sync_at\", value, new Date().toISOString());\n}\n\n/**\n * Draft complet d'un workflow d'intervention, persiste en local_meta sous\n * la cle `workflow_draft_<interventionId>`. Permet au tech de retrouver\n * son etat (valeurs, commentaires, signatures, phase courante) apres un\n * crash/kill de l'app. Aucune perte entre les relances tant que le device\n * n'est pas reset.\n */\nexport type WorkflowDraft = {\n  inputValues: Record<string, unknown>;\n  commentValues: Record<string, string>;\n  currentPhaseIdx: number;\n  sigTechData: string;\n  sigClientData: string;\n  sigClientPresent: boolean;\n  showSignatureCard: boolean;\n  updatedAt: string;\n};\n\nfunction draftKey(interventionId: number): string {\n  return `workflow_draft_${interventionId}`;\n}\n\nexport async function saveWorkflowDraft(\n  interventionId: number,\n  draft: WorkflowDraft\n): Promise<void> {\n  await upsertLocalMeta(\n    draftKey(interventionId),\n    JSON.stringify(draft),\n    new Date().toISOString()\n  );\n}\n\nexport async function loadWorkflowDraft(\n  interventionId: number\n): Promise<WorkflowDraft | null> {\n  const db = await getDb();\n  const row = await db.getFirstAsync<{ value: string }>(\n    \"SELECT value FROM local_meta WHERE key = ?\",\n    [draftKey(interventionId)]\n  );\n  if (!row?.value) {\n    return null;\n  }\n  try {\n    return JSON.parse(row.value) as WorkflowDraft;\n  } catch {\n    return null;\n  }\n}\n\nexport async function clearWorkflowDraft(interventionId: number): Promise<void> {\n  const db = await getDb();\n  await db.runAsync(\"DELETE FROM local_meta WHERE key = ?\", [draftKey(interventionId)]);\n}\n\nexport async function getStepsByInterventionId(\n  interventionId: number\n): Promise<MobileStep[]> {\n  const db = await getDb();\n  const rows = await db.getAllAsync<{\n    step_id: string;\n    order_index: number;\n    type: string;\n    label: string;\n    required: number;\n    status: string;\n    value_json: string | null;\n    unit: string | null;\n    constraints_json: string | null;\n    options_json: string | null;\n    metadata_json: string | null;\n    files_json: string | null;\n    is_visible: number | null;\n    version: number;\n    updated_at: string;\n    dirty: number;\n  }>(\n    `SELECT step_id, order_index, type, label, required, status,\n            value_json, unit, constraints_json, options_json,\n            metadata_json, files_json, is_visible, version, updated_at, dirty\n     FROM steps\n     WHERE intervention_id = ?\n     ORDER BY order_index ASC`,\n    [interventionId]\n  );\n\n  return rows.map((row) => ({\n    id: row.step_id,\n    intervention_id: interventionId,\n    order_index: row.order_index,\n    type: row.type as MobileStep[\"type\"],\n    label: row.label,\n    required: row.required === 1,\n    status: row.status as MobileStep[\"status\"],\n    value: row.value_json\n      ? (() => {\n          try {\n            return JSON.parse(row.value_json);\n          } catch {\n            return null;\n          }\n        })()\n      : null,\n    unit: row.unit ?? undefined,\n    constraints: row.constraints_json\n      ? (() => {\n          try {\n            return JSON.parse(row.constraints_json) as MobileStep[\"constraints\"];\n          } catch {\n            return {};\n          }\n        })()\n      : undefined,\n    options: row.options_json\n      ? (() => {\n          try {\n            return JSON.parse(row.options_json) as string[];\n          } catch {\n            return [];\n          }\n        })()\n      : undefined,\n    metadata: row.metadata_json\n      ? (() => {\n          try {\n            return JSON.parse(row.metadata_json) as Record<string, unknown>;\n          } catch {\n            return {};\n          }\n        })()\n      : undefined,\n    files: row.files_json\n      ? (() => {\n          try {\n            return JSON.parse(row.files_json) as MobileStep[\"files\"];\n          } catch {\n            return [];\n          }\n        })()\n      : [],\n    is_visible:\n      row.is_visible === null || row.is_visible === undefined\n        ? undefined\n        : row.is_visible === 1,\n    version: row.version,\n    updated_at: row.updated_at,\n  }));\n}\n\nexport async function updateStepValueLocally(\n  interventionId: number,\n  stepId: string,\n  updates: {\n    status: MobileStep[\"status\"];\n    value?: MobileStep[\"value\"];\n    version: number;\n  }\n): Promise<void> {\n  const db = await getDb();\n  const now = new Date().toISOString();\n\n  await db.runAsync(\n    `UPDATE steps\n     SET status = ?,\n         value_json = ?,\n         version = ?,\n         dirty = 1,\n         updated_at = ?\n     WHERE intervention_id = ? AND step_id = ?`,\n    [\n      updates.status,\n      JSON.stringify(updates.value ?? null),\n      updates.version,\n      now,\n      interventionId,\n      stepId,\n    ]\n  );\n}\n","export * from './SQLiteDatabase';\nexport * from './SQLiteSession';\nexport * from './SQLiteStatement';\nexport * from './hooks';\n//# sourceMappingURL=index.js.map","import { Platform } from 'react-native';\nimport ExpoSQLite from './ExpoSQLite';\nimport { flattenOpenOptions } from './NativeDatabase';\nimport { SQLiteSession } from './SQLiteSession';\nimport { SQLiteStatement, } from './SQLiteStatement';\nimport { createDatabasePath } from './pathUtils';\n/**\n * A SQLite database.\n */\nexport class SQLiteDatabase {\n    databasePath;\n    options;\n    nativeDatabase;\n    constructor(databasePath, options, nativeDatabase) {\n        this.databasePath = databasePath;\n        this.options = options;\n        this.nativeDatabase = nativeDatabase;\n    }\n    /**\n     * Asynchronous call to return whether the database is currently in a transaction.\n     */\n    isInTransactionAsync() {\n        return this.nativeDatabase.isInTransactionAsync();\n    }\n    /**\n     * Close the database.\n     */\n    closeAsync() {\n        return this.nativeDatabase.closeAsync();\n    }\n    /**\n     * Execute all SQL queries in the supplied string.\n     * > Note: The queries are not escaped for you! Be careful when constructing your queries.\n     *\n     * @param source A string containing all the SQL queries.\n     */\n    execAsync(source) {\n        return this.nativeDatabase.execAsync(source);\n    }\n    /**\n     * [Serialize the database](https://sqlite.org/c3ref/serialize.html) as `Uint8Array`.\n     *\n     * @param databaseName The name of the current attached databases. The default value is `main` which is the default database name.\n     */\n    serializeAsync(databaseName = 'main') {\n        return this.nativeDatabase.serializeAsync(databaseName);\n    }\n    /**\n     * Create a [prepared SQLite statement](https://www.sqlite.org/c3ref/prepare.html).\n     *\n     * @param source A string containing the SQL query.\n     */\n    async prepareAsync(source) {\n        const nativeStatement = new ExpoSQLite.NativeStatement();\n        await this.nativeDatabase.prepareAsync(nativeStatement, source);\n        return new SQLiteStatement(this.nativeDatabase, nativeStatement);\n    }\n    /**\n     * Create a new session for the database.\n     * @see [`sqlite3session_create`](https://www.sqlite.org/session/sqlite3session_create.html)\n     * @param dbName The name of the database to create a session for. The default value is `main`.\n     */\n    async createSessionAsync(dbName = 'main') {\n        const nativeSession = new ExpoSQLite.NativeSession();\n        await this.nativeDatabase.createSessionAsync(nativeSession, dbName);\n        return new SQLiteSession(this.nativeDatabase, nativeSession);\n    }\n    /**\n     * Load a SQLite extension.\n     * @param libPath The path to the extension library file.\n     * @param entryPoint The entry point of the extension. If not provided, the default entry point is inferred by [`sqlite3_load_extension`](https://www.sqlite.org/c3ref/load_extension.html).\n     *\n     * @platform android\n     * @platform ios\n     * @platform macos\n     * @platform tvos\n     *\n     * @example\n     * ```ts\n     * // Load `sqlite-vec` from `bundledExtensions`. You need to enable `withSQLiteVecExtension` to include `sqlite-vec`.\n     * const extension = SQLite.bundledExtensions['sqlite-vec'];\n     * await db.loadExtensionAsync(extension.libPath, extension.entryPoint);\n     *\n     * // You can also load a custom extension.\n     * await db.loadExtensionAsync('/path/to/extension');\n     * ```\n     */\n    loadExtensionAsync(libPath, entryPoint) {\n        return this.nativeDatabase.loadExtensionAsync(libPath, entryPoint);\n    }\n    /**\n     * Execute a transaction and automatically commit/rollback based on the `task` result.\n     *\n     * > **Note:** This transaction is not exclusive and can be interrupted by other async queries.\n     *\n     * @example\n     * ```ts\n     * db.withTransactionAsync(async () => {\n     *   await db.execAsync('UPDATE test SET name = \"aaa\"');\n     *\n     *   //\n     *   // We cannot control the order of async/await order, so order of execution is not guaranteed.\n     *   // The following UPDATE query out of transaction may be executed here and break the expectation.\n     *   //\n     *\n     *   const result = await db.getFirstAsync<{ name: string }>('SELECT name FROM Users');\n     *   expect(result?.name).toBe('aaa');\n     * });\n     * db.execAsync('UPDATE test SET name = \"bbb\"');\n     * ```\n     * If you worry about the order of execution, use `withExclusiveTransactionAsync` instead.\n     *\n     * @param task An async function to execute within a transaction.\n     */\n    async withTransactionAsync(task) {\n        try {\n            await this.execAsync('BEGIN');\n            await task();\n            await this.execAsync('COMMIT');\n        }\n        catch (e) {\n            await this.execAsync('ROLLBACK');\n            throw e;\n        }\n    }\n    /**\n     * Execute a transaction and automatically commit/rollback based on the `task` result.\n     *\n     * The transaction may be exclusive.\n     * As long as the transaction is converted into a write transaction,\n     * the other async write queries will abort with `database is locked` error.\n     *\n     * > **Note:** This function is not supported on web.\n     *\n     * @param task An async function to execute within a transaction. Any queries inside the transaction must be executed on the `txn` object.\n     * The `txn` object has the same interfaces as the [`SQLiteDatabase`](#sqlitedatabase) object. You can use `txn` like a [`SQLiteDatabase`](#sqlitedatabase) object.\n     *\n     * @platform android\n     * @platform ios\n     * @platform macos\n     * @platform tvos\n     *\n     * @example\n     * ```ts\n     * db.withExclusiveTransactionAsync(async (txn) => {\n     *   await txn.execAsync('UPDATE test SET name = \"aaa\"');\n     * });\n     * ```\n     */\n    async withExclusiveTransactionAsync(task) {\n        if (Platform.OS === 'web') {\n            throw new Error('withExclusiveTransactionAsync is not supported on web');\n        }\n        const transaction = await Transaction.createAsync(this);\n        let error;\n        try {\n            await transaction.execAsync('BEGIN');\n            await task(transaction);\n            await transaction.execAsync('COMMIT');\n        }\n        catch (e) {\n            await transaction.execAsync('ROLLBACK');\n            error = e;\n        }\n        finally {\n            await transaction.closeAsync();\n        }\n        if (error) {\n            throw error;\n        }\n    }\n    /**\n     * Synchronous call to return whether the database is currently in a transaction.\n     */\n    isInTransactionSync() {\n        return this.nativeDatabase.isInTransactionSync();\n    }\n    /**\n     * Close the database.\n     */\n    closeSync() {\n        return this.nativeDatabase.closeSync();\n    }\n    /**\n     * Execute all SQL queries in the supplied string.\n     *\n     * > **Note:** The queries are not escaped for you! Be careful when constructing your queries.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @param source A string containing all the SQL queries.\n     */\n    execSync(source) {\n        return this.nativeDatabase.execSync(source);\n    }\n    /**\n     * [Serialize the database](https://sqlite.org/c3ref/serialize.html) as `Uint8Array`.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @param databaseName The name of the current attached databases. The default value is `main` which is the default database name.\n     */\n    serializeSync(databaseName = 'main') {\n        return this.nativeDatabase.serializeSync(databaseName);\n    }\n    /**\n     * Create a [prepared SQLite statement](https://www.sqlite.org/c3ref/prepare.html).\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @param source A string containing the SQL query.\n     */\n    prepareSync(source) {\n        const nativeStatement = new ExpoSQLite.NativeStatement();\n        this.nativeDatabase.prepareSync(nativeStatement, source);\n        return new SQLiteStatement(this.nativeDatabase, nativeStatement);\n    }\n    /**\n     * Create a new session for the database.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @see [`sqlite3session_create`](https://www.sqlite.org/session/sqlite3session_create.html)\n     * @param dbName The name of the database to create a session for. The default value is `main`.\n     */\n    createSessionSync(dbName = 'main') {\n        const nativeSession = new ExpoSQLite.NativeSession();\n        this.nativeDatabase.createSessionSync(nativeSession, dbName);\n        return new SQLiteSession(this.nativeDatabase, nativeSession);\n    }\n    /**\n     * Load a SQLite extension.\n     * @param libPath The path to the extension library file.\n     * @param entryPoint The entry point of the extension. If not provided, the default entry point is inferred by [`sqlite3_load_extension`](https://www.sqlite.org/c3ref/load_extension.html).\n     *\n     * @platform android\n     * @platform ios\n     * @platform macos\n     * @platform tvos\n     *\n     * @example\n     * ```ts\n     * // Load `sqlite-vec` from `bundledExtensions`. You need to enable `withSQLiteVecExtension` to include `sqlite-vec`.\n     * const extension = SQLite.bundledExtensions['sqlite-vec'];\n     * db.loadExtensionSync(extension.libPath, extension.entryPoint);\n     *\n     * // You can also load a custom extension.\n     * db.loadExtensionSync('/path/to/extension');\n     * ```\n  \n     */\n    loadExtensionSync(libPath, entryPoint) {\n        this.nativeDatabase.loadExtensionSync(libPath, entryPoint);\n    }\n    /**\n     * Execute a transaction and automatically commit/rollback based on the `task` result.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @param task An async function to execute within a transaction.\n     */\n    withTransactionSync(task) {\n        try {\n            this.execSync('BEGIN');\n            task();\n            this.execSync('COMMIT');\n        }\n        catch (e) {\n            this.execSync('ROLLBACK');\n            throw e;\n        }\n    }\n    async runAsync(source, ...params) {\n        const statement = await this.prepareAsync(source);\n        let result;\n        try {\n            result = await statement.executeAsync(...params);\n        }\n        finally {\n            await statement.finalizeAsync();\n        }\n        return result;\n    }\n    async getFirstAsync(source, ...params) {\n        const statement = await this.prepareAsync(source);\n        let firstRow;\n        try {\n            const result = await statement.executeAsync(...params);\n            firstRow = await result.getFirstAsync();\n        }\n        finally {\n            await statement.finalizeAsync();\n        }\n        return firstRow;\n    }\n    async *getEachAsync(source, ...params) {\n        const statement = await this.prepareAsync(source);\n        try {\n            const result = await statement.executeAsync(...params);\n            for await (const row of result) {\n                yield row;\n            }\n        }\n        finally {\n            await statement.finalizeAsync();\n        }\n    }\n    async getAllAsync(source, ...params) {\n        const statement = await this.prepareAsync(source);\n        let allRows;\n        try {\n            const result = await statement.executeAsync(...params);\n            allRows = await result.getAllAsync();\n        }\n        finally {\n            await statement.finalizeAsync();\n        }\n        return allRows;\n    }\n    runSync(source, ...params) {\n        const statement = this.prepareSync(source);\n        let result;\n        try {\n            result = statement.executeSync(...params);\n        }\n        finally {\n            statement.finalizeSync();\n        }\n        return result;\n    }\n    getFirstSync(source, ...params) {\n        const statement = this.prepareSync(source);\n        let firstRow;\n        try {\n            const result = statement.executeSync(...params);\n            firstRow = result.getFirstSync();\n        }\n        finally {\n            statement.finalizeSync();\n        }\n        return firstRow;\n    }\n    *getEachSync(source, ...params) {\n        const statement = this.prepareSync(source);\n        try {\n            const result = statement.executeSync(...params);\n            for (const row of result) {\n                yield row;\n            }\n        }\n        finally {\n            statement.finalizeSync();\n        }\n    }\n    getAllSync(source, ...params) {\n        const statement = this.prepareSync(source);\n        let allRows;\n        try {\n            const result = statement.executeSync(...params);\n            allRows = result.getAllSync();\n        }\n        finally {\n            statement.finalizeSync();\n        }\n        return allRows;\n    }\n    /**\n     * Synchronize the local database with the remote libSQL server.\n     * This method is only available from libSQL integration.\n     */\n    syncLibSQL() {\n        if (typeof this.nativeDatabase.syncLibSQL !== 'function') {\n            throw new Error('syncLibSQL is not supported in the current environment');\n        }\n        return this.nativeDatabase.syncLibSQL();\n    }\n}\n/**\n * The default directory for SQLite databases.\n */\nexport const defaultDatabaseDirectory = ExpoSQLite.defaultDatabaseDirectory;\n/**\n * The pre-bundled SQLite extensions.\n */\nexport const bundledExtensions = ExpoSQLite.bundledExtensions;\n/**\n * Open a database.\n *\n * @param databaseName The name of the database file to open.\n * @param options Open options.\n * @param directory The directory where the database file is located. The default value is `defaultDatabaseDirectory`. This parameter is not supported on web.\n */\nexport async function openDatabaseAsync(databaseName, options, directory) {\n    const openOptions = options ?? {};\n    const databasePath = createDatabasePath(databaseName, directory);\n    await ExpoSQLite.ensureDatabasePathExistsAsync(databasePath);\n    const nativeDatabase = new ExpoSQLite.NativeDatabase(databasePath, flattenOpenOptions(openOptions));\n    await nativeDatabase.initAsync();\n    return new SQLiteDatabase(databasePath, openOptions, nativeDatabase);\n}\n/**\n * Open a database.\n *\n * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n *\n * @param databaseName The name of the database file to open.\n * @param options Open options.\n * @param directory The directory where the database file is located. The default value is `defaultDatabaseDirectory`. This parameter is not supported on web.\n */\nexport function openDatabaseSync(databaseName, options, directory) {\n    const openOptions = options ?? {};\n    const databasePath = createDatabasePath(databaseName, directory);\n    ExpoSQLite.ensureDatabasePathExistsSync(databasePath);\n    const nativeDatabase = new ExpoSQLite.NativeDatabase(databasePath, flattenOpenOptions(openOptions));\n    nativeDatabase.initSync();\n    return new SQLiteDatabase(databasePath, openOptions, nativeDatabase);\n}\n/**\n * Given a `Uint8Array` data and [deserialize to memory database](https://sqlite.org/c3ref/deserialize.html).\n *\n * @param serializedData The binary array to deserialize from [`SQLiteDatabase.serializeAsync()`](#serializeasyncdatabasename).\n * @param options Open options.\n */\nexport async function deserializeDatabaseAsync(serializedData, options) {\n    const openOptions = options ?? {};\n    const nativeDatabase = new ExpoSQLite.NativeDatabase(':memory:', flattenOpenOptions(openOptions), serializedData);\n    await nativeDatabase.initAsync();\n    return new SQLiteDatabase(':memory:', openOptions, nativeDatabase);\n}\n/**\n * Given a `Uint8Array` data and [deserialize to memory database](https://sqlite.org/c3ref/deserialize.html).\n *\n * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n *\n * @param serializedData The binary array to deserialize from [`SQLiteDatabase.serializeSync()`](#serializesyncdatabasename)\n * @param options Open options.\n */\nexport function deserializeDatabaseSync(serializedData, options) {\n    const openOptions = options ?? {};\n    const nativeDatabase = new ExpoSQLite.NativeDatabase(':memory:', flattenOpenOptions(openOptions), serializedData);\n    nativeDatabase.initSync();\n    return new SQLiteDatabase(':memory:', openOptions, nativeDatabase);\n}\n/**\n * Delete a database file.\n *\n * @param databaseName The name of the database file to delete.\n * @param directory The directory where the database file is located. The default value is `defaultDatabaseDirectory`.\n */\nexport async function deleteDatabaseAsync(databaseName, directory) {\n    const databasePath = createDatabasePath(databaseName, directory);\n    return await ExpoSQLite.deleteDatabaseAsync(databasePath);\n}\n/**\n * Delete a database file.\n *\n * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n *\n * @param databaseName The name of the database file to delete.\n * @param directory The directory where the database file is located. The default value is `defaultDatabaseDirectory`.\n */\nexport function deleteDatabaseSync(databaseName, directory) {\n    const databasePath = createDatabasePath(databaseName, directory);\n    return ExpoSQLite.deleteDatabaseSync(databasePath);\n}\n/**\n * Backup a database to another database.\n *\n * @see https://www.sqlite.org/c3ref/backup_finish.html\n *\n * @param options - The backup options\n * @param options.sourceDatabase - The source database to backup from\n * @param options.sourceDatabaseName - The name of the source database. The default value is `main`\n * @param options.destDatabase - The destination database to backup to\n * @param options.destDatabaseName - The name of the destination database. The default value is `m\n */\nexport function backupDatabaseAsync({ sourceDatabase, sourceDatabaseName, destDatabase, destDatabaseName, }) {\n    return ExpoSQLite.backupDatabaseAsync(destDatabase.nativeDatabase, destDatabaseName ?? 'main', sourceDatabase.nativeDatabase, sourceDatabaseName ?? 'main');\n}\n/**\n * Backup a database to another database.\n *\n * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n *\n * @see https://www.sqlite.org/c3ref/backup_finish.html\n *\n * @param options - The backup options\n * @param options.sourceDatabase - The source database to backup from\n * @param options.sourceDatabaseName - The name of the source database. The default value is `main`\n * @param options.destDatabase - The destination database to backup to\n * @param options.destDatabaseName - The name of the destination database. The default value is `m\n */\nexport function backupDatabaseSync({ sourceDatabase, sourceDatabaseName, destDatabase, destDatabaseName, }) {\n    return ExpoSQLite.backupDatabaseSync(destDatabase.nativeDatabase, destDatabaseName ?? 'main', sourceDatabase.nativeDatabase, sourceDatabaseName ?? 'main');\n}\n/**\n * Add a listener for database changes.\n * > Note: to enable this feature, you must set [`enableChangeListener` to `true`](#sqliteopenoptions) when opening the database.\n *\n * @param listener A function that receives the `databaseName`, `databaseFilePath`, `tableName` and `rowId` of the modified data.\n * @returns A `Subscription` object that you can call `remove()` on when you would like to unsubscribe the listener.\n */\nexport function addDatabaseChangeListener(listener) {\n    return ExpoSQLite.addListener('onDatabaseChange', listener);\n}\n/**\n * A new connection specific used for [`withExclusiveTransactionAsync`](#withexclusivetransactionasynctask).\n * @hidden not going to pull all the database methods to the document.\n */\nclass Transaction extends SQLiteDatabase {\n    static async createAsync(db) {\n        const options = { ...db.options, useNewConnection: true };\n        const nativeDatabase = new ExpoSQLite.NativeDatabase(db.databasePath, flattenOpenOptions(options));\n        await nativeDatabase.initAsync();\n        return new Transaction(db.databasePath, options, nativeDatabase);\n    }\n}\n//# sourceMappingURL=SQLiteDatabase.js.map","var OverloadYield = require(\"./OverloadYield.js\");\nfunction _awaitAsyncGenerator(e) {\n  return new OverloadYield(e, 0);\n}\nmodule.exports = _awaitAsyncGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _OverloadYield(e, d) {\n  this.v = e, this.k = d;\n}\nmodule.exports = _OverloadYield, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var OverloadYield = require(\"./OverloadYield.js\");\nfunction _wrapAsyncGenerator(e) {\n  return function () {\n    return new AsyncGenerator(e.apply(this, arguments));\n  };\n}\nfunction AsyncGenerator(e) {\n  var r, t;\n  function resume(r, t) {\n    try {\n      var n = e[r](t),\n        o = n.value,\n        u = o instanceof OverloadYield;\n      Promise.resolve(u ? o.v : o).then(function (t) {\n        if (u) {\n          var i = \"return\" === r ? \"return\" : \"next\";\n          if (!o.k || t.done) return resume(i, t);\n          t = e[i](t).value;\n        }\n        settle(n.done ? \"return\" : \"normal\", t);\n      }, function (e) {\n        resume(\"throw\", e);\n      });\n    } catch (e) {\n      settle(\"throw\", e);\n    }\n  }\n  function settle(e, n) {\n    switch (e) {\n      case \"return\":\n        r.resolve({\n          value: n,\n          done: !0\n        });\n        break;\n      case \"throw\":\n        r.reject(n);\n        break;\n      default:\n        r.resolve({\n          value: n,\n          done: !1\n        });\n    }\n    (r = r.next) ? resume(r.key, r.arg) : t = null;\n  }\n  this._invoke = function (e, n) {\n    return new Promise(function (o, u) {\n      var i = {\n        key: e,\n        arg: n,\n        resolve: o,\n        reject: u,\n        next: null\n      };\n      t ? t = t.next = i : (r = t = i, resume(e, n));\n    });\n  }, \"function\" != typeof e[\"return\"] && (this[\"return\"] = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n  return this;\n}, AsyncGenerator.prototype.next = function (e) {\n  return this._invoke(\"next\", e);\n}, AsyncGenerator.prototype[\"throw\"] = function (e) {\n  return this._invoke(\"throw\", e);\n}, AsyncGenerator.prototype[\"return\"] = function (e) {\n  return this._invoke(\"return\", e);\n};\nmodule.exports = _wrapAsyncGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _asyncIterator(r) {\n  var n,\n    t,\n    o,\n    e = 2;\n  for (\"undefined\" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {\n    if (t && null != (n = r[t])) return n.call(r);\n    if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));\n    t = \"@@asyncIterator\", o = \"@@iterator\";\n  }\n  throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(r) {\n  function AsyncFromSyncIteratorContinuation(r) {\n    if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n    var n = r.done;\n    return Promise.resolve(r.value).then(function (r) {\n      return {\n        value: r,\n        done: n\n      };\n    });\n  }\n  return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {\n    this.s = r, this.n = r.next;\n  }, AsyncFromSyncIterator.prototype = {\n    s: null,\n    n: null,\n    next: function next() {\n      return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n    },\n    \"return\": function _return(r) {\n      var n = this.s[\"return\"];\n      return void 0 === n ? Promise.resolve({\n        value: r,\n        done: !0\n      }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n    },\n    \"throw\": function _throw(r) {\n      var n = this.s[\"return\"];\n      return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n    }\n  }, new AsyncFromSyncIterator(r);\n}\nmodule.exports = _asyncIterator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { requireNativeModule } from 'expo';\nexport default requireNativeModule('ExpoSQLite');\n//# sourceMappingURL=ExpoSQLite.js.map","/**\n * Flattens the SQLiteOpenOptions that are passed to the native module.\n */\nexport function flattenOpenOptions(options) {\n    const { libSQLOptions, ...restOptions } = options;\n    const result = {\n        ...restOptions,\n    };\n    if (libSQLOptions) {\n        Object.assign(result, {\n            libSQLUrl: libSQLOptions.url,\n            libSQLAuthToken: libSQLOptions.authToken,\n            libSQLRemoteOnly: libSQLOptions.remoteOnly,\n        });\n    }\n    return result;\n}\n//# sourceMappingURL=NativeDatabase.js.map","/**\n * A class that represents an instance of the SQLite session extension.\n * @see [Session Extension](https://www.sqlite.org/sessionintro.html)\n */\nexport class SQLiteSession {\n    nativeDatabase;\n    nativeSession;\n    constructor(nativeDatabase, nativeSession) {\n        this.nativeDatabase = nativeDatabase;\n        this.nativeSession = nativeSession;\n    }\n    //#region Asynchronous API\n    /**\n     * Attach a table to the session asynchronously.\n     * @see [`sqlite3session_attach`](https://www.sqlite.org/session/sqlite3session_attach.html)\n     * @param table The table to attach. If `null`, all tables are attached.\n     */\n    attachAsync(table) {\n        return this.nativeSession.attachAsync(this.nativeDatabase, table);\n    }\n    /**\n     * Enable or disable the session asynchronously.\n     * @see [`sqlite3session_enable`](https://www.sqlite.org/session/sqlite3session_enable.html)\n     * @param enabled Whether to enable or disable the session.\n     */\n    enableAsync(enabled) {\n        return this.nativeSession.enableAsync(this.nativeDatabase, enabled);\n    }\n    /**\n     * Close the session asynchronously.\n     * @see [`sqlite3session_delete`](https://www.sqlite.org/session/sqlite3session_delete.html)\n     */\n    closeAsync() {\n        return this.nativeSession.closeAsync(this.nativeDatabase);\n    }\n    /**\n     * Create a changeset asynchronously.\n     * @see [`sqlite3session_changeset`](https://www.sqlite.org/session/sqlite3session_changeset.html)\n     */\n    createChangesetAsync() {\n        return this.nativeSession.createChangesetAsync(this.nativeDatabase);\n    }\n    /**\n     * Create an inverted changeset asynchronously.\n     * This is a shorthand for [`createChangesetAsync()`](#createchangesetasync) + [`invertChangesetAsync()`](#invertchangesetasyncchangeset).\n     */\n    createInvertedChangesetAsync() {\n        return this.nativeSession.createInvertedChangesetAsync(this.nativeDatabase);\n    }\n    /**\n     * Apply a changeset asynchronously.\n     * @see [`sqlite3changeset_apply`](https://www.sqlite.org/session/sqlite3changeset_apply.html)\n     * @param changeset The changeset to apply.\n     */\n    applyChangesetAsync(changeset) {\n        return this.nativeSession.applyChangesetAsync(this.nativeDatabase, changeset);\n    }\n    /**\n     * Invert a changeset asynchronously.\n     * @see [`sqlite3changeset_invert`](https://www.sqlite.org/session/sqlite3changeset_invert.html)\n     * @param changeset The changeset to invert.\n     */\n    invertChangesetAsync(changeset) {\n        return this.nativeSession.invertChangesetAsync(this.nativeDatabase, changeset);\n    }\n    //#endregion\n    //#region Synchronous API\n    /**\n     * Attach a table to the session synchronously.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @param table The table to attach.\n     * @see [`sqlite3session_attach`](https://www.sqlite.org/session/sqlite3session_attach.html)\n     */\n    attachSync(table) {\n        this.nativeSession.attachSync(this.nativeDatabase, table);\n    }\n    /**\n     * Enable or disable the session synchronously.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @param enabled Whether to enable or disable the session.\n     * @see [`sqlite3session_enable`](https://www.sqlite.org/session/sqlite3session_enable.html)\n     */\n    enableSync(enabled) {\n        this.nativeSession.enableSync(this.nativeDatabase, enabled);\n    }\n    /**\n     * Close the session synchronously.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @see [`sqlite3session_delete`](https://www.sqlite.org/session/sqlite3session_delete.html)\n     */\n    closeSync() {\n        this.nativeSession.closeSync(this.nativeDatabase);\n    }\n    /**\n     * Create a changeset synchronously.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @see [`sqlite3session_changeset`](https://www.sqlite.org/session/sqlite3session_changeset.html)\n     */\n    createChangesetSync() {\n        return this.nativeSession.createChangesetSync(this.nativeDatabase);\n    }\n    /**\n     * Create an inverted changeset synchronously.\n     * This is a shorthand for [`createChangesetSync()`](#createchangesetsync) + [`invertChangesetSync()`](#invertchangesetsyncchangeset).\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     */\n    createInvertedChangesetSync() {\n        return this.nativeSession.createInvertedChangesetSync(this.nativeDatabase);\n    }\n    /**\n     * Apply a changeset synchronously.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @param changeset The changeset to apply.\n     * @see [`sqlite3changeset_apply`](https://www.sqlite.org/session/sqlite3changeset_apply.html)\n     */\n    applyChangesetSync(changeset) {\n        this.nativeSession.applyChangesetSync(this.nativeDatabase, changeset);\n    }\n    /**\n     * Invert a changeset synchronously.\n     *\n     * > **Note:** Running heavy tasks with this function can block the JavaScript thread and affect performance.\n     *\n     * @param changeset The changeset to invert.\n     * @see [`sqlite3changeset_invert`](https://www.sqlite.org/session/sqlite3changeset_invert.html)\n     */\n    invertChangesetSync(changeset) {\n        return this.nativeSession.invertChangesetSync(this.nativeDatabase, changeset);\n    }\n}\n//# sourceMappingURL=SQLiteSession.js.map","import { composeRow, composeRows, normalizeParams } from './paramUtils';\n/**\n * A prepared statement returned by [`SQLiteDatabase.prepareAsync()`](#prepareasyncsource) or [`SQLiteDatabase.prepareSync()`](#preparesyncsource) that can be binded with parameters and executed.\n */\nexport class SQLiteStatement {\n    nativeDatabase;\n    nativeStatement;\n    constructor(nativeDatabase, nativeStatement) {\n        this.nativeDatabase = nativeDatabase;\n        this.nativeStatement = nativeStatement;\n    }\n    async executeAsync(...params) {\n        const { lastInsertRowId, changes, firstRowValues } = await this.nativeStatement.runAsync(this.nativeDatabase, ...normalizeParams(...params));\n        return createSQLiteExecuteAsyncResult(this.nativeDatabase, this.nativeStatement, firstRowValues, {\n            rawResult: false,\n            lastInsertRowId,\n            changes,\n        });\n    }\n    async executeForRawResultAsync(...params) {\n        const { lastInsertRowId, changes, firstRowValues } = await this.nativeStatement.runAsync(this.nativeDatabase, ...normalizeParams(...params));\n        return createSQLiteExecuteAsyncResult(this.nativeDatabase, this.nativeStatement, firstRowValues, {\n            rawResult: true,\n            lastInsertRowId,\n            changes,\n        });\n    }\n    /**\n     * Get the column names of the prepared statement.\n     */\n    getColumnNamesAsync() {\n        return this.nativeStatement.getColumnNamesAsync();\n    }\n    /**\n     * Finalize the prepared statement. This will call the [`sqlite3_finalize()`](https://www.sqlite.org/c3ref/finalize.html) C function under the hood.\n     *\n     * Attempting to access a finalized statement will result in an error.\n     * > **Note:** While `expo-sqlite` will automatically finalize any orphaned prepared statements upon closing the database, it is considered best practice\n     * > to manually finalize prepared statements as soon as they are no longer needed. This helps to prevent resource leaks.\n     * > You can use the `try...finally` statement to ensure that prepared statements are finalized even if an error occurs.\n     */\n    async finalizeAsync() {\n        await this.nativeStatement.finalizeAsync(this.nativeDatabase);\n    }\n    executeSync(...params) {\n        const { lastInsertRowId, changes, firstRowValues } = this.nativeStatement.runSync(this.nativeDatabase, ...normalizeParams(...params));\n        return createSQLiteExecuteSyncResult(this.nativeDatabase, this.nativeStatement, firstRowValues, {\n            rawResult: false,\n            lastInsertRowId,\n            changes,\n        });\n    }\n    executeForRawResultSync(...params) {\n        const { lastInsertRowId, changes, firstRowValues } = this.nativeStatement.runSync(this.nativeDatabase, ...normalizeParams(...params));\n        return createSQLiteExecuteSyncResult(this.nativeDatabase, this.nativeStatement, firstRowValues, {\n            rawResult: true,\n            lastInsertRowId,\n            changes,\n        });\n    }\n    /**\n     * Get the column names of the prepared statement.\n     */\n    getColumnNamesSync() {\n        return this.nativeStatement.getColumnNamesSync();\n    }\n    /**\n     * Finalize the prepared statement. This will call the [`sqlite3_finalize()`](https://www.sqlite.org/c3ref/finalize.html) C function under the hood.\n     *\n     * Attempting to access a finalized statement will result in an error.\n     *\n     * > **Note:** While `expo-sqlite` will automatically finalize any orphaned prepared statements upon closing the database, it is considered best practice\n     * > to manually finalize prepared statements as soon as they are no longer needed. This helps to prevent resource leaks.\n     * > You can use the `try...finally` statement to ensure that prepared statements are finalized even if an error occurs.\n     */\n    finalizeSync() {\n        this.nativeStatement.finalizeSync(this.nativeDatabase);\n    }\n}\n/**\n * Create the `SQLiteExecuteAsyncResult` instance.\n *\n * NOTE: Since Hermes does not support the `Symbol.asyncIterator` feature, we have to use an AsyncGenerator to implement the `AsyncIterableIterator` interface.\n * This is done by `Object.defineProperties` to add the properties to the AsyncGenerator.\n */\nasync function createSQLiteExecuteAsyncResult(database, statement, firstRowValues, options) {\n    const instance = new SQLiteExecuteAsyncResultImpl(database, statement, firstRowValues, options);\n    const generator = instance.generatorAsync();\n    Object.defineProperties(generator, {\n        lastInsertRowId: {\n            value: options.lastInsertRowId,\n            enumerable: true,\n            writable: false,\n            configurable: true,\n        },\n        changes: { value: options.changes, enumerable: true, writable: false, configurable: true },\n        getFirstAsync: {\n            value: instance.getFirstAsync.bind(instance),\n            enumerable: true,\n            writable: false,\n            configurable: true,\n        },\n        getAllAsync: {\n            value: instance.getAllAsync.bind(instance),\n            enumerable: true,\n            writable: false,\n            configurable: true,\n        },\n        resetAsync: {\n            value: instance.resetAsync.bind(instance),\n            enumerable: true,\n            writable: false,\n            configurable: true,\n        },\n    });\n    return generator;\n}\n/**\n * Create the `SQLiteExecuteSyncResult` instance.\n */\nfunction createSQLiteExecuteSyncResult(database, statement, firstRowValues, options) {\n    const instance = new SQLiteExecuteSyncResultImpl(database, statement, firstRowValues, options);\n    const generator = instance.generatorSync();\n    Object.defineProperties(generator, {\n        lastInsertRowId: {\n            value: options.lastInsertRowId,\n            enumerable: true,\n            writable: false,\n            configurable: true,\n        },\n        changes: { value: options.changes, enumerable: true, writable: false, configurable: true },\n        getFirstSync: {\n            value: instance.getFirstSync.bind(instance),\n            enumerable: true,\n            writable: false,\n            configurable: true,\n        },\n        getAllSync: {\n            value: instance.getAllSync.bind(instance),\n            enumerable: true,\n            writable: false,\n            configurable: true,\n        },\n        resetSync: {\n            value: instance.resetSync.bind(instance),\n            enumerable: true,\n            writable: false,\n            configurable: true,\n        },\n    });\n    return generator;\n}\nclass SQLiteExecuteAsyncResultImpl {\n    database;\n    statement;\n    firstRowValues;\n    options;\n    columnNames = null;\n    isStepCalled = false;\n    constructor(database, statement, firstRowValues, options) {\n        this.database = database;\n        this.statement = statement;\n        this.firstRowValues = firstRowValues;\n        this.options = options;\n    }\n    async getFirstAsync() {\n        if (this.isStepCalled) {\n            throw new Error('The SQLite cursor has been shifted and is unable to retrieve the first row without being reset. Invoke `resetAsync()` to reset the cursor first if you want to retrieve the first row.');\n        }\n        this.isStepCalled = true;\n        const columnNames = await this.getColumnNamesAsync();\n        const firstRowValues = this.popFirstRowValues();\n        if (firstRowValues != null) {\n            return composeRowIfNeeded(this.options.rawResult, columnNames, firstRowValues);\n        }\n        const firstRow = await this.statement.stepAsync(this.database);\n        return firstRow != null\n            ? composeRowIfNeeded(this.options.rawResult, columnNames, firstRow)\n            : null;\n    }\n    async getAllAsync() {\n        if (this.isStepCalled) {\n            throw new Error('The SQLite cursor has been shifted and is unable to retrieve all rows without being reset. Invoke `resetAsync()` to reset the cursor first if you want to retrieve all rows.');\n        }\n        this.isStepCalled = true;\n        const firstRowValues = this.popFirstRowValues();\n        if (firstRowValues == null) {\n            // If the first row is empty, this SQL query may be a write operation. We should not call `statement.getAllAsync()` to write again.\n            return [];\n        }\n        const columnNames = await this.getColumnNamesAsync();\n        const allRows = await this.statement.getAllAsync(this.database);\n        if (firstRowValues != null && firstRowValues.length > 0) {\n            return composeRowsIfNeeded(this.options.rawResult, columnNames, [\n                firstRowValues,\n                ...allRows,\n            ]);\n        }\n        return composeRowsIfNeeded(this.options.rawResult, columnNames, allRows);\n    }\n    async *generatorAsync() {\n        this.isStepCalled = true;\n        const columnNames = await this.getColumnNamesAsync();\n        const firstRowValues = this.popFirstRowValues();\n        if (firstRowValues != null) {\n            yield composeRowIfNeeded(this.options.rawResult, columnNames, firstRowValues);\n        }\n        let result;\n        do {\n            result = await this.statement.stepAsync(this.database);\n            if (result != null) {\n                yield composeRowIfNeeded(this.options.rawResult, columnNames, result);\n            }\n        } while (result != null);\n    }\n    resetAsync() {\n        const result = this.statement.resetAsync(this.database);\n        this.isStepCalled = false;\n        return result;\n    }\n    popFirstRowValues() {\n        if (this.firstRowValues != null) {\n            const firstRowValues = this.firstRowValues;\n            this.firstRowValues = null;\n            return firstRowValues.length > 0 ? firstRowValues : null;\n        }\n        return null;\n    }\n    async getColumnNamesAsync() {\n        if (this.columnNames == null) {\n            this.columnNames = await this.statement.getColumnNamesAsync();\n        }\n        return this.columnNames;\n    }\n}\nclass SQLiteExecuteSyncResultImpl {\n    database;\n    statement;\n    firstRowValues;\n    options;\n    columnNames = null;\n    isStepCalled = false;\n    constructor(database, statement, firstRowValues, options) {\n        this.database = database;\n        this.statement = statement;\n        this.firstRowValues = firstRowValues;\n        this.options = options;\n    }\n    getFirstSync() {\n        if (this.isStepCalled) {\n            throw new Error('The SQLite cursor has been shifted and is unable to retrieve the first row without being reset. Invoke `resetSync()` to reset the cursor first if you want to retrieve the first row.');\n        }\n        const columnNames = this.getColumnNamesSync();\n        const firstRowValues = this.popFirstRowValues();\n        if (firstRowValues != null) {\n            return composeRowIfNeeded(this.options.rawResult, columnNames, firstRowValues);\n        }\n        const firstRow = this.statement.stepSync(this.database);\n        return firstRow != null\n            ? composeRowIfNeeded(this.options.rawResult, columnNames, firstRow)\n            : null;\n    }\n    getAllSync() {\n        if (this.isStepCalled) {\n            throw new Error('The SQLite cursor has been shifted and is unable to retrieve all rows without being reset. Invoke `resetSync()` to reset the cursor first if you want to retrieve all rows.');\n        }\n        const firstRowValues = this.popFirstRowValues();\n        if (firstRowValues == null) {\n            // If the first row is empty, this SQL query may be a write operation. We should not call `statement.getAllAsync()` to write again.\n            return [];\n        }\n        const columnNames = this.getColumnNamesSync();\n        const allRows = this.statement.getAllSync(this.database);\n        if (firstRowValues != null && firstRowValues.length > 0) {\n            return composeRowsIfNeeded(this.options.rawResult, columnNames, [\n                firstRowValues,\n                ...allRows,\n            ]);\n        }\n        return composeRowsIfNeeded(this.options.rawResult, columnNames, allRows);\n    }\n    *generatorSync() {\n        const columnNames = this.getColumnNamesSync();\n        const firstRowValues = this.popFirstRowValues();\n        if (firstRowValues != null) {\n            yield composeRowIfNeeded(this.options.rawResult, columnNames, firstRowValues);\n        }\n        let result;\n        do {\n            result = this.statement.stepSync(this.database);\n            if (result != null) {\n                yield composeRowIfNeeded(this.options.rawResult, columnNames, result);\n            }\n        } while (result != null);\n    }\n    resetSync() {\n        const result = this.statement.resetSync(this.database);\n        this.isStepCalled = false;\n        return result;\n    }\n    popFirstRowValues() {\n        if (this.firstRowValues != null) {\n            const firstRowValues = this.firstRowValues;\n            this.firstRowValues = null;\n            return firstRowValues.length > 0 ? firstRowValues : null;\n        }\n        return null;\n    }\n    getColumnNamesSync() {\n        if (this.columnNames == null) {\n            this.columnNames = this.statement.getColumnNamesSync();\n        }\n        return this.columnNames;\n    }\n}\nfunction composeRowIfNeeded(rawResult, columnNames, columnValues) {\n    return rawResult\n        ? columnValues // T would be a ValuesOf<> from caller\n        : composeRow(columnNames, columnValues);\n}\nfunction composeRowsIfNeeded(rawResult, columnNames, columnValuesList) {\n    return rawResult\n        ? columnValuesList // T[] would be a ValuesOf<>[] from caller\n        : composeRows(columnNames, columnValuesList);\n}\n//#endregion\n//# sourceMappingURL=SQLiteStatement.js.map","/**\n * Normalize the bind params to data structure that can be passed to native module.\n * The data structure is a tuple of [primitiveParams, blobParams, shouldPassAsArray].\n * @hidden\n */\nexport function normalizeParams(...params) {\n    let bindParams = params.length > 1 ? params : params[0];\n    if (bindParams == null) {\n        bindParams = [];\n    }\n    if (typeof bindParams !== 'object' ||\n        bindParams instanceof ArrayBuffer ||\n        ArrayBuffer.isView(bindParams)) {\n        bindParams = [bindParams];\n    }\n    const shouldPassAsArray = Array.isArray(bindParams);\n    if (Array.isArray(bindParams)) {\n        bindParams = bindParams.reduce((acc, value, index) => {\n            acc[index] = value;\n            return acc;\n        }, {});\n    }\n    const primitiveParams = {};\n    const blobParams = {};\n    for (const key in bindParams) {\n        const value = bindParams[key];\n        if (value instanceof Uint8Array) {\n            blobParams[key] = value;\n        }\n        else {\n            primitiveParams[key] = value;\n        }\n    }\n    return [primitiveParams, blobParams, shouldPassAsArray];\n}\n/**\n * Compose `columnNames` and `columnValues` to an row object.\n * @hidden\n */\nexport function composeRow(columnNames, columnValues) {\n    // TODO(cedric): make these types more generic and tighten the returned object type based on provided column names/values\n    const row = {};\n    if (columnNames.length !== columnValues.length) {\n        throw new Error(`Column names and values count mismatch. Names: ${columnNames.length}, Values: ${columnValues.length}`);\n    }\n    for (let i = 0; i < columnNames.length; i++) {\n        row[columnNames[i]] = columnValues[i];\n    }\n    return row;\n}\n/**\n * Compose `columnNames` and `columnValuesList` to an array of row objects.\n * @hidden\n */\nexport function composeRows(columnNames, columnValuesList) {\n    if (columnValuesList.length === 0) {\n        return [];\n    }\n    if (columnNames.length !== columnValuesList[0].length) {\n        // We only check the first row because SQLite returns the same column count for all rows.\n        throw new Error(`Column names and values count mismatch. Names: ${columnNames.length}, Values: ${columnValuesList[0].length}`);\n    }\n    const results = [];\n    for (const columnValues of columnValuesList) {\n        // TODO(cedric): make these types more generic and tighten the returned object type based on provided column names/values\n        const row = {};\n        for (let i = 0; i < columnNames.length; i++) {\n            row[columnNames[i]] = columnValues[i];\n        }\n        results.push(row);\n    }\n    return results;\n}\n/**\n * Normalize the index for the Storage.getKeyByIndexSync and Storage.getKeyByIndexAsync methods.\n * @returns The normalized index or `null` if the index is out of bounds.\n * @hidden\n */\nexport function normalizeStorageIndex(index) {\n    const value = Math.floor(Number(index));\n    // Boundary checks\n    if (Object.is(value, -0)) {\n        return 0;\n    }\n    if (!Number.isSafeInteger(value)) {\n        // Chromium uses zero index when the index is out of bounds\n        return 0;\n    }\n    if (value < 0) {\n        return null;\n    }\n    return value;\n}\n//# sourceMappingURL=paramUtils.js.map","import ExpoSQLite from './ExpoSQLite';\n/**\n * Resolves the database directory from the given directory or the default directory.\n *\n * @hidden\n */\nfunction resolveDbDirectory(directory) {\n    const resolvedDirectory = directory ?? ExpoSQLite.defaultDatabaseDirectory;\n    if (resolvedDirectory == null) {\n        throw new Error('Both provided directory and defaultDatabaseDirectory are null.');\n    }\n    return resolvedDirectory;\n}\n/**\n * Creates a normalized database path by combining the directory and database name.\n *\n * Ensures the directory does not end with a trailing slash and the database name\n * does not start with a leading slash, preventing redundant slashes in the final path.\n *\n * @hidden\n */\nexport function createDatabasePath(databaseName, directory) {\n    if (databaseName === ':memory:')\n        return databaseName;\n    const resolvedDirectory = resolveDbDirectory(directory);\n    function removeTrailingSlash(path) {\n        return path.replace(/\\/*$/, '');\n    }\n    function removeLeadingSlash(path) {\n        return path.replace(/^\\/+/, '');\n    }\n    return `${removeTrailingSlash(resolvedDirectory)}/${removeLeadingSlash(databaseName)}`;\n}\n//# sourceMappingURL=pathUtils.js.map","import { Asset } from 'expo-asset';\nimport React, { createContext, memo, useContext, useEffect, useRef, useState } from 'react';\nimport ExpoSQLite from './ExpoSQLite';\nimport { openDatabaseAsync } from './SQLiteDatabase';\nimport { createDatabasePath } from './pathUtils';\n/**\n * Create a context for the SQLite database\n */\nconst SQLiteContext = createContext(null);\n/**\n * Context.Provider component that provides a SQLite database to all children.\n * All descendants of this component will be able to access the database using the [`useSQLiteContext`](#usesqlitecontext) hook.\n */\nexport const SQLiteProvider = memo(function SQLiteProvider({ children, onError, useSuspense = false, ...props }) {\n    if (onError != null && useSuspense) {\n        throw new Error('Cannot use `onError` with `useSuspense`, use error boundaries instead.');\n    }\n    if (useSuspense) {\n        return <SQLiteProviderSuspense {...props}>{children}</SQLiteProviderSuspense>;\n    }\n    return (<SQLiteProviderNonSuspense {...props} onError={onError}>\n        {children}\n      </SQLiteProviderNonSuspense>);\n}, (prevProps, nextProps) => prevProps.databaseName === nextProps.databaseName &&\n    deepEqual(prevProps.options, nextProps.options) &&\n    deepEqual(prevProps.assetSource, nextProps.assetSource) &&\n    prevProps.directory === nextProps.directory &&\n    prevProps.onInit === nextProps.onInit &&\n    prevProps.onError === nextProps.onError &&\n    prevProps.useSuspense === nextProps.useSuspense);\n/**\n * A global hook for accessing the SQLite database across components.\n * This hook should only be used within a [`<SQLiteProvider>`](#sqliteprovider) component.\n *\n * @example\n * ```tsx\n * export default function App() {\n *   return (\n *     <SQLiteProvider databaseName=\"test.db\">\n *       <Main />\n *     </SQLiteProvider>\n *   );\n * }\n *\n * export function Main() {\n *   const db = useSQLiteContext();\n *   console.log('sqlite version', db.getFirstSync('SELECT sqlite_version()'));\n *   return <View />\n * }\n * ```\n */\nexport function useSQLiteContext() {\n    const context = useContext(SQLiteContext);\n    if (context == null) {\n        throw new Error('useSQLiteContext must be used within a <SQLiteProvider>');\n    }\n    return context;\n}\nlet databaseInstance = null;\nfunction SQLiteProviderSuspense({ databaseName, directory, options, assetSource, children, onInit, }) {\n    const databasePromise = getDatabaseAsync({\n        databaseName,\n        directory,\n        options,\n        assetSource,\n        onInit,\n    });\n    const database = use(databasePromise);\n    return <SQLiteContext.Provider value={database}>{children}</SQLiteContext.Provider>;\n}\nfunction SQLiteProviderNonSuspense({ databaseName, directory, options, assetSource, children, onInit, onError, }) {\n    const databaseRef = useRef(null);\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState(null);\n    useEffect(() => {\n        async function setup() {\n            try {\n                const db = await openDatabaseWithInitAsync({\n                    databaseName,\n                    directory,\n                    options,\n                    assetSource,\n                    onInit,\n                });\n                databaseRef.current = db;\n                setLoading(false);\n            }\n            catch (e) {\n                setError(e);\n            }\n        }\n        async function teardown(db) {\n            try {\n                await db?.closeAsync();\n            }\n            catch (e) {\n                setError(e);\n            }\n        }\n        setup();\n        return () => {\n            const db = databaseRef.current;\n            teardown(db);\n            databaseRef.current = null;\n            setLoading(true);\n        };\n    }, [databaseName, directory, options, onInit]);\n    if (error != null) {\n        const handler = onError ??\n            ((e) => {\n                throw e;\n            });\n        handler(error);\n    }\n    if (loading || !databaseRef.current) {\n        return null;\n    }\n    return <SQLiteContext.Provider value={databaseRef.current}>{children}</SQLiteContext.Provider>;\n}\nfunction getDatabaseAsync({ databaseName, directory, options, assetSource, onInit, }) {\n    if (databaseInstance?.promise != null &&\n        databaseInstance?.databaseName === databaseName &&\n        databaseInstance?.directory === directory &&\n        databaseInstance?.options === options &&\n        databaseInstance?.onInit === onInit) {\n        return databaseInstance.promise;\n    }\n    let promise;\n    if (databaseInstance?.promise != null) {\n        promise = databaseInstance.promise\n            .then((db) => {\n            db.closeAsync();\n        })\n            .then(() => {\n            return openDatabaseWithInitAsync({\n                databaseName,\n                directory,\n                options,\n                assetSource,\n                onInit,\n            });\n        });\n    }\n    else {\n        promise = openDatabaseWithInitAsync({ databaseName, directory, options, assetSource, onInit });\n    }\n    databaseInstance = {\n        databaseName,\n        directory,\n        options,\n        onInit,\n        promise,\n    };\n    return promise;\n}\nasync function openDatabaseWithInitAsync({ databaseName, directory, options, assetSource, onInit, }) {\n    if (assetSource != null) {\n        await importDatabaseFromAssetAsync(databaseName, assetSource, directory);\n    }\n    const database = await openDatabaseAsync(databaseName, options, directory);\n    if (onInit != null) {\n        await onInit(database);\n    }\n    return database;\n}\n/**\n * Imports an asset database into the SQLite database directory.\n *\n * Exposed only for testing purposes.\n * @hidden\n */\nexport async function importDatabaseFromAssetAsync(databaseName, assetSource, directory) {\n    const asset = await Asset.fromModule(assetSource.assetId).downloadAsync();\n    if (!asset.localUri) {\n        throw new Error(`Unable to get the localUri from asset ${assetSource.assetId}`);\n    }\n    const path = createDatabasePath(databaseName, directory);\n    await ExpoSQLite.importAssetDatabaseAsync(path, asset.localUri, assetSource.forceOverwrite ?? false);\n}\n/**\n * Compares two objects deeply for equality.\n */\nexport function deepEqual(a, b) {\n    if (a === b) {\n        return true;\n    }\n    if (a == null || b == null) {\n        return false;\n    }\n    if (typeof a !== 'object' || typeof b !== 'object') {\n        return false;\n    }\n    return (Object.keys(a).length === Object.keys(b).length &&\n        Object.keys(a).every((key) => deepEqual(a[key], b[key])));\n}\n// Referenced from https://github.com/reactjs/react.dev/blob/6570e6cd79a16ac3b1a2902632eddab7e6abb9ad/src/content/reference/react/Suspense.md\n/**\n * A custom hook like [`React.use`](https://react.dev/reference/react/use) hook using private Suspense implementation.\n */\nfunction use(promise) {\n    if (isReactUsePromise(promise)) {\n        if (promise.status === 'fulfilled') {\n            if (promise.value === undefined) {\n                throw new Error('[use] Unexpected undefined value from promise');\n            }\n            return promise.value;\n        }\n        else if (promise.status === 'rejected') {\n            throw promise.reason;\n        }\n        else if (promise.status === 'pending') {\n            throw promise;\n        }\n        throw new Error('[use] Promise is in an invalid state');\n    }\n    const suspensePromise = promise;\n    suspensePromise.status = 'pending';\n    suspensePromise.then((result) => {\n        suspensePromise.status = 'fulfilled';\n        suspensePromise.value = result;\n    }, (reason) => {\n        suspensePromise.status = 'rejected';\n        suspensePromise.reason = reason;\n    });\n    throw suspensePromise;\n}\nfunction isReactUsePromise(promise) {\n    return typeof promise === 'object' && promise !== null && 'status' in promise;\n}\n//#endregion\n//# sourceMappingURL=hooks.js.map","import * as Network from \"expo-network\";\nimport apiClient, { ApiClientError, isApiClientError } from \"./apiClient\";\nimport type { ApiEnvelope } from \"../types/auth\";\nimport type {\n  MobileIntervention,\n  MobileStep,\n} from \"../types/intervention\";\nimport type { SyncQueueItem } from \"../types/offline\";\nimport { requireEnvironmentBaseUrl } from \"../core/environmentService\";\nimport { getMobileConfigForBaseUrl } from \"../core/mobileConfigService\";\nimport {\n  applyServerStepsDelta,\n  enqueueSyncAction,\n  getLastSyncTimestamp,\n  getPendingQueueItems,\n  markQueueItemDead,\n  markQueueItemDone,\n  markQueueItemFailed,\n  markQueueItemWalled,\n  mergeInterventionsSnapshot,\n  setLastSyncTimestamp,\n} from \"../core/localDatabase\";\nimport { readSession } from \"./tokenStorage\";\nimport { flushCrashReports } from \"../core/crashLog\";\n\ntype DeltaPayload = {\n  items?: MobileIntervention[];\n  interventions?: MobileIntervention[];\n  intervention_ids?: number[];\n  steps?: MobileStep[];\n  since?: string;\n  server_time?: string;\n};\n\ntype MultipartQueueFile = {\n  field: string;\n  uri: string;\n  name: string;\n  type: string;\n};\n\ntype MultipartQueuePayload = Record<string, unknown> & {\n  __multipart: boolean;\n  upload_files: MultipartQueueFile[];\n};\n\nfunction isMultipartQueuePayload(payload: Record<string, unknown>): payload is MultipartQueuePayload {\n  if (payload.__multipart !== true) {\n    return false;\n  }\n\n  if (!Array.isArray(payload.upload_files)) {\n    return false;\n  }\n\n  return payload.upload_files.every((file) => {\n    if (!file || typeof file !== \"object\") {\n      return false;\n    }\n    const candidate = file as Record<string, unknown>;\n    return (\n      typeof candidate.field === \"string\" &&\n      typeof candidate.uri === \"string\" &&\n      typeof candidate.name === \"string\" &&\n      typeof candidate.type === \"string\"\n    );\n  });\n}\n\nasync function postMultipartFromQueue(\n  endpoint: string,\n  payload: MultipartQueuePayload\n): Promise<void> {\n  const baseUrl = await requireEnvironmentBaseUrl();\n  const session = await readSession();\n  if (!session.accessToken) {\n    throw new ApiClientError(\"Unauthorized\", 401);\n  }\n\n  const config = await getMobileConfigForBaseUrl(baseUrl);\n  const tenantId = config?.config.tenant_id;\n\n  const formData = new FormData();\n  Object.entries(payload).forEach(([key, value]) => {\n    if (key === \"__multipart\" || key === \"upload_files\" || value === undefined) {\n      return;\n    }\n\n    if (value === null) {\n      formData.append(key, \"\");\n      return;\n    }\n\n    if (\n      typeof value === \"string\" ||\n      typeof value === \"number\" ||\n      typeof value === \"boolean\"\n    ) {\n      formData.append(key, String(value));\n      return;\n    }\n\n    formData.append(key, JSON.stringify(value));\n  });\n\n  payload.upload_files.forEach((file) => {\n    formData.append(file.field || \"files[]\", {\n      uri: file.uri,\n      name: file.name,\n      type: file.type,\n    } as unknown as Blob);\n  });\n\n  const headers: Record<string, string> = {\n    Authorization: `Bearer ${session.accessToken}`,\n  };\n  if (tenantId !== undefined && tenantId !== null) {\n    headers[\"X-Tenant-Id\"] = String(tenantId);\n  }\n\n  const url = endpoint.startsWith(\"http\") ? endpoint : `${baseUrl}${endpoint}`;\n  const response = await fetch(url, {\n    method: \"POST\",\n    headers,\n    body: formData,\n  });\n\n  if (!response.ok) {\n    let message = `HTTP ${response.status}`;\n    let code: string | undefined;\n    try {\n      const data = (await response.json()) as { message?: string; code?: string };\n      if (data.message) {\n        message = data.message;\n      }\n      // On capte aussi le code metier (ex: \"BILLING_WALL\") pour que la sync\n      // puisse classer correctement un upload photo refuse par le mur.\n      if (typeof data.code === \"string\" && data.code) {\n        code = data.code;\n      }\n    } catch {\n      // ignore json parse failure\n    }\n    throw new ApiClientError(message, response.status, code);\n  }\n}\n\n// Mur de facturation (cote serveur, Lot 1) : une ecriture de completion refusee\n// parce que l'abonnement du tenant n'est plus actif revient en 402 portant ce\n// code. A distinguer d'un 402 generique (retryable) : ici l'item NE DOIT PAS\n// mourir, il se re-poussera tel quel a la reactivation.\nconst BILLING_WALL_CODE = \"BILLING_WALL\";\n\n// Handler global \"mur de facturation\" : la sync etant decouplee de l'UI, App\n// l'enregistre au montage pour afficher un message dedie (SANS logout : le mur\n// n'est pas une session invalide). Invoque une seule fois par episode de mur ;\n// re-arme des qu'un envoi repasse (le mur est leve apres reactivation).\nlet billingWallHandler: ((message: string) => void) | null = null;\nlet billingWallNotified = false;\n\nexport function registerBillingWallHandler(handler: ((message: string) => void) | null): void {\n  billingWallHandler = handler;\n}\n\ntype SyncErrorKind = \"auth\" | \"contract\" | \"wall\" | \"retryable\";\n\n// Classe l'erreur d'un envoi de file :\n//  - \"auth\" (401/403)            -> session invalide : on STOPPE la passe\n//    (les items restent 'pending' et repartiront apres re-auth/refresh).\n//  - \"contract\" (400/404/409/422) -> l'item est definitivement mauvais :\n//    inutile de rejouer, on le marque 'dead' et on CONTINUE les suivants.\n//  - \"wall\" (402 BILLING_WALL)   -> mur de facturation : abonnement inactif.\n//    L'ecriture est valide, on STOPPE la passe et on garde l'item 'pending'\n//    SANS attempts++ (cf. markQueueItemWalled) -> re-pousse a la reactivation.\n//  - \"retryable\" (5xx, reseau, erreur sans status) -> attempts++ (dead au\n//    cap MAX_SYNC_ATTEMPTS) et on CONTINUE.\nfunction classifySyncError(error: unknown): SyncErrorKind {\n  if (isApiClientError(error) && typeof error.status === \"number\") {\n    const status = error.status;\n    if (status === 402 && error.code === BILLING_WALL_CODE) {\n      return \"wall\";\n    }\n    if (status === 401 || status === 403) {\n      return \"auth\";\n    }\n    if ([400, 404, 409, 422].includes(status)) {\n      return \"contract\";\n    }\n  }\n  return \"retryable\";\n}\n\nfunction pickItems(payload: DeltaPayload): MobileIntervention[] {\n  if (Array.isArray(payload.items)) return payload.items;\n  if (Array.isArray(payload.interventions)) return payload.interventions;\n  return [];\n}\n\nfunction toPrimitiveParams(input: Record<string, unknown>): Record<string, string | number | boolean> {\n  const out: Record<string, string | number | boolean> = {};\n  Object.entries(input).forEach(([key, value]) => {\n    if (\n      typeof value === \"string\" ||\n      typeof value === \"number\" ||\n      typeof value === \"boolean\"\n    ) {\n      out[key] = value;\n    }\n  });\n  return out;\n}\n\nexport async function isNetworkOnline(): Promise<boolean> {\n  try {\n    const state = await Network.getNetworkStateAsync();\n    return Boolean(state.isConnected && state.isInternetReachable !== false);\n  } catch {\n    return true;\n  }\n}\n\nexport function subscribeNetworkChanges(onChange: (online: boolean) => void): () => void {\n  const subscription = Network.addNetworkStateListener((state) => {\n    onChange(Boolean(state.isConnected && state.isInternetReachable !== false));\n  });\n\n  return () => {\n    subscription.remove();\n  };\n}\n\nexport async function enqueueOfflineAction(input: {\n  endpoint: string;\n  method: \"GET\" | \"POST\";\n  payload: Record<string, unknown>;\n  entityType: string;\n  entityId: string;\n}): Promise<void> {\n  await enqueueSyncAction(input);\n}\n\nasync function dispatchQueueItem(item: SyncQueueItem): Promise<void> {\n  if (item.method === \"POST\") {\n    if (isMultipartQueuePayload(item.payload)) {\n      await postMultipartFromQueue(item.endpoint, item.payload);\n      return;\n    }\n    await apiClient.post(item.endpoint, item.payload);\n    return;\n  }\n  await apiClient.get(item.endpoint, { params: toPrimitiveParams(item.payload) });\n}\n\n// Un save_step mis en file hors-ligne porte la `version` du workflow FIGEE au\n// moment de la saisie. Le serveur applique un verrou optimiste\n// (assertVersion -> 409 WORKFLOW_VERSION_STALE). Au rejeu sequentiel, le 1er\n// save passe et le serveur incremente la version -> tous les saves suivants,\n// avec leur version perimee, sont rejetes en 409 et l'item est jete (classe\n// \"contract\"). Resultat : les etapes remplies hors-ligne sont silencieusement\n// perdues. La file d'un meme tech rejouee en sequence n'a aucune concurrence\n// reelle : on REBASE donc chaque save sur la version courante (cf. dispatch).\nfunction isOfflineSaveStep(\n  payload: Record<string, unknown>\n): payload is Record<string, unknown> & { intervention_id: number } {\n  return payload?.action === \"save_step\" && Number(payload?.intervention_id) > 0;\n}\n\n// Lit la version courante du workflow d'une intervention (best-effort) pour\n// rebaser un save_step rejoue. Renvoie null si indisponible (offline/erreur).\nasync function fetchCurrentWorkflowVersion(interventionId: number): Promise<number | null> {\n  try {\n    const resp = await apiClient.get<\n      ApiEnvelope<{ workflow?: { version?: number } }>\n    >(\"/mobile/intervention_steps.php\", { params: { id: interventionId } });\n    const v = Number(resp.data?.data?.workflow?.version);\n    return Number.isFinite(v) && v > 0 ? v : null;\n  } catch {\n    return null;\n  }\n}\n\ntype WorkflowSavePost = ApiEnvelope<{ workflow?: { version?: number } }>;\n\n// POST un save_step en injectant `version`, et renvoie la nouvelle version du\n// workflow (fallback version+1 : advanceWorkflowAfterSave incremente de 1).\nasync function postSaveStepWithVersion(\n  endpoint: string,\n  payload: Record<string, unknown>,\n  version: number\n): Promise<number> {\n  const resp = await apiClient.post<WorkflowSavePost>(endpoint, { ...payload, version });\n  const next = Number(resp.data?.data?.workflow?.version);\n  return Number.isFinite(next) && next > 0 ? next : version + 1;\n}\n\n// Rejoue un save_step hors-ligne en rebasant sa version sur l'etat serveur\n// courant. `versionByIntervention` suit la version a travers les saves\n// successifs d'une meme intervention dans la passe (seed via 1 GET, puis on\n// chaine la version renvoyee par chaque POST). Backstop : un 409 residuel\n// (drift via une autre ecriture, ex. upload photo) re-seed via GET et retente\n// une fois avant d'abandonner a la classification standard.\nasync function dispatchOfflineSaveStep(\n  item: SyncQueueItem,\n  versionByIntervention: Map<number, number>\n): Promise<void> {\n  const payload = item.payload as Record<string, unknown> & { intervention_id: number };\n  const interventionId = Number(payload.intervention_id);\n\n  let version = versionByIntervention.get(interventionId);\n  if (version === undefined) {\n    version = (await fetchCurrentWorkflowVersion(interventionId)) ?? Number(payload.version) ?? 0;\n  }\n\n  try {\n    const next = await postSaveStepWithVersion(item.endpoint, payload, version);\n    versionByIntervention.set(interventionId, next);\n  } catch (error) {\n    if (isApiClientError(error) && error.status === 409) {\n      const fresh = await fetchCurrentWorkflowVersion(interventionId);\n      if (fresh !== null) {\n        const next = await postSaveStepWithVersion(item.endpoint, payload, fresh);\n        versionByIntervention.set(interventionId, next);\n        return;\n      }\n    }\n    throw error;\n  }\n}\n\nexport async function processSyncQueue(limit = 50): Promise<{ processed: number; failed: number }> {\n  const items = await getPendingQueueItems(limit);\n  let processed = 0;\n  let failed = 0;\n  // Suivi de la version workflow par intervention sur la passe : permet de\n  // rebaser les save_step hors-ligne (version figee a la saisie) sur l'etat\n  // serveur courant et d'eviter les 409 en cascade qui les feraient jeter.\n  const versionByIntervention = new Map<number, number>();\n\n  for (const item of items) {\n    try {\n      if (item.method === \"POST\" && isOfflineSaveStep(item.payload)) {\n        await dispatchOfflineSaveStep(item, versionByIntervention);\n      } else {\n        await dispatchQueueItem(item);\n      }\n      await markQueueItemDone(item.id);\n      processed += 1;\n      // Un envoi a repasse -> le mur (s'il y en avait un) est leve : on re-arme\n      // la notification pour le prochain episode eventuel.\n      billingWallNotified = false;\n    } catch (error) {\n      const message = error instanceof Error ? error.message : \"Sync failed\";\n      const kind = classifySyncError(error);\n      failed += 1;\n\n      if (kind === \"contract\") {\n        // Item definitivement mauvais : on le sort de la file et on poursuit\n        // les suivants (un seul 404 ne doit plus bloquer tout le drain).\n        await markQueueItemDead(item.id, message);\n        continue;\n      }\n\n      if (kind === \"wall\") {\n        // Mur de facturation : abonnement tenant inactif. L'ecriture est valide,\n        // on la GARDE 'pending' sans attempts++ (markQueueItemWalled) -> elle ne\n        // meurt pas au cap et se re-poussera a la reactivation. Inutile\n        // d'insister sur le reste de la passe (tout sera mure pareil) : on stoppe\n        // et on previent l'UI une seule fois par episode.\n        await markQueueItemWalled(item.id, message);\n        if (!billingWallNotified) {\n          billingWallNotified = true;\n          billingWallHandler?.(message);\n        }\n        break;\n      }\n\n      if (kind === \"auth\") {\n        // Session invalide : inutile d'insister sur le reste de la passe.\n        await markQueueItemFailed(item.id, message);\n        break;\n      }\n\n      // Retryable (5xx / reseau) : on incremente (dead au cap) et on continue.\n      await markQueueItemFailed(item.id, message);\n    }\n  }\n\n  return { processed, failed };\n}\n\nexport async function pullSyncDelta(): Promise<number> {\n  // Watermark au format MySQL 'Y-m-d H:i:s' (le serveur le renvoie via\n  // server_time et le compare a interventions.updated_at, en tz serveur).\n  // Defaut = epoch -> pull complet au premier demarrage / cache vide.\n  const since = (await getLastSyncTimestamp()) || \"1970-01-01 00:00:00\";\n\n  const response = await apiClient.get<ApiEnvelope<DeltaPayload>>(\"/mobile/sync_pull.php\", {\n    params: { since },\n  });\n\n  if (!response.data?.success || !response.data.data) {\n    return 0;\n  }\n\n  const payload = response.data.data;\n  const items = pickItems(payload);\n  const keepIds = Array.isArray(payload.intervention_ids)\n    ? payload.intervention_ids\n        .map((id) => Number(id))\n        .filter((id) => Number.isFinite(id))\n    : null;\n\n  // Merge non destructif : upsert des interventions changees + purge des ids\n  // disparus (keepIds = liste complete serveur). On NE remplace plus tout le\n  // snapshot (l'ancien saveInterventionsSnapshot vidait la table -> un delta\n  // partiel effacait toutes les interventions non modifiees).\n  if (items.length > 0 || keepIds) {\n    await mergeInterventionsSnapshot(items, keepIds);\n  }\n\n  const steps = Array.isArray(payload.steps) ? payload.steps : [];\n  const appliedSteps = steps.length > 0 ? await applyServerStepsDelta(steps) : 0;\n\n  // Watermark = horloge SERVEUR (server_time), jamais celle du device :\n  // updated_at est en tz serveur, comparer avec l'heure locale du tel\n  // introduirait un decalage (lignes ratees ou rejouees).\n  if (typeof payload.server_time === \"string\" && payload.server_time) {\n    await setLastSyncTimestamp(payload.server_time);\n  }\n\n  return items.length + appliedSteps;\n}\n\n// Garde de reentrance : la sync est declenchee par 3 sources (boot, retour\n// reseau, retour foreground) qui peuvent coincider. Sans verrou, deux passes\n// concurrentes liraient les memes items 'pending' et les enverraient en double\n// (intervention_start/precheck n'ont pas de cle d'idempotence). Le flag\n// module-level serialise : la 2e source recoit un resultat neutre et n'envoie\n// rien tant que la 1ere n'a pas fini.\nlet syncInFlight = false;\n\nexport async function syncOnReconnect(): Promise<{\n  pushed: number;\n  failed: number;\n  pulled: number;\n  skipped?: boolean;\n}> {\n  if (syncInFlight) {\n    return { pushed: 0, failed: 0, pulled: 0, skipped: true };\n  }\n  syncInFlight = true;\n  try {\n    const pushResult = await processSyncQueue();\n\n    let pulled = 0;\n    try {\n      pulled = await pullSyncDelta();\n    } catch {\n      pulled = 0;\n    }\n\n    // Remontee best-effort des incidents au backend, sur le meme cycle que la\n    // sync (boot / reconnexion / foreground). flushCrashReports ne lance jamais\n    // et conserve les logs si l'endpoint n'est pas encore deploye (404).\n    await flushCrashReports();\n\n    return {\n      pushed: pushResult.processed,\n      failed: pushResult.failed,\n      pulled,\n    };\n  } finally {\n    syncInFlight = false;\n  }\n}\n","import { UnavailabilityError } from 'expo-modules-core';\nimport { useEffect, useState } from 'react';\nimport ExpoNetwork from './ExpoNetwork';\nimport { NetworkStateType } from './Network.types';\nexport { NetworkStateType };\nconst onNetworkStateEventName = 'onNetworkStateChanged';\n// @needsAudit\n/**\n * Gets the device's current network connection state.\n *\n * On web, `navigator.connection.type` is not available on browsers. So if there is an active\n * network connection, the field `type` returns `NetworkStateType.UNKNOWN`. Otherwise, it returns\n * `NetworkStateType.NONE`.\n * @return A `Promise` that fulfils with a `NetworkState` object.\n *\n * @example\n * ```ts\n * await Network.getNetworkStateAsync();\n * // {\n * //   type: NetworkStateType.CELLULAR,\n * //   isConnected: true,\n * //   isInternetReachable: true,\n * // }\n * ```\n */\nexport async function getNetworkStateAsync() {\n    if (!ExpoNetwork.getNetworkStateAsync) {\n        throw new UnavailabilityError('expo-network', 'getNetworkStateAsync');\n    }\n    return await ExpoNetwork.getNetworkStateAsync();\n}\n// @needsAudit\n/**\n * Gets the device's current IPv4 address. Returns `0.0.0.0` if the IP address could not be retrieved.\n *\n * On web, this method uses the third-party [`ipify service`](https://www.ipify.org/) to get the\n * public IP address of the current device.\n * @return A `Promise` that fulfils with a `string` of the current IP address of the device's main\n * network interface. Can only be IPv4 address.\n *\n * @example\n * ```ts\n * await Network.getIpAddressAsync();\n * // \"92.168.32.44\"\n * ```\n */\nexport async function getIpAddressAsync() {\n    if (!ExpoNetwork.getIpAddressAsync) {\n        throw new UnavailabilityError('expo-network', 'getIpAddressAsync');\n    }\n    return await ExpoNetwork.getIpAddressAsync();\n}\n// @needsAudit\n/**\n * Tells if the device is in airplane mode.\n * @return Returns a `Promise` that fulfils with a `boolean` value for whether the device is in\n * airplane mode or not.\n * @platform android\n *\n * @example\n * ```ts\n * await Network.isAirplaneModeEnabledAsync();\n * // false\n * ```\n */\nexport async function isAirplaneModeEnabledAsync() {\n    if (!ExpoNetwork.isAirplaneModeEnabledAsync) {\n        throw new UnavailabilityError('expo-network', 'isAirplaneModeEnabledAsync');\n    }\n    return await ExpoNetwork.isAirplaneModeEnabledAsync();\n}\n/**\n * Adds a listener that will fire whenever the network state changes.\n *\n * @param listener Callback to execute when the network state changes. The callback is provided with\n * a single argument that is an object containing information about the network state.\n *\n * @example\n * ```ts\n * const subscription = addNetworkStateListener(({ type, isConnected, isInternetReachable }) => {\n *   console.log(`Network type: ${type}, Connected: ${isConnected}, Internet Reachable: ${isInternetReachable}`);\n * });\n * ```\n *\n * @returns A subscription object with a remove function to unregister the listener.\n */\nexport function addNetworkStateListener(listener) {\n    return ExpoNetwork.addListener(onNetworkStateEventName, listener);\n}\n// @needsAudit\n/**\n * Returns the current network state of the device. This method\n * initiates a listener for network state changes and cleans up before unmounting.\n *\n * @example\n * ```ts\n * const networkState = useNetworkState();\n * console.log(`Current network type: ${networkState.type}`);\n * ```\n *\n * @return The current network state of the device, including connectivity and type.\n */\nexport function useNetworkState() {\n    const [networkState, setNetworkState] = useState({});\n    useEffect(() => {\n        getNetworkStateAsync().then(setNetworkState);\n        const listener = addNetworkStateListener((networkState) => setNetworkState(networkState));\n        return () => listener.remove();\n    }, []);\n    return networkState;\n}\n//# sourceMappingURL=Network.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNetwork');\n//# sourceMappingURL=ExpoNetwork.js.map","// @needsAudit\n/**\n * An enum of the different types of devices supported by Expo.\n */\nexport var NetworkStateType;\n(function (NetworkStateType) {\n    /**\n     * No active network connection detected.\n     */\n    NetworkStateType[\"NONE\"] = \"NONE\";\n    /**\n     * The connection type could not be determined.\n     */\n    NetworkStateType[\"UNKNOWN\"] = \"UNKNOWN\";\n    /**\n     * Active network connection over mobile data or [`DUN-specific`](https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE_DUN)\n     * mobile connection when setting an upstream connection for tethering.\n     * @platform android\n     * @platform ios\n     */\n    NetworkStateType[\"CELLULAR\"] = \"CELLULAR\";\n    /**\n     * Active network connection over Wi-Fi.\n     * @platform android\n     * @platform ios\n     */\n    NetworkStateType[\"WIFI\"] = \"WIFI\";\n    /**\n     * Active network connection over Bluetooth.\n     * @platform android\n     */\n    NetworkStateType[\"BLUETOOTH\"] = \"BLUETOOTH\";\n    /**\n     * Active network connection over Ethernet.\n     * @platform android\n     * @platform ios\n     */\n    NetworkStateType[\"ETHERNET\"] = \"ETHERNET\";\n    /**\n     * Active network connection over WiMAX.\n     * @platform android\n     */\n    NetworkStateType[\"WIMAX\"] = \"WIMAX\";\n    /**\n     * Active network connection over VPN.\n     * @platform android\n     */\n    NetworkStateType[\"VPN\"] = \"VPN\";\n    /**\n     * Active network connection over other network connection types.\n     * @platform android\n     */\n    NetworkStateType[\"OTHER\"] = \"OTHER\";\n})(NetworkStateType || (NetworkStateType = {}));\n//# sourceMappingURL=Network.types.js.map","import { Platform } from \"react-native\";\nimport Constants from \"expo-constants\";\nimport { Directory, File, Paths } from \"expo-file-system\";\nimport apiClient, { ApiClientError } from \"../services/apiClient\";\n\n// Collecteur de crashs \"maison\" : zero dependance externe, zero service tiers.\n// Les incidents sont persistes localement (anneau borne en JSONL) puis pousses\n// au backend (best-effort, tolerant 404) au prochain demarrage/reconnexion.\n// Voir OBSERVABILITE_CRASH.md (approche A).\n\nexport type CrashKind = \"render\" | \"fatal\" | \"rejection\";\n\n// Contexte non sensible attache a chaque incident. JAMAIS de token ni de donnee\n// client ici (cf. garde-fous OBSERVABILITE_CRASH.md §6).\nexport type CrashContext = {\n  instanceUrl?: string | null;\n  tenantId?: string | number | null;\n};\n\nexport type CrashEntry = {\n  timestamp: string; // ISO 8601\n  kind: CrashKind;\n  message: string;\n  stack?: string;\n  isFatal?: boolean;\n  componentStack?: string;\n  app: string;\n  platform: string;\n  instanceUrl: string | null;\n  tenantId: string | number | null;\n};\n\nexport type CrashInput = {\n  kind: CrashKind;\n  message: string;\n  stack?: string;\n  isFatal?: boolean;\n  componentStack?: string;\n};\n\n// Anneau borne : on ne garde que les N derniers incidents -> pas de croissance\n// disque illimitee. Les stacks sont tronquees pour eviter des fichiers enormes.\nconst MAX_ENTRIES = 50;\nconst MAX_STACK_CHARS = 4000;\n\nconst APP_VERSION = Constants.expoConfig?.version ?? \"?\";\n\nconst crashDir = new Directory(Paths.document, \"crash-logs\");\nconst crashFile = new File(crashDir, \"crashes.jsonl\");\n\nlet context: CrashContext = {};\n\n// Renseigne par App une fois l'instance/tenant connus, pour situer les incidents.\nexport function setCrashContext(next: Readonly<CrashContext>): void {\n  context = { ...context, ...next };\n}\n\nfunction ensureDir(): void {\n  if (!crashDir.exists) {\n    crashDir.create({ intermediates: true, idempotent: true });\n  }\n}\n\nfunction truncate(value: string | undefined): string | undefined {\n  if (!value) {\n    return undefined;\n  }\n  return value.length > MAX_STACK_CHARS ? value.slice(0, MAX_STACK_CHARS) : value;\n}\n\n// Lecture synchrone tolerante : tout echec d'I/O ou de parsing renvoie [] plutot\n// que de propager. Une ligne JSONL corrompue est ignoree, pas bloquante.\nfunction readEntriesSafe(): CrashEntry[] {\n  try {\n    if (!crashFile.exists) {\n      return [];\n    }\n    return crashFile\n      .textSync()\n      .split(\"\\n\")\n      .map((line) => line.trim())\n      .filter(Boolean)\n      .map((line) => {\n        try {\n          return JSON.parse(line) as CrashEntry;\n        } catch {\n          return null;\n        }\n      })\n      .filter((entry): entry is CrashEntry => entry !== null);\n  } catch {\n    return [];\n  }\n}\n\n// Enregistre un incident. NE LANCE JAMAIS : un logger de crash qui crashe est\n// pire que pas de logger. Toute erreur d'I/O est avalee silencieusement.\nexport async function recordCrash(input: Readonly<CrashInput>): Promise<void> {\n  try {\n    const entry: CrashEntry = {\n      timestamp: new Date().toISOString(),\n      kind: input.kind,\n      message: input.message,\n      stack: truncate(input.stack),\n      isFatal: input.isFatal,\n      componentStack: truncate(input.componentStack),\n      app: APP_VERSION,\n      platform: `${Platform.OS} ${Platform.Version}`,\n      instanceUrl: context.instanceUrl ?? null,\n      tenantId: context.tenantId ?? null,\n    };\n    const next = [...readEntriesSafe(), entry].slice(-MAX_ENTRIES);\n    ensureDir();\n    crashFile.write(`${next.map((item) => JSON.stringify(item)).join(\"\\n\")}\\n`);\n  } catch {\n    // I/O indisponible : on perd cet incident, mais l'app ne tombe pas a cause du logger.\n  }\n}\n\nexport async function readCrashLogs(): Promise<CrashEntry[]> {\n  return readEntriesSafe();\n}\n\n// Marqueur present dans le message ET la stack des incidents de TEST. Permet au\n// SuperAdmin de les reconnaitre au premier coup d'oeil dans la vue \"Crashs\n// mobile\" et de les ignorer/supprimer sans risque : un test ne doit jamais etre\n// pris pour un vrai incident.\nexport const TEST_CRASH_MARKER = \"🧪 [TEST]\";\n\nexport async function clearCrashLogs(): Promise<void> {\n  try {\n    if (crashFile.exists) {\n      crashFile.delete();\n    }\n  } catch {\n    // Suppression best-effort : sans incidence si le fichier est deja absent/verrouille.\n  }\n}\n\n// Endpoints d'ingestion backend, cascade .php puis sans extension (meme convention\n// que authApi). Contrat backend a implementer : voir OBSERVABILITE_CRASH.md §4 et\n// la passation backend. Tant qu'il n'existe pas, l'envoi recoit 404 -> les logs\n// sont CONSERVES localement (aucune perte, aucune regression).\nconst CRASH_ENDPOINTS = [\"/mobile/crash_report.php\", \"/mobile/crash_report\"];\n\nasync function postCrashReports(body: unknown): Promise<void> {\n  for (let index = 0; index < CRASH_ENDPOINTS.length - 1; index += 1) {\n    try {\n      await apiClient.post(CRASH_ENDPOINTS[index], body);\n      return;\n    } catch (error) {\n      const is404 = error instanceof ApiClientError && error.status === 404;\n      if (!is404) {\n        throw error;\n      }\n    }\n  }\n  await apiClient.post(CRASH_ENDPOINTS[CRASH_ENDPOINTS.length - 1], body);\n}\n\n// Pousse les incidents en attente vers le backend. Best-effort : tout echec\n// (404 endpoint non deploye, hors-ligne, 401 non authentifie) CONSERVE les logs\n// pour un prochain essai. NE LANCE JAMAIS. Vide le journal local seulement apres\n// un envoi reussi. Renvoie le nombre d'incidents transmis. Declenche par\n// syncOnReconnect (boot / reconnexion / retour foreground).\nexport async function flushCrashReports(): Promise<number> {\n  const reports = readEntriesSafe();\n  if (reports.length === 0) {\n    return 0;\n  }\n  try {\n    await postCrashReports({ reports });\n    await clearCrashLogs();\n    return reports.length;\n  } catch {\n    return 0;\n  }\n}\n\n// Diagnostic MANUEL (bouton cache de l'ecran Support) : enregistre un incident\n// clairement marque comme test (TEST_CRASH_MARKER) puis tente l'envoi par le\n// chemin de prod exact (flushCrashReports). Sert a verifier la chaine complete\n// mobile -> backend -> SuperAdmin sans attendre un vrai crash. Renvoie le nombre\n// d'incidents transmis : 0 si hors-ligne / backend indisponible, auquel cas\n// l'incident reste en local et sera reessaye au prochain sync, comme un vrai\n// crash. NE LANCE JAMAIS (recordCrash et flushCrashReports avalent leurs erreurs).\nexport async function sendTestCrashReport(): Promise<number> {\n  await recordCrash({\n    kind: \"fatal\",\n    message: `${TEST_CRASH_MARKER} Remontee de crash declenchee manuellement (diagnostic) — ce n'est pas un incident reel`,\n    stack: `${TEST_CRASH_MARKER} Stack factice de test\\n  at SupportScreen.diagnostic`,\n    isFatal: false,\n  });\n  return flushCrashReports();\n}\n","export * from './FileSystem';\n\nexport {\n  type FileCreateOptions,\n  type DirectoryCreateOptions,\n  type FileHandle,\n  type FileInfo,\n  type InfoOptions,\n  type PathInfo,\n  type DirectoryInfo,\n  type DownloadOptions,\n} from './ExpoFileSystem.types';\n\nexport * from './legacyWarnings';\n","import ExpoFileSystem from './ExpoFileSystem';\nimport type { DownloadOptions, PathInfo } from './ExpoFileSystem.types';\nimport { PathUtilities } from './pathUtilities';\nimport { FileSystemReadableStreamSource, FileSystemWritableSink } from './streams';\n\nexport class Paths extends PathUtilities {\n  /**\n   * A property containing the cache directory – a place to store files that can be deleted by the system when the device runs low on storage.\n   */\n  static get cache() {\n    return new Directory(ExpoFileSystem.cacheDirectory);\n  }\n\n  /**\n   * A property containing the bundle directory – the directory where assets bundled with the application are stored.\n   */\n  static get bundle() {\n    return new Directory(ExpoFileSystem.bundleDirectory);\n  }\n\n  /**\n   * A property containing the document directory – a place to store files that are safe from being deleted by the system.\n   */\n  static get document() {\n    return new Directory(ExpoFileSystem.documentDirectory);\n  }\n  static get appleSharedContainers() {\n    const containers: Record<string, string> = ExpoFileSystem.appleSharedContainers ?? {};\n    const result: Record<string, Directory> = {};\n    for (const appGroupId in containers) {\n      if (containers[appGroupId]) {\n        result[appGroupId] = new Directory(containers[appGroupId]);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A property that represents the total space on device's internal storage, represented in bytes.\n   */\n  static get totalDiskSpace() {\n    return ExpoFileSystem.totalDiskSpace;\n  }\n\n  /**\n   * A property that represents the available space on device's internal storage, represented in bytes.\n   */\n  static get availableDiskSpace() {\n    return ExpoFileSystem.availableDiskSpace;\n  }\n\n  /**\n   * Returns an object that indicates if the specified path represents a directory.\n   */\n  static info(...uris: string[]): PathInfo {\n    return ExpoFileSystem.info(uris.join('/'));\n  }\n}\n\n/**\n * Represents a file on the filesystem.\n *\n * A `File` instance can be created for any path, and does not need to exist on the filesystem during creation.\n *\n * The constructor accepts an array of strings that are joined to create the file URI. The first argument can also be a `Directory` instance (like `Paths.cache`) or a `File` instance (which creates a new reference to the same file).\n * @example\n * ```ts\n * const file = new File(Paths.cache, \"subdirName\", \"file.txt\");\n * ```\n */\nexport class File extends ExpoFileSystem.FileSystemFile implements Blob {\n  /**\n   * Creates an instance of a file. It can be created for any path, and does not need to exist on the filesystem during creation.\n   *\n   * The constructor accepts an array of strings that are joined to create the file URI. The first argument can also be a `Directory` instance (like `Paths.cache`) or a `File` instance (which creates a new reference to the same file).\n   * @param uris An array of: `file:///` string URIs, `File` instances, and `Directory` instances representing an arbitrary location on the file system.\n   * @example\n   * ```ts\n   * const file = new File(Paths.cache, \"subdirName\", \"file.txt\");\n   * ```\n   */\n  constructor(...uris: (string | File | Directory)[]) {\n    super(Paths.join(...uris));\n    this.validatePath();\n  }\n\n  /*\n   * Directory containing the file.\n   */\n  get parentDirectory() {\n    return new Directory(Paths.dirname(this.uri));\n  }\n\n  /**\n   * File extension.\n   * @example '.png'\n   */\n  get extension() {\n    return Paths.extname(this.uri);\n  }\n\n  /**\n   * File name. Includes the extension.\n   */\n  get name() {\n    return Paths.basename(this.uri);\n  }\n\n  readableStream() {\n    return new ReadableStream(new FileSystemReadableStreamSource(super.open()));\n  }\n\n  writableStream() {\n    return new WritableStream<Uint8Array>(new FileSystemWritableSink(super.open()));\n  }\n\n  async arrayBuffer(): Promise<ArrayBuffer> {\n    const bytes = await this.bytes();\n    return bytes.buffer as ArrayBuffer;\n  }\n\n  stream(): ReadableStream<Uint8Array<ArrayBuffer>> {\n    return this.readableStream();\n  }\n\n  slice(start?: number, end?: number, contentType?: string): Blob {\n    return new Blob([this.bytesSync().slice(start, end)], { type: contentType });\n  }\n}\n\n// Cannot use `static` keyword in class declaration because of a runtime error.\nFile.downloadFileAsync = async function downloadFileAsync(\n  url: string,\n  to: File | Directory,\n  options?: DownloadOptions\n) {\n  const outputURI = await ExpoFileSystem.downloadFileAsync(url, to, options);\n  return new File(outputURI);\n};\n\nFile.pickFileAsync = async function (initialUri?: string, mimeType?: string) {\n  const file = (await ExpoFileSystem.pickFileAsync(initialUri, mimeType)).uri;\n  return new File(file);\n};\n\n/**\n * Represents a directory on the filesystem.\n *\n * A `Directory` instance can be created for any path, and does not need to exist on the filesystem during creation.\n *\n * The constructor accepts an array of strings that are joined to create the directory URI. The first argument can also be a `Directory` instance (like `Paths.cache`).\n * @example\n * ```ts\n * const directory = new Directory(Paths.cache, \"subdirName\");\n * ```\n */\nexport class Directory extends ExpoFileSystem.FileSystemDirectory {\n  /**\n   * Creates an instance of a directory. It can be created for any path, and does not need to exist on the filesystem during creation.\n   *\n   * The constructor accepts an array of strings that are joined to create the directory URI. The first argument can also be a `Directory` instance (like `Paths.cache`).\n   * @param uris An array of: `file:///` string URIs, `File` instances, and `Directory` instances representing an arbitrary location on the file system.\n   * @example\n   * ```ts\n   * const directory = new Directory(Paths.cache, \"subdirName\");\n   * ```\n   */\n  constructor(...uris: (string | File | Directory)[]) {\n    super(Paths.join(...uris));\n    this.validatePath();\n  }\n\n  /*\n   * Directory containing the file.\n   */\n  get parentDirectory() {\n    return new Directory(Paths.join(this.uri, '..'));\n  }\n\n  /**\n   * Lists the contents of a directory.\n   * Calling this method if the parent directory does not exist will throw an error.\n   * @returns An array of `Directory` and `File` instances.\n   */\n  override list(): (Directory | File)[] {\n    // We need to wrap it in the JS File/Directory classes, and returning SharedObjects in lists is not supported yet on Android.\n    return super\n      .listAsRecords()\n      .map(({ isDirectory, uri }) => (isDirectory ? new Directory(uri) : new File(uri)));\n  }\n\n  /**\n   * Directory name.\n   */\n  get name() {\n    return Paths.basename(this.uri);\n  }\n\n  createFile(name: string, mimeType: string | null): File {\n    // Wrapping with the JS child class for additional, JS-only methods.\n    return new File(super.createFile(name, mimeType).uri);\n  }\n\n  createDirectory(name: string): Directory {\n    return new Directory(super.createDirectory(name).uri);\n  }\n}\n\nDirectory.pickDirectoryAsync = async function (initialUri?: string) {\n  const directory = (await ExpoFileSystem.pickDirectoryAsync(initialUri)).uri;\n  return new Directory(directory);\n};\n","import { NativeModule, requireNativeModule } from 'expo-modules-core';\n\nimport type { Directory, File, DownloadOptions } from './ExpoFileSystem.types';\n\ndeclare class ExpoFileSystemModule extends NativeModule {\n  FileSystemDirectory: typeof Directory;\n  FileSystemFile: typeof File;\n  downloadFileAsync(\n    url: string,\n    destination: File | Directory,\n    options?: DownloadOptions\n  ): Promise<string>;\n  pickDirectoryAsync(initialUri?: string): Promise<Directory>;\n  pickFileAsync(initialUri?: string, mimeType?: string): Promise<File>;\n  totalDiskSpace: number;\n  availableDiskSpace: number;\n  documentDirectory: string;\n  cacheDirectory: string;\n  bundleDirectory: string;\n}\n\nexport default requireNativeModule<ExpoFileSystemModule>('FileSystem');\n","import type { Directory, File } from '../FileSystem';\nimport * as nodePath from './path';\nimport { asUrl, isUrl, encodeURLChars } from './url';\n\nfunction uriObjectToString(path: string | File | Directory): string {\n  return typeof path === 'string' ? path : path.uri;\n}\n\nexport class PathUtilities {\n  /**\n   * Joins path segments into a single path.\n   * @param paths - An array of path segments.\n   * @returns A string representing the joined path.\n   */\n  static join(...paths: (string | File | Directory)[]): string {\n    const [firstSegment, ...rest] = paths.map(uriObjectToString);\n    const pathAsUrl = asUrl(firstSegment);\n    if (pathAsUrl) {\n      pathAsUrl.pathname = nodePath.join(pathAsUrl.pathname, ...rest.map(encodeURLChars));\n      return pathAsUrl.toString();\n    }\n    return nodePath.join(firstSegment, ...rest.map(encodeURLChars));\n  }\n\n  /**\n   * Resolves a relative path to an absolute path.\n   * @param from - The base path.\n   * @param to - The relative path.\n   * @returns A string representing the resolved path.\n   */\n  static relative(from: string | File | Directory, to: string | File | Directory): string {\n    const fromString = uriObjectToString(from);\n    const toString = uriObjectToString(to);\n\n    // If the first path is a file URL, convert it to a path\n    if (isUrl(fromString)) {\n      from = asUrl(fromString)!.pathname;\n    }\n    // If the second path is a file URL, convert it to a path\n    if (isUrl(toString)) {\n      to = asUrl(toString)!.pathname;\n    }\n    return nodePath.relative(fromString, toString);\n  }\n\n  /**\n   * Checks if a path is absolute.\n   * @param path - The path to check.\n   * @returns `true` if the path is absolute, `false` otherwise.\n   */\n  static isAbsolute(path: string | File | Directory): boolean {\n    const pathString = uriObjectToString(path);\n    if (isUrl(pathString)) {\n      return true;\n    }\n    return nodePath.isAbsolute(pathString);\n  }\n\n  /**\n   * Normalizes a path.\n   * @param path - The path to normalize.\n   * @returns A string representing the normalized path.\n   */\n  static normalize(path: string | File | Directory): string {\n    const pathString = uriObjectToString(path);\n    const pathURL = asUrl(encodeURLChars(pathString));\n    if (pathURL) {\n      pathURL.pathname = encodeURLChars(nodePath.normalize(decodeURIComponent(pathURL.pathname)));\n      return pathURL.toString();\n    }\n    return nodePath.normalize(pathString);\n  }\n\n  /**\n   * Returns the directory name of a path.\n   * @param path - The path to get the directory name from.\n   * @returns A string representing the directory name.\n   */\n  static dirname(path: string | File | Directory): string {\n    const pathString = uriObjectToString(path);\n    const pathURL = asUrl(pathString);\n    if (pathURL) {\n      pathURL.pathname = encodeURLChars(nodePath.dirname(decodeURIComponent(pathURL.pathname)));\n      return pathURL.toString();\n    }\n    return nodePath.dirname(pathString);\n  }\n\n  /**\n   * Returns the base name of a path.\n   * @param path - The path to get the base name from.\n   * @param ext - An optional file extension.\n   * @returns A string representing the base name.\n   */\n  static basename(path: string | File | Directory, ext?: string): string {\n    const pathString = uriObjectToString(path);\n    const pathURL = asUrl(pathString);\n    if (pathURL) {\n      return nodePath.basename(decodeURIComponent(pathURL.pathname));\n    }\n    return nodePath.basename(pathString, ext);\n  }\n\n  /**\n   * Returns the extension of a path.\n   * @param path - The path to get the extension from.\n   * @returns A string representing the extension.\n   */\n  static extname(path: string | File | Directory): string {\n    const pathString = uriObjectToString(path);\n    const pathURL = asUrl(pathString);\n    if (pathURL) {\n      return nodePath.extname(decodeURIComponent(pathURL.pathname));\n    }\n    return nodePath.extname(pathString);\n  }\n\n  /**\n   * Parses a path into its components.\n   * @param path - The path to parse.\n   * @returns An object containing the parsed path components.\n   */\n  static parse(path: string | File | Directory): {\n    root: string;\n    dir: string;\n    base: string;\n    ext: string;\n    name: string;\n  } {\n    const pathString = uriObjectToString(path);\n    const pathURL = asUrl(pathString);\n    if (pathURL) {\n      return nodePath.parse(decodeURIComponent(pathURL.pathname));\n    }\n    return nodePath.parse(pathString);\n  }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction isPathSeparator(code: string) {\n  return code === '/';\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeString(path: string, allowAboveRoot: boolean, separator: string) {\n  let res: string = '';\n  let lastSegmentLength: number = 0;\n  let lastSlash: number = -1;\n  let dots: number = 0;\n  let code: string = '';\n  for (let i = 0; i <= path.length; ++i) {\n    if (i < path.length) code = path.charAt(i);\n    else if (isPathSeparator(code)) break;\n    else code = '/';\n\n    if (isPathSeparator(code)) {\n      if (lastSlash === i - 1 || dots === 1) {\n        // NOOP\n      } else if (dots === 2) {\n        if (\n          res.length < 2 ||\n          lastSegmentLength !== 2 ||\n          res.charAt(res.length - 1) !== '.' ||\n          res.charAt(res.length - 2) !== '.'\n        ) {\n          if (res.length > 2) {\n            const lastSlashIndex = res.lastIndexOf(separator);\n            if (lastSlashIndex === -1) {\n              res = '';\n              lastSegmentLength = 0;\n            } else {\n              res = res.slice(0, lastSlashIndex);\n              lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\n            }\n            lastSlash = i;\n            dots = 0;\n            continue;\n          } else if (res.length !== 0) {\n            res = '';\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          res += res.length > 0 ? `${separator}..` : '..';\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0) res += `${separator}${path.slice(lastSlash + 1, i)}`;\n        else res = path.slice(lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === '.' && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\nfunction formatExt(ext?: string) {\n  return ext ? `${ext[0] === '.' ? '' : '.'}${ext}` : '';\n}\n\nexport function format(\n  sep: string,\n  pathObject: {\n    dir?: string;\n    root?: string;\n    base?: string;\n    name?: string;\n    ext?: string;\n  }\n): string {\n  const dir = pathObject.dir || pathObject.root;\n  const base = pathObject.base || `${pathObject.name || ''}${formatExt(pathObject.ext)}`;\n  if (!dir) {\n    return base;\n  }\n  return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\n}\n\nexport function resolve(...args: string[]) {\n  let resolvedPath = '';\n  let resolvedAbsolute = false;\n\n  for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    const path = i >= 0 ? args[i] : '';\n\n    // Skip empty entries\n    if (!path || path.length === 0) {\n      continue;\n    }\n\n    resolvedPath = `${path}/${resolvedPath}`;\n    resolvedAbsolute = !!(path && path.charAt(0) === '/');\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/');\n\n  if (resolvedAbsolute) {\n    return `/${resolvedPath}`;\n  }\n  return resolvedPath.length > 0 ? resolvedPath : '.';\n}\n\nexport function normalize(path: string) {\n  if (path.length === 0) return '.';\n\n  const isAbsolute = path.charAt(0) === '/';\n  const trailingSeparator = path.charAt(path.length - 1) === '/';\n\n  // Normalize the path\n  path = normalizeString(path, !isAbsolute, '/');\n\n  if (path.length === 0) {\n    if (isAbsolute) return '/';\n    return trailingSeparator ? './' : '.';\n  }\n  if (trailingSeparator) path += '/';\n\n  return isAbsolute ? `/${path}` : path;\n}\nexport function isAbsolute(path: string) {\n  return path.length > 0 && path.charAt(0) === '/';\n}\nexport function join(...args: string[]) {\n  if (args.length === 0) return '.';\n\n  const path: string[] = [];\n  for (let i = 0; i < args.length; ++i) {\n    const arg = args[i];\n    if (arg && arg.length > 0) {\n      path.push(arg);\n    }\n  }\n\n  if (path.length === 0) return '.';\n\n  return normalize(path.join('/'));\n}\nexport function relative(from: string, to: string) {\n  if (from === to) return '';\n\n  // Trim leading forward slashes.\n  from = resolve(from);\n  to = resolve(to);\n\n  if (from === to) return '';\n\n  const fromStart = 1;\n  const fromEnd = from.length;\n  const fromLen = fromEnd - fromStart;\n  const toStart = 1;\n  const toLen = to.length - toStart;\n\n  // Compare paths to find the longest common path from root\n  const length = fromLen < toLen ? fromLen : toLen;\n  let lastCommonSep = -1;\n  let i = 0;\n  for (; i < length; i++) {\n    const fromChar = from.charAt(fromStart + i);\n    if (fromChar !== to.charAt(toStart + i)) break;\n    else if (fromChar === '/') lastCommonSep = i;\n  }\n  if (i === length) {\n    if (toLen > length) {\n      if (to.charAt(toStart + i) === '/') {\n        // We get here if `from` is the exact base path for `to`.\n        // For example: from='/foo/bar'; to='/foo/bar/baz'\n        return to.slice(toStart + i + 1);\n      }\n      if (i === 0) {\n        // We get here if `from` is the root\n        // For example: from='/'; to='/foo'\n        return to.slice(toStart + i);\n      }\n    } else if (fromLen > length) {\n      if (from.charAt(fromStart + i) === '/') {\n        // We get here if `to` is the exact base path for `from`.\n        // For example: from='/foo/bar/baz'; to='/foo/bar'\n        lastCommonSep = i;\n      } else if (i === 0) {\n        // We get here if `to` is the root.\n        // For example: from='/foo/bar'; to='/'\n        lastCommonSep = 0;\n      }\n    }\n  }\n\n  let out = '';\n  // Generate the relative path based on the path difference between `to`\n  // and `from`.\n  for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n    if (i === fromEnd || from.charAt(i) === '/') {\n      out += out.length === 0 ? '..' : '/..';\n    }\n  }\n\n  // Lastly, append the rest of the destination (`to`) path that comes after\n  // the common path parts.\n  return `${out}${to.slice(toStart + lastCommonSep)}`;\n}\nexport function toNamespacedPath(path: string) {\n  // Non-op on posix systems\n  return path;\n}\nexport function dirname(path: string) {\n  if (path.length === 0) return '.';\n  const hasRoot = path.charAt(0) === '/';\n  let end = -1;\n  let matchedSlash = true;\n  for (let i = path.length - 1; i >= 1; --i) {\n    if (path.charAt(i) === '/') {\n      if (!matchedSlash) {\n        end = i;\n        break;\n      }\n    } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n  if (hasRoot && end === 1) return '//';\n  return path.slice(0, end);\n}\nexport function basename(path: string, suffix?: string) {\n  let start = 0;\n  let end = -1;\n  let matchedSlash = true;\n\n  if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) {\n    if (suffix === path) return '';\n    let extIdx = suffix.length - 1;\n    let firstNonSlashEnd = -1;\n    for (let i = path.length - 1; i >= 0; --i) {\n      const code = path.charAt(i);\n      if (code === '/') {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else {\n        if (firstNonSlashEnd === -1) {\n          // We saw the first non-path separator, remember this index in case\n          // we need it if the extension ends up not matching\n          matchedSlash = false;\n          firstNonSlashEnd = i + 1;\n        }\n        if (extIdx >= 0) {\n          // Try to match the explicit extension\n          if (code === suffix.charAt(extIdx)) {\n            if (--extIdx === -1) {\n              // We matched the extension, so mark this as the end of our path\n              // component\n              end = i;\n            }\n          } else {\n            // Extension does not match, so our result is the entire path\n            // component\n            extIdx = -1;\n            end = firstNonSlashEnd;\n          }\n        }\n      }\n    }\n\n    if (start === end) end = firstNonSlashEnd;\n    else if (end === -1) end = path.length;\n    return path.slice(start, end);\n  }\n  for (let i = path.length - 1; i >= 0; --i) {\n    if (path.charAt(i) === '/') {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now\n      if (!matchedSlash) {\n        start = i + 1;\n        break;\n      }\n    } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n}\nexport function extname(path: string) {\n  let startDot = -1;\n  let startPart = 0;\n  let end = -1;\n  let matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  let preDotState = 0;\n  for (let i = path.length - 1; i >= 0; --i) {\n    const code = path.charAt(i);\n    if (code === '/') {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now\n      if (!matchedSlash) {\n        startPart = i + 1;\n        break;\n      }\n      continue;\n    }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === '.') {\n      // If this is our first dot, mark it as the start of our extension\n      if (startDot === -1) startDot = i;\n      else if (preDotState !== 1) preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (\n    startDot === -1 ||\n    end === -1 ||\n    // We saw a non-dot character immediately before the dot\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly '..'\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return '';\n  }\n  return path.slice(startDot, end);\n}\nexport function parse(path: string) {\n  const ret = { root: '', dir: '', base: '', ext: '', name: '' };\n  if (path.length === 0) return ret;\n  const isAbsolute = path.charAt(0) === '/';\n  let start;\n  if (isAbsolute) {\n    ret.root = '/';\n    start = 1;\n  } else {\n    start = 0;\n  }\n  let startDot = -1;\n  let startPart = 0;\n  let end = -1;\n  let matchedSlash = true;\n  let i = path.length - 1;\n\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  let preDotState = 0;\n\n  // Get non-dir info\n  for (; i >= start; --i) {\n    const code = path.charAt(i);\n    if (code === '/') {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now\n      if (!matchedSlash) {\n        startPart = i + 1;\n        break;\n      }\n      continue;\n    }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === '.') {\n      // If this is our first dot, mark it as the start of our extension\n      if (startDot === -1) startDot = i;\n      else if (preDotState !== 1) preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (end !== -1) {\n    const start = startPart === 0 && isAbsolute ? 1 : startPart;\n    if (\n      startDot === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n    ) {\n      // eslint-disable-next-line no-multi-assign\n      ret.base = ret.name = path.slice(start, end);\n    } else {\n      ret.name = path.slice(start, startDot);\n      ret.base = path.slice(start, end);\n      ret.ext = path.slice(startDot, end);\n    }\n  }\n\n  if (startPart > 0) ret.dir = path.slice(0, startPart - 1);\n  else if (isAbsolute) ret.dir = '/';\n\n  return ret;\n}\nexport const sep = '/';\nexport const delimiter = ':';\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport { resolve, sep } from './path';\n\nconst percentRegEx = /%/g;\nconst backslashRegEx = /\\\\/g;\nconst newlineRegEx = /\\n/g;\nconst carriageReturnRegEx = /\\r/g;\nconst tabRegEx = /\\t/g;\nconst questionRegex = /\\?/g;\nconst hashRegex = /#/g;\nconst spaceRegEx = / /g;\n\nfunction encodePathChars(filepath: string) {\n  if (filepath.indexOf('%') !== -1) filepath = filepath.replace(percentRegEx, '%25');\n  // In posix, backslash is a valid character in paths:\n  if (filepath.indexOf('\\\\') !== -1) filepath = filepath.replace(backslashRegEx, '%5C');\n  if (filepath.indexOf('\\n') !== -1) filepath = filepath.replace(newlineRegEx, '%0A');\n  if (filepath.indexOf('\\r') !== -1) filepath = filepath.replace(carriageReturnRegEx, '%0D');\n  if (filepath.indexOf('\\t') !== -1) filepath = filepath.replace(tabRegEx, '%09');\n  if (filepath.indexOf(' ') !== -1) filepath = filepath.replace(spaceRegEx, '%20');\n  return filepath;\n}\n\nexport function encodeURLChars(path: string) {\n  let resolved = resolve(path);\n  // path.resolve strips trailing slashes so we must add them back\n  const filePathLast = path.charAt(path.length - 1);\n  if (filePathLast === '/' && resolved[resolved.length - 1] !== sep) resolved += '/';\n\n  // Call encodePathChars first to avoid encoding % again for ? and #.\n  resolved = encodePathChars(resolved);\n\n  // Question and hash character should be included in pathname.\n  // Therefore, encoding is required to eliminate parsing them in different states.\n  // This is done as an optimization to not creating a URL instance and\n  // later triggering pathname setter, which impacts performance\n  if (resolved.indexOf('?') !== -1) resolved = resolved.replace(questionRegex, '%3F');\n  if (resolved.indexOf('#') !== -1) resolved = resolved.replace(hashRegex, '%23');\n  return resolved;\n}\n\nexport function isUrl(url: string) {\n  try {\n    return !!new URL(url);\n  } catch (error) {\n    return false;\n  }\n}\n\nexport function asUrl(url: string | URL) {\n  try {\n    const newUrl = new URL(url);\n    newUrl.hash = '';\n    return newUrl;\n  } catch (error) {\n    return null;\n  }\n}\n","import type { FileHandle } from './ExpoFileSystem.types';\n\nexport class FileSystemReadableStreamSource implements UnderlyingByteSource {\n  handle: FileHandle;\n  size: number = 1024;\n  type = 'bytes' as const;\n\n  constructor(handle: FileHandle) {\n    this.handle = handle;\n  }\n\n  cancel() {\n    this.handle.close();\n  }\n\n  pull(controller: ReadableByteStreamController) {\n    const theView = controller.byobRequest?.view;\n    if (!theView) {\n      const bytes = this.handle.readBytes(this.size);\n      if (bytes.length === 0) {\n        controller.close();\n        return;\n      }\n      controller.enqueue(bytes);\n      return;\n    }\n\n    // TODO: Optimize by adding a native method that can write into a TypedArray at a given offset.\n    const bytes = this.handle.readBytes(theView.byteLength - theView.byteOffset);\n    if (bytes.length === 0) {\n      controller.close();\n      controller.byobRequest.respond(0);\n      return;\n    }\n    if (theView instanceof Uint8Array) {\n      theView.set(bytes, theView.byteOffset);\n    } else {\n      const array = new Uint8Array(theView.buffer);\n      for (let i = 0; i < bytes.length; i++) {\n        array[i + (theView.byteOffset ?? 0)] = bytes[i]!;\n      }\n    }\n    controller.byobRequest.respond(bytes.length);\n  }\n}\n\nexport class FileSystemWritableSink implements UnderlyingSink {\n  handle: FileHandle;\n\n  constructor(handle: FileHandle) {\n    this.handle = handle;\n  }\n\n  abort() {\n    this.close();\n  }\n\n  close() {\n    this.handle.close();\n  }\n\n  write(chunk: Uint8Array) {\n    this.handle.writeBytes(chunk);\n  }\n}\n","import type {\n  DownloadOptions,\n  FileSystemNetworkTaskProgressCallback,\n  DownloadProgressData,\n  UploadProgressData,\n  FileInfo,\n  FileSystemDownloadResult,\n  FileSystemUploadOptions,\n  FileSystemUploadResult,\n  ReadingOptions,\n  WritingOptions,\n  DeletingOptions,\n  InfoOptions,\n  RelocatingOptions,\n  MakeDirectoryOptions,\n} from './legacy/FileSystem.types';\n\nfunction errorOnLegacyMethodUse(methodName: string): Error {\n  const message = `Method ${methodName} imported from \"expo-file-system\" is deprecated.\\nYou can migrate to the new filesystem API using \"File\" and \"Directory\" classes or import the legacy API from \"expo-file-system/legacy\".\\nAPI reference and examples are available in the filesystem docs: https://docs.expo.dev/versions/v54.0.0/sdk/filesystem/`;\n  console.warn(message);\n  return new Error(message);\n}\n\n/**\n * @deprecated Use `new File().info` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function getInfoAsync(fileUri: string, options: InfoOptions = {}): Promise<FileInfo> {\n  throw errorOnLegacyMethodUse('getInfoAsync');\n}\n\n/**\n * @deprecated Use `new File().text()` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function readAsStringAsync(\n  fileUri: string,\n  options: ReadingOptions = {}\n): Promise<string> {\n  throw errorOnLegacyMethodUse('readAsStringAsync');\n}\n\n/**\n * @deprecated Import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function getContentUriAsync(fileUri: string): Promise<string> {\n  throw errorOnLegacyMethodUse('getContentUriAsync');\n}\n\n/**\n * @deprecated Use `new File().write()` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function writeAsStringAsync(\n  fileUri: string,\n  contents: string,\n  options: WritingOptions = {}\n): Promise<void> {\n  throw errorOnLegacyMethodUse('writeAsStringAsync');\n}\n\n/**\n * @deprecated Use `new File().delete()` or `new Directory().delete()` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function deleteAsync(fileUri: string, options: DeletingOptions = {}): Promise<void> {\n  throw errorOnLegacyMethodUse('deleteAsync');\n}\n\n/**\n * @deprecated\n */\nexport async function deleteLegacyDocumentDirectoryAndroid(): Promise<void> {\n  throw errorOnLegacyMethodUse('deleteLegacyDocumentDirectoryAndroid');\n}\n\n/**\n * @deprecated Use `new File().move()` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function moveAsync(options: RelocatingOptions): Promise<void> {\n  throw errorOnLegacyMethodUse('moveAsync');\n}\n\n/**\n * @deprecated Use `new File().copy()` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function copyAsync(options: RelocatingOptions): Promise<void> {\n  throw errorOnLegacyMethodUse('copyAsync');\n}\n\n/**\n * @deprecated Use `new Directory().create()` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function makeDirectoryAsync(\n  fileUri: string,\n  options: MakeDirectoryOptions = {}\n): Promise<void> {\n  throw errorOnLegacyMethodUse('makeDirectoryAsync');\n}\n\n/**\n * @deprecated Use `new Directory().list()` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function readDirectoryAsync(fileUri: string): Promise<string[]> {\n  throw errorOnLegacyMethodUse('readDirectoryAsync');\n}\n\n/**\n * @deprecated Use `Paths.availableDiskSpace` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function getFreeDiskStorageAsync(): Promise<number> {\n  throw errorOnLegacyMethodUse('getFreeDiskStorageAsync');\n}\n\n/**\n * @deprecated Use `Paths.totalDiskSpace` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function getTotalDiskCapacityAsync(): Promise<number> {\n  throw errorOnLegacyMethodUse('getTotalDiskCapacityAsync');\n}\n\n/**\n * @deprecated Use `File.downloadFileAsync` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function downloadAsync(\n  uri: string,\n  fileUri: string,\n  options: DownloadOptions = {}\n): Promise<FileSystemDownloadResult> {\n  throw errorOnLegacyMethodUse('downloadAsync');\n}\n\n/**\n * @deprecated Use `@expo/fetch` or import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport async function uploadAsync(\n  url: string,\n  fileUri: string,\n  options: FileSystemUploadOptions = {}\n): Promise<FileSystemUploadResult> {\n  throw errorOnLegacyMethodUse('uploadAsync');\n}\n\n/**\n * @deprecated Import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport function createDownloadResumable(\n  uri: string,\n  fileUri: string,\n  options?: DownloadOptions,\n  callback?: FileSystemNetworkTaskProgressCallback<DownloadProgressData>,\n  resumeData?: string\n): any {\n  throw errorOnLegacyMethodUse('createDownloadResumable');\n}\n\n/**\n * @deprecated Import this method from `expo-file-system/legacy`. This method will throw in runtime.\n */\nexport function createUploadTask(\n  url: string,\n  fileUri: string,\n  options?: FileSystemUploadOptions,\n  callback?: FileSystemNetworkTaskProgressCallback<UploadProgressData>\n): any {\n  throw errorOnLegacyMethodUse('createUploadTask');\n}\n","import * as SecureStore from \"expo-secure-store\";\nimport type { MobilePrecheckPayload } from \"../types/intervention\";\n\nconst KEY_PREFIX = \"cc_precheck_draft_\";\nconst INDEX_KEY = \"cc_precheck_draft_index\";\n\nexport type StoredPrecheckDraft = MobilePrecheckPayload & {\n  saved_at: string;\n};\n\nfunction buildKey(interventionId: number): string {\n  return `${KEY_PREFIX}${interventionId}`;\n}\n\nasync function readIndex(): Promise<number[]> {\n  const raw = await SecureStore.getItemAsync(INDEX_KEY);\n  if (!raw) {\n    return [];\n  }\n\n  try {\n    const parsed = JSON.parse(raw) as number[];\n    return Array.isArray(parsed)\n      ? parsed.filter((value) => Number.isInteger(value) && value > 0)\n      : [];\n  } catch {\n    return [];\n  }\n}\n\nasync function writeIndex(ids: number[]): Promise<void> {\n  const unique = Array.from(new Set(ids)).filter((value) => Number.isInteger(value) && value > 0);\n  if (unique.length === 0) {\n    await SecureStore.deleteItemAsync(INDEX_KEY);\n    return;\n  }\n\n  await SecureStore.setItemAsync(INDEX_KEY, JSON.stringify(unique));\n}\n\nexport async function savePrecheckDraft(\n  payload: MobilePrecheckPayload\n): Promise<void> {\n  const draft: StoredPrecheckDraft = {\n    ...payload,\n    saved_at: new Date().toISOString(),\n  };\n  const key = buildKey(payload.intervention_id);\n  await SecureStore.setItemAsync(key, JSON.stringify(draft));\n\n  const ids = await readIndex();\n  if (!ids.includes(payload.intervention_id)) {\n    await writeIndex([...ids, payload.intervention_id]);\n  }\n}\n\nexport async function getPrecheckDraft(\n  interventionId: number\n): Promise<StoredPrecheckDraft | null> {\n  const raw = await SecureStore.getItemAsync(buildKey(interventionId));\n  if (!raw) {\n    return null;\n  }\n\n  try {\n    const parsed = JSON.parse(raw) as StoredPrecheckDraft;\n    if (\n      typeof parsed.intervention_id !== \"number\" ||\n      typeof parsed.cerfa_enabled !== \"boolean\"\n    ) {\n      return null;\n    }\n    return parsed;\n  } catch {\n    return null;\n  }\n}\n\nexport async function clearPrecheckDraft(interventionId: number): Promise<void> {\n  await SecureStore.deleteItemAsync(buildKey(interventionId));\n\n  const ids = await readIndex();\n  await writeIndex(ids.filter((value) => value !== interventionId));\n}\n\nexport async function clearAllPrecheckDrafts(): Promise<void> {\n  const ids = await readIndex();\n  await Promise.all(ids.map((id) => SecureStore.deleteItemAsync(buildKey(id))));\n  await SecureStore.deleteItemAsync(INDEX_KEY);\n}\n","import * as Crypto from \"expo-crypto\";\nimport * as SecureStore from \"expo-secure-store\";\nimport argon2 from \"react-native-argon2\";\nimport type { MobileUser } from \"../types/auth\";\n\n/**\n * Credential de reconnexion HORS-LIGNE (point D de l'audit offline).\n *\n * Objectif : permettre a un technicien deja connecte une fois EN LIGNE sur une\n * instance de rouvrir une session SANS reseau (typiquement : il s'est\n * deconnecte le soir, et le lendemain matin dans le camion sans signal il veut\n * acceder a ses interventions du jour).\n *\n * Securite (mot de passe) : on ne stocke JAMAIS le mot de passe. On garde un\n * hash **Argon2id** (etat de l'art, gagnant de la Password Hashing\n * Competition), avec les MEMES parametres que la PWA (PasswordHasher.php :\n * memory_cost=65536 / time_cost=4 / threads=1). L'ensemble vit en plus dans\n * SecureStore (Keychain iOS / Keystore Android, chiffre materiel). Les donnees\n * metier (non sensibles : releves CVC) restent en clair dans SQLite.\n *\n * /!\\ react-native-argon2 est un module NATIF : tout changement ici exige un\n * REBUILD APK (npm run build:test/prod), il N'EST PAS livrable en OTA.\n *\n * Borne : TTL de 30 jours. Au-dela, reconnexion en ligne exigee.\n */\n\nconst KEY = \"cc_offline_credential\";\nconst TTL_MS = 30 * 24 * 60 * 60 * 1000; // 30 jours\n\n// Parametres Argon2id alignes sur la PWA (coolcare-app PasswordHasher.php).\nconst ARGON2_OPTIONS = {\n  memory: 65536, // 64 Mio (minimum OWASP)\n  iterations: 4,\n  parallelism: 1,\n  hashLength: 32,\n  mode: \"argon2id\" as const,\n  saltEncoding: \"hex\" as const,\n};\n\ntype OfflineCredentialRecord = {\n  baseUrl: string;\n  email: string; // normalise en minuscules\n  salt: string; // hex\n  encodedHash: string; // $argon2id$v=19$m=65536,t=4,p=1$...\n  user: MobileUser;\n  savedAt: number; // epoch ms\n};\n\nasync function randomSaltHex(): Promise<string> {\n  const bytes = await Crypto.getRandomBytesAsync(16);\n  return Array.from(bytes)\n    .map((b) => b.toString(16).padStart(2, \"0\"))\n    .join(\"\");\n}\n\nasync function hashPassword(password: string, saltHex: string): Promise<string> {\n  const result = await argon2(password, saltHex, ARGON2_OPTIONS);\n  return result.encodedHash;\n}\n\n// Comparaison a temps constant : evite une fuite par timing sur l'egalite du\n// hash (defense en profondeur ; impact reel faible en local).\nfunction timingSafeEqual(a: string, b: string): boolean {\n  if (a.length !== b.length) {\n    return false;\n  }\n  let diff = 0;\n  for (let i = 0; i < a.length; i += 1) {\n    diff |= a.charCodeAt(i) ^ b.charCodeAt(i);\n  }\n  return diff === 0;\n}\n\nfunction normalizeEmail(email: string): string {\n  return email.trim().toLowerCase();\n}\n\n/**\n * Memorise le credential offline apres un login EN LIGNE reussi (on a alors le\n * mot de passe en clair, jamais persiste). Un seul enregistrement a la fois :\n * la derniere connexion ecrase la precedente (coherent avec le modele\n * single-session / owner du cache local).\n */\nexport async function saveOfflineCredential(\n  baseUrl: string,\n  email: string,\n  password: string,\n  user: MobileUser\n): Promise<void> {\n  const salt = await randomSaltHex();\n  const encodedHash = await hashPassword(password, salt);\n  const record: OfflineCredentialRecord = {\n    baseUrl,\n    email: normalizeEmail(email),\n    salt,\n    encodedHash,\n    user,\n    savedAt: Date.now(),\n  };\n  await SecureStore.setItemAsync(KEY, JSON.stringify(record));\n}\n\n/**\n * Verifie un couple email/mot de passe hors-ligne. Retourne l'utilisateur\n * memorise si tout concorde (meme instance, meme email, hash Argon2id valide,\n * non expire), sinon null. Ne leve jamais (best-effort cote appelant).\n */\nexport async function verifyOfflineCredential(\n  baseUrl: string,\n  email: string,\n  password: string\n): Promise<MobileUser | null> {\n  const raw = await SecureStore.getItemAsync(KEY);\n  if (!raw) {\n    return null;\n  }\n\n  let rec: OfflineCredentialRecord;\n  try {\n    rec = JSON.parse(raw) as OfflineCredentialRecord;\n  } catch {\n    return null;\n  }\n\n  if (rec.baseUrl !== baseUrl) {\n    return null;\n  }\n  if (rec.email !== normalizeEmail(email)) {\n    return null;\n  }\n  if (!rec.savedAt || Date.now() - rec.savedAt > TTL_MS) {\n    return null;\n  }\n\n  // Recompute avec le MEME sel + memes parametres : Argon2id est deterministe a\n  // sel fixe, donc l'encodedHash recalcule doit egaler celui stocke.\n  let candidate: string;\n  try {\n    candidate = await hashPassword(password, rec.salt);\n  } catch {\n    return null;\n  }\n  if (!timingSafeEqual(candidate, rec.encodedHash)) {\n    return null;\n  }\n\n  return rec.user;\n}\n\nexport async function clearOfflineCredential(): Promise<void> {\n  await SecureStore.deleteItemAsync(KEY);\n}\n","import { toByteArray } from 'base64-js';\nimport { UnavailabilityError } from 'expo-modules-core';\nimport { CryptoDigestAlgorithm, CryptoEncoding } from './Crypto.types';\nimport ExpoCrypto from './ExpoCrypto';\nexport * from './Crypto.types';\nclass CryptoError extends TypeError {\n    code = 'ERR_CRYPTO';\n    constructor(message) {\n        super(`expo-crypto: ${message}`);\n    }\n}\n// @needsAudit\n/**\n * Generates completely random bytes using native implementations. The `byteCount` property\n * is a `number` indicating the number of bytes to generate in the form of a `Uint8Array`.\n * Falls back to `Math.random` during development to prevent issues with React Native Debugger.\n * @param byteCount - A number within the range from `0` to `1024`. Anything else will throw a `TypeError`.\n * @return An array of random bytes with the same length as the `byteCount`.\n */\nexport function getRandomBytes(byteCount) {\n    assertByteCount(byteCount, 'getRandomBytes');\n    const validByteCount = Math.floor(byteCount);\n    if (__DEV__) {\n        if (!global.nativeCallSyncHook || global.__REMOTEDEV__) {\n            // remote javascript debugging is enabled\n            const array = new Uint8Array(validByteCount);\n            for (let i = 0; i < validByteCount; i++) {\n                array[i] = Math.floor(Math.random() * 256);\n            }\n            return array;\n        }\n    }\n    if (ExpoCrypto.getRandomValues) {\n        const byteArray = new Uint8Array(validByteCount);\n        ExpoCrypto.getRandomValues(byteArray);\n        return byteArray;\n    }\n    else if (ExpoCrypto.getRandomBase64String) {\n        const base64 = ExpoCrypto.getRandomBase64String(validByteCount);\n        return toByteArray(base64);\n    }\n    else {\n        throw new UnavailabilityError('expo-crypto', 'getRandomBytes');\n    }\n}\n// @needsAudit\n/**\n * Generates completely random bytes using native implementations. The `byteCount` property\n * is a `number` indicating the number of bytes to generate in the form of a `Uint8Array`.\n * @param byteCount - A number within the range from `0` to `1024`. Anything else will throw a `TypeError`.\n * @return A promise that fulfills with an array of random bytes with the same length as the `byteCount`.\n */\nexport async function getRandomBytesAsync(byteCount) {\n    assertByteCount(byteCount, 'getRandomBytesAsync');\n    const validByteCount = Math.floor(byteCount);\n    if (ExpoCrypto.getRandomValues) {\n        const byteArray = new Uint8Array(validByteCount);\n        ExpoCrypto.getRandomValues(byteArray);\n        return byteArray;\n    }\n    else if (ExpoCrypto.getRandomBase64StringAsync) {\n        const base64 = await ExpoCrypto.getRandomBase64StringAsync(validByteCount);\n        return toByteArray(base64);\n    }\n    else {\n        throw new UnavailabilityError('expo-crypto', 'getRandomBytesAsync');\n    }\n}\nfunction assertByteCount(value, methodName) {\n    if (typeof value !== 'number' ||\n        isNaN(value) ||\n        Math.floor(value) < 0 ||\n        Math.floor(value) > 1024) {\n        throw new TypeError(`expo-crypto: ${methodName}(${value}) expected a valid number from range 0...1024`);\n    }\n}\nfunction assertAlgorithm(algorithm) {\n    if (!Object.values(CryptoDigestAlgorithm).includes(algorithm)) {\n        throw new CryptoError(`Invalid algorithm provided. Expected one of: CryptoDigestAlgorithm.${Object.keys(CryptoDigestAlgorithm).join(', AlgCryptoDigestAlgorithmorithm.')}`);\n    }\n}\nfunction assertData(data) {\n    if (typeof data !== 'string') {\n        throw new CryptoError(`Invalid data provided. Expected a string.`);\n    }\n}\nfunction assertEncoding(encoding) {\n    if (!Object.values(CryptoEncoding).includes(encoding)) {\n        throw new CryptoError(`Invalid encoding provided. Expected one of: CryptoEncoding.${Object.keys(CryptoEncoding).join(', CryptoEncoding.')}`);\n    }\n}\n// @needsAudit\n/**\n * The `digestStringAsync()` method of `Crypto` generates a digest of the supplied `data` string with the provided digest `algorithm`.\n * A digest is a short fixed-length value derived from some variable-length input. **Cryptographic digests** should exhibit _collision-resistance_,\n * meaning that it's very difficult to generate multiple inputs that have equal digest values.\n * You can specify the returned string format as one of `CryptoEncoding`. By default, the resolved value will be formatted as a `HEX` string.\n * On web, this method can only be called from a secure origin (HTTPS) otherwise, an error will be thrown.\n *\n * @param algorithm The cryptographic hash function to use to transform a block of data into a fixed-size output.\n * @param data The value that will be used to generate a digest.\n * @param options Format of the digest string. Defaults to: `CryptoDigestOptions.HEX`.\n * @return Return a Promise which fulfills with a value representing the hashed input.\n *\n * @example\n * ```ts\n * const digest = await Crypto.digestStringAsync(\n *   Crypto.CryptoDigestAlgorithm.SHA512,\n *   '🥓 Easy to Digest! 💙'\n * );\n * ```\n */\nexport async function digestStringAsync(algorithm, data, options = { encoding: CryptoEncoding.HEX }) {\n    if (!ExpoCrypto.digestStringAsync) {\n        throw new UnavailabilityError('expo-crypto', 'digestStringAsync');\n    }\n    assertAlgorithm(algorithm);\n    assertData(data);\n    assertEncoding(options.encoding);\n    return await ExpoCrypto.digestStringAsync(algorithm, data, options);\n}\n/**\n * The `getRandomValues()` method of `Crypto` fills a provided `TypedArray` with cryptographically secure random values.\n *\n * @param typedArray An integer based [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) to fill with cryptographically secure random values. It modifies the input array in place.\n * @return The input array filled with cryptographically secure random values.\n *\n * @example\n * ```ts\n * const byteArray = new Uint8Array(16);\n * Crypto.getRandomValues(byteArray);\n * console.log('Your lucky bytes: ' + byteArray);\n * ```\n */\nexport function getRandomValues(typedArray) {\n    ExpoCrypto.getRandomValues(typedArray);\n    return typedArray;\n}\n/**\n * The `randomUUID()` method returns a unique identifier based on the V4 UUID spec (RFC4122).\n * It uses cryptographically secure random values to generate the UUID.\n *\n * @return A string containing a newly generated UUIDv4 identifier\n * @example\n * ```ts\n * const UUID = Crypto.randomUUID();\n * console.log('Your UUID: ' + UUID);\n * ```\n */\nexport function randomUUID() {\n    return ExpoCrypto.randomUUID();\n}\nconst digestLengths = {\n    [CryptoDigestAlgorithm.SHA1]: 20,\n    [CryptoDigestAlgorithm.SHA256]: 32,\n    [CryptoDigestAlgorithm.SHA384]: 48,\n    [CryptoDigestAlgorithm.SHA512]: 64,\n    [CryptoDigestAlgorithm.MD2]: 16,\n    [CryptoDigestAlgorithm.MD4]: 16,\n    [CryptoDigestAlgorithm.MD5]: 16,\n};\n/**\n * The `digest()` method of `Crypto` generates a digest of the supplied `TypedArray` of bytes `data` with the provided digest `algorithm`.\n * A digest is a short fixed-length value derived from some variable-length input. **Cryptographic digests** should exhibit _collision-resistance_,\n * meaning that it's very difficult to generate multiple inputs that have equal digest values.\n * On web, this method can only be called from a secure origin (HTTPS) otherwise, an error will be thrown.\n *\n * @param algorithm The cryptographic hash function to use to transform a block of data into a fixed-size output.\n * @param data The value that will be used to generate a digest.\n * @return A Promise which fulfills with an ArrayBuffer representing the hashed input.\n * @example\n * ```ts\n * const array = new Uint8Array([1, 2, 3, 4, 5]);\n * const digest = await Crypto.digest(Crypto.CryptoDigestAlgorithm.SHA512, array);\n * console.log('Your digest: ' + digest);\n * ```\n */\nexport function digest(algorithm, data) {\n    return new Promise((resolve, reject) => {\n        try {\n            if (typeof ExpoCrypto.digestAsync === 'function') {\n                resolve(ExpoCrypto.digestAsync(algorithm, data));\n            }\n            else {\n                const output = new Uint8Array(digestLengths[algorithm]);\n                ExpoCrypto.digest(algorithm, output, data);\n                resolve(output.buffer);\n            }\n        }\n        catch (error) {\n            reject(error);\n        }\n    });\n}\n//# sourceMappingURL=Crypto.js.map","// @needsAudit\n/**\n * [`Cryptographic hash function`](https://developer.mozilla.org/en-US/docs/Glossary/Cryptographic_hash_function)\n */\nexport var CryptoDigestAlgorithm;\n(function (CryptoDigestAlgorithm) {\n    /**\n     * `160` bits.\n     */\n    CryptoDigestAlgorithm[\"SHA1\"] = \"SHA-1\";\n    /**\n     * `256` bits. Collision Resistant.\n     */\n    CryptoDigestAlgorithm[\"SHA256\"] = \"SHA-256\";\n    /**\n     * `384` bits. Collision Resistant.\n     */\n    CryptoDigestAlgorithm[\"SHA384\"] = \"SHA-384\";\n    /**\n     * `512` bits. Collision Resistant.\n     */\n    CryptoDigestAlgorithm[\"SHA512\"] = \"SHA-512\";\n    /**\n     * `128` bits.\n     * @platform ios\n     */\n    CryptoDigestAlgorithm[\"MD2\"] = \"MD2\";\n    /**\n     * `128` bits.\n     * @platform ios\n     */\n    CryptoDigestAlgorithm[\"MD4\"] = \"MD4\";\n    /**\n     * `128` bits.\n     * @platform android\n     * @platform ios\n     */\n    CryptoDigestAlgorithm[\"MD5\"] = \"MD5\";\n})(CryptoDigestAlgorithm || (CryptoDigestAlgorithm = {}));\n// @needsAudit\nexport var CryptoEncoding;\n(function (CryptoEncoding) {\n    CryptoEncoding[\"HEX\"] = \"hex\";\n    /**\n     * Has trailing padding. Does not wrap lines. Does not have a trailing newline.\n     */\n    CryptoEncoding[\"BASE64\"] = \"base64\";\n})(CryptoEncoding || (CryptoEncoding = {}));\n//# sourceMappingURL=Crypto.types.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoCrypto');\n//# sourceMappingURL=ExpoCrypto.js.map","import { NativeModules } from 'react-native';\r\n\r\nconst RNArgon2Module = NativeModules.RNArgon2;\r\n\r\nexport default RNArgon2Module.argon2;\r\n","import { initializeLocalDatabase, deleteInterventionLocally } from \"../core/localDatabase\";\nimport { getInterventionById } from \"./interventionsApi\";\n\n// Chargement PARESSEUX + gardé des modules natifs. `expo-task-manager` est un\n// module natif AJOUTÉ récemment : un `import * as TaskManager from\n// \"expo-task-manager\"` STATIQUE en tête de module déclenche son\n// `requireNativeModule` AU CHARGEMENT DU BUNDLE. Si ce bundle JS est livré en\n// OTA sur un APK qui ne contient pas encore ce module natif (rebuild pas fait),\n// ce throw se produit AVANT tout try/catch -> crash au lancement, puis rollback\n// expo-updates sur l'ancien bundle. Conséquence vécue : l'app \"crashe à la mise\n// à jour\" ET les correctifs JS purs ne s'appliquent jamais. On require donc à la\n// demande, sous try/catch, pour dégrader en silence (couche 2 inactive jusqu'au\n// rebuild APK) sans jamais casser le démarrage ni le canal OTA.\nfunction loadTaskManager(): typeof import(\"expo-task-manager\") | null {\n  try {\n    return require(\"expo-task-manager\");\n  } catch {\n    return null;\n  }\n}\n\nfunction loadNotifications(): typeof import(\"expo-notifications\") | null {\n  try {\n    return require(\"expo-notifications\");\n  } catch {\n    return null;\n  }\n}\n\n/**\n * Couche 2 du pré-cache offline (cf docs/AUDIT-OFFLINE-2026-06-11.md §E).\n *\n * Objectif : pré-cacher le workflow d'une intervention SANS que le technicien\n * ouvre l'app. Le backend (app #177 / coolcare #178) envoie un **data push**\n * (`_contentAvailable:true` + `priority:high`) dont le `data` porte\n * `{ intervention_id, type, action }`. On **keye sur `action`** (`upsert`/\n * `delete`) + `intervention_id`, en IGNORANT `type` (qui reste granulaire côté\n * backend pour le deep-link visible : intervention_created/updated/deleted).\n * La tâche de fond (expo-task-manager + expo-notifications) se réveille même app\n * fermée et pull le détail + les étapes (matérialise serveur + cache local), ou\n * purge en local sur `delete` (suppression OU réassignation : l'ancien tech\n * reçoit `action:delete`).\n *\n * Fiabilité : Android = bon (FCM data haute priorité réveille l'app) ; iOS =\n * best-effort (silent push throttlé par Apple, non délivré si l'app est\n * force-quittée). Dégradation gracieuse : sans data push, la tâche ne se\n * déclenche jamais — rien ne casse.\n *\n * /!\\ Module natif (expo-task-manager) + background modes -> REBUILD APK requis,\n * pas d'OTA. La forme exacte du payload reçu en tâche de fond est à VALIDER SUR\n * DEVICE (d'où l'extracteur défensif extractSyncFromData).\n */\n\nexport const BACKGROUND_NOTIFICATION_TASK = \"missioflow-background-notification\";\n\nexport type InterventionSyncAction = \"upsert\" | \"delete\";\nexport type InterventionSyncCommand = {\n  interventionId: number;\n  action: InterventionSyncAction;\n};\n\nfunction asRecord(v: unknown): Record<string, unknown> | null {\n  return v && typeof v === \"object\" ? (v as Record<string, unknown>) : null;\n}\n\n/**\n * Extrait { interventionId, action } du payload reçu par la tâche de fond. La\n * forme varie selon la plateforme / la version d'expo-notifications, donc on\n * cherche le bloc `data` à plusieurs emplacements connus, de façon défensive.\n * On keye sur **`action`** (`upsert`/`delete`) + `intervention_id` (le\n * discriminateur de sync fourni par le backend), en ignorant `type`. Retourne\n * null si ce n'est pas un data push de sync intervention exploitable.\n */\nexport function extractSyncFromData(raw: unknown): InterventionSyncCommand | null {\n  const root = asRecord(raw);\n  if (!root) {\n    return null;\n  }\n\n  // Emplacements candidats du dict `data` métier (selon plateforme/shape).\n  const notification = asRecord(root.notification);\n  const request = asRecord(notification?.request);\n  const content = asRecord(request?.content);\n  const candidates = [\n    asRecord(root.data),\n    notification ? asRecord(notification.data) : null,\n    content ? asRecord(content.data) : null,\n    root, // certains shapes mettent les champs a la racine\n  ].filter(Boolean) as Record<string, unknown>[];\n\n  for (const d of candidates) {\n    const id = Number(d.intervention_id);\n    if (!Number.isFinite(id) || id <= 0) {\n      continue;\n    }\n    // Discriminateur de sync = `action`. Sans action valide -> ce n'est pas un\n    // data push de pré-cache (ex: notif visible sans payload sync) -> on ignore.\n    const rawAction = String(d.action ?? \"\");\n    if (rawAction !== \"upsert\" && rawAction !== \"delete\") {\n      continue;\n    }\n    return { interventionId: id, action: rawAction };\n  }\n\n  return null;\n}\n\n/**\n * Exécute la sync demandée par un data push. Headless-safe : n'utilise que des\n * services (apiClient lit les tokens en SecureStore, SQLite). Ne throw jamais\n * vers l'OS. upsert -> pull detail+etapes (materialise+cache) ; delete -> purge\n * locale de l'intervention.\n */\nexport async function runBackgroundInterventionSync(raw: unknown): Promise<boolean> {\n  const cmd = extractSyncFromData(raw);\n  if (!cmd) {\n    return false;\n  }\n  try {\n    await initializeLocalDatabase();\n    if (cmd.action === \"delete\") {\n      await deleteInterventionLocally(cmd.interventionId);\n    } else {\n      // getInterventionById pull le detail ET prefetch les etapes (cache local).\n      await getInterventionById(cmd.interventionId);\n    }\n    return true;\n  } catch {\n    // best-effort : offline en tache de fond / session expiree -> on abandonne\n    // silencieusement, le login/boot ou un prochain push retentera.\n    return false;\n  }\n}\n\n/**\n * Définit la tâche de fond. DOIT être appelée au scope module (au démarrage,\n * avant le rendu React) pour qu'expo-task-manager la connaisse au réveil.\n */\nexport function defineBackgroundNotificationTask(): void {\n  // try/catch IMPERATIF : cette fonction tourne au scope module a CHAQUE\n  // demarrage et appelle le natif expo-task-manager. Si ce bundle JS est OTA'd\n  // sur un APK qui n'a PAS encore le module natif (rebuild pas fait), l'appel\n  // natif jetterait -> crash au lancement. On degrade en silence : pas de tache\n  // de fond tant que l'APK n'est pas rebuilde, mais l'app demarre normalement.\n  try {\n    const TaskManager = loadTaskManager();\n    if (!TaskManager) {\n      return;\n    }\n    if (TaskManager.isTaskDefined(BACKGROUND_NOTIFICATION_TASK)) {\n      return;\n    }\n    TaskManager.defineTask(BACKGROUND_NOTIFICATION_TASK, async ({ data, error }) => {\n      if (error) {\n        return;\n      }\n      await runBackgroundInterventionSync(data);\n    });\n  } catch {\n    // Module natif absent (OTA sur ancien APK) -> couche 2 inactive, couche 1\n    // reste le filet. Aucun crash.\n  }\n}\n\n/**\n * Enregistre la tâche auprès de l'OS pour les notifications en arrière-plan.\n * Best-effort (ne throw jamais) : à appeler une fois après le setup push.\n */\nexport async function registerBackgroundNotificationTask(): Promise<void> {\n  try {\n    const Notifications = loadNotifications();\n    if (!Notifications) {\n      return;\n    }\n    await Notifications.registerTaskAsync(BACKGROUND_NOTIFICATION_TASK);\n  } catch {\n    // OS qui refuse / non supporte -> on ignore, la couche 1 reste le filet.\n  }\n}\n","import { LegacyEventEmitter, UnavailabilityError } from 'expo-modules-core';\nimport ExpoTaskManager from './ExpoTaskManager';\nconst tasks = new Map();\nfunction _validate(taskName) {\n    if (!taskName || typeof taskName !== 'string') {\n        throw new TypeError('`taskName` must be a non-empty string.');\n    }\n}\n// @needsAudit\n/**\n * Defines task function. It must be called in the global scope of your JavaScript bundle.\n * In particular, it cannot be called in any of React lifecycle methods like `componentDidMount`.\n * This limitation is due to the fact that when the application is launched in the background,\n * we need to spin up your JavaScript app, run your task and then shut down — no views are mounted\n * in this scenario.\n *\n * @param taskName Name of the task. It must be the same as the name you provided when registering the task.\n * @param taskExecutor A function that will be invoked when the task with given `taskName` is executed.\n */\nexport function defineTask(taskName, taskExecutor) {\n    if (!taskName || typeof taskName !== 'string') {\n        console.warn(`TaskManager.defineTask: 'taskName' argument must be a non-empty string.`);\n        return;\n    }\n    if (!taskExecutor || typeof taskExecutor !== 'function') {\n        console.warn(`TaskManager.defineTask: 'task' argument must be a function.`);\n        return;\n    }\n    tasks.set(taskName, taskExecutor);\n}\n// @needsAudit\n/**\n * Checks whether the task is already defined.\n *\n * @param taskName Name of the task.\n */\nexport function isTaskDefined(taskName) {\n    return tasks.has(taskName);\n}\n// @needsAudit\n/**\n * Determine whether the task is registered. Registered tasks are stored in a persistent storage and\n * preserved between sessions.\n *\n * @param taskName Name of the task.\n * @returns A promise which resolves to `true` if a task with the given name is registered, otherwise `false`.\n */\nexport async function isTaskRegisteredAsync(taskName) {\n    if (!ExpoTaskManager.isTaskRegisteredAsync) {\n        throw new UnavailabilityError('TaskManager', 'isTaskRegisteredAsync');\n    }\n    _validate(taskName);\n    return ExpoTaskManager.isTaskRegisteredAsync(taskName);\n}\n// @needsAudit\n/**\n * Retrieves `options` associated with the task, that were passed to the function registering the task\n * (e.g. `Location.startLocationUpdatesAsync`).\n *\n * @param taskName Name of the task.\n * @return A promise which fulfills with the `options` object that was passed while registering task\n * with given name or `null` if task couldn't be found.\n */\nexport async function getTaskOptionsAsync(taskName) {\n    if (!ExpoTaskManager.getTaskOptionsAsync) {\n        throw new UnavailabilityError('TaskManager', 'getTaskOptionsAsync');\n    }\n    _validate(taskName);\n    return ExpoTaskManager.getTaskOptionsAsync(taskName);\n}\n// @needsAudit\n/**\n * Provides information about tasks registered in the app.\n *\n * @returns A promise which fulfills with an array of tasks registered in the app.\n * @example\n * ```js\n * [\n *   {\n *     taskName: 'location-updates-task-name',\n *     taskType: 'location',\n *     options: {\n *       accuracy: Location.Accuracy.High,\n *       showsBackgroundLocationIndicator: false,\n *     },\n *   },\n *   {\n *     taskName: 'geofencing-task-name',\n *     taskType: 'geofencing',\n *     options: {\n *       regions: [...],\n *     },\n *   },\n * ]\n * ```\n */\nexport async function getRegisteredTasksAsync() {\n    if (!ExpoTaskManager.getRegisteredTasksAsync) {\n        throw new UnavailabilityError('TaskManager', 'getRegisteredTasksAsync');\n    }\n    return ExpoTaskManager.getRegisteredTasksAsync();\n}\n// @needsAudit\n/**\n * Unregisters task from the app, so the app will not be receiving updates for that task anymore.\n * _It is recommended to use methods specialized by modules that registered the task, eg.\n * [`Location.stopLocationUpdatesAsync`](./location/#expolocationstoplocationupdatesasynctaskname)._\n *\n * @param taskName Name of the task to unregister.\n * @return A promise which fulfills as soon as the task is unregistered.\n */\nexport async function unregisterTaskAsync(taskName) {\n    if (!ExpoTaskManager.unregisterTaskAsync) {\n        throw new UnavailabilityError('TaskManager', 'unregisterTaskAsync');\n    }\n    _validate(taskName);\n    await ExpoTaskManager.unregisterTaskAsync(taskName);\n}\n// @needsAudit\n/**\n * Unregisters all tasks registered for the running app. You may want to call this when the user is\n * signing out and you no longer need to track his location or run any other background tasks.\n * @return A promise which fulfills as soon as all tasks are completely unregistered.\n */\nexport async function unregisterAllTasksAsync() {\n    if (!ExpoTaskManager.unregisterAllTasksAsync) {\n        throw new UnavailabilityError('TaskManager', 'unregisterAllTasksAsync');\n    }\n    await ExpoTaskManager.unregisterAllTasksAsync();\n}\nif (ExpoTaskManager) {\n    const eventEmitter = new LegacyEventEmitter(ExpoTaskManager);\n    eventEmitter.addListener(ExpoTaskManager.EVENT_NAME, async ({ data, error, executionInfo }) => {\n        const { eventId, taskName } = executionInfo;\n        const taskExecutor = tasks.get(taskName);\n        let result = null;\n        if (taskExecutor) {\n            try {\n                // Execute JS task\n                result = await taskExecutor({ data, error, executionInfo });\n            }\n            catch (error) {\n                console.error(`TaskManager: Task \"${taskName}\" failed:`, error);\n            }\n            finally {\n                // Notify manager the task is finished.\n                await ExpoTaskManager.notifyTaskFinishedAsync(taskName, { eventId, result });\n            }\n        }\n        else {\n            console.warn(`TaskManager: Task \"${taskName}\" has been executed but looks like it is not defined. Make sure that \"TaskManager.defineTask\" is called during initialization phase.`);\n            // No tasks defined -> we need to notify about finish anyway.\n            await ExpoTaskManager.notifyTaskFinishedAsync(taskName, { eventId, result });\n            // We should also unregister such tasks automatically as the task might have been removed\n            // from the app or just renamed - in that case it needs to be registered again (with the new name).\n            await ExpoTaskManager.unregisterTaskAsync(taskName);\n        }\n    });\n}\n// @needsAudit\n/**\n * Determine if the `TaskManager` API can be used in this app.\n * @return A promise which fulfills with `true` if the API can be used, and `false` otherwise.\n * With Expo Go, `TaskManager` is not available on Android, and does not support background execution on iOS.\n * Use a development build to avoid limitations: https://expo.fyi/dev-client.\n * On the web, it always returns `false`.\n */\nexport async function isAvailableAsync() {\n    return ExpoTaskManager.isAvailableAsync();\n}\n//# sourceMappingURL=TaskManager.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoTaskManager');\n//# sourceMappingURL=ExpoTaskManager.js.map","import * as SecureStore from \"expo-secure-store\";\nimport type { MobileConfig } from \"../types/mobileConfig\";\n\n// Registre local des instances deja configurees, pour qu'un technicien qui\n// travaille pour plusieurs entreprises puisse rebasculer entre elles sans\n// re-scanner le QR / retenir un lien, et sans retaper son email.\nconst SAVED_INSTANCES_KEY = \"mf_saved_instances\";\n\nexport type SavedInstance = {\n  base_url: string;\n  app_name: string;\n  primary_color: string;\n  logo_url: string | null;\n  tenant_id: string | number | null;\n  support_email?: string | null;\n  support_phone?: string | null;\n  last_email?: string | null;\n  saved_at: string;\n};\n\nexport async function listInstances(): Promise<SavedInstance[]> {\n  const raw = await SecureStore.getItemAsync(SAVED_INSTANCES_KEY);\n  if (!raw) {\n    return [];\n  }\n  try {\n    const parsed = JSON.parse(raw);\n    return Array.isArray(parsed) ? (parsed as SavedInstance[]) : [];\n  } catch {\n    return [];\n  }\n}\n\n// Ajoute ou met a jour une instance (merge par base_url). Renvoie la liste a\n// jour (instance touchee remontee en tete pour un acces rapide).\nexport async function upsertInstance(\n  entry: Partial<SavedInstance> & { base_url: string }\n): Promise<SavedInstance[]> {\n  const list = await listInstances();\n  const existing = list.find((i) => i.base_url === entry.base_url);\n  const merged: SavedInstance = {\n    base_url: entry.base_url,\n    app_name: entry.app_name ?? existing?.app_name ?? \"\",\n    primary_color: entry.primary_color ?? existing?.primary_color ?? \"#1e56a8\",\n    logo_url: entry.logo_url ?? existing?.logo_url ?? null,\n    tenant_id: entry.tenant_id ?? existing?.tenant_id ?? null,\n    support_email: entry.support_email ?? existing?.support_email ?? null,\n    support_phone: entry.support_phone ?? existing?.support_phone ?? null,\n    last_email: entry.last_email ?? existing?.last_email ?? null,\n    saved_at: entry.saved_at ?? existing?.saved_at ?? \"\",\n  };\n  const rest = list.filter((i) => i.base_url !== entry.base_url);\n  const next = [merged, ...rest];\n  await SecureStore.setItemAsync(SAVED_INSTANCES_KEY, JSON.stringify(next));\n  return next;\n}\n\nexport async function removeInstance(baseUrl: string): Promise<SavedInstance[]> {\n  const list = await listInstances();\n  const next = list.filter((i) => i.base_url !== baseUrl);\n  await SecureStore.setItemAsync(SAVED_INSTANCES_KEY, JSON.stringify(next));\n  return next;\n}\n\n// Construit une MobileConfig a partir d'une instance enregistree (fallback\n// hors-ligne quand on ne peut pas re-fetcher la config a jour).\nexport function configFromInstance(entry: SavedInstance): MobileConfig {\n  return {\n    app_name: entry.app_name,\n    primary_color: entry.primary_color,\n    logo_url: entry.logo_url,\n    tenant_id: entry.tenant_id,\n    support_email: entry.support_email ?? null,\n    support_phone: entry.support_phone ?? null,\n  };\n}\n","import type { ApiEnvelope } from \"../types/auth\";\nimport type { MobileConfig } from \"../types/mobileConfig\";\n\n// Fallback config used when the server is reachable but /mobile-config isn't implemented yet.\n// The backend can override any of these values once the endpoint is deployed.\nfunction buildFallbackConfig(baseUrl: string): MobileConfig {\n  return {\n    app_name: \"MissioFlow Mobile\",\n    primary_color: \"#1E56A8\",\n    logo_url: null,\n    tenant_id: null,\n    support_email: null,\n    support_phone: null,\n  };\n}\n\nfunction stripTrailingSlashes(value: string): string {\n  let out = value;\n  while (out.endsWith(\"/\")) {\n    out = out.slice(0, -1);\n  }\n  return out;\n}\n\nfunction buildMobileConfigUrls(baseUrl: string): string[] {\n  const normalized = stripTrailingSlashes(baseUrl);\n  if (normalized.endsWith(\"/api/mobile\")) {\n    return [`${normalized}-config`, `${normalized}-config.php`];\n  }\n  return [`${normalized}/mobile-config`, `${normalized}/mobile-config.php`];\n}\n\n// Vérifie que le serveur est joignable (n'importe quelle réponse HTTP valide suffit).\nasync function isServerReachable(baseUrl: string): Promise<boolean> {\n  const normalized = stripTrailingSlashes(baseUrl);\n  try {\n    const response = await fetch(normalized, {\n      method: \"GET\",\n      headers: { Accept: \"application/json\" },\n    });\n    return response.status < 500;\n  } catch {\n    return false;\n  }\n}\n\nasync function tryFetch(endpoint: string): Promise<Response> {\n  return fetch(endpoint, {\n    method: \"GET\",\n    headers: {\n      Accept: \"application/json\",\n    },\n  });\n}\n\nexport async function fetchMobileConfig(baseUrl: string): Promise<MobileConfig> {\n  const endpoints = buildMobileConfigUrls(baseUrl);\n\n  let serverWasReachable = false;\n  let lastApiMessage: string | null = null;\n\n  for (const endpoint of endpoints) {\n    let response: Response;\n    try {\n      response = await tryFetch(endpoint);\n      serverWasReachable = true;\n    } catch {\n      continue;\n    }\n\n    let payload: ApiEnvelope<MobileConfig> | null = null;\n    try {\n      payload = (await response.json()) as ApiEnvelope<MobileConfig>;\n    } catch {\n      // Corps non-JSON mais serveur joignable — on retient l'info.\n      continue;\n    }\n\n    if (response.ok && payload?.success && payload.data) {\n      return payload.data;\n    }\n\n    if (payload?.message) {\n      lastApiMessage = payload.message;\n    }\n  }\n\n  // Le serveur a répondu (même en 404) : l'endpoint n'est pas encore implémenté.\n  // On utilise le config par défaut pour ne pas bloquer les tests terrain.\n  if (serverWasReachable) {\n    return buildFallbackConfig(baseUrl);\n  }\n\n  // Vérification supplémentaire : tenter la base URL directement.\n  const reachable = await isServerReachable(baseUrl);\n  if (reachable) {\n    return buildFallbackConfig(baseUrl);\n  }\n\n  throw new Error(lastApiMessage || \"Instance inaccessible ou invalide\");\n}\n","import { Platform } from \"react-native\";\nimport * as Notifications from \"expo-notifications\";\nimport * as Device from \"expo-device\";\nimport * as SecureStore from \"expo-secure-store\";\nimport * as Crypto from \"expo-crypto\";\nimport Constants from \"expo-constants\";\nimport apiClient from \"./apiClient\";\nimport type { ApiEnvelope } from \"../types/auth\";\n\nconst DEVICE_ID_KEY = \"mf_device_id\";\nconst ANDROID_CHANNEL_ID = \"missions\";\n\n/**\n * Configure la presentation des notifications recues quand l'app est au\n * premier plan. Sans ce handler, Android/iOS n'affichent rien tant que\n * l'app est ouverte. On affiche banniere + liste pour que le technicien\n * voie tout de suite qu'une mission a ete modifiee.\n */\nexport function configureNotificationHandler(): void {\n  Notifications.setNotificationHandler({\n    handleNotification: async () => ({\n      shouldShowBanner: true,\n      shouldShowList: true,\n      shouldPlaySound: true,\n      shouldSetBadge: false,\n    }),\n  });\n}\n\nasync function ensureAndroidChannel(): Promise<void> {\n  if (Platform.OS !== \"android\") {\n    return;\n  }\n  await Notifications.setNotificationChannelAsync(ANDROID_CHANNEL_ID, {\n    name: \"Missions\",\n    importance: Notifications.AndroidImportance.HIGH,\n    vibrationPattern: [0, 250, 250, 250],\n    lightColor: \"#1e56a8\",\n  });\n}\n\n/**\n * Identifiant stable de l'installation, persiste dans SecureStore. Sert de\n * cle (user_id, device_id) cote backend pour qu'un meme telephone ne cree\n * qu'une ligne mobile_devices, et que deux telephones du meme technicien\n * recoivent chacun leurs push.\n */\nexport async function getOrCreateDeviceId(): Promise<string> {\n  const existing = await SecureStore.getItemAsync(DEVICE_ID_KEY);\n  if (existing && existing.trim() !== \"\") {\n    return existing;\n  }\n  const generated = Crypto.randomUUID();\n  await SecureStore.setItemAsync(DEVICE_ID_KEY, generated);\n  return generated;\n}\n\nfunction resolveProjectId(): string | undefined {\n  const fromExtra = (\n    Constants.expoConfig?.extra as { eas?: { projectId?: string } } | undefined\n  )?.eas?.projectId;\n  const fromEas = (Constants as unknown as { easConfig?: { projectId?: string } })\n    .easConfig?.projectId;\n  const candidate = fromExtra || fromEas;\n  return candidate && candidate.trim() !== \"\" ? candidate : undefined;\n}\n\nasync function ensurePermissionGranted(): Promise<boolean> {\n  const settings = await Notifications.getPermissionsAsync();\n  if (settings.granted) {\n    return true;\n  }\n  const request = await Notifications.requestPermissionsAsync();\n  return request.granted;\n}\n\n/**\n * Demande la permission, recupere le token Expo push de l'appareil.\n * Retourne null si : emulateur (pas de push reel), permission refusee, ou\n * impossibilite de generer le token (projet Expo non configure). Aucun throw\n * : la registration push ne doit jamais bloquer le login.\n */\nexport async function registerForPushNotificationsAsync(): Promise<string | null> {\n  if (!Device.isDevice) {\n    return null;\n  }\n\n  await ensureAndroidChannel();\n\n  const granted = await ensurePermissionGranted();\n  if (!granted) {\n    return null;\n  }\n\n  try {\n    const projectId = resolveProjectId();\n    const tokenResponse = await Notifications.getExpoPushTokenAsync(\n      projectId ? { projectId } : undefined\n    );\n    return tokenResponse.data || null;\n  } catch {\n    return null;\n  }\n}\n\n/**\n * Enregistre le token Expo aupres du backend (table mobile_devices). Appele\n * apres login et au demarrage si une session est restauree. Best-effort.\n */\nexport async function registerPushToken(expoPushToken: string): Promise<boolean> {\n  const deviceId = await getOrCreateDeviceId();\n  try {\n    const response = await apiClient.post<ApiEnvelope<unknown>>(\n      \"/mobile/register_device.php\",\n      {\n        device_id: deviceId,\n        device_name: Device.deviceName || Platform.OS,\n        platform: Platform.OS,\n        expo_push_token: expoPushToken,\n      }\n    );\n    return response.data?.success === true;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Flux complet a appeler quand l'utilisateur est authentifie : recupere le\n * token et l'envoie au backend. Retourne le token (ou null). Ne throw jamais.\n */\nexport async function syncPushRegistration(): Promise<string | null> {\n  const token = await registerForPushNotificationsAsync();\n  if (!token) {\n    return null;\n  }\n  await registerPushToken(token);\n  return token;\n}\n","import { UnavailabilityError } from 'expo-modules-core';\nimport { DeviceType } from './Device.types';\nimport ExpoDevice from './ExpoDevice';\nexport { DeviceType };\n/**\n * `true` if the app is running on a real device and `false` if running in a simulator or emulator.\n * On web, this is always set to `true`.\n */\nexport const isDevice = ExpoDevice ? ExpoDevice.isDevice : true;\n/**\n * The device brand. The consumer-visible brand of the product/hardware. On web, this value is always `null`.\n *\n * @example\n * ```js\n * Device.brand; // Android: \"google\", \"xiaomi\"; iOS: \"Apple\"; web: null\n * ```\n * @platform android\n * @platform ios\n */\nexport const brand = ExpoDevice ? ExpoDevice.brand : null;\n/**\n * The actual device manufacturer of the product or hardware. This value of this field may be `null` if it cannot be determined.\n *\n * To view difference between `brand` and `manufacturer` on Android see [official documentation](https://developer.android.com/reference/android/os/Build).\n *\n * @example\n * ```js\n * Device.manufacturer; // Android: \"Google\", \"xiaomi\"; iOS: \"Apple\"; web: \"Google\", null\n * ```\n */\nexport const manufacturer = ExpoDevice ? ExpoDevice.manufacturer : null;\n/**\n * The internal model ID of the device. This is useful for programmatically identifying the type of device and is not a human-friendly string.\n * On web and Android, this value is always `null`.\n *\n * @example\n * ```js\n * Device.modelId; // iOS: \"iPhone7,2\"; Android: null; web: null\n * ```\n * @platform ios\n */\nexport const modelId = ExpoDevice ? ExpoDevice.modelId || null : null;\n/**\n * The human-friendly name of the device model. This is the name that people would typically use to refer to the device rather than a programmatic model identifier.\n * This value of this field may be `null` if it cannot be determined.\n *\n * @example\n * ```js\n * Device.modelName; // Android: \"Pixel 2\"; iOS: \"iPhone XS Max\"; web: \"iPhone\", null\n * ```\n */\nexport const modelName = ExpoDevice ? ExpoDevice.modelName : null;\n/**\n * The specific configuration or name of the industrial design. It represents the device's name when it was designed during manufacturing into mass production.\n * On Android, it corresponds to [`Build.DEVICE`](https://developer.android.com/reference/android/os/Build#DEVICE). On web and iOS, this value is always `null`.\n *\n * @example\n * ```js\n * Device.designName; // Android: \"kminilte\"; iOS: null; web: null\n * ```\n * @platform android\n */\nexport const designName = ExpoDevice ? ExpoDevice.designName || null : null;\n/**\n * The device's overall product name chosen by the device implementer containing the development name or code name of the device.\n * Corresponds to [`Build.PRODUCT`](https://developer.android.com/reference/android/os/Build#PRODUCT). On web and iOS, this value is always `null`.\n *\n * @example\n * ```js\n * Device.productName; // Android: \"kminiltexx\"; iOS: null; web: null\n * ```\n * @platform android\n */\nexport const productName = ExpoDevice ? ExpoDevice.productName || null : null;\n/**\n * The type of the device as a [`DeviceType`](#devicetype) enum value.\n *\n * On Android, for devices other than TVs, the device type is determined by the screen resolution (screen diagonal size), so the result may not be completely accurate.\n * If the screen diagonal length is between 3\" and 6.9\", the method returns `DeviceType.PHONE`. For lengths between 7\" and 18\", the method returns `DeviceType.TABLET`.\n * Otherwise, the method returns `DeviceType.UNKNOWN`.\n *\n * @example\n * ```js\n * Device.deviceType; // UNKNOWN, PHONE, TABLET, TV, DESKTOP\n * ```\n */\nexport const deviceType = ExpoDevice ? ExpoDevice.deviceType : null;\n/**\n * The [device year class](https://github.com/facebook/device-year-class) of this device. On web, this value is always `null`.\n */\nexport const deviceYearClass = ExpoDevice ? ExpoDevice.deviceYearClass : null;\n/**\n * The device's total memory, in bytes. This is the total memory accessible to the kernel, but not necessarily to a single app.\n * This is basically the amount of RAM the device has, not including below-kernel fixed allocations like DMA buffers, RAM for the baseband CPU, etc…\n * On web, this value is always `null`.\n *\n * @example\n * ```js\n * Device.totalMemory; // 17179869184\n * ```\n */\nexport const totalMemory = ExpoDevice ? ExpoDevice.totalMemory : null;\n/**\n * A list of supported processor architecture versions. The device expects the binaries it runs to be compiled for one of these architectures.\n * This value is `null` if the supported architectures could not be determined, particularly on web.\n *\n * @example\n * ```js\n * Device.supportedCpuArchitectures; // ['arm64 v8', 'Intel x86-64h Haswell', 'arm64-v8a', 'armeabi-v7a\", 'armeabi']\n * ```\n */\nexport const supportedCpuArchitectures = ExpoDevice\n    ? ExpoDevice.supportedCpuArchitectures\n    : null;\n/**\n * The name of the OS running on the device.\n *\n * @example\n * ```js\n * Device.osName; // Android: \"Android\"; iOS: \"iOS\" or \"iPadOS\"; web: \"iOS\", \"Android\", \"Windows\"\n * ```\n */\nexport const osName = ExpoDevice ? ExpoDevice.osName : null;\n/**\n * The human-readable OS version string. Note that the version string may not always contain three numbers separated by dots.\n *\n * @example\n * ```js\n * Device.osVersion; // Android: \"4.0.3\"; iOS: \"12.3.1\"; web: \"11.0\", \"8.1.0\"\n * ```\n */\nexport const osVersion = ExpoDevice ? ExpoDevice.osVersion : null;\n/**\n * The build ID of the OS that more precisely identifies the version of the OS. On Android, this corresponds to `Build.DISPLAY` (not `Build.ID`)\n * and currently is a string as described [here](https://source.android.com/setup/start/build-numbers). On iOS, this corresponds to `kern.osversion`\n * and is the detailed OS version sometimes displayed next to the more human-readable version. On web, this value is always `null`.\n *\n * @example\n * ```js\n * Device.osBuildId; // Android: \"PSR1.180720.075\"; iOS: \"16F203\"; web: null\n * ```\n */\nexport const osBuildId = ExpoDevice ? ExpoDevice.osBuildId : null;\n/**\n * The internal build ID of the OS running on the device. On Android, this corresponds to `Build.ID`.\n * On iOS, this is the same value as [`Device.osBuildId`](#deviceosbuildid). On web, this value is always `null`.\n *\n * @example\n * ```js\n * Device.osInternalBuildId; // Android: \"MMB29K\"; iOS: \"16F203\"; web: null,\n * ```\n */\nexport const osInternalBuildId = ExpoDevice ? ExpoDevice.osInternalBuildId : null;\n/**\n * A string that uniquely identifies the build of the currently running system OS. On Android, it follows this template:\n * - `$(BRAND)/$(PRODUCT)/$(DEVICE)/$(BOARD):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/\\$(TAGS)`\n * On web and iOS, this value is always `null`.\n *\n * @example\n * ```js\n * Device.osBuildFingerprint;\n * // Android: \"google/sdk_gphone_x86/generic_x86:9/PSR1.180720.075/5124027:user/release-keys\";\n * // iOS: null; web: null\n * ```\n * @platform android\n */\nexport const osBuildFingerprint = ExpoDevice\n    ? ExpoDevice.osBuildFingerprint || null\n    : null;\n/**\n * The Android SDK version of the software currently running on this hardware device. This value never changes while a device is booted,\n * but it may increase when the hardware manufacturer provides an OS update. See [here](https://developer.android.com/reference/android/os/Build.VERSION_CODES.html)\n * to see all possible version codes and corresponding versions. On iOS and web, this value is always `null`.\n *\n * @example\n * ```js\n * Device.platformApiLevel; // Android: 19; iOS: null; web: null\n * ```\n * @platform android\n */\nexport const platformApiLevel = ExpoDevice\n    ? ExpoDevice.platformApiLevel || null\n    : null;\n/**\n * The human-readable name of the device, which may be set by the device's user. If the device name is unavailable, particularly on web, this value is `null`.\n *\n * > On iOS 16 and newer, this value will be set to generic \"iPhone\" until you add the correct entitlement, see [iOS Capabilities page](/build-reference/ios-capabilities)\n * > to learn how to add one and check out [Apple documentation](https://developer.apple.com/documentation/uikit/uidevice/1620015-name#discussion)\n * > for more details on this change.\n *\n * @example\n * ```js\n * Device.deviceName; // \"Vivian's iPhone XS\"\n * ```\n */\nexport const deviceName = ExpoDevice ? ExpoDevice.deviceName : null;\n/**\n * Checks the type of the device as a [`DeviceType`](#devicetype) enum value.\n *\n * On Android, for devices other than TVs, the device type is determined by the screen resolution (screen diagonal size), so the result may not be completely accurate.\n * If the screen diagonal length is between 3\" and 6.9\", the method returns `DeviceType.PHONE`. For lengths between 7\" and 18\", the method returns `DeviceType.TABLET`.\n * Otherwise, the method returns `DeviceType.UNKNOWN`.\n *\n * @return Returns a promise that resolves to a [`DeviceType`](#devicetype) enum value.\n * @example\n * ```js\n * await Device.getDeviceTypeAsync();\n * // DeviceType.PHONE\n * ```\n */\nexport async function getDeviceTypeAsync() {\n    if (!ExpoDevice.getDeviceTypeAsync) {\n        throw new UnavailabilityError('expo-device', 'getDeviceTypeAsync');\n    }\n    return await ExpoDevice.getDeviceTypeAsync();\n}\n/**\n * Gets the uptime since the last reboot of the device, in milliseconds. Android devices do not count time spent in deep sleep.\n * @return Returns a promise that resolves to a `number` that represents the milliseconds since last reboot.\n * @example\n * ```js\n * await Device.getUptimeAsync();\n * // 4371054\n * ```\n * @platform android\n * @platform ios\n */\nexport async function getUptimeAsync() {\n    if (!ExpoDevice.getUptimeAsync) {\n        throw new UnavailabilityError('expo-device', 'getUptimeAsync');\n    }\n    return await ExpoDevice.getUptimeAsync();\n}\n/**\n * Returns the maximum amount of memory that the Java VM will attempt to use. If there is no inherent limit then `Number.MAX_SAFE_INTEGER` is returned.\n * @return Returns a promise that resolves to the maximum available memory that the Java VM will use, in bytes.\n * @example\n * ```js\n * await Device.getMaxMemoryAsync();\n * // 402653184\n * ```\n * @platform android\n */\nexport async function getMaxMemoryAsync() {\n    if (!ExpoDevice.getMaxMemoryAsync) {\n        throw new UnavailabilityError('expo-device', 'getMaxMemoryAsync');\n    }\n    let maxMemory = await ExpoDevice.getMaxMemoryAsync();\n    if (maxMemory === -1) {\n        maxMemory = Number.MAX_SAFE_INTEGER;\n    }\n    return maxMemory;\n}\n/**\n * > **warning** This method is experimental and is not completely reliable. See description below.\n *\n * Checks whether the device has been rooted (Android) or jailbroken (iOS). This is not completely reliable because there exist solutions to bypass root-detection\n * on both [iOS](https://www.theiphonewiki.com/wiki/XCon) and [Android](https://tweakerlinks.com/how-to-bypass-apps-root-detection-in-android-device/).\n * Further, many root-detection checks can be bypassed via reverse engineering.\n * - On Android, it's implemented in a way to find all possible files paths that contain the `\"su\"` executable but some devices that are not rooted may also have this executable. Therefore, there's no guarantee that this method will always return correctly.\n * - On iOS, [these jailbreak checks](https://www.theiphonewiki.com/wiki/Bypassing_Jailbreak_Detection) are used to detect if a device is rooted/jailbroken. However, since there are closed-sourced solutions such as [xCon](https://www.theiphonewiki.com/wiki/XCon) that aim to hook every known method and function responsible for informing an application of a jailbroken device, this method may not reliably detect devices that have xCon or similar packages installed.\n * - On web, this always resolves to `false` even if the device is rooted.\n * @return Returns a promise that resolves to a `boolean` that specifies whether this device is rooted.\n * @example\n * ```js\n * await Device.isRootedExperimentalAsync();\n * // true or false\n * ```\n */\nexport async function isRootedExperimentalAsync() {\n    if (!ExpoDevice.isRootedExperimentalAsync) {\n        throw new UnavailabilityError('expo-device', 'isRootedExperimentalAsync');\n    }\n    return await ExpoDevice.isRootedExperimentalAsync();\n}\n/**\n * **Using this method requires you to [add the `REQUEST_INSTALL_PACKAGES` permission](./../config/app/#permissions).**\n * Returns whether applications can be installed for this user via the system's [`ACTION_INSTALL_PACKAGE`](https://developer.android.com/reference/android/content/Intent.html#ACTION_INSTALL_PACKAGE)\n * mechanism rather than through the OS's default app store, like Google Play.\n * @return Returns a promise that resolves to a `boolean` that represents whether the calling package is allowed to request package installation.\n * @example\n * ```js\n * await Device.isSideLoadingEnabledAsync();\n * // true or false\n * ```\n * @platform android\n */\nexport async function isSideLoadingEnabledAsync() {\n    if (!ExpoDevice.isSideLoadingEnabledAsync) {\n        throw new UnavailabilityError('expo-device', 'isSideLoadingEnabledAsync');\n    }\n    return await ExpoDevice.isSideLoadingEnabledAsync();\n}\n/**\n * Gets a list of features that are available on the system. The feature names are platform-specific.\n * See [Android documentation](<https://developer.android.com/reference/android/content/pm/PackageManager#getSystemAvailableFeatures()>)\n * to learn more about this implementation.\n * @return Returns a promise that resolves to an array of strings, each of which is a platform-specific name of a feature available on the current device.\n * On iOS and web, the promise always resolves to an empty array.\n * @example\n * ```js\n * await Device.getPlatformFeaturesAsync();\n * // [\n * //   'android.software.adoptable_storage',\n * //   'android.software.backup',\n * //   'android.hardware.sensor.accelerometer',\n * //   'android.hardware.touchscreen',\n * // ]\n * ```\n * @platform android\n */\nexport async function getPlatformFeaturesAsync() {\n    if (!ExpoDevice.getPlatformFeaturesAsync) {\n        return [];\n    }\n    return await ExpoDevice.getPlatformFeaturesAsync();\n}\n/**\n * Tells if the device has a specific system feature.\n * @param feature The platform-specific name of the feature to check for on the device. You can get all available system features with `Device.getSystemFeatureAsync()`.\n * See [Android documentation](<https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)>) to view acceptable feature strings.\n * @return Returns a promise that resolves to a boolean value indicating whether the device has the specified system feature.\n * On iOS and web, the promise always resolves to `false`.\n * @example\n * ```js\n * await Device.hasPlatformFeatureAsync('amazon.hardware.fire_tv');\n * // true or false\n * ```\n * @platform android\n */\nexport async function hasPlatformFeatureAsync(feature) {\n    if (!ExpoDevice.hasPlatformFeatureAsync) {\n        return false;\n    }\n    return await ExpoDevice.hasPlatformFeatureAsync(feature);\n}\n//# sourceMappingURL=Device.js.map","/**\n * An enum representing the different types of devices supported by Expo.\n */\nexport var DeviceType;\n(function (DeviceType) {\n    /**\n     * An unrecognized device type.\n     */\n    DeviceType[DeviceType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    /**\n     * Mobile phone handsets, typically with a touch screen and held in one hand.\n     */\n    DeviceType[DeviceType[\"PHONE\"] = 1] = \"PHONE\";\n    /**\n     * Tablet computers, typically with a touch screen that is larger than a usual phone.\n     */\n    DeviceType[DeviceType[\"TABLET\"] = 2] = \"TABLET\";\n    /**\n     * Desktop or laptop computers, typically with a keyboard and mouse.\n     */\n    DeviceType[DeviceType[\"DESKTOP\"] = 3] = \"DESKTOP\";\n    /**\n     * Device with TV-based interfaces.\n     */\n    DeviceType[DeviceType[\"TV\"] = 4] = \"TV\";\n})(DeviceType || (DeviceType = {}));\n//# sourceMappingURL=Device.types.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoDevice');\n//# sourceMappingURL=ExpoDevice.js.map","import React, { useMemo } from \"react\";\nimport {\n  ActivityIndicator,\n  FlatList,\n  Pressable,\n  StyleSheet,\n  Text,\n  View,\n} from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport type { MobileIntervention } from \"../../types/intervention\";\nimport {\n  detailValue,\n  formatInterventionDate,\n  getFluideLabel,\n  getStatusStyle,\n  getTypeLabel,\n  isDoneStatus,\n  isTodoStatus,\n} from \"../../shared/interventionUtils\";\n\ntype Props = {\n  interventions: MobileIntervention[];\n  loadingInterventions: boolean;\n  interventionsError: string | null;\n  isOnline: boolean;\n  syncingQueue: boolean;\n  brandColor: string;\n  activeTab: \"todo\" | \"done\";\n  onChangeTab: (tab: \"todo\" | \"done\") => void;\n  onRefresh: () => void;\n  onOpenDetail: (id: number) => void;\n};\n\nfunction InterventionCard({\n  intervention,\n  brandColor,\n  onOpenDetail,\n}: Readonly<{\n  intervention: MobileIntervention;\n  brandColor: string;\n  onOpenDetail: (id: number) => void;\n}>) {\n  const status = getStatusStyle(intervention.statut);\n  return (\n    <View style={styles.historyCard}>\n      <View style={styles.historyHeader}>\n        <Text style={styles.historyTitle}>\n          {intervention.titre || `Intervention #${intervention.id}`}\n        </Text>\n        <View\n          style={[\n            styles.statusChip,\n            { backgroundColor: status.backgroundColor, borderColor: status.borderColor },\n          ]}\n        >\n          <Text style={[styles.statusChipText, { color: status.color }]}>{status.label}</Text>\n        </View>\n      </View>\n\n      <View style={styles.infoGrid}>\n        <View style={styles.infoItem}>\n          <Text style={styles.infoLabel}>Date</Text>\n          <Text style={styles.infoValue}>{formatInterventionDate(intervention.date_prevue)}</Text>\n        </View>\n        <View style={styles.infoItem}>\n          <Text style={styles.infoLabel}>Site</Text>\n          <Text style={styles.infoValue}>{detailValue(intervention.site_nom)}</Text>\n        </View>\n        <View style={styles.infoItem}>\n          <Text style={styles.infoLabel}>Machine</Text>\n          <Text style={styles.infoValue}>{detailValue(intervention.machine_nom)}</Text>\n        </View>\n        <View style={styles.infoItem}>\n          <Text style={styles.infoLabel}>Type mission</Text>\n          <Text style={styles.infoValue}>{getTypeLabel(intervention.type_intervention)}</Text>\n        </View>\n        <View style={styles.infoItem}>\n          <Text style={styles.infoLabel}>Type fluide</Text>\n          <Text style={styles.infoValue}>{getFluideLabel(intervention)}</Text>\n        </View>\n        <View style={styles.infoItem}>\n          <Text style={styles.infoLabel}>Numero R</Text>\n          <Text style={styles.infoValue}>{detailValue(intervention.numero_r)}</Text>\n        </View>\n      </View>\n\n      <Pressable\n        style={[styles.openDetailButton, { backgroundColor: brandColor }]}\n        onPress={() => onOpenDetail(intervention.id)}\n      >\n        <Text style={styles.openDetailText}>Voir le detail mission</Text>\n      </Pressable>\n    </View>\n  );\n}\n\nfunction ConnectivityBadge({ isOnline }: Readonly<{ isOnline: boolean }>) {\n  return (\n    <View\n      style={[styles.connectivityBadge, isOnline ? styles.connectivityOnline : styles.connectivityOffline]}\n    >\n      <Text\n        style={[styles.connectivityText, isOnline ? styles.connectivityTextOnline : styles.connectivityTextOffline]}\n      >\n        {isOnline ? \"Etat reseau: en ligne\" : \"Etat reseau: hors ligne\"}\n      </Text>\n    </View>\n  );\n}\n\nfunction TabsRow({\n  activeTab,\n  brandColor,\n  todoCount,\n  doneCount,\n  onSwitch,\n}: Readonly<{\n  activeTab: \"todo\" | \"done\";\n  brandColor: string;\n  todoCount: number;\n  doneCount: number;\n  onSwitch: (tab: \"todo\" | \"done\") => void;\n}>) {\n  return (\n    <View style={styles.tabsRow}>\n      <Pressable\n        style={[\n          styles.tab,\n          activeTab === \"todo\" && { backgroundColor: brandColor, borderColor: brandColor },\n        ]}\n        onPress={() => onSwitch(\"todo\")}\n      >\n        <Text style={[styles.tabText, activeTab === \"todo\" && styles.tabTextActive]}>\n          À faire ({todoCount})\n        </Text>\n      </Pressable>\n      <Pressable\n        style={[\n          styles.tab,\n          activeTab === \"done\" && { backgroundColor: \"#16a34a\", borderColor: \"#16a34a\" },\n        ]}\n        onPress={() => onSwitch(\"done\")}\n      >\n        <Text style={[styles.tabText, activeTab === \"done\" && styles.tabTextActive]}>\n          Terminées ({doneCount})\n        </Text>\n      </Pressable>\n    </View>\n  );\n}\n\nfunction InterventionsList({\n  loading,\n  activeTab,\n  visibleList,\n  renderItem,\n  contentBottomPadding,\n}: Readonly<{\n  loading: boolean;\n  activeTab: \"todo\" | \"done\";\n  visibleList: MobileIntervention[];\n  renderItem: ({ item }: { item: MobileIntervention }) => React.ReactElement;\n  contentBottomPadding: number;\n}>) {\n  if (loading) {\n    return (\n      <View style={styles.inlineLoader}>\n        <ActivityIndicator size=\"small\" />\n        <Text style={styles.mutedText}>Chargement des interventions...</Text>\n      </View>\n    );\n  }\n  if (visibleList.length === 0) {\n    const emptyMsg =\n      activeTab === \"todo\"\n        ? \"Aucune mission a faire pour cette periode.\"\n        : \"Aucune mission terminee pour cette periode.\";\n    return <Text style={styles.mutedText}>{emptyMsg}</Text>;\n  }\n  return (\n    <FlatList\n      data={visibleList}\n      keyExtractor={(item) => String(item.id)}\n      renderItem={renderItem}\n      contentContainerStyle={[styles.listContent, { paddingBottom: contentBottomPadding }]}\n      showsVerticalScrollIndicator={false}\n    />\n  );\n}\n\nexport default function MissionsDashboard(props: Readonly<Props>) {\n  const {\n    interventions,\n    loadingInterventions,\n    interventionsError,\n    isOnline,\n    syncingQueue,\n    brandColor,\n    activeTab,\n    onChangeTab,\n    onRefresh,\n    onOpenDetail,\n  } = props;\n  const insets = useSafeAreaInsets();\n\n  // activeTab remonte au parent (App.tsx) pour survivre aux remounts du\n  // dashboard declenches par les re-renders de App. Sans ca, un refresh\n  // declenche par switch d'onglet re-mountait MissionsDashboard et remettait\n  // localement le tab a la valeur initiale, ce qui cassait l'UX quand\n  // l'utilisateur cliquait sur l'onglet Terminees apres un refresh.\n  const switchTab = (tab: \"todo\" | \"done\") => {\n    if (tab === activeTab) {\n      return;\n    }\n    onChangeTab(tab);\n    onRefresh();\n  };\n\n  const todoList = useMemo(\n    () => interventions.filter((i) => isTodoStatus(i.statut)),\n    [interventions]\n  );\n  const doneList = useMemo(\n    () => interventions.filter((i) => isDoneStatus(i.statut)),\n    [interventions]\n  );\n  const visibleList = activeTab === \"todo\" ? todoList : doneList;\n\n  const renderIntervention = ({ item: intervention }: { item: MobileIntervention }) => (\n    <InterventionCard\n      intervention={intervention}\n      brandColor={brandColor}\n      onOpenDetail={onOpenDetail}\n    />\n  );\n\n  return (\n    <View style={styles.wrapper}>\n      <ConnectivityBadge isOnline={isOnline} />\n\n      {syncingQueue ? (\n        <Text style={styles.syncText}>Synchronisation de la file en cours...</Text>\n      ) : null}\n\n      <Pressable\n        style={[styles.refreshButton, loadingInterventions && styles.buttonDisabled]}\n        onPress={onRefresh}\n        disabled={loadingInterventions}\n      >\n        <Text style={styles.refreshText}>\n          {loadingInterventions ? \"Rafraichissement...\" : \"Rafraichir les missions\"}\n        </Text>\n      </Pressable>\n\n      {interventionsError ? <Text style={styles.error}>{interventionsError}</Text> : null}\n\n      <TabsRow\n        activeTab={activeTab}\n        brandColor={brandColor}\n        todoCount={todoList.length}\n        doneCount={doneList.length}\n        onSwitch={switchTab}\n      />\n\n      <InterventionsList\n        loading={loadingInterventions}\n        activeTab={activeTab}\n        visibleList={visibleList}\n        renderItem={renderIntervention}\n        contentBottomPadding={insets.bottom + 24}\n      />\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  wrapper: {\n    flex: 1,\n    gap: 10,\n  },\n  listContent: {\n    paddingBottom: 12,\n  },\n  connectivityBadge: {\n    borderRadius: 999,\n    paddingVertical: 6,\n    paddingHorizontal: 10,\n    alignSelf: \"flex-start\",\n    borderWidth: 1,\n  },\n  connectivityOnline: {\n    backgroundColor: \"#dcfce7\",\n    borderColor: \"#86efac\",\n  },\n  connectivityOffline: {\n    backgroundColor: \"#fee2e2\",\n    borderColor: \"#fca5a5\",\n  },\n  connectivityText: {\n    fontSize: 12,\n    fontWeight: \"700\",\n  },\n  connectivityTextOnline: {\n    color: \"#166534\",\n  },\n  connectivityTextOffline: {\n    color: \"#991b1b\",\n  },\n  syncText: {\n    color: \"#6a7a96\",\n  },\n  refreshButton: {\n    backgroundColor: \"#edf3ff\",\n    borderRadius: 10,\n    alignItems: \"center\",\n    paddingVertical: 10,\n  },\n  refreshText: {\n    color: \"#1e56a8\",\n    fontWeight: \"600\",\n  },\n  buttonDisabled: {\n    opacity: 0.5,\n  },\n  error: {\n    color: \"#b00020\",\n  },\n  sectionTitle: {\n    fontSize: 17,\n    fontWeight: \"700\",\n    color: \"#16325c\",\n    marginBottom: 2,\n  },\n  tabsRow: {\n    flexDirection: \"row\",\n    gap: 8,\n    marginBottom: 4,\n  },\n  tab: {\n    flex: 1,\n    paddingVertical: 10,\n    paddingHorizontal: 10,\n    borderRadius: 8,\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    backgroundColor: \"#ffffff\",\n    alignItems: \"center\",\n  },\n  tabText: { fontSize: 13, fontWeight: \"700\", color: \"#334155\" },\n  tabTextActive: { color: \"#ffffff\" },\n  inlineLoader: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 8,\n  },\n  mutedText: {\n    color: \"#6a7a96\",\n  },\n  historyCard: {\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    backgroundColor: \"#f8fbff\",\n    borderRadius: 12,\n    padding: 12,\n    gap: 10,\n  },\n  historyHeader: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    gap: 8,\n  },\n  historyTitle: {\n    flex: 1,\n    color: \"#16325c\",\n    fontWeight: \"700\",\n    fontSize: 15,\n  },\n  statusChip: {\n    borderWidth: 1,\n    borderRadius: 999,\n    paddingVertical: 3,\n    paddingHorizontal: 8,\n  },\n  statusChipText: {\n    fontSize: 11,\n    fontWeight: \"700\",\n  },\n  infoGrid: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: 8,\n  },\n  infoItem: {\n    minWidth: \"47%\",\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#e3ebf8\",\n    borderRadius: 10,\n    padding: 8,\n  },\n  infoLabel: {\n    fontSize: 11,\n    color: \"#66748f\",\n    fontWeight: \"600\",\n    marginBottom: 2,\n  },\n  infoValue: {\n    fontSize: 13,\n    color: \"#1f2f4f\",\n    fontWeight: \"600\",\n  },\n  openDetailButton: {\n    borderRadius: 8,\n    paddingVertical: 8,\n    alignItems: \"center\",\n  },\n  openDetailText: {\n    color: \"#ffffff\",\n    fontWeight: \"700\",\n  },\n});\n","import type { MobileIntervention } from \"../types/intervention\";\n\nexport type InterventionStatusStyle = {\n  label: string;\n  color: string;\n  backgroundColor: string;\n  borderColor: string;\n};\n\n// Vocabulaire des statuts d'intervention — source unique cote mobile.\n// Le backend est la source de verite : l'enum reel de `intervention.statut`\n// (coolcare + missioflow-app, identique) = planifiee, en_cours, terminee,\n// reportee, annulee (cf. database/schema.sql). Le mobile s'aligne dessus :\n//   - TODO  : planifiee, en_cours, reportee (les \"a faire / en cours\")\n//   - DONE  : terminee\n//   - annulee : volontairement dans AUCUN onglet (ni a faire, ni terminee)\n// \"\" / en_attente / cloturee sont des valeurs DEFENSIVES : impossibles pour\n// une intervention (hors enum) mais tolerees au cas ou (donnee legacy, autre\n// table, IN-list defensive du backend). Inoffensives car jamais produites.\nexport const TODO_STATUSES = new Set([\"\", \"planifiee\", \"reportee\", \"en_cours\", \"en_attente\"]);\nexport const DONE_STATUSES = new Set([\"terminee\", \"cloturee\"]);\n\nfunction normalizeStatut(statut: string | undefined | null): string {\n  return String(statut ?? \"\").toLowerCase();\n}\n\n// Mission \"a faire / en cours\" : a planifier, planifiee, reportee, en cours,\n// en attente (le calendrier n'affiche que ces statuts, miroir de planning.php).\nexport function isTodoStatus(statut: string | undefined | null): boolean {\n  return TODO_STATUSES.has(normalizeStatut(statut));\n}\n\n// Mission terminee / cloturee (consultation en lecture seule cote mobile).\nexport function isDoneStatus(statut: string | undefined | null): boolean {\n  return DONE_STATUSES.has(normalizeStatut(statut));\n}\n\nconst TYPE_LABELS: Record<string, string> = {\n  maintenance_preventive: \"Maintenance preventive\",\n  maintenance_corrective: \"Maintenance corrective\",\n  installation: \"Installation\",\n  mise_en_service: \"Mise en service\",\n  controle_reglementaire: \"Controle reglementaire\",\n  arret_definitif: \"Arret definitif\",\n  fuite: \"Reparation fuite\",\n  recharge: \"Recharge fluide\",\n};\n\nconst STATUS_STYLES: Record<string, InterventionStatusStyle> = {\n  en_cours: {\n    label: \"En cours\",\n    color: \"#0f766e\",\n    backgroundColor: \"#ccfbf1\",\n    borderColor: \"#5eead4\",\n  },\n  terminee: {\n    label: \"Terminee\",\n    color: \"#166534\",\n    backgroundColor: \"#dcfce7\",\n    borderColor: \"#86efac\",\n  },\n  planifiee: {\n    label: \"Planifiee\",\n    color: \"#1d4ed8\",\n    backgroundColor: \"#dbeafe\",\n    borderColor: \"#93c5fd\",\n  },\n  reportee: {\n    label: \"Reportee\",\n    color: \"#92400e\",\n    backgroundColor: \"#ffedd5\",\n    borderColor: \"#fdba74\",\n  },\n  en_attente: {\n    label: \"En attente\",\n    color: \"#374151\",\n    backgroundColor: \"#f3f4f6\",\n    borderColor: \"#d1d5db\",\n  },\n  annulee: {\n    label: \"Annulee\",\n    color: \"#991b1b\",\n    backgroundColor: \"#fee2e2\",\n    borderColor: \"#fca5a5\",\n  },\n};\n\nexport function formatInterventionDate(value: string | undefined): string {\n  if (!value) {\n    return \"-\";\n  }\n\n  const parsed = new Date(value.replace(\" \", \"T\"));\n  if (Number.isNaN(parsed.getTime())) {\n    return value;\n  }\n\n  return parsed.toLocaleString();\n}\n\nexport function detailValue(value: unknown): string {\n  if (value === null || value === undefined) {\n    return \"-\";\n  }\n  let text: string;\n  if (typeof value === \"string\") text = value;\n  else if (typeof value === \"number\" || typeof value === \"boolean\") text = String(value);\n  else text = JSON.stringify(value);\n  text = text.trim();\n  return text === \"\" ? \"-\" : text;\n}\n\nexport function getTypeLabel(type: string | undefined): string {\n  if (!type) {\n    return \"-\";\n  }\n\n  return TYPE_LABELS[type] || type;\n}\n\nexport function getFluideLabel(intervention: MobileIntervention): string {\n  if (intervention.machine_marque && intervention.machine_modele) {\n    return `${intervention.machine_marque} ${intervention.machine_modele}`;\n  }\n\n  if (intervention.machine_marque) {\n    return intervention.machine_marque;\n  }\n\n  return intervention.machine_nom ? \"Fluide frigorifique\" : \"-\";\n}\n\nexport function getStatusStyle(statut: string | undefined): InterventionStatusStyle {\n  if (!statut) {\n    return {\n      label: \"Inconnu\",\n      color: \"#374151\",\n      backgroundColor: \"#f3f4f6\",\n      borderColor: \"#d1d5db\",\n    };\n  }\n\n  return (\n    STATUS_STYLES[statut] || {\n      label: statut,\n      color: \"#374151\",\n      backgroundColor: \"#f3f4f6\",\n      borderColor: \"#d1d5db\",\n    }\n  );\n}","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n  ActivityIndicator,\n  Image,\n  Modal,\n  Pressable,\n  ScrollView,\n  StyleSheet,\n  Switch,\n  Text,\n  TextInput,\n  View,\n} from \"react-native\";\nimport { useFocusEffect, useNavigation, useRoute, type RouteProp } from \"@react-navigation/native\";\nimport type { NativeStackNavigationProp } from \"@react-navigation/native-stack\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport {\n  fetchAndStoreInterventionSteps,\n  getInterventionById,\n  getInterventionPrecheck,\n  startIntervention,\n} from \"../../services/interventionsApi\";\nimport { buildApiUrl, getApiAccessToken, isApiClientError } from \"../../services/apiClient\";\nimport { saveInterventionDetail } from \"../../core/localDatabase\";\nimport { loadStepsLocally } from \"../../core/stepRepository\";\nimport { buildPhases, isDisplayOnly, getStepMetadata } from \"../../shared/workflowUtils\";\nimport { detailValue, formatInterventionDate, getStatusStyle, getTypeLabel, isDoneStatus } from \"../../shared/interventionUtils\";\nimport type {\n  MobileInterventionDetails,\n  MobilePrecheckState,\n  MobileStep,\n  MobileStepFile,\n} from \"../../types/intervention\";\nimport type { AppStackParamList } from \"../../navigation/types\";\n\ntype DetailRoute = RouteProp<AppStackParamList, \"MissionDetail\">;\ntype DetailNav = NativeStackNavigationProp<AppStackParamList, \"MissionDetail\">;\n\nexport default function MissionDetailScreen() {\n  const route = useRoute<DetailRoute>();\n  const navigation = useNavigation<DetailNav>();\n  const insets = useSafeAreaInsets();\n  const { interventionId, brandColor } = route.params;\n\n  const [item, setItem] = useState<MobileInterventionDetails | null>(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState<string | null>(null);\n  // Etapes workflow chargees uniquement si la mission est terminee (lecture\n  // seule cote mobile). Permet au tech de revoir ce qu'il a rempli sans\n  // pouvoir editer.\n  const [completedSteps, setCompletedSteps] = useState<MobileStep[]>([]);\n\n  const fetchDetail = useCallback(async () => {\n    setLoading(true);\n    setError(null);\n    try {\n      const result = await getInterventionById(interventionId);\n      setItem(result);\n    } catch (err) {\n      setError(err instanceof Error ? err.message : \"Erreur chargement intervention\");\n    } finally {\n      setLoading(false);\n    }\n  }, [interventionId]);\n\n  useEffect(() => {\n    fetchDetail();\n  }, [fetchDetail]);\n\n  // Re-fetch a chaque fois que l'ecran regagne le focus (ex: retour depuis\n  // le workflow apres finalisation) pour refleter le nouveau statut\n  // sans que le user ait a refresh manuellement.\n  useFocusEffect(\n    useCallback(() => {\n      fetchDetail();\n    }, [fetchDetail])\n  );\n\n  // Detection mission terminee : on s'appuie sur les statuts serveur\n  // (statut='terminee' ou 'cloturee', workflow_status='completed').\n  // Une mission terminee est consultee en lecture seule, on cache le\n  // bouton \"Debuter intervention\".\n  const isCompleted = Boolean(\n    item &&\n      (isDoneStatus(item.statut) ||\n        (item as { workflow_status?: string }).workflow_status === \"completed\")\n  );\n\n  // Charge les etapes workflow si mission terminee pour affichage lecture\n  // seule en bas du detail. Re-fetch aussi depuis le serveur pour avoir\n  // les derniers comments/values (si un autre device a finalise).\n  useEffect(() => {\n    if (!isCompleted) {\n      setCompletedSteps([]);\n      return;\n    }\n    let cancelled = false;\n    (async () => {\n      try {\n        await fetchAndStoreInterventionSteps(interventionId);\n      } catch {\n        // best-effort, fallback sur le local\n      }\n      const local = await loadStepsLocally(interventionId);\n      if (!cancelled) {\n        setCompletedSteps(local);\n      }\n    })();\n    return () => {\n      cancelled = true;\n    };\n  }, [isCompleted, interventionId]);\n\n  // Depuis le contrat #168, les endpoints mobiles renvoient TOUTES les etapes\n  // (y compris masquees) pour permettre le calcul de visibilite offline. Pour\n  // une mission TERMINEE (etat fige), on s'appuie sur le is_visible serveur\n  // pour ne montrer dans le recap que ce qui etait reellement visible a la\n  // finalisation -> on exclut les extensions conditionnelles jamais declenchees.\n  // is_visible undefined (ancien backend / ancienne donnee locale) = visible.\n  const completedPhases = useMemo(() => {\n    const visibleSteps = completedSteps.filter((s) => s.is_visible !== false);\n    return visibleSteps.length > 0 ? buildPhases(visibleSteps) : [];\n  }, [completedSteps]);\n\n  // --- Pre-controle / demarrage d'intervention (clock-in) ---\n  // Au lieu d'aller direct au workflow, \"Debuter\" passe par le start serveur\n  // (statut -> en_cours, date_debut, persistance precheck CERFA/prelevement),\n  // miroir de intervention_start.php cote PWA.\n  const [precheckOpen, setPrecheckOpen] = useState(false);\n  const [precheckLoading, setPrecheckLoading] = useState(false);\n  const [precheck, setPrecheck] = useState<MobilePrecheckState | null>(null);\n  const [cerfaEnabled, setCerfaEnabled] = useState(false);\n  const [cerfaNumber, setCerfaNumber] = useState(\"\");\n  const [prelevementNumber, setPrelevementNumber] = useState(\"\");\n  const [starting, setStarting] = useState(false);\n  const [startError, setStartError] = useState<string | null>(null);\n\n  const goToWorkflow = () =>\n    navigation.navigate(\"WorkflowIntervention\", {\n      interventionId,\n      brandColor,\n      machineId: Number(item?.machine_id) || 0,\n    });\n\n  const openPrecheck = async () => {\n    // Deja demarree : on va directement au workflow (le start est idempotent).\n    if (item?.statut === \"en_cours\") {\n      goToWorkflow();\n      return;\n    }\n    setPrecheckOpen(true);\n    setPrecheckLoading(true);\n    setStartError(null);\n    try {\n      const state = await getInterventionPrecheck(interventionId);\n      setPrecheck(state);\n      setCerfaEnabled(Boolean(state.precheck?.cerfa_enabled));\n      setCerfaNumber(String(state.precheck?.cerfa_number ?? \"\"));\n      setPrelevementNumber(String(state.precheck?.prelevement_number ?? \"\"));\n    } catch {\n      // Hors-ligne / endpoint indispo : on permet quand meme de demarrer avec\n      // des valeurs vides (le start sera mis en file d'attente si offline).\n      setPrecheck(null);\n    } finally {\n      setPrecheckLoading(false);\n    }\n  };\n\n  const confirmStart = async () => {\n    setStarting(true);\n    setStartError(null);\n    try {\n      await startIntervention({\n        intervention_id: interventionId,\n        cerfa_enabled: cerfaEnabled,\n        cerfa_number: cerfaNumber.trim(),\n        prelevement_number: prelevementNumber.trim(),\n      });\n      setPrecheckOpen(false);\n      goToWorkflow();\n    } catch (e) {\n      // Offline (erreur reseau, pas de status HTTP) : startIntervention a DEJA\n      // mis le clock-in en file de sync. Bloquer ici laissait le tech coince sur\n      // une intervention \"planifiee\" qu'il ne pouvait pas demarrer hors-ligne.\n      // On continue en optimiste : on marque l'intervention en_cours en local\n      // (idempotent au retour -> openPrecheck va direct au workflow) et on ouvre\n      // le workflow. Le serveur sera reconcilie quand la file se videra.\n      const isOffline = isApiClientError(e) && e.status === undefined;\n      if (isOffline) {\n        if (item) {\n          const optimistic: MobileInterventionDetails = { ...item, statut: \"en_cours\" };\n          setItem(optimistic);\n          await saveInterventionDetail(optimistic).catch(() => {});\n        }\n        setPrecheckOpen(false);\n        goToWorkflow();\n        return;\n      }\n      setStartError(e instanceof Error ? e.message : \"Demarrage impossible\");\n    } finally {\n      setStarting(false);\n    }\n  };\n\n  return (\n    <View style={styles.root}>\n      <ScrollView\n        style={styles.scroll}\n        contentContainerStyle={[styles.content, { paddingBottom: insets.bottom + 24 }]}\n        showsVerticalScrollIndicator={false}\n      >\n        {loading ? (\n          <View style={styles.loaderRow}>\n            <ActivityIndicator size=\"small\" />\n            <Text style={styles.mutedText}>Chargement...</Text>\n          </View>\n        ) : null}\n\n        {error ? (\n          <View style={styles.errorBlock}>\n            <Text style={styles.errorText}>{error}</Text>\n            <Pressable style={styles.retryButton} onPress={fetchDetail}>\n              <Text style={styles.retryText}>Reessayer</Text>\n            </Pressable>\n          </View>\n        ) : null}\n\n        {item ? (\n          <InterventionBody\n            item={item}\n            isCompleted={isCompleted}\n            completedPhases={completedPhases}\n          />\n        ) : null}\n      </ScrollView>\n\n      <View style={[styles.actionsBar, { paddingBottom: insets.bottom + 16 }]}>\n        <Pressable style={styles.backButton} onPress={() => navigation.goBack()}>\n          <Text style={styles.backButtonText}>Retour</Text>\n        </Pressable>\n        {isCompleted ? (\n          // Mission deja finalisee : pas de bouton d'action, badge\n          // \"Lecture seule\" a la place. Le detail reste affiche en entete.\n          <View style={[styles.startButton, styles.completedBadge]}>\n            <Text style={styles.completedBadgeText}>✓ Mission terminee (lecture seule)</Text>\n          </View>\n        ) : (\n          <Pressable\n            style={[styles.startButton, { backgroundColor: brandColor }, !item && styles.buttonDisabled]}\n            disabled={!item}\n            onPress={() => void openPrecheck()}\n          >\n            <Text style={styles.startButtonText}>Debuter intervention</Text>\n          </Pressable>\n        )}\n      </View>\n\n      <Modal\n        visible={precheckOpen}\n        transparent\n        animationType=\"slide\"\n        onRequestClose={starting ? undefined : () => setPrecheckOpen(false)}\n      >\n        <View style={styles.precheckOverlay}>\n          <View style={[styles.precheckCard, { paddingBottom: insets.bottom + 16 }]}>\n            <Text style={styles.precheckTitle}>Pre-controle</Text>\n\n            {precheckLoading ? (\n              <View style={styles.loaderRow}>\n                <ActivityIndicator size=\"small\" />\n                <Text style={styles.mutedText}>Chargement...</Text>\n              </View>\n            ) : (\n              <>\n                {precheck?.requirements?.needs_cerfa ? (\n                  <View style={styles.precheckField}>\n                    <View style={styles.precheckToggleRow}>\n                      <Text style={styles.precheckLabel}>CERFA prepare</Text>\n                      <Switch\n                        value={cerfaEnabled}\n                        onValueChange={setCerfaEnabled}\n                        disabled={starting}\n                      />\n                    </View>\n                    {cerfaEnabled ? (\n                      <TextInput\n                        style={styles.precheckInput}\n                        value={cerfaNumber}\n                        onChangeText={setCerfaNumber}\n                        placeholder=\"N° CERFA\"\n                        editable={!starting}\n                      />\n                    ) : null}\n                  </View>\n                ) : null}\n\n                {precheck?.requirements?.needs_prelevement ? (\n                  <View style={styles.precheckField}>\n                    <Text style={styles.precheckLabel}>Prelevement</Text>\n                    {precheck.requirements.prelevement_info ? (\n                      <Text style={styles.precheckInfo}>\n                        {precheck.requirements.prelevement_info}\n                      </Text>\n                    ) : null}\n                    <TextInput\n                      style={styles.precheckInput}\n                      value={prelevementNumber}\n                      onChangeText={setPrelevementNumber}\n                      placeholder=\"N° prelevement\"\n                      editable={!starting}\n                    />\n                  </View>\n                ) : null}\n\n                {!precheck?.requirements?.needs_cerfa &&\n                !precheck?.requirements?.needs_prelevement ? (\n                  <Text style={styles.mutedText}>\n                    Aucun pre-controle requis. Vous pouvez demarrer l'intervention.\n                  </Text>\n                ) : null}\n\n                {startError ? <Text style={styles.errorText}>{startError}</Text> : null}\n\n                <View style={styles.precheckButtons}>\n                  <Pressable\n                    style={[styles.precheckBtn, styles.precheckCancel]}\n                    onPress={() => setPrecheckOpen(false)}\n                    disabled={starting}\n                  >\n                    <Text style={styles.precheckCancelText}>Annuler</Text>\n                  </Pressable>\n                  <Pressable\n                    style={[styles.precheckBtn, { backgroundColor: brandColor }]}\n                    onPress={() => void confirmStart()}\n                    disabled={starting}\n                  >\n                    {starting ? (\n                      <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n                    ) : (\n                      <Text style={styles.precheckStartText}>Demarrer</Text>\n                    )}\n                  </Pressable>\n                </View>\n              </>\n            )}\n          </View>\n        </View>\n      </Modal>\n    </View>\n  );\n}\n\nfunction InfoItem({ label, value }: Readonly<{ label: string; value: string }>) {\n  return (\n    <View style={styles.infoItem}>\n      <Text style={styles.infoLabel}>{label}</Text>\n      <Text style={styles.infoValue}>{value}</Text>\n    </View>\n  );\n}\n\nfunction InterventionHeader({ item }: Readonly<{ item: MobileInterventionDetails }>) {\n  const status = getStatusStyle(item.statut);\n  return (\n    <View style={styles.header}>\n      <Text style={styles.headerTitle}>{item.titre || `Intervention #${item.id}`}</Text>\n      <View\n        style={[\n          styles.statusChip,\n          { backgroundColor: status.backgroundColor, borderColor: status.borderColor },\n        ]}\n      >\n        <Text style={[styles.statusChipText, { color: status.color }]}>{status.label}</Text>\n      </View>\n    </View>\n  );\n}\n\nfunction TextSection({ title, text }: Readonly<{ title: string; text?: string }>) {\n  if (!text) return null;\n  return (\n    <View style={styles.section}>\n      <Text style={styles.sectionTitle}>{title}</Text>\n      <Text style={styles.descriptionText}>{text}</Text>\n    </View>\n  );\n}\n\nfunction TechnicienSection({ item }: Readonly<{ item: MobileInterventionDetails }>) {\n  if (!item.technicien_nom) return null;\n  return (\n    <View style={styles.section}>\n      <Text style={styles.sectionTitle}>Technicien assigne</Text>\n      <View style={styles.infoGrid}>\n        <InfoItem\n          label=\"Nom\"\n          value={`${detailValue(item.technicien_prenom)} ${detailValue(item.technicien_nom)}`}\n        />\n      </View>\n    </View>\n  );\n}\n\nfunction CompletedStepsSection({\n  phases,\n}: Readonly<{\n  phases: { name: string; steps: MobileStep[] }[];\n}>) {\n  return (\n    <View style={styles.section}>\n      <Text style={styles.sectionTitle}>Détail des étapes remplies</Text>\n      <Text style={styles.mutedSmall}>\n        Consultez ici les valeurs et commentaires saisis lors de l'intervention. Modification impossible — la mission est terminée.\n      </Text>\n      {phases.map((phase, phaseIdx) => (\n        <View key={phase.name} style={styles.readOnlyPhase}>\n          <Text style={styles.readOnlyPhaseTitle}>\n            {phaseIdx + 1}. {phase.name}\n          </Text>\n          {phase.steps.map((step) => (\n            <ReadOnlyStepRow key={step.id} step={step} />\n          ))}\n        </View>\n      ))}\n    </View>\n  );\n}\n\nfunction InterventionBody({\n  item,\n  isCompleted,\n  completedPhases,\n}: Readonly<{\n  item: MobileInterventionDetails;\n  isCompleted: boolean;\n  completedPhases: { name: string; steps: MobileStep[] }[];\n}>) {\n  return (\n    <>\n      <InterventionHeader item={item} />\n\n      <View style={styles.section}>\n        <Text style={styles.sectionTitle}>Informations</Text>\n        <View style={styles.infoGrid}>\n          <InfoItem label=\"Type\" value={getTypeLabel(item.type_intervention)} />\n          <InfoItem label=\"Priorite\" value={detailValue(item.priorite)} />\n          <InfoItem label=\"Date prevue\" value={formatInterventionDate(item.date_prevue)} />\n          <InfoItem label=\"Numero R\" value={detailValue(item.numero_r)} />\n        </View>\n      </View>\n\n      <View style={styles.section}>\n        <Text style={styles.sectionTitle}>Site</Text>\n        <View style={styles.infoGrid}>\n          <InfoItem label=\"Nom\" value={detailValue(item.site_nom)} />\n          <InfoItem label=\"Adresse\" value={detailValue(item.site_adresse)} />\n        </View>\n      </View>\n\n      <View style={styles.section}>\n        <Text style={styles.sectionTitle}>Machine</Text>\n        <View style={styles.infoGrid}>\n          <InfoItem label=\"Nom\" value={detailValue(item.machine_nom)} />\n          <InfoItem label=\"Marque\" value={detailValue(item.machine_marque)} />\n          <InfoItem label=\"Modele\" value={detailValue(item.machine_modele)} />\n        </View>\n      </View>\n\n      <TechnicienSection item={item} />\n      <TextSection title=\"Description\" text={item.description} />\n      <TextSection title=\"Recommandations\" text={item.recommandations} />\n\n      {isCompleted && completedPhases.length > 0 ? (\n        <CompletedStepsSection phases={completedPhases} />\n      ) : null}\n    </>\n  );\n}\n\n/**\n * Ligne affichant une etape workflow en lecture seule dans le detail\n * d'une mission terminee. Formate value + comment selon le type de step\n * (photo => miniatures, signature => fait/non, autre => valeur brute).\n *\n * Les fichiers (step.files) viennent de intervention_workflow_step_files\n * cote serveur (joints via mobile/intervention_steps.php). Ils sont charges\n * via le endpoint file_preview qui accepte le Bearer mobile.\n */\nfunction formatStepDisplayValue(value: MobileStep[\"value\"], hasFiles: boolean): string {\n  if (value === null || value === undefined || value === \"\") {\n    return hasFiles ? \"\" : \"(non renseigne)\";\n  }\n  if (Array.isArray(value)) {\n    // Anciennes valeurs locales (StepPhotoValue[]) : on s'appuie sur step.files\n    // remontes par le serveur pour l'affichage, donc pas de texte ici.\n    return \"\";\n  }\n  if (typeof value === \"object\" && \"signed\" in value) {\n    return value.signed ? \"Signee\" : \"Non signee\";\n  }\n  return String(value);\n}\n\nfunction ReadOnlyStepRow({ step }: Readonly<{ step: MobileStep }>) {\n  const meta = getStepMetadata(step);\n  if (isDisplayOnly(step)) {\n    return null;\n  }\n  const commentText = String(meta.comment_text ?? \"\").trim();\n  const files = Array.isArray(step.files) ? step.files : [];\n  const displayValue = formatStepDisplayValue(step.value, files.length > 0);\n\n  return (\n    <View style={styles.readOnlyStepRow}>\n      <Text style={styles.readOnlyStepLabel}>{step.label}</Text>\n      {displayValue ? (\n        <Text style={styles.readOnlyStepValue}>{displayValue}</Text>\n      ) : null}\n      {files.length > 0 ? (\n        <View style={styles.readOnlyPhotoGrid}>\n          {files.map((file) => (\n            <ReadOnlyPhotoThumb key={file.id} file={file} />\n          ))}\n        </View>\n      ) : null}\n      {commentText ? (\n        <Text style={styles.readOnlyStepComment}>💬 {commentText}</Text>\n      ) : null}\n    </View>\n  );\n}\n\n/**\n * Miniature photo workflow servie par /api/intervention_workflow_file_preview.php.\n * Le endpoint exige un Bearer JWT (AuthMiddleware accepte mobile_jwt) -> on\n * passe le token via source.headers (RN supporte). Construction de l'URL\n * absolue via buildApiUrl pour respecter la baseUrl configuree (multi-tenant).\n */\nfunction ReadOnlyPhotoThumb({ file }: Readonly<{ file: MobileStepFile }>) {\n  const [uri, setUri] = useState<string | null>(null);\n  const [token, setToken] = useState<string | null>(null);\n\n  useEffect(() => {\n    let cancelled = false;\n    (async () => {\n      const [url, accessToken] = await Promise.all([\n        buildApiUrl(file.path),\n        getApiAccessToken(),\n      ]);\n      if (cancelled) {\n        return;\n      }\n      setUri(url);\n      setToken(accessToken);\n    })();\n    return () => {\n      cancelled = true;\n    };\n  }, [file.path]);\n\n  if (!uri || !token) {\n    return <View style={styles.readOnlyPhotoPlaceholder} />;\n  }\n\n  return (\n    <Image\n      source={{ uri, headers: { Authorization: `Bearer ${token}` } }}\n      style={styles.readOnlyPhoto}\n      resizeMode=\"cover\"\n    />\n  );\n}\n\nconst styles = StyleSheet.create({\n  root: { flex: 1, backgroundColor: \"#edf2f8\" },\n  scroll: { flex: 1 },\n  content: { padding: 16, gap: 12, paddingBottom: 16 },\n  loaderRow: { flexDirection: \"row\", alignItems: \"center\", gap: 8 },\n  mutedText: { color: \"#6a7a96\" },\n  errorBlock: { gap: 8 },\n  errorText: { color: \"#b00020\" },\n  retryButton: { backgroundColor: \"#edf3ff\", borderRadius: 8, paddingVertical: 8, alignItems: \"center\" },\n  retryText: { color: \"#1e56a8\", fontWeight: \"700\" },\n  header: { flexDirection: \"row\", justifyContent: \"space-between\", alignItems: \"flex-start\", gap: 8 },\n  headerTitle: { flex: 1, fontSize: 18, fontWeight: \"700\", color: \"#16325c\" },\n  statusChip: { borderWidth: 1, borderRadius: 999, paddingVertical: 3, paddingHorizontal: 8 },\n  statusChipText: { fontSize: 11, fontWeight: \"700\" },\n  section: { gap: 8 },\n  sectionTitle: { fontSize: 13, fontWeight: \"700\", color: \"#66748f\", textTransform: \"uppercase\", letterSpacing: 0.5 },\n  infoGrid: { flexDirection: \"row\", flexWrap: \"wrap\", gap: 8 },\n  infoItem: { minWidth: \"47%\", backgroundColor: \"#ffffff\", borderWidth: 1, borderColor: \"#e3ebf8\", borderRadius: 10, padding: 8 },\n  infoLabel: { fontSize: 11, color: \"#66748f\", fontWeight: \"600\", marginBottom: 2 },\n  infoValue: { fontSize: 13, color: \"#1f2f4f\", fontWeight: \"600\" },\n  descriptionText: { fontSize: 13, color: \"#2f3e5f\", lineHeight: 20, backgroundColor: \"#ffffff\", borderRadius: 10, padding: 12, borderWidth: 1, borderColor: \"#e3ebf8\" },\n  actionsBar: { flexDirection: \"row\", gap: 10, padding: 16, backgroundColor: \"#ffffff\", borderTopWidth: 1, borderTopColor: \"#d8e4f6\" },\n  backButton: { flex: 1, backgroundColor: \"#e5e7eb\", borderRadius: 10, alignItems: \"center\", paddingVertical: 12 },\n  backButtonText: { color: \"#334155\", fontWeight: \"700\" },\n  startButton: { flex: 1, borderRadius: 10, alignItems: \"center\", paddingVertical: 12 },\n  startButtonText: { color: \"#ffffff\", fontWeight: \"700\" },\n  buttonDisabled: { opacity: 0.4 },\n  completedBadge: {\n    backgroundColor: \"#dcfce7\",\n    borderWidth: 1,\n    borderColor: \"#16a34a\",\n    justifyContent: \"center\",\n  },\n  completedBadgeText: { color: \"#14532d\", fontWeight: \"700\", fontSize: 13, textAlign: \"center\" },\n  mutedSmall: { color: \"#64748b\", fontSize: 12, marginBottom: 6 },\n  readOnlyPhase: {\n    marginTop: 10,\n    paddingTop: 8,\n    borderTopWidth: 1,\n    borderTopColor: \"#e2e8f0\",\n    gap: 6,\n  },\n  readOnlyPhaseTitle: { fontSize: 14, fontWeight: \"700\", color: \"#1f2f4f\", marginBottom: 4 },\n  readOnlyStepRow: {\n    padding: 8,\n    backgroundColor: \"#f8fbff\",\n    borderRadius: 6,\n    borderLeftWidth: 3,\n    borderLeftColor: \"#cbd5e1\",\n    gap: 2,\n  },\n  readOnlyStepLabel: { fontSize: 13, fontWeight: \"600\", color: \"#334155\" },\n  readOnlyStepValue: { fontSize: 14, color: \"#0f172a\" },\n  readOnlyStepComment: { fontSize: 12, color: \"#475569\", fontStyle: \"italic\", marginTop: 2 },\n  readOnlyPhotoGrid: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: 6,\n    marginTop: 4,\n  },\n  readOnlyPhoto: {\n    width: 96,\n    height: 96,\n    borderRadius: 6,\n    borderWidth: 1,\n    borderColor: \"#cbd5e1\",\n    backgroundColor: \"#e2e8f0\",\n  },\n  readOnlyPhotoPlaceholder: {\n    width: 96,\n    height: 96,\n    borderRadius: 6,\n    backgroundColor: \"#e2e8f0\",\n  },\n  precheckOverlay: {\n    flex: 1,\n    backgroundColor: \"rgba(15, 23, 42, 0.45)\",\n    justifyContent: \"flex-end\",\n  },\n  precheckCard: {\n    backgroundColor: \"#ffffff\",\n    borderTopLeftRadius: 18,\n    borderTopRightRadius: 18,\n    padding: 20,\n    gap: 10,\n  },\n  precheckTitle: { fontSize: 18, fontWeight: \"800\", color: \"#16325c\" },\n  precheckField: { gap: 8 },\n  precheckToggleRow: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n  },\n  precheckLabel: { fontSize: 13, fontWeight: \"700\", color: \"#334155\" },\n  precheckInfo: { fontSize: 12, color: \"#6a7a96\" },\n  precheckInput: {\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 10,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    fontSize: 15,\n    color: \"#1f2f4f\",\n    backgroundColor: \"#f8fbff\",\n  },\n  precheckButtons: { flexDirection: \"row\", gap: 10, marginTop: 8 },\n  precheckBtn: {\n    flex: 1,\n    borderRadius: 10,\n    paddingVertical: 12,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  precheckCancel: {\n    backgroundColor: \"#eef3fb\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n  },\n  precheckCancelText: { color: \"#1e56a8\", fontWeight: \"700\" },\n  precheckStartText: { color: \"#ffffff\", fontWeight: \"800\" },\n});\n","import {\n  getStepsByInterventionId,\n  updateStepValueLocally,\n} from \"./localDatabase\";\nimport type {\n  MobileStep,\n  StepValue,\n} from \"../types/intervention\";\n\nexport async function loadStepsLocally(interventionId: number): Promise<MobileStep[]> {\n  return getStepsByInterventionId(interventionId);\n}\n\nfunction validateMeasurement(step: MobileStep, value: StepValue): string | null {\n  const num = Number(value);\n  if (Number.isNaN(num)) {\n    return \"Valeur numerique requise\";\n  }\n  if (step.constraints?.min !== undefined && num < step.constraints.min) {\n    return `Minimum: ${step.constraints.min}`;\n  }\n  if (step.constraints?.max !== undefined && num > step.constraints.max) {\n    return `Maximum: ${step.constraints.max}`;\n  }\n  return null;\n}\n\nfunction validateText(step: MobileStep, value: StepValue): string | null {\n  const str = typeof value === \"string\" ? value : \"\";\n  if (step.constraints?.max_length && str.length > step.constraints.max_length) {\n    return `Maximum ${step.constraints.max_length} caracteres`;\n  }\n  return null;\n}\n\nfunction validatePhoto(step: MobileStep, value: StepValue): string | null {\n  if (step.required && (!Array.isArray(value) || value.length === 0)) {\n    return \"Au moins une photo requise\";\n  }\n  return null;\n}\n\nfunction validateSignature(step: MobileStep, value: StepValue): string | null {\n  const sig = value as { signed?: boolean; uri?: string } | null;\n  if (step.required && (!sig?.signed || !sig?.uri)) {\n    return \"Signature requise\";\n  }\n  return null;\n}\n\nexport function validateStepValue(step: MobileStep, value: StepValue): string | null {\n  switch (step.type) {\n    case \"measurement\":\n      return validateMeasurement(step, value);\n    case \"text\":\n      return validateText(step, value);\n    case \"photo\":\n      return validatePhoto(step, value);\n    case \"signature\":\n      return validateSignature(step, value);\n    default:\n      return null;\n  }\n}\n\nexport function allRequiredStepsDone(steps: MobileStep[]): boolean {\n  return steps\n    .filter((s) => s.required)\n    .every((s) => s.status === \"done\");\n}\n\n/**\n * Marque une etape comme \"done\" en base LOCALE uniquement (SQLite), bump la\n * version, et retourne le step a jour pour le state UI.\n *\n * NE met PLUS rien en sync_queue : la persistance serveur de la VALEUR est\n * deja assuree par l'appelant (WorkflowInterventionScreen.persistSingleStep)\n * via /mobile/intervention_workflow.php action=save_step — online (appel\n * direct) ou offline (enqueue du meme endpoint reel). Les BINAIRES (photos,\n * signatures) sont uploades par leurs endpoints multipart dedies au moment de\n * la capture (uploadWorkflowStepPhoto) / de la finalisation (complete_workflow),\n * pas par cette file.\n *\n * Historique : cette fonction enfilait un POST vers /missions/{id}/steps/{id}/\n * complete (style REST herite du port coolcare). Cet endpoint n'existe pas\n * cote backend mobile (100% /mobile/*.php) -> chaque save creait un item 404\n * en double, qui restait 'pending' et bloquait toute la file de sync. Retire.\n * Limite connue assumee : l'upload des binaires hors-ligne n'est pas (encore)\n * rejouable via la file -> a couvrir cote backend si besoin (file multipart\n * par step_key).\n */\nexport async function completeStepLocally(\n  step: MobileStep,\n  value: StepValue\n): Promise<MobileStep> {\n  const newVersion = (step.version ?? 1) + 1;\n  const now = new Date().toISOString();\n\n  await updateStepValueLocally(step.intervention_id, step.id, {\n    status: \"done\",\n    value,\n    version: newVersion,\n  });\n\n  return { ...step, status: \"done\", value, version: newVersion, updated_at: now };\n}\n","/**\n * Port des utilitaires workflow PWA (public/js/workflow-utils.js).\n *\n * L'app mobile applique la MEME logique que la PWA : groupement par phase,\n * detection des valeurs \"probleme/panne\" pour deploiement des extensions,\n * filtrage des steps decoratifs. Garder ces helpers ici permet d'ecrire\n * des tests unitaires et de rester aligne avec la logique web.\n */\n\nimport * as Crypto from \"expo-crypto\";\nimport type { MobileStep, StepValue } from \"../types/intervention\";\n\ntype StepMetadata = {\n  phase?: string | null;\n  is_extension?: boolean;\n  input_kind?: string;\n  requires_comment?: boolean;\n  comment_rule?: string | null;\n  comment_text?: string | null;\n  action_label?: string | null;\n  note?: string | null;\n  // Override affichage-info phase 1 (CERFA / prelevement huile / test acide)\n  // calcule par le serveur (applyPhase1CerfaInfoOverride). display_only=true ->\n  // box d'info en lecture seule, auto_message = le texte a afficher.\n  display_only?: boolean;\n  auto_message?: string | null;\n  auto_message_emphasis?: string | null;\n  // Texte d'affichage resolu cote serveur (option backend du handoff #155\n  // pour les etapes \"LISTE DEVIS *\"). Quand present, le mobile l'affiche tel\n  // quel sans avoir a charger /api/devis.php cote client.\n  display_content?: string | null;\n};\n\nexport function getStepMetadata(step: MobileStep): StepMetadata {\n  return (step.metadata || {}) as StepMetadata;\n}\n\n/**\n * Genere un UUID v4 — utilise pour idempotency_key des actions workflow.\n * La colonne workflow_idempotency_keys.idempotency_key est CHAR(36) strict :\n * tout key qui depasse 36 chars est tronque par MySQL et casse l'unicite.\n * Mirror du uuidv4 de public/js/workflow-utils.js.\n */\nexport function uuidv4(): string {\n  // crypto.randomUUID dispo en RN 0.74+ via standards Web. Fallback sur\n  // expo-crypto.randomUUID qui s'appuie sur le CSPRNG de l'OS : pas de\n  // Math.random (insecure RNG flaggue par Sonar S2245).\n  const c = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n  if (c && typeof c.randomUUID === \"function\") {\n    return c.randomUUID();\n  }\n  return Crypto.randomUUID();\n}\n\n/**\n * Normalise pour comparaison insensible a la casse / accents — identique\n * a la PWA pour que la detection de probleme soit coherente.\n */\nfunction safeToString(v: unknown): string {\n  if (v === null || v === undefined) return \"\";\n  if (typeof v === \"string\") return v;\n  if (typeof v === \"number\" || typeof v === \"boolean\") return String(v);\n  return JSON.stringify(v);\n}\n\nexport function normalizeText(v: unknown): string {\n  return safeToString(v)\n    .normalize(\"NFD\")\n    .replaceAll(/[\\u0300-\\u036f]/g, \"\")\n    .trim()\n    .toLowerCase();\n}\n\n/**\n * Une valeur denote un \"probleme / panne\" si elle contient un des mots-cles\n * qui declenchent le deploiement des sous-etapes (extensions).\n */\nexport function isProblemValue(v: unknown): boolean {\n  const n = normalizeText(v);\n  if (n === \"\") {\n    return false;\n  }\n  const keywords = [\"probleme\", \"panne\", \"ko\", \"defaut\", \"non conforme\", \"a revoir\"];\n  return keywords.some((x) => n.includes(x));\n}\n\n/**\n * Portage de public/js/workflow-utils.js evaluateVisibilityRule (refonte\n * coolcare 2026-04-24). Evalue les primitives de visibilite explicites\n * (rules_json serveur, recues dans step.constraints cote mobile) d'une\n * extension par rapport a la valeur de son parent positionnel.\n *\n * Retour :\n *   true  : extension visible\n *   false : extension cachee\n *   null  : aucune primitive _parent applicable -> l'appelant retombe sur le\n *           fallback positionnel isProblemValue(parentValue) (retro-compat\n *           templates pre-refonte type BLOC HYDRAULIQUE).\n *\n * Comparaison stricte sur la string brute (pas de normalisation casse) : les\n * options stockees en BDD sont la source de verite des valeurs.\n */\nexport function evaluateVisibilityRule(\n  rules: Record<string, unknown> | null | undefined,\n  parentValue: unknown\n): boolean | null {\n  if (!rules || typeof rules !== \"object\") {\n    return null;\n  }\n\n  // Parent pas encore renseigne -> extension cachee par defaut. Sans ce\n  // garde-fou, visible_if_not_parent renvoie true quand parentValue est vide.\n  const pvRaw = parentValue === null || parentValue === undefined ? \"\" : String(parentValue);\n  const pvEmpty = pvRaw === \"\" || pvRaw === \"-\";\n\n  if (Object.prototype.hasOwnProperty.call(rules, \"visible_if_not_parent\")) {\n    if (pvEmpty) {\n      return false;\n    }\n    return pvRaw !== String((rules as { visible_if_not_parent?: unknown }).visible_if_not_parent ?? \"\");\n  }\n  if (Object.prototype.hasOwnProperty.call(rules, \"visible_if_in_parent\")) {\n    const allowed = (rules as { visible_if_in_parent?: unknown }).visible_if_in_parent;\n    if (!Array.isArray(allowed) || pvEmpty) {\n      return false;\n    }\n    return allowed.some((v) => String(v ?? \"\") === pvRaw);\n  }\n  return null;\n}\n\n/**\n * Les rules de visibilite explicites arrivent du backend dans step.constraints\n * (mappe depuis rules_json par mobileStepFromRow). On les expose telles quelles\n * a evaluateVisibilityRule.\n */\nfunction getStepRules(step: MobileStep): Record<string, unknown> | null {\n  const c = step.constraints;\n  return c && typeof c === \"object\" ? (c as Record<string, unknown>) : null;\n}\n\n/**\n * Gate step : boolean/choice dont le label contient \"commencer\".\n * Utilise pour demarrer l'intervention, pas une vraie etape metier.\n */\nexport function isGateStep(step: MobileStep): boolean {\n  const meta = getStepMetadata(step);\n  const kind = String(meta.input_kind || \"\");\n  if (kind !== \"boolean\" && kind !== \"choice\") {\n    return false;\n  }\n  return normalizeText(step.label).includes(\"commencer\");\n}\n\nexport type WorkflowPhase = {\n  name: string;\n  steps: MobileStep[];\n};\n\n/**\n * Regroupe les etapes par phase (champ metadata.phase), en conservant\n * l'ordre de order_index. Les etapes gate (boolean \"Commencer ?\") sont\n * filtrees car gerees par un bouton dedie dans l'UX.\n */\nexport function buildPhases(steps: MobileStep[]): WorkflowPhase[] {\n  const sorted = [...steps]\n    .filter((s) => !isGateStep(s))\n    .sort((a, b) => a.order_index - b.order_index);\n\n  const phases: WorkflowPhase[] = [];\n  let lastPhaseName: string | null = null;\n  let currentPhase: WorkflowPhase | null = null;\n\n  for (const step of sorted) {\n    const meta = getStepMetadata(step);\n    const rawName = (meta.phase || \"\").toString().trim();\n    const phaseName: string = rawName || lastPhaseName || \"—\";\n    if (phaseName !== lastPhaseName || !currentPhase) {\n      currentPhase = { name: phaseName, steps: [] };\n      phases.push(currentPhase);\n      lastPhaseName = phaseName;\n    }\n    currentPhase.steps.push(step);\n  }\n\n  return phases;\n}\n\n/**\n * Calcule la visibilite des extensions dans une phase en fonction des valeurs\n * en cours (draft) des etapes parent (choice/boolean).\n *\n * Miroir fidele de updateExtensions (public/intervention_etapes.php) :\n *   - On parcourt la phase dans l'ordre ; `lastParent` = derniere etape parent\n *     non-extension choice/boolean (non auto-calc) rencontree, avec sa valeur.\n *   - Une extension est visible si elle a un parent ET que :\n *       * une primitive explicite (visible_if_in_parent / visible_if_not_parent\n *         dans constraints) tranche la visibilite, SINON\n *       * fallback positionnel isProblemValue(valeur du parent).\n *   - Une extension choice/boolean ne devient parent des suivantes que si SA\n *     valeur est elle-meme un probleme (imbrication reelle) ; cachee, elle\n *     coupe la chaine en cascade.\n *\n * Retourne un Set des step.id visibles.\n */\nexport function computeVisibleStepIds(\n  phase: WorkflowPhase,\n  draftValues: Record<string, StepValue>\n): Set<string> {\n  const visible = new Set<string>();\n  let lastParent: { key: string; value: unknown } | null = null;\n\n  const readValue = (step: MobileStep): unknown => draftValues[step.id] ?? step.value;\n\n  for (const step of phase.steps) {\n    const meta = getStepMetadata(step);\n    const isExtension = Boolean(meta.is_extension);\n    const kind = String(meta.input_kind || \"\");\n    const isParentType = (kind === \"choice\" || kind === \"boolean\") && !isAutoCalc(step);\n\n    if (!isExtension) {\n      // Etape non-extension : sa visibilite est tranchee cote serveur\n      // (isStepVisible -> resolveMachineTestStepVisibility pour huile/acide,\n      // sections, etc.) et ne depend PAS d'une saisie offline. On respecte donc\n      // le flag is_visible serveur. Sans ca, \"NUMERO PRELEVEMENT HUILE\" ET\n      // \"Si acide test // Photo\" (mutuellement exclusives selon le contrat de la\n      // machine, l'une marquee is_visible=false) s'affichaient toutes les deux\n      // depuis que les endpoints renvoient aussi les etapes masquees pour\n      // l'offline-first (handoff #168 / commit 64b2d7fe). La PWA, elle, filtre\n      // bien sur is_visible. Seules les extensions sont recalculees ici, car\n      // leur visibilite suit la valeur (modifiable hors-ligne) de leur parent.\n      if (step.is_visible === false) {\n        // Masquee serveur : ni visible, ni parent d'une chaine d'extensions.\n        lastParent = null;\n        continue;\n      }\n      visible.add(step.id);\n      // Parent choice/boolean -> nouveau parent ; sinon coupe la chaine.\n      lastParent = isParentType ? { key: step.id, value: readValue(step) } : null;\n      continue;\n    }\n\n    // Extension : primitives explicites d'abord, fallback isProblemValue.\n    const ruleResult = evaluateVisibilityRule(getStepRules(step), lastParent?.value);\n    const show =\n      lastParent !== null &&\n      (ruleResult !== null ? ruleResult : isProblemValue(lastParent.value));\n\n    if (show) {\n      visible.add(step.id);\n      if (isParentType) {\n        const extVal = readValue(step);\n        // Ne devient parent des suivantes que si SA valeur est un probleme ;\n        // sinon on preserve le parent original (extensions sœurs visibles).\n        if (isProblemValue(extVal)) {\n          lastParent = { key: step.id, value: extVal };\n        }\n      }\n    } else if (isParentType) {\n      // Extension cachee qui est elle-meme parent potentiel : coupe en cascade.\n      lastParent = null;\n    }\n  }\n\n  return visible;\n}\n\n/**\n * Valide qu'une phase est prete a passer : toutes les etapes requises\n * visibles ont une valeur non vide. Retourne la liste des step.id qui\n * bloquent, ou [] si tout est bon.\n */\nexport function getBlockingStepIds(\n  phase: WorkflowPhase,\n  draftValues: Record<string, StepValue>,\n  visibleIds: Set<string>\n): string[] {\n  const blocking: string[] = [];\n\n  for (const step of phase.steps) {\n    if (!visibleIds.has(step.id)) {\n      continue;\n    }\n    if (!step.required) {\n      continue;\n    }\n    // Auto-calc et display-only ne bloquent jamais : c'est le serveur qui\n    // remplit leur valeur (ou pas). Un \"Duree vie depassee\" vide est\n    // acceptable (= pas de revision requise), le tech ne peut rien y faire.\n    if (isAutoCalc(step) || isDisplayOnly(step)) {\n      continue;\n    }\n    const value = draftValues[step.id] ?? step.value;\n    if (isEmptyStepValue(value)) {\n      blocking.push(step.id);\n    }\n  }\n\n  return blocking;\n}\n\nexport function isEmptyStepValue(value: StepValue): boolean {\n  if (value === null || value === undefined) {\n    return true;\n  }\n  if (typeof value === \"string\" && value.trim() === \"\") {\n    return true;\n  }\n  if (Array.isArray(value) && value.length === 0) {\n    return true;\n  }\n  if (typeof value === \"object\" && \"signed\" in value && !value.signed) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Portage de public/js/workflow-utils.js isAutoCalc : une etape dont le\n * label de phase ou action contient \"calcul automatique\", ou dont l'action\n * match les cles t_condensation / t_ligne_* / t_evaporation, est calculee\n * par le serveur — le mobile la rend en lecture seule.\n */\nexport function isAutoCalc(step: MobileStep): boolean {\n  const meta = getStepMetadata(step);\n  const phaseNorm = normalizeText(meta.phase || \"\");\n  const actionNorm = normalizeText(meta.action_label || \"\");\n\n  // Le nom de phase peut etre \"Calcul automatique\" (singulier, PWA) ou\n  // \"Calculs automatiques\" (pluriel, templates prod). On match les deux\n  // via le prefixe \"calcul\".\n  if (\n    phaseNorm.includes(\"calculs automatiques\") ||\n    phaseNorm.includes(\"calcul automatique\") ||\n    actionNorm.includes(\"calcul automatique\")\n  ) {\n    return true;\n  }\n\n  // Fallback pour les steps legacy avec phase=NULL : on detecte via les\n  // patterns de formule dans action_label. Mirror exact de\n  // InterventionWorkflowService::isAutomaticCalculationStep.\n  const al = String(meta.action_label || \"\").toLowerCase();\n  if (\n    al.includes(\"t_condensation\") ||\n    al.includes(\"t_ligne_aspiration\") ||\n    al.includes(\"t_ligne_liquide\") ||\n    al.includes(\"t_evaporation\")\n  ) {\n    return true;\n  }\n\n  // Pattern des \"Duree vie depassee\" : action_label de forme\n  // \"Si nbre heure > 32 000 h , duree de vie depassee\". Le serveur matche\n  // via la combo \"nbre heure\" + \">\". Sans ca ces steps etaient editables\n  // cote mobile alors qu'elles doivent rester read-only.\n  if (al.includes(\"nbre heure\") && al.includes(\">\")) {\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * Portage isCerfaLike : les prerequis dont l'item mentionne CERFA ou\n * prelevement huile s'affichent avec un toggle \"Oui preparer\" + input\n * conditionnel (cf renderStepBlock case 'prerequisite').\n */\nexport function isCerfaLike(step: MobileStep): boolean {\n  const item = normalizeText(step.label);\n  return item.includes(\"cerfa\") || (item.includes(\"prelevement\") && item.includes(\"huile\"));\n}\n\n/**\n * Steps purement informatifs, pas d'input demande au tech. Rendu comme\n * box d'info en lecture seule (cf renderStepBlock default / display).\n */\nexport function isDisplayOnly(step: MobileStep): boolean {\n  const meta = getStepMetadata(step);\n  // Flag serveur prioritaire : applyPhase1CerfaInfoOverride pose display_only\n  // sur les prerequis CERFA / prelevement huile / test acide de phase 1 pour\n  // qu'ils s'affichent en info (destinee a la phase 2/3) sans saisie editable.\n  if (meta.display_only === true) {\n    return true;\n  }\n  const kind = String(meta.input_kind || \"\");\n  return kind === \"display\" || kind === \"section\" || kind === \"info\";\n}\n\n/**\n * Devis minimal consomme par le rendu des etapes \"LISTE DEVIS *\".\n * Structurellement compatible avec DevisItem (services/devisApi.ts) : on\n * garde le type local pour que ce util reste sans dependance vers la couche\n * services et testable isolement.\n */\ntype DevisLike = {\n  id: number;\n  numero_devis?: string | null;\n  statut?: string | null;\n};\n\nconst DEVIS_EN_ATTENTE_RE = /LISTE\\s+DEVIS\\s+EN\\s+ATTENTE/i;\nconst DEVIS_DERNIER_RE = /LISTE\\s+DERNIER\\s+DEVIS/i;\n\n/**\n * Resout le contenu textuel des etapes d'affichage \"LISTE DEVIS EN ATTENTE\" /\n * \"LISTE DERNIER DEVIS\" a partir des devis de la machine. Mirror exact de la\n * PWA (public/js/intervention_etapes.js, renderDisplayContent lignes 238-248).\n * Retourne null si le label ne matche aucun des deux patterns (l'appelant\n * retombe alors sur le rendu par defaut : auto_message / note / label).\n * Le separateur entre numero et statut est un tiret demi-cadratin U+2013.\n */\nexport function resolveDevisStepText(\n  label: string,\n  devis: readonly DevisLike[]\n): string | null {\n  const lbl = String(label || \"\");\n  if (DEVIS_EN_ATTENTE_RE.test(lbl)) {\n    const pending = devis.filter((d) => String(d.statut) === \"en_attente\");\n    if (pending.length === 0) {\n      return \"Aucun devis en attente.\";\n    }\n    return pending\n      .map((d) => `#${d.id} – ${d.numero_devis || \"Sans numéro\"} (${d.statut})`)\n      .join(\" | \");\n  }\n  if (DEVIS_DERNIER_RE.test(lbl)) {\n    if (devis.length === 0) {\n      return \"Aucun devis disponible.\";\n    }\n    const last = devis[0];\n    return `#${last.id} – ${last.numero_devis || \"Sans numéro\"} (${last.statut || \"-\"})`;\n  }\n  return null;\n}\n\n/**\n * Indique si une etape est une etape d'affichage \"LISTE DEVIS *\" (qui necessite\n * de charger les devis de la machine pour resoudre son contenu).\n */\nexport function isDevisListStep(step: MobileStep): boolean {\n  const lbl = String(step.label || \"\");\n  return DEVIS_EN_ATTENTE_RE.test(lbl) || DEVIS_DERNIER_RE.test(lbl);\n}\n\n/**\n * Determine si une etape doit afficher un textarea de commentaire visible,\n * et si ce commentaire est obligatoire. Mirror PWA renderStepBlock :\n *   - requires_comment=true -> commentaire toujours visible.\n *     Obligatoire si la valeur est un probleme/panne, sinon optionnel.\n *   - extension && choice -> commentaire visible UNIQUEMENT si valeur\n *     est un probleme/panne, et alors obligatoire.\n */\nexport function getCommentRequirement(\n  step: MobileStep,\n  currentValue: unknown\n): { visible: boolean; required: boolean; placeholder: string } {\n  const meta = getStepMetadata(step);\n  const requiresComment = Boolean(meta.requires_comment);\n  const isExtension = Boolean(meta.is_extension);\n  const inputKind = String(meta.input_kind || \"\");\n  const isProblem = isProblemValue(currentValue);\n\n  if (requiresComment) {\n    return {\n      visible: true,\n      required: isProblem,\n      placeholder: isProblem\n        ? \"Decrire le probleme ou la panne (obligatoire)...\"\n        : \"Commentaire (si Probleme/Panne)...\",\n    };\n  }\n\n  if (isExtension && inputKind === \"choice\" && isProblem) {\n    return {\n      visible: true,\n      required: true,\n      placeholder: \"Decrire le probleme ou la panne (obligatoire)...\",\n    };\n  }\n\n  return { visible: false, required: false, placeholder: \"\" };\n}\n","import React, {\n  createContext,\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\nimport {\n  ActivityIndicator,\n  Image,\n  Pressable,\n  ScrollView,\n  StyleSheet,\n  Text,\n  TextInput,\n  View,\n} from \"react-native\";\nimport { useNavigation, useRoute, type RouteProp } from \"@react-navigation/native\";\nimport type { NativeStackNavigationProp } from \"@react-navigation/native-stack\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport {\n  completeStepLocally,\n  loadStepsLocally,\n  validateStepValue,\n} from \"../../core/stepRepository\";\nimport {\n  clearWorkflowDraft,\n  enqueueSyncAction,\n  loadWorkflowDraft,\n  saveWorkflowDraft,\n  type WorkflowDraft,\n} from \"../../core/localDatabase\";\nimport { isNetworkOnline } from \"../../services/syncService\";\nimport {\n  completeMobileWorkflow,\n  fetchAndStoreInterventionSteps,\n  getInterventionById,\n  saveStepToServer,\n  uploadMachinePhoto,\n} from \"../../services/interventionsApi\";\nimport { getDevisForMachine, type DevisItem } from \"../../services/devisApi\";\nimport SignatureFinishCard from \"./SignatureFinishCard\";\nimport type {\n  MobileStep,\n  StepPhotoValue,\n  StepSignatureValue,\n  StepValue,\n} from \"../../types/intervention\";\nimport type { AppStackParamList } from \"../../navigation/types\";\nimport { CameraView, useCameraPermissions } from \"expo-camera\";\nimport CameraCapture from \"../../shared/CameraCapture\";\nimport SignatureCapture from \"../../shared/SignatureCapture\";\nimport {\n  buildPhases,\n  computeVisibleStepIds,\n  getBlockingStepIds,\n  getCommentRequirement,\n  getStepMetadata,\n  isAutoCalc,\n  isCerfaLike,\n  isDevisListStep,\n  isDisplayOnly,\n  isEmptyStepValue,\n  isGateStep,\n  resolveDevisStepText,\n  uuidv4,\n  type WorkflowPhase,\n} from \"../../shared/workflowUtils\";\n\ntype WorkflowRoute = RouteProp<AppStackParamList, \"WorkflowIntervention\">;\ntype WorkflowNav = NativeStackNavigationProp<AppStackParamList, \"WorkflowIntervention\">;\n\n// Devis de la machine, charges une fois au niveau ecran et exposes aux etapes\n// d'affichage \"LISTE DEVIS *\" (DisplayStepInput) sans threader la liste a\n// travers StepCard/StepInput. Defaut = liste vide (silent-fail / pas de devis).\nconst DevisListContext = createContext<DevisItem[]>([]);\n\nfunction getInitialValueForStep(step: MobileStep): StepValue {\n  if (step.value !== null && step.value !== undefined) {\n    return step.value;\n  }\n\n  if (step.type === \"photo\") {\n    return [];\n  }\n\n  // Pour un boolean ou un choice on commence par \"\" (rien selectionne)\n  // pour matcher le PWA qui propose une option vide \"Selectionner...\" par\n  // defaut. Inutile de poser false/true qui seraient interpretes comme\n  // une selection deja faite.\n  return \"\";\n}\n\nfunction isPhotoArrayValue(value: StepValue): value is StepPhotoValue[] {\n  return Array.isArray(value);\n}\n\nfunction isSignatureValue(value: StepValue): value is StepSignatureValue {\n  return Boolean(value && typeof value === \"object\" && !Array.isArray(value) && \"uri\" in value);\n}\n\nfunction getStepInputKind(step: MobileStep): string {\n  const m = (step.metadata || {}) as { input_kind?: string };\n  return String(m.input_kind || \"\");\n}\n\nfunction shouldSkipStepForSave(step: MobileStep): boolean {\n  const kind = getStepInputKind(step);\n  const isDisplay = kind === \"display\" || kind === \"section\" || kind === \"info\";\n  return isDisplay || isAutoCalc(step) || kind === \"photo\";\n}\n\nfunction collectBlockingRequiredErrors(\n  phase: WorkflowPhase,\n  inputValues: Record<string, StepValue>,\n  visibleStepIds: Set<string>\n): Record<string, string> {\n  const blocking = getBlockingStepIds(phase, inputValues, visibleStepIds);\n  const errors: Record<string, string> = {};\n  for (const id of blocking) {\n    errors[id] = \"Champ requis\";\n  }\n  return errors;\n}\n\nfunction validateStepForPhase(\n  step: MobileStep,\n  inputValues: Record<string, StepValue>,\n  commentValues: Record<string, string>\n): string | null {\n  if (isAutoCalc(step) || isDisplayOnly(step)) {\n    return null;\n  }\n  const raw = inputValues[step.id] ?? step.value;\n  const value: StepValue =\n    step.type === \"measurement\" && raw !== null && raw !== undefined\n      ? Number(raw)\n      : raw;\n  const err = validateStepValue(step, value);\n  if (err) {\n    return err;\n  }\n  const commentReq = getCommentRequirement(step, raw);\n  if (commentReq.required && (commentValues[step.id] ?? \"\").trim() === \"\") {\n    return \"Commentaire obligatoire pour decrire le probleme/panne\";\n  }\n  return null;\n}\n\nfunction collectConstraintErrors(\n  phase: WorkflowPhase,\n  inputValues: Record<string, StepValue>,\n  commentValues: Record<string, string>,\n  visibleStepIds: Set<string>\n): Record<string, string> {\n  const errors: Record<string, string> = {};\n  for (const step of phase.steps) {\n    if (!visibleStepIds.has(step.id)) {\n      continue;\n    }\n    const err = validateStepForPhase(step, inputValues, commentValues);\n    if (err) {\n      errors[step.id] = err;\n    }\n  }\n  return errors;\n}\n\nfunction buildSaveStepOfflinePayload(\n  step: MobileStep,\n  interventionId: number,\n  raw: StepValue,\n  cmt: string,\n  version: number,\n  idempotencyKey: string\n) {\n  return {\n    endpoint: \"/mobile/intervention_workflow.php\",\n    method: \"POST\" as const,\n    payload: {\n      action: \"save_step\",\n      intervention_id: interventionId,\n      step_key: step.id,\n      value: raw ?? null,\n      comment: cmt || null,\n      version,\n      idempotency_key: idempotencyKey,\n    },\n    entityType: \"step\",\n    entityId: `${interventionId}:${step.id}`,\n  };\n}\n\nfunction CommentInput({\n  stepId,\n  commentReq,\n  value,\n  onChange,\n}: Readonly<{\n  stepId: string;\n  commentReq: ReturnType<typeof getCommentRequirement>;\n  value: string;\n  onChange: (stepId: string, text: string) => void;\n}>) {\n  const label = commentReq.required ? (\n    <>\n      Description du probleme/panne <Text style={styles.requiredMark}>(obligatoire)</Text>\n    </>\n  ) : (\n    \"Commentaire (si Probleme/Panne)\"\n  );\n  return (\n    <View style={styles.commentWrap}>\n      <Text style={styles.commentLabel}>{label}</Text>\n      <TextInput\n        style={[styles.textInput, styles.textArea]}\n        value={value}\n        onChangeText={(text) => onChange(stepId, text)}\n        placeholder={commentReq.placeholder}\n        placeholderTextColor=\"#94a3b8\"\n        multiline\n        numberOfLines={3}\n      />\n    </View>\n  );\n}\n\nfunction StepCard({\n  step,\n  index,\n  interventionId,\n  brandColor,\n  currentValue,\n  commentValue,\n  validationError,\n  onChangeValue,\n  onChangeComment,\n}: Readonly<{\n  step: MobileStep;\n  index: number;\n  interventionId: number;\n  brandColor: string;\n  currentValue: StepValue;\n  commentValue: string;\n  validationError: string | undefined;\n  onChangeValue: (stepId: string, v: StepValue) => void;\n  onChangeComment: (stepId: string, text: string) => void;\n}>) {\n  const meta = getStepMetadata(step);\n  const isExt = Boolean(meta.is_extension);\n  const commentReq = getCommentRequirement(step, currentValue);\n\n  return (\n    <View style={[styles.stepCard, isExt && styles.stepCardExtension]}>\n      {isExt ? (\n        <View style={[styles.extensionBadge, { backgroundColor: brandColor }]}>\n          <Text style={styles.extensionBadgeText}>↳ Sous-etape</Text>\n        </View>\n      ) : null}\n      <View style={styles.stepHeader}>\n        <View style={styles.stepMeta}>\n          <View\n            style={[styles.stepIndex, { backgroundColor: isExt ? \"#94a3b8\" : brandColor }]}\n          >\n            <Text style={styles.stepIndexText}>{index + 1}</Text>\n          </View>\n          <View style={styles.stepInfo}>\n            <Text style={styles.stepLabel}>\n              {step.label}\n              {step.required ? <Text style={styles.requiredMark}> *</Text> : null}\n            </Text>\n          </View>\n        </View>\n      </View>\n      <View style={styles.stepBody}>\n        <StepInput\n          interventionId={interventionId}\n          step={step}\n          value={currentValue}\n          onChange={(v) => onChangeValue(step.id, v)}\n          brandColor={brandColor}\n        />\n        {commentReq.visible ? (\n          <CommentInput\n            stepId={step.id}\n            commentReq={commentReq}\n            value={commentValue}\n            onChange={onChangeComment}\n          />\n        ) : null}\n        {validationError ? (\n          <Text style={styles.validationError}>{validationError}</Text>\n        ) : null}\n      </View>\n    </View>\n  );\n}\n\nfunction hydrateInitialValues(\n  prev: Record<string, StepValue>,\n  local: MobileStep[]\n): Record<string, StepValue> {\n  const next = { ...prev };\n  for (const step of local) {\n    if (next[step.id] === undefined) {\n      next[step.id] = getInitialValueForStep(step);\n    }\n  }\n  return next;\n}\n\nfunction hydrateInitialComments(\n  prev: Record<string, string>,\n  local: MobileStep[]\n): Record<string, string> {\n  const next = { ...prev };\n  for (const step of local) {\n    if (next[step.id] === undefined) {\n      const meta = (step.metadata || {}) as { comment_text?: string | null };\n      next[step.id] = String(meta.comment_text ?? \"\");\n    }\n  }\n  return next;\n}\n\nfunction useWorkflowDraftPersistence(\n  interventionId: number,\n  hydratedRef: React.RefObject<boolean>,\n  draft: {\n    inputValues: Record<string, StepValue>;\n    commentValues: Record<string, string>;\n    currentPhaseIdx: number;\n    sigTechData: string;\n    sigClientData: string;\n    sigClientPresent: boolean;\n    showSignatureCard: boolean;\n  }\n): void {\n  useEffect(() => {\n    if (!hydratedRef.current) return;\n    const timer = setTimeout(() => {\n      saveWorkflowDraft(interventionId, {\n        inputValues: draft.inputValues as Record<string, unknown>,\n        commentValues: draft.commentValues,\n        currentPhaseIdx: draft.currentPhaseIdx,\n        sigTechData: draft.sigTechData,\n        sigClientData: draft.sigClientData,\n        sigClientPresent: draft.sigClientPresent,\n        showSignatureCard: draft.showSignatureCard,\n        updatedAt: new Date().toISOString(),\n      });\n    }, 400);\n    return () => clearTimeout(timer);\n  }, [\n    interventionId,\n    hydratedRef,\n    draft.inputValues,\n    draft.commentValues,\n    draft.currentPhaseIdx,\n    draft.sigTechData,\n    draft.sigClientData,\n    draft.sigClientPresent,\n    draft.showSignatureCard,\n  ]);\n}\n\nfunction MachinePhotoOverlay({\n  saving,\n  cameraOpen,\n  brandColor,\n  cameraRef,\n  onTake,\n  onOpen,\n  onSkip,\n}: Readonly<{\n  saving: boolean;\n  cameraOpen: boolean;\n  brandColor: string;\n  cameraRef: React.RefObject<CameraView | null>;\n  onTake: () => void;\n  onOpen: () => void;\n  onSkip: () => void;\n}>) {\n  const renderBody = () => {\n    // La CameraView ne doit JAMAIS etre demontee pendant une capture : sinon la\n    // session camera native est detruite en plein takePictureAsync -> la\n    // promesse ne resout pas (loader fige) ou la preview revient noire au\n    // remontage. On garde donc la camera montee tant que cameraOpen et on\n    // superpose le loader quand saving — miroir de CameraCapture, dont la\n    // CameraView est gouvernee par le Modal visible et non par le flag capturing.\n    if (cameraOpen) {\n      return (\n        <View style={{ flex: 1 }}>\n          <CameraView\n            ref={cameraRef}\n            testID=\"machine-camera\"\n            style={{ flex: 1, borderRadius: 12 }}\n            facing=\"back\"\n          />\n          {saving ? (\n            <View style={styles.machinePhotoLoadingOverlay}>\n              <ActivityIndicator size=\"large\" color=\"#ffffff\" />\n              <Text style={{ marginTop: 12, color: \"#ffffff\" }}>Enregistrement...</Text>\n            </View>\n          ) : (\n            <Pressable\n              style={[styles.machinePhotoSkip, { backgroundColor: brandColor, marginTop: 12 }]}\n              onPress={onTake}\n            >\n              <Text style={[styles.machinePhotoSkipText, { color: \"#fff\" }]}>📷 Capturer</Text>\n            </Pressable>\n          )}\n        </View>\n      );\n    }\n    // Camera fermee + saving = upload en cours apres capture : loader plein cadre.\n    if (saving) {\n      return (\n        <View style={styles.machinePhotoLoading}>\n          <ActivityIndicator size=\"large\" color={brandColor} />\n          <Text style={{ marginTop: 12, color: \"#6b7280\" }}>Enregistrement...</Text>\n        </View>\n      );\n    }\n    return (\n      <View style={{ flex: 1, alignItems: \"center\", justifyContent: \"center\" }}>\n        <Pressable\n          style={[\n            styles.machinePhotoSkip,\n            { backgroundColor: brandColor, paddingVertical: 16, paddingHorizontal: 32 },\n          ]}\n          onPress={onOpen}\n        >\n          <Text style={[styles.machinePhotoSkipText, { color: \"#fff\", fontSize: 16 }]}>\n            📷 Ouvrir la camera\n          </Text>\n        </Pressable>\n      </View>\n    );\n  };\n\n  return (\n    <View style={styles.machinePhotoOverlay}>\n      <View style={styles.machinePhotoHeader}>\n        <Text style={styles.machinePhotoTitle}>📷 Photo de la machine</Text>\n        <Text style={styles.machinePhotoSubtitle}>\n          Aucune photo n'est enregistrée pour cette machine.{\"\\n\"}\n          Prenez une photo pour qu'elle apparaisse sur les futurs rapports.\n        </Text>\n      </View>\n      {renderBody()}\n      <Pressable style={styles.machinePhotoSkip} onPress={onSkip}>\n        <Text style={styles.machinePhotoSkipText}>Passer →</Text>\n      </Pressable>\n    </View>\n  );\n}\n\nexport default function WorkflowInterventionScreen() {\n  const route = useRoute<WorkflowRoute>();\n  const navigation = useNavigation<WorkflowNav>();\n  const insets = useSafeAreaInsets();\n  const { interventionId, brandColor, machineId, machineHasPhoto: initialMachineHasPhoto } = route.params;\n\n  const [steps, setSteps] = useState<MobileStep[]>([]);\n  const [loading, setLoading] = useState(true);\n  const [inputValues, setInputValues] = useState<Record<string, StepValue>>({});\n  const [commentValues, setCommentValues] = useState<Record<string, string>>({});\n  const [validationErrors, setValidationErrors] = useState<Record<string, string>>({});\n  const [currentPhaseIdx, setCurrentPhaseIdx] = useState(0);\n  const [finishing, setFinishing] = useState(false);\n  const [finishError, setFinishError] = useState<string | null>(null);\n  const [phaseAlert, setPhaseAlert] = useState<string | null>(null);\n  // Carte signature (overlay) : visible quand l'utilisateur a passe avec\n  // succes la validation de la derniere phase et doit signer pour finaliser.\n  const [showSignatureCard, setShowSignatureCard] = useState(false);\n  const [workflowVersion, setWorkflowVersion] = useState(0);\n  // State signatures remonte ici (et pas dans SignatureFinishCard) pour que\n  // les data URL survivent a un \"Revenir\" qui demonte le composant. Si le\n  // tech navigue vers la phase precedente puis revient a la finalisation,\n  // il retrouve ses signatures au lieu de devoir tout re-signer.\n  const [sigTechData, setSigTechData] = useState<string>(\"\");\n  const [sigClientData, setSigClientData] = useState<string>(\"\");\n  const [sigClientPresent, setSigClientPresent] = useState<boolean>(true);\n\n  // Photo machine : intercalee entre derniere phase et signatures si la machine\n  // n'a pas de photo. Le technicien peut prendre une photo ou passer.\n  const [showMachinePhotoCard, setShowMachinePhotoCard] = useState(false);\n  const [machineHasPhoto, setMachineHasPhoto] = useState(initialMachineHasPhoto ?? false);\n  const [machinePhotoSaving, setMachinePhotoSaving] = useState(false);\n  const [machinePhotoCameraOpen, setMachinePhotoCameraOpen] = useState(false);\n  const [cameraPermission, requestCameraPermission] = useCameraPermissions();\n  const machineCameraRef = useRef<CameraView | null>(null);\n\n  // Devis de la machine : charges uniquement si le workflow contient au moins\n  // une etape d'affichage \"LISTE DEVIS *\", pour ne pas solliciter /devis.php\n  // sur les interventions qui n'en ont pas. Silent-fail -> liste vide.\n  const [devisList, setDevisList] = useState<DevisItem[]>([]);\n\n  // Groupement par phases, miroir de la PWA (buildPhases dans workflow-utils.js).\n  // Les etapes gate (\"Commencer ?\") sont filtrees, les extensions conservees\n  // (leur visibilite est calculee a chaque frame).\n  const phases = useMemo(() => buildPhases(steps), [steps]);\n  const currentPhase = phases[currentPhaseIdx] ?? null;\n\n  // Extensions : visibilite recalculee a chaque changement de valeur.\n  // Exemple : etape \"Etat compresseur\" = \"Panne\" -> ses sous-etapes\n  // s'affichent instantanement.\n  const visibleStepIds = useMemo(() => {\n    if (!currentPhase) {\n      return new Set<string>();\n    }\n    return computeVisibleStepIds(currentPhase, inputValues);\n  }, [currentPhase, inputValues]);\n\n  const isLastPhase = phases.length > 0 && currentPhaseIdx >= phases.length - 1;\n\n  // Charge les devis de la machine une fois que les steps sont connus et qu'au\n  // moins une etape \"LISTE DEVIS *\" est presente. Silent-fail (mirror PWA).\n  //\n  // NOTE: fallback client-side. Le rendu privilegie metadata.display_content\n  // (texte resolu cote serveur, cf. handoff #155) quand le backend l'expose ;\n  // ce fetch ne sert que si le backend laisse la resolution au client. Il est\n  // actuellement bloque par un 401 sur /api/devis.php (endpoint partage PWA :\n  // le Bearer mobile est rejete car le TenantContext n'est pas resolu avant la\n  // validation du JWT sur ce chemin). Silent-fail -> on retombe sur le texte\n  // \"Aucun devis ...\" tant que le backend n'a pas tranche (fix 401 ou\n  // display_content). Cf. thread handoff a `app`.\n  const hasDevisSteps = useMemo(() => steps.some(isDevisListStep), [steps]);\n  useEffect(() => {\n    if (!hasDevisSteps) {\n      return;\n    }\n    let active = true;\n    (async () => {\n      // machineId vient des params de navigation (Number(item.machine_id)).\n      // Robustesse : s'il est absent/0 (ecran ouvert sans detail charge), on\n      // resout le machine_id via le detail intervention (cache offline-first).\n      let mid = Number(machineId) || 0;\n      if (!mid) {\n        try {\n          const detail = await getInterventionById(interventionId);\n          mid = Number((detail as { machine_id?: unknown })?.machine_id) || 0;\n        } catch {\n          // detail indispo -> on reste a 0, liste vide (silent-fail).\n        }\n      }\n      if (!mid) {\n        return;\n      }\n      const list = await getDevisForMachine(mid);\n      if (active) {\n        setDevisList(list);\n      }\n    })();\n    return () => {\n      active = false;\n    };\n  }, [hasDevisSteps, machineId, interventionId]);\n\n  const loadSteps = useCallback(async () => {\n    setLoading(true);\n    // Refresh depuis le serveur d'abord pour avoir la version a jour du\n    // workflow (necessaire pour complete_workflow). Best-effort : si offline\n    // on retombe sur le local.\n    try {\n      const remote = await fetchAndStoreInterventionSteps(interventionId);\n      setWorkflowVersion(remote.workflowVersion);\n    } catch {\n      // ignore : on continue avec le local\n    }\n    const local = await loadStepsLocally(interventionId);\n    setSteps(local);\n    setInputValues((prev) => hydrateInitialValues(prev, local));\n    setCommentValues((prev) => hydrateInitialComments(prev, local));\n    setLoading(false);\n  }, [interventionId]);\n\n  useEffect(() => {\n    loadSteps();\n  }, [loadSteps]);\n\n  // Hydrate le draft persistant (SQLite) au mount : valeurs, commentaires,\n  // signatures, phase courante, presence client. Permet de reprendre\n  // l'intervention la ou le tech s'etait arrete si l'app a ete tuee\n  // brusquement. Declenche UNE fois par intervention — les set* suivants\n  // ne re-hydratent pas pour ne pas ecraser les modifs en cours.\n  const hydratedOnceRef = useRef(false);\n\n  const applyDraftHydration = useCallback((draft: WorkflowDraft) => {\n    if (draft.inputValues) {\n      // Cast draft.inputValues (unknown) vers StepValue - on fait confiance\n      // a la serialisation precedente qui ne stocke que des StepValue.\n      setInputValues((prev) => ({ ...(draft.inputValues as Record<string, StepValue>), ...prev }));\n    }\n    if (draft.commentValues) {\n      setCommentValues((prev) => ({ ...draft.commentValues, ...prev }));\n    }\n    if (typeof draft.currentPhaseIdx === \"number\") {\n      setCurrentPhaseIdx(draft.currentPhaseIdx);\n    }\n    if (draft.sigTechData) setSigTechData(draft.sigTechData);\n    if (draft.sigClientData) setSigClientData(draft.sigClientData);\n    if (typeof draft.sigClientPresent === \"boolean\") setSigClientPresent(draft.sigClientPresent);\n    if (draft.showSignatureCard) setShowSignatureCard(true);\n  }, []);\n\n  useEffect(() => {\n    if (hydratedOnceRef.current) {\n      return;\n    }\n    (async () => {\n      const draft = await loadWorkflowDraft(interventionId);\n      if (draft) {\n        applyDraftHydration(draft);\n      }\n      hydratedOnceRef.current = true;\n    })();\n  }, [interventionId, applyDraftHydration]);\n\n  // Persiste le draft en SQLite apres chaque modification (debounce 400ms\n  // pour eviter les ecritures trop frequentes pendant la frappe). Si l'app\n  // crash, le prochain mount rehydrate exactement ou on etait.\n  useWorkflowDraftPersistence(interventionId, hydratedOnceRef, {\n    inputValues,\n    commentValues,\n    currentPhaseIdx,\n    sigTechData,\n    sigClientData,\n    sigClientPresent,\n    showSignatureCard,\n  });\n\n  /**\n   * Sauvegarde toutes les etapes visibles et validees de la phase courante,\n   * puis fait avancer vers la phase suivante. Miroir du bouton \"Suivant\"\n   * de intervention_etapes.php — batch de saves + nextStep.\n   */\n  const persistSingleStep = useCallback(\n    async (\n      step: MobileStep,\n      raw: StepValue,\n      cmt: string,\n      version: number,\n      online: boolean\n    ): Promise<number> => {\n      const idempotencyKey = uuidv4();\n      if (online) {\n        const result = await saveStepToServer({\n          interventionId,\n          stepKey: step.id,\n          value: raw ?? null,\n          comment: cmt || null,\n          version,\n          idempotencyKey,\n        });\n        return result.version;\n      }\n      await enqueueSyncAction(\n        buildSaveStepOfflinePayload(step, interventionId, raw, cmt, version, idempotencyKey)\n      );\n      return version;\n    },\n    [interventionId]\n  );\n\n  const applyLocalStepUpdate = useCallback(\n    async (step: MobileStep, raw: StepValue, cmt: string): Promise<void> => {\n      const updated = await completeStepLocally(step, raw ?? null);\n      setSteps((prev) =>\n        prev.map((s) => {\n          if (s.id !== step.id) return s;\n          const mergedMetadata: Record<string, unknown> = { ...s.metadata, comment_text: cmt };\n          return { ...updated, metadata: mergedMetadata };\n        })\n      );\n    },\n    []\n  );\n\n  const savePhaseSteps = useCallback(\n    async (phase: WorkflowPhase, online: boolean, startVersion: number): Promise<\n      { ok: true; version: number } | { ok: false; stepId: string; message: string }\n    > => {\n      let currentVersion = startVersion;\n      for (const step of phase.steps) {\n        if (!visibleStepIds.has(step.id) || shouldSkipStepForSave(step)) {\n          continue;\n        }\n        const raw = inputValues[step.id];\n        const cmt = (commentValues[step.id] ?? \"\").trim();\n        const hasValue = raw !== undefined && !isEmptyStepValue(raw);\n        if (!hasValue && cmt === \"\") {\n          continue;\n        }\n        try {\n          currentVersion = await persistSingleStep(step, raw, cmt, currentVersion, online);\n          await applyLocalStepUpdate(step, raw, cmt);\n        } catch (err) {\n          const message = err instanceof Error ? err.message : \"Echec sauvegarde serveur\";\n          return { ok: false, stepId: step.id, message };\n        }\n      }\n      return { ok: true, version: currentVersion };\n    },\n    [visibleStepIds, inputValues, commentValues, persistSingleStep, applyLocalStepUpdate]\n  );\n\n  const autoSaveGateSteps = useCallback(\n    async (allSteps: MobileStep[], startVersion: number): Promise<number> => {\n      let currentVersion = startVersion;\n      for (const step of allSteps) {\n        if (!isGateStep(step) || !isEmptyStepValue(step.value)) {\n          continue;\n        }\n        try {\n          const result = await saveStepToServer({\n            interventionId,\n            stepKey: step.id,\n            value: \"1\",\n            comment: null,\n            version: currentVersion,\n            idempotencyKey: uuidv4(),\n          });\n          currentVersion = result.version;\n        } catch {\n          // best-effort : server renverra l'erreur precise a complete_workflow.\n        }\n      }\n      return currentVersion;\n    },\n    [interventionId]\n  );\n\n  const refreshStepsFromServer = useCallback(async (): Promise<void> => {\n    try {\n      const remote = await fetchAndStoreInterventionSteps(interventionId);\n      setWorkflowVersion(remote.workflowVersion);\n      const fresh = await loadStepsLocally(interventionId);\n      setSteps(fresh);\n    } catch {\n      // best-effort\n    }\n  }, [interventionId]);\n\n  const savePhaseAndAdvance = useCallback(async (): Promise<boolean> => {\n    if (!currentPhase) {\n      return false;\n    }\n\n    const blockingErrors = collectBlockingRequiredErrors(currentPhase, inputValues, visibleStepIds);\n    if (Object.keys(blockingErrors).length > 0) {\n      setValidationErrors((prev) => ({ ...prev, ...blockingErrors }));\n      setPhaseAlert(\"Merci de renseigner toutes les etapes requises avant de passer a la suivante.\");\n      return false;\n    }\n\n    const constraintErrors = collectConstraintErrors(\n      currentPhase,\n      inputValues,\n      commentValues,\n      visibleStepIds\n    );\n    if (Object.keys(constraintErrors).length > 0) {\n      setValidationErrors((prev) => ({ ...prev, ...constraintErrors }));\n      setPhaseAlert(\"Certaines valeurs sont invalides.\");\n      return false;\n    }\n\n    const online = await isNetworkOnline();\n    const saveResult = await savePhaseSteps(currentPhase, online, workflowVersion);\n    if (!saveResult.ok) {\n      setValidationErrors((prev) => ({ ...prev, [saveResult.stepId]: saveResult.message }));\n      setPhaseAlert(\"Erreur lors de la sauvegarde de la phase. Verifiez la connexion et reessayez.\");\n      return false;\n    }\n\n    let currentVersion = saveResult.version;\n    if (online) {\n      currentVersion = await autoSaveGateSteps(steps, currentVersion);\n    }\n    setWorkflowVersion(currentVersion);\n\n    if (online) {\n      await refreshStepsFromServer();\n    }\n\n    setPhaseAlert(null);\n    return true;\n  }, [\n    currentPhase,\n    inputValues,\n    commentValues,\n    visibleStepIds,\n    workflowVersion,\n    steps,\n    savePhaseSteps,\n    autoSaveGateSteps,\n    refreshStepsFromServer,\n  ]);\n\n  const handleNextPhase = useCallback(async () => {\n    const ok = await savePhaseAndAdvance();\n    if (!ok) {\n      return;\n    }\n    if (isLastPhase) {\n      // Si la machine n'a pas de photo, on intercale l'ecran photo\n      // avant les signatures (meme logique que la PWA).\n      if (!machineHasPhoto) {\n        setShowMachinePhotoCard(true);\n        setFinishError(null);\n        return;\n      }\n      setShowSignatureCard(true);\n      setFinishError(null);\n      return;\n    }\n    setCurrentPhaseIdx((idx) => Math.min(idx + 1, phases.length - 1));\n  }, [savePhaseAndAdvance, isLastPhase, phases.length]);\n\n  const handlePrevPhase = useCallback(() => {\n    setPhaseAlert(null);\n    if (currentPhaseIdx === 0) {\n      navigation.goBack();\n      return;\n    }\n    setCurrentPhaseIdx((idx) => Math.max(0, idx - 1));\n  }, [currentPhaseIdx, navigation]);\n\n  // ── Handlers photo machine ────────────────────────────────────\n  const openMachineCamera = useCallback(async () => {\n    if (!cameraPermission?.granted) {\n      const result = await requestCameraPermission();\n      if (!result.granted) {\n        setPhaseAlert(\"Permission camera refusee. Vous pouvez passer cette etape.\");\n        return;\n      }\n    }\n    setMachinePhotoCameraOpen(true);\n  }, [cameraPermission, requestCameraPermission]);\n\n  const takeMachinePhoto = useCallback(async () => {\n    if (!machineCameraRef.current || machinePhotoSaving) return;\n    setMachinePhotoSaving(true);\n    try {\n      // base64:true -> la camera renvoie directement le base64 de la photo. On\n      // EVITE volontairement le chemin fetch(file://) + Blob + FileReader, qui\n      // hang ou throw sur certains Android et laissait le tech bloque (ecran\n      // noir / capture figee). quality 0.5 pour limiter la taille du payload.\n      const photo = await machineCameraRef.current.takePictureAsync({\n        quality: 0.5,\n        base64: true,\n      });\n      if (!photo?.base64) {\n        setPhaseAlert(\"Capture invalide, reprenez la photo.\");\n        setMachinePhotoSaving(false);\n        return;\n      }\n\n      setMachinePhotoCameraOpen(false);\n\n      // Le backend exige un data-URI prefixe (data:image/...). Cf\n      // InterventionWorkflowApiController::handleUploadMachinePhoto.\n      const dataUri = `data:image/jpeg;base64,${photo.base64}`;\n\n      const online = await isNetworkOnline();\n      if (online) {\n        await uploadMachinePhoto(interventionId, dataUri);\n      } else {\n        await enqueueSyncAction({\n          endpoint: \"/mobile/intervention_workflow.php\",\n          method: \"POST\",\n          payload: {\n            action: \"upload_machine_photo\",\n            intervention_id: interventionId,\n            photo: dataUri,\n          },\n          entityType: \"machine_photo\",\n          entityId: String(machineId || interventionId),\n        });\n      }\n      setMachineHasPhoto(true);\n      setShowMachinePhotoCard(false);\n      setShowSignatureCard(true);\n    } catch (err) {\n      setPhaseAlert(\n        \"Erreur photo : \" + (err instanceof Error ? err.message : String(err))\n      );\n    } finally {\n      setMachinePhotoSaving(false);\n    }\n  }, [interventionId, machineId, machinePhotoSaving]);\n\n  const handleSkipMachinePhoto = useCallback(() => {\n    setShowMachinePhotoCard(false);\n    setShowSignatureCard(true);\n    setFinishError(null);\n  }, []);\n\n  /**\n   * Appele depuis SignatureFinishCard quand l'utilisateur a signe et\n   * confirme. Mirror PWA confirmSignature -> callCompleteWorkflow :\n   *   - online : POST direct /mobile/intervention_workflow.php\n   *     (server completeWorkflow s'occupe du PDF + demande devis)\n   *   - offline : enqueue dans sync_queue, sera rejoue a la reconnexion\n   */\n  const handleFinishWithSignatures = useCallback(\n    async (signatures: {\n      signature_technicien: string;\n      signature_client: string;\n      client_present: boolean;\n    }) => {\n      setFinishing(true);\n      setFinishError(null);\n      try {\n        const online = await isNetworkOnline();\n        if (online) {\n          await completeMobileWorkflow(interventionId, workflowVersion, signatures);\n          // Finalisation serveur reussie : on peut supprimer le draft local,\n          // l'intervention est terminee, plus besoin de le restaurer.\n          await clearWorkflowDraft(interventionId);\n        } else {\n          // Offline : on enqueue le complete_workflow avec les signatures.\n          // Le sync service rejouera ca a la reconnexion.\n          await enqueueSyncAction({\n            endpoint: \"/mobile/intervention_workflow.php\",\n            method: \"POST\",\n            payload: {\n              action: \"complete_workflow\",\n              intervention_id: interventionId,\n              version: workflowVersion,\n              signature_technicien: signatures.signature_technicien,\n              signature_client: signatures.signature_client,\n              client_present: signatures.client_present,\n            },\n            entityType: \"intervention\",\n            entityId: String(interventionId),\n          });\n        }\n        navigation.goBack();\n      } catch (err) {\n        setFinishError(\n          err instanceof Error ? err.message : \"Erreur lors de la finalisation\"\n        );\n      } finally {\n        setFinishing(false);\n      }\n    },\n    [interventionId, workflowVersion, navigation]\n  );\n\n  const visibleSteps = currentPhase\n    ? currentPhase.steps.filter((s) => visibleStepIds.has(s.id))\n    : [];\n  const nextActionLabel = isLastPhase ? \"✅ Terminer la mission\" : \"Suivant →\";\n  const backLabel = currentPhaseIdx === 0 ? \"Retour\" : \"← Revenir\";\n\n  const handleSignatureDraftChange = (d: {\n    techData?: string;\n    clientData?: string;\n    clientPresent?: boolean;\n  }) => {\n    if (d.techData !== undefined) setSigTechData(d.techData);\n    if (d.clientData !== undefined) setSigClientData(d.clientData);\n    if (d.clientPresent !== undefined) setSigClientPresent(d.clientPresent);\n  };\n  const handleSignatureCardCancel = () => {\n    setShowSignatureCard(false);\n    setFinishError(null);\n  };\n\n  return (\n    <View style={styles.root}>\n      {showMachinePhotoCard ? (\n        <MachinePhotoOverlay\n          saving={machinePhotoSaving}\n          cameraOpen={machinePhotoCameraOpen}\n          brandColor={brandColor}\n          cameraRef={machineCameraRef}\n          onTake={takeMachinePhoto}\n          onOpen={openMachineCamera}\n          onSkip={handleSkipMachinePhoto}\n        />\n      ) : null}\n\n      {showSignatureCard ? (\n        <SignatureFinishCard\n          brandColor={brandColor}\n          saving={finishing}\n          errorMessage={finishError}\n          initialTechData={sigTechData}\n          initialClientData={sigClientData}\n          initialClientPresent={sigClientPresent}\n          onDraftChange={handleSignatureDraftChange}\n          onCancel={handleSignatureCardCancel}\n          onConfirm={handleFinishWithSignatures}\n        />\n      ) : null}\n\n      <ScrollView\n        style={styles.scroll}\n        contentContainerStyle={[styles.content, { paddingBottom: insets.bottom + 24 }]}\n        showsVerticalScrollIndicator={false}\n      >\n        <Text style={styles.pageTitle}>Intervention #{interventionId}</Text>\n\n        {loading ? (\n          <View style={styles.loaderRow}>\n            <ActivityIndicator size=\"small\" />\n            <Text style={styles.mutedText}>Chargement des etapes...</Text>\n          </View>\n        ) : null}\n\n        {!loading && phases.length === 0 ? (\n          <Text style={styles.mutedText}>Aucune etape disponible pour cette intervention.</Text>\n        ) : null}\n\n        {!loading && currentPhase ? (\n          <>\n            {/* Fil d'ariane de phase, miroir du phaseStrip PWA */}\n            <View style={[styles.phaseStrip, { borderColor: brandColor }]}>\n              <Text style={[styles.phaseStripCounter, { color: brandColor }]}>\n                Phase {currentPhaseIdx + 1} / {phases.length}\n              </Text>\n              <Text style={styles.phaseStripName}>{currentPhase.name}</Text>\n            </View>\n\n            {phaseAlert ? <Text style={styles.phaseAlert}>{phaseAlert}</Text> : null}\n\n            <DevisListContext.Provider value={devisList}>\n              {visibleSteps.map((step, index) => (\n                <StepCard\n                  key={step.id}\n                  step={step}\n                  index={index}\n                  interventionId={interventionId}\n                  brandColor={brandColor}\n                  currentValue={inputValues[step.id] ?? getInitialValueForStep(step)}\n                  commentValue={commentValues[step.id] ?? \"\"}\n                  validationError={validationErrors[step.id]}\n                  onChangeValue={(stepId, v) =>\n                    setInputValues((prev) => ({ ...prev, [stepId]: v }))\n                  }\n                  onChangeComment={(stepId, text) =>\n                    setCommentValues((prev) => ({ ...prev, [stepId]: text }))\n                  }\n                />\n              ))}\n            </DevisListContext.Provider>\n          </>\n        ) : null}\n\n        {finishError ? <Text style={styles.finishError}>{finishError}</Text> : null}\n      </ScrollView>\n\n      <View style={[styles.actionsBar, { paddingBottom: insets.bottom + 16 }]}>\n        <Pressable style={styles.backButton} onPress={handlePrevPhase}>\n          <Text style={styles.backButtonText}>{backLabel}</Text>\n        </Pressable>\n        <Pressable\n          style={[\n            styles.finishButton,\n            { backgroundColor: isLastPhase && !finishing ? \"#16a34a\" : brandColor },\n            (phases.length === 0 || finishing) && { backgroundColor: \"#cbd5e1\" },\n          ]}\n          disabled={phases.length === 0 || finishing}\n          onPress={() => {\n            handleNextPhase();\n          }}\n        >\n          {finishing ? (\n            <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n          ) : (\n            <Text style={styles.finishButtonText}>{nextActionLabel}</Text>\n          )}\n        </Pressable>\n      </View>\n    </View>\n  );\n}\n\ntype StepInputProps = {\n  interventionId: number;\n  step: MobileStep;\n  value: StepValue;\n  onChange: (v: StepValue) => void;\n  brandColor: string;\n};\n\nfunction DisplayBox({\n  text,\n  unit,\n  emphasis = \"normal\",\n}: Readonly<{ text: string; unit?: string | null; emphasis?: \"callout\" | \"normal\" }>) {\n  // Callout ambre saillant (miroir PWA .info-callout-cerfa) : icone + texte\n  // gras contraste pour que le tech ne puisse pas rater le prerequis a preparer.\n  if (emphasis === \"callout\") {\n    return (\n      <View style={styles.calloutBox}>\n        <Text style={styles.calloutIcon}>📋</Text>\n        <Text style={styles.calloutText}>{text}</Text>\n      </View>\n    );\n  }\n  return (\n    <View style={styles.displayBox}>\n      <Text style={styles.displayBoxText}>{text}</Text>\n      {unit ? <Text style={styles.unitLabel}>{unit}</Text> : null}\n    </View>\n  );\n}\n\nfunction normalizeBooleanValue(value: StepValue): \"OUI\" | \"NON\" | \"\" {\n  const current = (typeof value === \"string\" ? value : \"\").toLowerCase();\n  if (current === \"1\" || current === \"true\" || current === \"oui\") return \"OUI\";\n  if (current === \"0\" || current === \"false\" || current === \"non\") return \"NON\";\n  return \"\";\n}\n\nfunction ChoicePill({\n  label,\n  isActive,\n  brandColor,\n  onPress,\n}: Readonly<{\n  label: string;\n  isActive: boolean;\n  brandColor: string;\n  onPress: () => void;\n}>) {\n  return (\n    <Pressable\n      style={[\n        styles.choiceOption,\n        isActive && { backgroundColor: brandColor, borderColor: brandColor },\n      ]}\n      onPress={onPress}\n    >\n      <View style={[styles.choiceDot, isActive && styles.choiceDotActive]}>\n        {isActive ? <View style={styles.choiceDotInner} /> : null}\n      </View>\n      <Text style={[styles.choiceOptionText, isActive && styles.choiceOptionTextActive]}>\n        {label}\n      </Text>\n    </Pressable>\n  );\n}\n\nfunction DisplayStepInput({ step }: Readonly<{ step: MobileStep }>) {\n  // Priorite : message auto serveur (applyPhase1CerfaInfoOverride : \"CERFA\n  // obligatoire a preparer.\", etc.) > display_content resolu serveur (option\n  // backend pour \"LISTE DEVIS *\") > resolution client des devis (fallback) >\n  // note > label.\n  const meta = getStepMetadata(step);\n  const devisList = useContext(DevisListContext);\n  const devisText = resolveDevisStepText(step.label, devisList);\n  const displayText = String(\n    meta.auto_message || meta.display_content || devisText || meta.note || step.label || \"\"\n  );\n  // Phase 1 CERFA / prelevement huile : le serveur marque les vrais prerequis\n  // a preparer avec auto_message_emphasis=\"callout\" -> rendu ambre saillant.\n  // \"normal\"/null -> box neutre discrete (cas \"Aucun ... a preparer\").\n  const emphasis = meta.auto_message_emphasis === \"callout\" ? \"callout\" : \"normal\";\n  return <DisplayBox text={displayText} emphasis={emphasis} />;\n}\n\nfunction AutoCalcStepInput({ step }: Readonly<{ step: MobileStep }>) {\n  const computed = step.value;\n  let display: string;\n  if (computed === null || computed === undefined || computed === \"\") {\n    display = \"En attente des relevés...\";\n  } else if (typeof computed === \"object\") {\n    display = JSON.stringify(computed);\n  } else {\n    display = String(computed);\n  }\n  return <DisplayBox text={display} unit={step.unit} />;\n}\n\nfunction NumberStepInput({\n  step,\n  value,\n  onChange,\n}: Readonly<{ step: MobileStep; value: StepValue; onChange: (v: StepValue) => void }>) {\n  const numericText =\n    typeof value === \"number\" || typeof value === \"string\" ? String(value) : \"\";\n  return (\n    <View style={styles.inputRow}>\n      <TextInput\n        style={styles.textInput}\n        keyboardType=\"numeric\"\n        value={numericText}\n        onChangeText={onChange}\n        placeholder={step.unit ? `Valeur (${step.unit})` : \"0\"}\n        placeholderTextColor=\"#94a3b8\"\n      />\n      {step.unit ? <Text style={styles.unitLabel}>{step.unit}</Text> : null}\n    </View>\n  );\n}\n\nfunction TextStepInput({\n  value,\n  onChange,\n}: Readonly<{ value: StepValue; onChange: (v: StepValue) => void }>) {\n  const textValue = typeof value === \"string\" ? value : \"\";\n  return (\n    <TextInput\n      style={styles.textInput}\n      value={textValue}\n      onChangeText={onChange}\n      placeholder=\"Saisir...\"\n      placeholderTextColor=\"#94a3b8\"\n    />\n  );\n}\n\nfunction CerfaStepInput({\n  value,\n  onChange,\n  brandColor,\n}: Readonly<{ value: StepValue; onChange: (v: StepValue) => void; brandColor: string }>) {\n  const cerfaValue =\n    value && typeof value === \"object\" && !Array.isArray(value)\n      ? (value as { enabled?: boolean; reference?: string })\n      : { enabled: false, reference: \"\" };\n  const enabled = Boolean(cerfaValue.enabled);\n  const reference = String(cerfaValue.reference ?? \"\");\n\n  return (\n    <View style={styles.cerfaBlock}>\n      <Pressable\n        style={[\n          styles.cerfaToggle,\n          enabled && { backgroundColor: brandColor, borderColor: brandColor },\n        ]}\n        onPress={() => onChange({ enabled: !enabled, reference } as unknown as StepValue)}\n      >\n        <View style={[styles.choiceDot, enabled && styles.choiceDotActive]}>\n          {enabled ? <View style={styles.choiceDotInner} /> : null}\n        </View>\n        <Text style={[styles.cerfaToggleText, enabled && styles.choiceOptionTextActive]}>\n          Oui, preparer\n        </Text>\n      </Pressable>\n      {enabled ? (\n        <TextInput\n          style={styles.textInput}\n          value={reference}\n          onChangeText={(text) =>\n            onChange({ enabled: true, reference: text } as unknown as StepValue)\n          }\n          placeholder=\"Saisir le numero...\"\n          placeholderTextColor=\"#94a3b8\"\n        />\n      ) : null}\n    </View>\n  );\n}\n\nfunction BooleanStepInput({\n  value,\n  onChange,\n  brandColor,\n}: Readonly<{ value: StepValue; onChange: (v: StepValue) => void; brandColor: string }>) {\n  const norm = normalizeBooleanValue(value);\n  return (\n    <View style={styles.choiceGroup}>\n      <ChoicePill\n        label=\"OUI\"\n        isActive={norm === \"OUI\"}\n        brandColor={brandColor}\n        onPress={() => onChange(\"1\")}\n      />\n      <ChoicePill\n        label=\"NON\"\n        isActive={norm === \"NON\"}\n        brandColor={brandColor}\n        onPress={() => onChange(\"0\")}\n      />\n    </View>\n  );\n}\n\nfunction ChoiceStepInput({\n  step,\n  value,\n  onChange,\n  brandColor,\n}: Readonly<{\n  step: MobileStep;\n  value: StepValue;\n  onChange: (v: StepValue) => void;\n  brandColor: string;\n}>) {\n  const options = Array.isArray(step.options) ? step.options : [];\n  if (options.length === 0) {\n    return <DisplayBox text=\"Aucune option disponible.\" />;\n  }\n  const selected = typeof value === \"string\" ? value : \"\";\n  return (\n    <View style={styles.choiceGroup}>\n      {options.map((opt) => (\n        <ChoicePill\n          key={opt}\n          label={opt}\n          isActive={selected === opt}\n          brandColor={brandColor}\n          onPress={() => onChange(opt)}\n        />\n      ))}\n    </View>\n  );\n}\n\nfunction getWorkflowStepId(step: MobileStep): number | null {\n  const m = (step.metadata || {}) as { workflow_step_id?: number | null };\n  return typeof m.workflow_step_id === \"number\" ? m.workflow_step_id : null;\n}\n\nfunction PhotoStepInput({ interventionId, step, value, onChange, brandColor }: Readonly<StepInputProps>) {\n  const photos = isPhotoArrayValue(value) ? value : [];\n  return (\n    <View style={styles.photoBlock}>\n      <CameraCapture\n        interventionId={interventionId}\n        stepId={step.id}\n        workflowStepId={getWorkflowStepId(step)}\n        brandColor={brandColor}\n        onCaptured={(uri) => {\n          const nextPhoto: StepPhotoValue = {\n            id: `${Date.now()}`,\n            uri,\n            name: uri.split(\"/\").pop(),\n            mime_type: uri.toLowerCase().endsWith(\".png\") ? \"image/png\" : \"image/jpeg\",\n            uploaded: false,\n          };\n          onChange([...photos, nextPhoto]);\n        }}\n      />\n      {photos.map((photo) => (\n        <View key={photo.id} style={styles.photoRow}>\n          <Image source={{ uri: photo.uri }} style={styles.photoPreview} />\n          <View style={styles.photoMeta}>\n            <Text style={styles.photoName}>\n              {photo.name || photo.uri.split(\"/\").pop() || \"photo\"}\n            </Text>\n            <Text style={styles.photoHint}>{photo.uploaded ? \"Synchronisee\" : \"Locale\"}</Text>\n          </View>\n          <Pressable\n            style={styles.removePhotoButton}\n            onPress={() => onChange(photos.filter((item) => item.id !== photo.id))}\n          >\n            <Text style={styles.removePhotoText}>Supprimer</Text>\n          </Pressable>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nfunction SignatureStepInput({ interventionId, step, value, onChange, brandColor }: Readonly<StepInputProps>) {\n  const signature = isSignatureValue(value) ? value : null;\n  return (\n    <View style={styles.signatureBlock}>\n      <SignatureCapture\n        interventionId={interventionId}\n        stepId={step.id}\n        brandColor={brandColor}\n        onCaptured={(uri) =>\n          onChange({\n            signed: true,\n            signed_by: \"technicien\",\n            uri,\n            name: uri.split(\"/\").pop(),\n            mime_type: \"image/png\",\n          })\n        }\n      />\n      {signature?.uri ? (\n        <View style={styles.signaturePreviewWrap}>\n          <Image source={{ uri: signature.uri }} style={styles.signaturePreview} resizeMode=\"contain\" />\n          <Pressable style={styles.removePhotoButton} onPress={() => onChange(null)}>\n            <Text style={styles.removePhotoText}>Effacer signature</Text>\n          </Pressable>\n        </View>\n      ) : null}\n    </View>\n  );\n}\n\nfunction UnsupportedStepInput() {\n  return (\n    <View style={styles.unsupportedBlock}>\n      <Text style={styles.mutedText}>Type d'etape non pris en charge</Text>\n    </View>\n  );\n}\n\nfunction isDisplayKind(kind: string, step: MobileStep): boolean {\n  return (\n    kind === \"display\" ||\n    kind === \"section\" ||\n    kind === \"info\" ||\n    isDisplayOnly(step)\n  );\n}\n\nfunction isPhotoKind(kind: string, step: MobileStep): boolean {\n  return kind === \"photo\" || step.type === \"photo\";\n}\n\nfunction isTextKind(kind: string, step: MobileStep): boolean {\n  return kind === \"text\" || (kind === \"prerequisite\" && !isCerfaLike(step));\n}\n\nfunction StepInput(props: Readonly<StepInputProps>) {\n  // Dispatch sur input_kind (valeur serveur brute) miroir de renderStepBlock\n  // dans public/intervention_etapes.php — pour ne pas inventer de nouveaux\n  // comportements. step.type est une \"hint\" qui compresse choice/boolean\n  // en checklist, on prefere le kind serveur pour distinguer.\n  const { step } = props;\n  const meta = (step.metadata || {}) as { input_kind?: string };\n  const kind = String(meta.input_kind || \"\").toLowerCase();\n\n  if (isDisplayKind(kind, step)) return <DisplayStepInput step={step} />;\n  if (isAutoCalc(step)) return <AutoCalcStepInput step={step} />;\n  if (kind === \"number\") return <NumberStepInput {...props} />;\n  if (isTextKind(kind, step)) return <TextStepInput {...props} />;\n  if (kind === \"prerequisite\" && isCerfaLike(step)) return <CerfaStepInput {...props} />;\n  if (kind === \"boolean\") return <BooleanStepInput {...props} />;\n  if (kind === \"choice\") return <ChoiceStepInput {...props} />;\n  if (isPhotoKind(kind, step)) return <PhotoStepInput {...props} />;\n  if (step.type === \"signature\") return <SignatureStepInput {...props} />;\n  return <UnsupportedStepInput />;\n}\n\nconst styles = StyleSheet.create({\n  root: { flex: 1, backgroundColor: \"#edf2f8\" },\n  scroll: { flex: 1 },\n  content: { padding: 16, gap: 12, paddingBottom: 16 },\n  pageTitle: { fontSize: 18, fontWeight: \"700\", color: \"#16325c\" },\n  phaseStrip: {\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderRadius: 10,\n    padding: 12,\n    gap: 4,\n  },\n  phaseStripCounter: { fontSize: 12, fontWeight: \"700\", textTransform: \"uppercase\" },\n  phaseStripName: { fontSize: 16, fontWeight: \"600\", color: \"#1f2f4f\" },\n  phaseAlert: {\n    backgroundColor: \"#fef2f2\",\n    borderWidth: 1,\n    borderColor: \"#fca5a5\",\n    color: \"#b91c1c\",\n    borderRadius: 8,\n    padding: 10,\n    fontSize: 13,\n  },\n  loaderRow: { flexDirection: \"row\", alignItems: \"center\", gap: 8 },\n  mutedText: { color: \"#6a7a96\" },\n  stepCard: { backgroundColor: \"#ffffff\", borderRadius: 12, borderWidth: 1, borderColor: \"#d8e4f6\", overflow: \"hidden\" },\n  stepHeader: { flexDirection: \"row\", alignItems: \"center\", justifyContent: \"space-between\", padding: 12, gap: 8 },\n  stepMeta: { flex: 1, flexDirection: \"row\", alignItems: \"center\", gap: 10 },\n  stepIndex: { width: 28, height: 28, borderRadius: 14, alignItems: \"center\", justifyContent: \"center\" },\n  stepIndexText: { color: \"#ffffff\", fontSize: 12, fontWeight: \"700\" },\n  stepInfo: { flex: 1, gap: 4 },\n  stepLabel: { fontSize: 14, fontWeight: \"600\", color: \"#1f2f4f\" },\n  requiredMark: { color: \"#dc2626\" },\n  statusBadge: { alignSelf: \"flex-start\", borderWidth: 1, borderRadius: 999, paddingVertical: 2, paddingHorizontal: 7 },\n  statusBadgeText: { fontSize: 11, fontWeight: \"700\" },\n  chevron: { color: \"#94a3b8\", fontSize: 12 },\n  stepBody: { padding: 12, borderTopWidth: 1, borderTopColor: \"#e3ebf8\", gap: 10 },\n  inputRow: { flexDirection: \"row\", alignItems: \"center\", gap: 8 },\n  textInput: { flex: 1, borderWidth: 1, borderColor: \"#d8e4f6\", borderRadius: 8, padding: 10, fontSize: 14, color: \"#1f2f4f\", backgroundColor: \"#f8fbff\" },\n  textArea: { minHeight: 80, textAlignVertical: \"top\" },\n  unitLabel: { fontSize: 13, color: \"#66748f\", fontWeight: \"600\" },\n  checklistRow: { flexDirection: \"row\", gap: 10 },\n  checkOption: { flex: 1, alignItems: \"center\", paddingVertical: 10, borderRadius: 8, borderWidth: 1, borderColor: \"#d8e4f6\", backgroundColor: \"#f8fbff\" },\n  checkOptionText: { fontSize: 14, fontWeight: \"600\", color: \"#334155\" },\n  checkOptionTextActive: { color: \"#ffffff\" },\n  choiceGroup: { gap: 8 },\n  choiceOption: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 10,\n    paddingVertical: 10,\n    paddingHorizontal: 12,\n    borderRadius: 8,\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    backgroundColor: \"#f8fbff\",\n  },\n  choiceOptionText: { flex: 1, fontSize: 14, fontWeight: \"600\", color: \"#334155\" },\n  choiceOptionTextActive: { color: \"#ffffff\" },\n  choiceDot: {\n    width: 18,\n    height: 18,\n    borderRadius: 9,\n    borderWidth: 2,\n    borderColor: \"#94a3b8\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  choiceDotActive: { borderColor: \"#ffffff\" },\n  choiceDotInner: { width: 8, height: 8, borderRadius: 4, backgroundColor: \"#ffffff\" },\n  displayBox: {\n    padding: 12,\n    backgroundColor: \"#f1f5f9\",\n    borderRadius: 8,\n    borderWidth: 1,\n    borderColor: \"#e2e8f0\",\n  },\n  displayBoxText: { color: \"#475569\", fontSize: 13 },\n  // Callout ambre saillant — equivalent natif du .info-callout-cerfa PWA :\n  // bordure gauche epaisse ambre, fond ambre clair, texte brun gras, icone.\n  calloutBox: {\n    flexDirection: \"row\",\n    alignItems: \"flex-start\",\n    gap: 10,\n    padding: 14,\n    backgroundColor: \"#fef3c7\",\n    borderWidth: 1,\n    borderColor: \"#fcd34d\",\n    borderLeftWidth: 6,\n    borderLeftColor: \"#f59e0b\",\n    borderRadius: 10,\n  },\n  calloutIcon: { fontSize: 22, lineHeight: 26 },\n  calloutText: { flex: 1, color: \"#78350f\", fontSize: 15, fontWeight: \"600\", lineHeight: 21 },\n  cerfaBlock: { gap: 10 },\n  cerfaToggle: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 10,\n    paddingVertical: 10,\n    paddingHorizontal: 12,\n    borderRadius: 8,\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    backgroundColor: \"#f8fbff\",\n  },\n  cerfaToggleText: { fontSize: 14, fontWeight: \"600\", color: \"#334155\" },\n  // Sous-etape (extension) : indentation, fond legerement different, barre\n  // verticale a gauche pour rendre la hierarchie evidente.\n  stepCardExtension: {\n    marginLeft: 20,\n    borderLeftWidth: 4,\n    borderLeftColor: \"#fbbf24\",\n    backgroundColor: \"#fffbeb\",\n  },\n  extensionBadge: {\n    alignSelf: \"flex-start\",\n    paddingHorizontal: 8,\n    paddingVertical: 3,\n    borderTopLeftRadius: 12,\n    borderBottomRightRadius: 8,\n  },\n  extensionBadgeText: { color: \"#ffffff\", fontSize: 11, fontWeight: \"700\" },\n  // Bloc commentaire qui s'affiche sous une etape (requires_comment ou\n  // extension choice + valeur probleme/panne).\n  commentWrap: { gap: 6 },\n  commentLabel: { fontSize: 13, fontWeight: \"600\", color: \"#334155\" },\n  unsupportedBlock: { padding: 12, backgroundColor: \"#f1f5f9\", borderRadius: 8, alignItems: \"center\" },\n  photoBlock: { gap: 8 },\n  photoRow: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 8,\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 8,\n    padding: 8,\n    backgroundColor: \"#f8fbff\",\n  },\n  photoPreview: {\n    width: 64,\n    height: 64,\n    borderRadius: 6,\n    backgroundColor: \"#dbe7f8\",\n  },\n  photoMeta: { flex: 1, gap: 2 },\n  photoName: { color: \"#1f2f4f\", fontSize: 13, fontWeight: \"600\" },\n  photoHint: { color: \"#64748b\", fontSize: 12 },\n  removePhotoButton: {\n    backgroundColor: \"#fee2e2\",\n    borderRadius: 8,\n    paddingVertical: 6,\n    paddingHorizontal: 10,\n  },\n  removePhotoText: { color: \"#b91c1c\", fontWeight: \"700\", fontSize: 12 },\n  signatureBlock: { gap: 8 },\n  signaturePreviewWrap: {\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 8,\n    padding: 8,\n    gap: 8,\n    backgroundColor: \"#f8fbff\",\n  },\n  signaturePreview: {\n    width: \"100%\",\n    height: 120,\n    backgroundColor: \"#ffffff\",\n    borderRadius: 6,\n  },\n  validationError: { color: \"#dc2626\", fontSize: 12 },\n  completeButton: { borderRadius: 8, paddingVertical: 10, alignItems: \"center\" },\n  completeButtonText: { color: \"#ffffff\", fontWeight: \"700\" },\n  finishError: { color: \"#dc2626\", fontSize: 13 },\n  actionsBar: { flexDirection: \"row\", gap: 10, padding: 16, backgroundColor: \"#ffffff\", borderTopWidth: 1, borderTopColor: \"#d8e4f6\" },\n  backButton: { flex: 1, backgroundColor: \"#e5e7eb\", borderRadius: 10, alignItems: \"center\", paddingVertical: 12 },\n  backButtonText: { color: \"#334155\", fontWeight: \"700\" },\n  finishButton: { flex: 2, borderRadius: 10, alignItems: \"center\", paddingVertical: 12 },\n  finishButtonText: { color: \"#ffffff\", fontWeight: \"700\", textAlign: \"center\" },\n  // Photo machine overlay\n  machinePhotoOverlay: { position: \"absolute\", top: 0, left: 0, right: 0, bottom: 0, zIndex: 90, backgroundColor: \"#edf2f8\", padding: 16 },\n  machinePhotoHeader: { marginBottom: 16 },\n  machinePhotoTitle: { fontSize: 20, fontWeight: \"700\", color: \"#16325c\", marginBottom: 8 },\n  machinePhotoSubtitle: { fontSize: 14, color: \"#6b7280\", lineHeight: 20 },\n  machinePhotoLoading: { flex: 1, alignItems: \"center\", justifyContent: \"center\" },\n  machinePhotoLoadingOverlay: { position: \"absolute\", top: 0, left: 0, right: 0, bottom: 0, alignItems: \"center\", justifyContent: \"center\", backgroundColor: \"rgba(0,0,0,0.45)\", borderRadius: 12 },\n  machinePhotoSkip: { alignSelf: \"center\", marginTop: 16, paddingVertical: 10, paddingHorizontal: 24, backgroundColor: \"#e5e7eb\", borderRadius: 8 },\n  machinePhotoSkipText: { color: \"#334155\", fontWeight: \"600\", fontSize: 15 },\n});\n","import apiClient from \"./apiClient\";\nimport type { ApiEnvelope } from \"../types/auth\";\n\n/**\n * Devis d'une machine, tel qu'expose par /api/devis.php (Bearer JWT mobile\n * accepte en priorite par AuthMiddleware::checkAuth, scoping tenant garanti\n * par MobileJwtMiddleware). On ne type que les champs consommes par le rendu\n * des etapes \"LISTE DEVIS *\" ; le reste du payload est ignore.\n */\nexport type DevisItem = {\n  id: number;\n  numero_devis?: string | null;\n  statut?: string | null;\n  montant?: number | string | null;\n  date_devis?: string | null;\n  [key: string]: unknown;\n};\n\n/**\n * Recupere les devis d'une machine, tries created_at DESC cote serveur\n * (data[0] = devis le plus recent). Silent-fail : la liste devis n'est pas\n * critique pour le workflow, donc toute erreur reseau/HTTP retombe sur une\n * liste vide — meme contrat que la PWA (public/js/intervention_etapes.js).\n */\nexport async function getDevisForMachine(machineId: number): Promise<DevisItem[]> {\n  if (!machineId) {\n    return [];\n  }\n  try {\n    const response = await apiClient.get<ApiEnvelope<DevisItem[]>>(\"/devis.php\", {\n      params: { machine_id: machineId },\n    });\n    const data = response.data?.data;\n    return Array.isArray(data) ? data : [];\n  } catch {\n    return [];\n  }\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport {\n  ActivityIndicator,\n  Pressable,\n  StyleSheet,\n  Text,\n  View,\n} from \"react-native\";\nimport SignatureCanvas, { type SignatureViewRef } from \"react-native-signature-canvas\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\n\n/**\n * Finalisation d'une intervention : wizard 3 etapes plein ecran pour\n * ne PAS mettre les signature pads dans un ScrollView (le scroll\n * intercepterait les touches et empecherait de dessiner).\n *\n *   1) Signature technicien (obligatoire)\n *   2) Client present / absent (radio)\n *   3) Signature client (si present, sinon skip) + bouton Confirmer\n *\n * A chaque pad, l'utilisateur dessine puis clique \"Valider\" dans le\n * footer du SignatureCanvas (onOK fire -> on stocke la data URL).\n * Le bouton \"Suivant\" du wizard verifie que la signature courante\n * est capturee avant de passer a l'etape suivante.\n */\ntype Props = {\n  brandColor: string;\n  saving: boolean;\n  errorMessage: string | null;\n  /**\n   * Valeurs initiales hydratees depuis le parent pour survivre au\n   * unmount/remount (ex: le user clique \"Revenir\" puis revient : retrouve\n   * ses signatures au lieu de devoir resigner).\n   */\n  initialTechData?: string;\n  initialClientData?: string;\n  initialClientPresent?: boolean;\n  /**\n   * Callback appele a chaque modif d'un champ du wizard (signature\n   * capturee, radio presence change). Permet au parent de persister\n   * en state et retransmettre au prochain mount.\n   */\n  onDraftChange?: (draft: {\n    techData?: string;\n    clientData?: string;\n    clientPresent?: boolean;\n  }) => void;\n  onCancel: () => void;\n  onConfirm: (signatures: {\n    signature_technicien: string;\n    signature_client: string;\n    client_present: boolean;\n  }) => void;\n};\n\ntype WizardStep = \"tech\" | \"client_presence\" | \"client_sig\";\n\nexport default function SignatureFinishCard(props: Readonly<Props>) {\n  const {\n    brandColor,\n    saving,\n    errorMessage,\n    initialTechData,\n    initialClientData,\n    initialClientPresent,\n    onDraftChange,\n    onCancel,\n    onConfirm,\n  } = props;\n  const insets = useSafeAreaInsets();\n\n  const [step, setStep] = useState<WizardStep>(\"tech\");\n  const [techData, setTechData] = useState<string>(initialTechData ?? \"\");\n  const [clientData, setClientData] = useState<string>(initialClientData ?? \"\");\n  const [clientPresent, setClientPresent] = useState<boolean>(\n    initialClientPresent ?? true\n  );\n  const [localError, setLocalError] = useState<string | null>(null);\n  // Drapeaux \"en attente de capture\" : leves quand l'utilisateur clique\n  // Suivant/Confirmer. Quand la capture revient (onOK ou onEmpty), on\n  // progresse ou on affiche une erreur.\n  const [pendingAction, setPendingAction] = useState<null | \"tech_next\" | \"client_confirm\">(null);\n\n  const techPadRef = useRef<SignatureViewRef>(null);\n  const clientPadRef = useRef<SignatureViewRef>(null);\n\n  // On cache le bouton \"Valider\" (save) natif du SignatureCanvas car\n  // l'utilisateur ne le voyait pas sur certains Android (rendu WebView\n  // coupe ou caches). On garde \"Effacer\" pour corriger une signature.\n  // Le \"Suivant\"/\"Confirmer\" du wizard declenche lui-meme readSignature()\n  // pour capturer la data URL via onOK.\n  const padWebStyle = `\n    .m-signature-pad { box-shadow: none; border: 1px solid #d8e4f6; border-radius: 8px; }\n    .m-signature-pad--body { border: none; }\n    .m-signature-pad--footer { display: flex; justify-content: flex-start; padding: 8px 12px; }\n    .m-signature-pad--footer .description { display: none; }\n    .m-signature-pad--footer .save { display: none; }\n    .m-signature-pad--footer .clear { background: #e2e8f0; color: #334155; border-radius: 6px; padding: 8px 18px; border: none; font-weight: 700; font-size: 14px; }\n    body, html { height: 100%; margin: 0; }\n  `;\n\n  /**\n   * \"Suivant\" depuis l'etape technicien : on demande au pad de remonter\n   * sa data URL. Si le pad est vide, onEmpty fire et on affiche une\n   * erreur. Sinon onOK fire, techData est set, et l'useEffect ci-dessous\n   * progresse l'etape.\n   */\n  const handleTechNext = () => {\n    setLocalError(null);\n    setPendingAction(\"tech_next\");\n    techPadRef.current?.readSignature();\n  };\n\n  // Progression async pilotee par le drapeau pendingAction : on attend\n  // le callback onOK (qui set techData) ou onEmpty (qui set pendingAction\n  // a null + affiche une erreur) avant d'avancer.\n  useEffect(() => {\n    if (pendingAction === \"tech_next\" && techData) {\n      setPendingAction(null);\n      setStep(\"client_presence\");\n    }\n    if (pendingAction === \"client_confirm\" && clientData) {\n      setPendingAction(null);\n      onConfirm({\n        signature_technicien: techData,\n        signature_client: clientData,\n        client_present: true,\n      });\n    }\n  }, [pendingAction, techData, clientData, onConfirm]);\n\n  // Remonte au parent les changements de draft pour qu'il les persiste\n  // et les retransmette au prochain mount (apres un Revenir).\n  useEffect(() => {\n    onDraftChange?.({ techData, clientData, clientPresent });\n  }, [techData, clientData, clientPresent, onDraftChange]);\n\n  const handleClientPresenceNext = () => {\n    setLocalError(null);\n    if (clientPresent) {\n      setStep(\"client_sig\");\n    } else {\n      // Client absent -> confirmer directement\n      onConfirm({\n        signature_technicien: techData,\n        signature_client: \"ABSENT\",\n        client_present: false,\n      });\n    }\n  };\n\n  /**\n   * \"Confirmer et terminer\" depuis l'etape client signature : meme pattern\n   * que handleTechNext — on trigger readSignature et l'useEffect se charge\n   * de onConfirm une fois clientData recu via onOK.\n   */\n  const handleClientSigConfirm = () => {\n    setLocalError(null);\n    setPendingAction(\"client_confirm\");\n    clientPadRef.current?.readSignature();\n  };\n\n  const handleBack = () => {\n    setLocalError(null);\n    if (step === \"tech\") {\n      onCancel();\n    } else if (step === \"client_presence\") {\n      setStep(\"tech\");\n    } else {\n      setStep(\"client_presence\");\n    }\n  };\n\n  const renderStep = () => {\n    if (step === \"tech\") {\n      return (\n        <>\n          <Text style={styles.title}>Signature du technicien</Text>\n          <Text style={styles.subtitle}>\n            Signez dans le cadre puis touchez le bouton \"Valider\" sous le pad.\n          </Text>\n          <View style={styles.padFullContainer}>\n            <SignatureCanvas\n              ref={techPadRef}\n              /* dataURL permet de re-afficher la signature deja capturee\n                 quand on revient sur cette etape (ex: apres un \"Revenir\").\n                 On ne bind PAS a techData en live pour eviter les redraws\n                 parasites pendant que le user dessine : initialTechData\n                 est stable (vient des props parentes figees au mount). */\n              dataURL={initialTechData || undefined}\n              onOK={(data) => {\n                setTechData(data);\n                setLocalError(null);\n              }}\n              onEmpty={() => {\n                setTechData(\"\");\n                // Si l'utilisateur a clique Suivant sur un pad vide,\n                // l'onEmpty remonte : on annule le pending et on previent.\n                if (pendingAction === \"tech_next\") {\n                  setPendingAction(null);\n                  setLocalError(\"Signez dans le cadre avant de passer a l'etape suivante.\");\n                }\n              }}\n              descriptionText=\"\"\n              clearText=\"Effacer\"\n              confirmText=\"Valider\"\n              webStyle={padWebStyle}\n              autoClear={false}\n              imageType=\"image/png\"\n            />\n          </View>\n          <Text style={techData ? styles.padOk : styles.padHint}>\n            {techData ? \"✓ Signature technicien prete\" : \"Signez dans le cadre puis touchez 'Suivant →'\"}\n          </Text>\n        </>\n      );\n    }\n\n    if (step === \"client_presence\") {\n      return (\n        <View style={styles.clientPresenceContent}>\n          <Text style={styles.title}>Client</Text>\n          <Text style={styles.subtitle}>\n            Le client est-il present lors de cette intervention ?\n          </Text>\n          <View style={styles.radioGroup}>\n            <Pressable\n              style={[\n                styles.radioOption,\n                clientPresent && { backgroundColor: brandColor, borderColor: brandColor },\n              ]}\n              onPress={() => setClientPresent(true)}\n            >\n              <Text style={[styles.radioOptionText, clientPresent && styles.radioOptionTextActive]}>\n                ✓ Client present\n              </Text>\n              <Text style={[styles.radioOptionSubtext, clientPresent && styles.radioOptionTextActive]}>\n                Signature du client requise\n              </Text>\n            </Pressable>\n            <Pressable\n              style={[\n                styles.radioOption,\n                !clientPresent && { backgroundColor: brandColor, borderColor: brandColor },\n              ]}\n              onPress={() => setClientPresent(false)}\n            >\n              <Text style={[styles.radioOptionText, !clientPresent && styles.radioOptionTextActive]}>\n                ✗ Client absent\n              </Text>\n              <Text style={[styles.radioOptionSubtext, !clientPresent && styles.radioOptionTextActive]}>\n                Rapport marque \"ABSENT\"\n              </Text>\n            </Pressable>\n          </View>\n        </View>\n      );\n    }\n\n    // client_sig\n    return (\n      <>\n        <Text style={styles.title}>Signature du client</Text>\n        <Text style={styles.subtitle}>\n          Faites signer le client puis touchez \"Valider\" sous le pad.\n        </Text>\n        <View style={styles.padFullContainer}>\n          <SignatureCanvas\n            ref={clientPadRef}\n            dataURL={initialClientData || undefined}\n            onOK={(data) => {\n              setClientData(data);\n              setLocalError(null);\n            }}\n            onEmpty={() => {\n              setClientData(\"\");\n              if (pendingAction === \"client_confirm\") {\n                setPendingAction(null);\n                setLocalError(\"Le client doit signer dans le cadre avant de confirmer.\");\n              }\n            }}\n            descriptionText=\"\"\n            clearText=\"Effacer\"\n            confirmText=\"Valider\"\n            webStyle={padWebStyle}\n            autoClear={false}\n            imageType=\"image/png\"\n          />\n        </View>\n        <Text style={clientData ? styles.padOk : styles.padHint}>\n          {clientData ? \"✓ Signature client prete\" : \"Faites signer le client puis touchez 'Confirmer'\"}\n        </Text>\n      </>\n    );\n  };\n\n  const renderActions = () => {\n    if (step === \"tech\") {\n      return (\n        <>\n          <Pressable style={styles.backButton} onPress={handleBack} disabled={saving}>\n            <Text style={styles.backButtonText}>← Annuler</Text>\n          </Pressable>\n          <Pressable\n            style={[styles.primaryButton, { backgroundColor: brandColor }, saving && styles.buttonDisabled]}\n            onPress={handleTechNext}\n            disabled={saving}\n          >\n            <Text style={styles.primaryButtonText}>Suivant →</Text>\n          </Pressable>\n        </>\n      );\n    }\n\n    if (step === \"client_presence\") {\n      return (\n        <>\n          <Pressable style={styles.backButton} onPress={handleBack} disabled={saving}>\n            <Text style={styles.backButtonText}>← Revenir</Text>\n          </Pressable>\n          <Pressable\n            style={[\n              styles.primaryButton,\n              { backgroundColor: clientPresent ? brandColor : \"#16a34a\" },\n              saving && styles.buttonDisabled,\n            ]}\n            onPress={handleClientPresenceNext}\n            disabled={saving}\n          >\n            {saving ? (\n              <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n            ) : (\n              <Text style={styles.primaryButtonText}>\n                {clientPresent ? \"Suivant →\" : \"✅ Terminer (client absent)\"}\n              </Text>\n            )}\n          </Pressable>\n        </>\n      );\n    }\n\n    // client_sig\n    return (\n      <>\n        <Pressable style={styles.backButton} onPress={handleBack} disabled={saving}>\n          <Text style={styles.backButtonText}>← Revenir</Text>\n        </Pressable>\n        <Pressable\n          style={[styles.primaryButton, { backgroundColor: \"#16a34a\" }, saving && styles.buttonDisabled]}\n          onPress={handleClientSigConfirm}\n          disabled={saving}\n        >\n          {saving ? (\n            <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n          ) : (\n            <Text style={styles.primaryButtonText}>✅ Confirmer et terminer</Text>\n          )}\n        </Pressable>\n      </>\n    );\n  };\n\n  const stepLabels: Record<WizardStep, string> = {\n    tech: \"1/3 Technicien\",\n    client_presence: \"2/3 Client\",\n    client_sig: \"3/3 Signature client\",\n  };\n  const stepLabel = stepLabels[step];\n\n  return (\n    <View style={[styles.overlay, { paddingTop: insets.top + 8 }]}>\n      <View style={styles.header}>\n        <Text style={[styles.stepBadge, { color: brandColor }]}>{stepLabel}</Text>\n      </View>\n\n      <View style={styles.body}>{renderStep()}</View>\n\n      {localError ? <Text style={styles.errorText}>{localError}</Text> : null}\n      {errorMessage ? <Text style={styles.errorText}>{errorMessage}</Text> : null}\n\n      <View style={[styles.actionsBar, { paddingBottom: insets.bottom + 16 }]}>\n        {renderActions()}\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  overlay: {\n    position: \"absolute\",\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n    backgroundColor: \"#edf2f8\",\n    zIndex: 100,\n    elevation: 100,\n  },\n  header: {\n    paddingHorizontal: 16,\n    paddingVertical: 8,\n    borderBottomWidth: 1,\n    borderBottomColor: \"#d8e4f6\",\n    backgroundColor: \"#ffffff\",\n  },\n  stepBadge: { fontSize: 12, fontWeight: \"700\", textTransform: \"uppercase\" },\n  body: { flex: 1, padding: 16, gap: 10 },\n  title: { fontSize: 20, fontWeight: \"700\", color: \"#16325c\" },\n  subtitle: { fontSize: 13, color: \"#475569\", lineHeight: 18 },\n  // Le pad prend toute la place disponible : pas de ScrollView,\n  // donc les touches vont direct au SignatureCanvas sans conflit.\n  padFullContainer: {\n    flex: 1,\n    backgroundColor: \"#ffffff\",\n    borderRadius: 8,\n    overflow: \"hidden\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    marginTop: 4,\n  },\n  padHint: { fontSize: 12, color: \"#94a3b8\", fontWeight: \"600\" },\n  padOk: { fontSize: 12, color: \"#16a34a\", fontWeight: \"700\" },\n  clientPresenceContent: { gap: 16 },\n  radioGroup: { gap: 12, marginTop: 8 },\n  radioOption: {\n    paddingVertical: 18,\n    paddingHorizontal: 16,\n    borderWidth: 2,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 10,\n    backgroundColor: \"#ffffff\",\n    gap: 4,\n  },\n  radioOptionText: { fontSize: 16, fontWeight: \"700\", color: \"#334155\" },\n  radioOptionSubtext: { fontSize: 12, color: \"#64748b\" },\n  radioOptionTextActive: { color: \"#ffffff\" },\n  errorText: {\n    color: \"#b91c1c\",\n    fontSize: 13,\n    fontWeight: \"600\",\n    paddingHorizontal: 16,\n    paddingBottom: 6,\n  },\n  actionsBar: {\n    flexDirection: \"row\",\n    gap: 10,\n    padding: 16,\n    backgroundColor: \"#ffffff\",\n    borderTopWidth: 1,\n    borderTopColor: \"#d8e4f6\",\n  },\n  backButton: {\n    flex: 1,\n    backgroundColor: \"#e5e7eb\",\n    borderRadius: 10,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    paddingVertical: 12,\n  },\n  backButtonText: { color: \"#334155\", fontWeight: \"700\" },\n  primaryButton: {\n    flex: 2,\n    borderRadius: 10,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    paddingVertical: 12,\n  },\n  primaryButtonText: { color: \"#ffffff\", fontWeight: \"700\", fontSize: 14 },\n  buttonDisabled: { opacity: 0.6 },\n});\n","import React, {\n  useState,\n  useEffect,\n  useMemo,\n  useRef,\n  forwardRef,\n  useImperativeHandle,\n  useCallback,\n} from \"react\";\nimport { View, StyleSheet, ActivityIndicator, Text } from \"react-native\";\n\nimport htmlContent from \"./h5/html\";\nimport injectedSignaturePad from \"./h5/js/signature_pad\";\nimport injectedApplication from \"./h5/js/app\";\n\nimport { WebView } from \"react-native-webview\";\n\n// Constants for better maintainability\nconst MESSAGE_TYPES = {\n  BEGIN: \"BEGIN\",\n  END: \"END\",\n  EMPTY: \"EMPTY\",\n  CLEAR: \"CLEAR\",\n  UNDO: \"UNDO\",\n  REDO: \"REDO\",\n  DRAW: \"DRAW\",\n  ERASE: \"ERASE\",\n  CHANGE_PEN: \"CHANGE_PEN\",\n  CHANGE_PEN_SIZE: \"CHANGE_PEN_SIZE\"\n};\n\nconst styles = StyleSheet.create({\n  webBg: {\n    width: \"100%\",\n    backgroundColor: \"transparent\",\n    flex: 1,\n  },\n  loadingOverlayContainer: {\n    position: \"absolute\",\n    top: 0,\n    bottom: 0,\n    left: 0,\n    right: 0,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n});\n\nconst getParamForInjection = (param) => {\n  switch (typeof param) {\n    case \"string\":\n      return `'${param}'`\n    case \"object\":\n      return JSON.stringify(param)\n    default:\n      return param\n  }\n}\n\nconst SignatureView = forwardRef(\n  (\n    {\n      androidHardwareAccelerationDisabled = false,\n      autoClear = false,\n      backgroundColor = \"\",\n      bgHeight = 0,\n      bgWidth = 0,\n      bgSrc = null,\n      clearText = \"Clear\",\n      confirmText = \"Confirm\",\n      customHtml = null,\n      dataURL = \"\",\n      descriptionText = \"Sign above\",\n      dotSize = null,\n      imageType = \"\",\n      minWidth = 0.5,\n      maxWidth = 2.5,\n      minDistance = 5,\n      nestedScrollEnabled = false,\n      showsVerticalScrollIndicator = true,\n      onOK = () => { },\n      onEmpty = () => { },\n      onClear = () => { },\n      onUndo = () => { },\n      onRedo = () => { },\n      onDraw = () => { },\n      onErase = () => { },\n      onGetData = () => { },\n      onChangePenColor = () => { },\n      onChangePenSize = () => { },\n      onBegin = () => { },\n      onEnd = () => { },\n      onLoadEnd = () => { },\n      onError = () => { },\n      overlayHeight = 0,\n      overlayWidth = 0,\n      overlaySrc = null,\n      penColor = \"\",\n      rotated = false,\n      style = null,\n      scrollable = false,\n      trimWhitespace = false,\n      webStyle = \"\",\n      webviewContainerStyle = null,\n      androidLayerType = \"hardware\",\n      webviewProps = {},\n    },\n    ref\n  ) => {\n    const [loading, setLoading] = useState(true);\n    const [hasError, setHasError] = useState(false);\n    const [retryCount, setRetryCount] = useState(0);\n    // Key to force WebView remount when needed (e.g., after content process termination)\n    const [webViewKey, setWebViewKey] = useState(0);\n    const maxRetries = 3;\n    const webViewRef = useRef();\n    // Store dataURL for injection - updates when dataURL prop changes\n    const currentDataURLRef = useRef(dataURL);\n\n    // Update ref when dataURL prop changes\n    useEffect(() => {\n      currentDataURLRef.current = dataURL;\n    }, [dataURL]);\n\n    // Split source generation for better performance\n    // Include webViewKey to regenerate script when WebView needs remounting\n    const injectedScript = useMemo(() => {\n      let script = injectedSignaturePad + injectedApplication;\n      script = script.replace(/<%autoClear%>/g, autoClear);\n      script = script.replace(/<%trimWhitespace%>/g, trimWhitespace);\n      script = script.replace(/<%imageType%>/g, imageType || \"image/png\");\n      // Use currentDataURLRef to get the latest dataURL value\n      script = script.replace(/<%dataURL%>/g, currentDataURLRef.current || \"\");\n      script = script.replace(/<%penColor%>/g, penColor || \"black\");\n      script = script.replace(/<%backgroundColor%>/g, backgroundColor || \"rgba(255,255,255,0)\");\n      script = script.replace(/<%dotSize%>/g, dotSize || \"null\");\n      script = script.replace(/<%minWidth%>/g, minWidth || 0.5);\n      script = script.replace(/<%maxWidth%>/g, maxWidth || 2.5);\n      script = script.replace(/<%minDistance%>/g, minDistance || 5);\n      script = script.replace(/<%orientation%>/g, rotated || false);\n      return script;\n    }, [autoClear, trimWhitespace, imageType, penColor, backgroundColor, dotSize, minWidth, maxWidth, minDistance, rotated, webViewKey]);\n\n    const source = useMemo(() => {\n      const htmlContentValue = customHtml || htmlContent;\n      let html = htmlContentValue(injectedScript);\n      html = html.replace(/<%bgWidth%>/g, bgWidth || 0);\n      html = html.replace(/<%bgHeight%>/g, bgHeight || 0);\n      html = html.replace(/<%bgSrc%>/g, bgSrc || \"null\");\n      html = html.replace(/<%overlayWidth%>/g, overlayWidth || 0);\n      html = html.replace(/<%overlayHeight%>/g, overlayHeight || 0);\n      html = html.replace(/<%overlaySrc%>/g, overlaySrc || \"null\");\n      html = html.replace(/<%style%>/g, webStyle || \"\");\n      html = html.replace(/<%description%>/g, descriptionText || \"Sign above\");\n      html = html.replace(/<%confirm%>/g, confirmText || \"Confirm\");\n      html = html.replace(/<%clear%>/g, clearText || \"Clear\");\n      html = html.replace(/<%orientation%>/g, rotated || false);\n\n      return { html };\n    }, [injectedScript, customHtml, bgWidth, bgHeight, bgSrc, overlayWidth, overlayHeight, overlaySrc, webStyle, descriptionText, confirmText, clearText, rotated]);\n\n    // Handle dataURL changes dynamically without reloading WebView\n    const prevDataURLRef = useRef(dataURL);\n\n    useEffect(() => {\n      // Skip if dataURL hasn't changed or WebView isn't ready\n      if (prevDataURLRef.current === dataURL || !webViewRef.current || loading) {\n        return;\n      }\n\n      prevDataURLRef.current = dataURL;\n\n      // Update dataURL in WebView without full reload\n      if (dataURL) {\n        const script = `\n          dataURL = '${dataURL}';\n          if (signaturePad && signaturePad.isEmpty()) {\n            signaturePad.fromDataURL(dataURL);\n          }\n          true;\n        `;\n        try {\n          webViewRef.current.injectJavaScript(script);\n        } catch (error) {\n          console.warn(\"Failed to update dataURL:\", error);\n        }\n      }\n    }, [dataURL, loading]);\n\n    const isJson = (str) => {\n      try {\n        JSON.parse(str);\n      } catch (e) {\n        return false;\n      }\n      return true;\n    };\n\n    // Enhanced message handling with error handling\n    const getSignature = useCallback((e) => {\n      if (!e?.nativeEvent?.data) {\n        console.warn(\"Invalid message received from WebView\");\n        return;\n      }\n\n      const data = e.nativeEvent.data;\n\n      try {\n        switch (data) {\n          case MESSAGE_TYPES.BEGIN:\n            onBegin();\n            break;\n          case MESSAGE_TYPES.END:\n            onEnd();\n            break;\n          case MESSAGE_TYPES.EMPTY:\n            onEmpty();\n            break;\n          case MESSAGE_TYPES.CLEAR:\n            onClear();\n            break;\n          case MESSAGE_TYPES.UNDO:\n            onUndo();\n            break;\n          case MESSAGE_TYPES.REDO:\n            onRedo();\n            break;\n          case MESSAGE_TYPES.DRAW:\n            onDraw();\n            break;\n          case MESSAGE_TYPES.ERASE:\n            onErase();\n            break;\n          case MESSAGE_TYPES.CHANGE_PEN:\n            onChangePenColor();\n            break;\n          case MESSAGE_TYPES.CHANGE_PEN_SIZE:\n            onChangePenSize();\n            break;\n          default:\n            if (isJson(data)) {\n              onGetData(data);\n            } else if (typeof data === \"string\" && data.startsWith(\"data:\")) {\n              onOK(data);\n            } else {\n              console.warn(\"Unknown message type:\", data);\n            }\n        }\n      } catch (error) {\n        console.error(\"Error handling WebView message:\", error);\n      }\n    }, [onBegin, onEnd, onEmpty, onClear, onUndo, onRedo, onDraw, onErase, onChangePenColor, onChangePenSize, onGetData, onOK]);\n\n    // Enhanced WebView method execution with error handling\n    const executeWebViewMethod = useCallback((method, params = []) => {\n      if (!webViewRef.current) {\n        console.warn(`WebView ref is null when calling ${method}`);\n        return;\n      }\n\n      try {\n        const script = params.length > 0\n          ? `${method}(${params.map(getParamForInjection).join(',')});true;`\n          : `${method}();true;`;\n        webViewRef.current.injectJavaScript(script);\n      } catch (error) {\n        console.error(`Error executing WebView method ${method}:`, error);\n      }\n    }, []);\n\n    useImperativeHandle(\n      ref,\n      () => ({\n        readSignature: () => executeWebViewMethod('readSignature'),\n        clearSignature: () => executeWebViewMethod('clearSignature'),\n        undo: () => executeWebViewMethod('undo'),\n        redo: () => executeWebViewMethod('redo'),\n        draw: () => executeWebViewMethod('draw'),\n        erase: () => executeWebViewMethod('erase'),\n        changePenColor: (color) => {\n          if (typeof color !== 'string') {\n            console.warn('changePenColor: color must be a string');\n            return;\n          }\n          executeWebViewMethod('changePenColor', [color]);\n        },\n        changePenSize: (minW, maxW) => {\n          if (typeof minW !== 'number' || typeof maxW !== 'number') {\n            console.warn('changePenSize: minW and maxW must be numbers');\n            return;\n          }\n          executeWebViewMethod('changePenSize', [minW, maxW]);\n        },\n        getData: () => executeWebViewMethod('getData'),\n        fromData: (pointGroups) => {\n          if (!pointGroups) {\n            console.warn('fromData: pointGroups must be an array');\n            return;\n          }\n          executeWebViewMethod('fromData', [pointGroups, false]);\n        },\n        // New method to set dataURL without causing WebView reload\n        setDataURL: (url) => {\n          if (typeof url !== 'string') {\n            console.warn('setDataURL: url must be a string');\n            return;\n          }\n          if (!webViewRef.current) {\n            console.warn('WebView ref is null when calling setDataURL');\n            return;\n          }\n          const script = `\n            dataURL = '${url}';\n            if (signaturePad) {\n              signaturePad.clear();\n              if (dataURL) {\n                signaturePad.fromDataURL(dataURL);\n              }\n            }\n            true;\n          `;\n          try {\n            webViewRef.current.injectJavaScript(script);\n          } catch (error) {\n            console.error('Error executing setDataURL:', error);\n          }\n        },\n        // Force reinitialize WebView - useful for bottom sheets/modals where WebView state is lost\n        reinitialize: () => {\n          setLoading(true);\n          setHasError(false);\n          setWebViewKey(prev => prev + 1);\n        },\n      }),\n      [executeWebViewMethod]\n    );\n\n    const renderError = useCallback(({ nativeEvent }) => {\n      console.error(\"WebView error: \", nativeEvent);\n      setHasError(true);\n\n      // Call user-provided error handler\n      try {\n        onError(new Error(`WebView error: ${nativeEvent.description || nativeEvent.code}`));\n      } catch (err) {\n        console.warn('Error in onError callback:', err);\n      }\n\n      // Attempt to recover from error with retry logic\n      if (webViewRef.current && nativeEvent.code !== -999 && retryCount < maxRetries) {\n        setTimeout(() => {\n          try {\n            setRetryCount(prev => prev + 1);\n            webViewRef.current.reload();\n            setHasError(false);\n          } catch (error) {\n            console.error(\"Failed to reload WebView after error:\", error);\n          }\n        }, Math.min(1000 * Math.pow(2, retryCount), 5000)); // Exponential backoff\n      }\n    }, [onError, retryCount, maxRetries]);\n\n    // Handle iOS WebView content process termination (WKWebView can be killed when app is backgrounded)\n    // This is crucial for bottom sheets and modals where the component stays mounted but WebView is killed\n    const handleContentProcessDidTerminate = useCallback(() => {\n      console.warn(\"WebView content process terminated, reinitializing...\");\n      setLoading(true);\n      setHasError(false);\n      // Increment key to force WebView remount with fresh JavaScript context\n      setWebViewKey(prev => prev + 1);\n    }, []);\n\n    const handleLoadEnd = useCallback(() => {\n      setLoading(false);\n      setHasError(false);\n      setRetryCount(0);\n\n      try {\n        onLoadEnd();\n      } catch (error) {\n        console.warn('Error in onLoadEnd callback:', error);\n      }\n    }, [onLoadEnd]);\n\n    // Performance monitoring\n    const handleLoadStart = useCallback(() => {\n      setLoading(true);\n    }, []);\n\n    const handleLoadProgress = useCallback(({ nativeEvent }) => {\n      // Optional: Add progress monitoring\n      if (nativeEvent.progress === 1) {\n        setLoading(false);\n      }\n    }, []);\n\n    return (\n      <View style={[styles.webBg, style]}>\n        <WebView\n          // Key for forcing remount when WebView needs reinitialization\n          key={`signature-webview-${webViewKey}`}\n          // Core functionality props (cannot be overridden)\n          ref={webViewRef}\n          source={source}\n          onMessage={getSignature}\n          onError={renderError}\n          onLoadEnd={handleLoadEnd}\n          onLoadStart={handleLoadStart}\n          onLoadProgress={handleLoadProgress}\n          // Handle iOS WKWebView content process termination (crucial for bottom sheets/modals)\n          onContentProcessDidTerminate={handleContentProcessDidTerminate}\n          javaScriptEnabled={true}\n          useWebKit={true}\n          // Default component props (can be overridden by webviewProps)\n          bounces={false}\n          style={[{ flex: 1 }, webviewContainerStyle]}\n          scrollEnabled={scrollable}\n          androidLayerType={androidLayerType}\n          androidHardwareAccelerationDisabled={\n            androidHardwareAccelerationDisabled\n          }\n          nestedScrollEnabled={nestedScrollEnabled}\n          showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n          // Default performance optimizations\n          cacheEnabled={true}\n          allowsInlineMediaPlayback={false}\n          mediaPlaybackRequiresUserAction={true}\n          allowsBackForwardNavigationGestures={false}\n          // Default security enhancements\n          allowsLinkPreview={false}\n          allowFileAccess={false}\n          allowFileAccessFromFileURLs={false}\n          allowUniversalAccessFromFileURLs={false}\n          mixedContentMode=\"never\"\n          originWhitelist={['*']}\n          // Default error recovery\n          startInLoadingState={true}\n          // User-provided WebView props (can override defaults but not core functionality)\n          {...webviewProps}\n        />\n        {(loading || hasError) && (\n          <View style={styles.loadingOverlayContainer}>\n            {hasError ? (\n              <Text style={{ color: '#ff0000', textAlign: 'center', padding: 10 }}>\n                Error loading signature pad{retryCount > 0 ? ` (Retry ${retryCount}/${maxRetries})` : ''}\n              </Text>\n            ) : (\n              <ActivityIndicator color={\"#007AFF\"} size=\"small\" />\n            )}\n          </View>\n        )}\n      </View>\n    );\n  }\n);\n\nexport default SignatureView;\n","export default (script) =>\n  `<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <title>Signature Canvas</title>\n  <meta name=\"description\" content=\"Signature Pad - HTML5 canvas based smooth signature drawing using variable width spline interpolation.\">\n\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no\">\n\n  <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n  <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n\n  <style>\n    * {\n        box-sizing: border-box;\n        margin: 0;\n        padding: 0;\n    }\n    html, body {\n      width: 100%;\n      height: 100%;\n      margin: 0;\n      padding: 0;\n      overflow: hidden;\n    }\n    body {\n      font-family: Helvetica, Sans-Serif;\n      -moz-user-select: none;\n      -webkit-user-select: none;\n      -ms-user-select: none;\n    }\n\n    .rotated-true {\n      transform: rotate(90deg);\n      transform-origin:bottom left;\n\n      position:absolute;\n      top: -100vw;\n      left: 0;\n\n      height:100vw;\n      width:100vh;\n\n      overflow:auto;\n    }\n    .rotated-false {\n      width: 100%;\n      height: 100%;\n    }\n    .m-signature-pad {\n      font-size: 10px;\n      width: 100%;\n      height: 100%;\n      border: 1px solid #e8e8e8;\n      background-color: #fff;\n      box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.08) inset;\n    }\n\n    .m-signature-pad--body {\n      position: relative;\n      width: 100%;\n      height: 100%;\n      border: 1px solid #f4f4f4;\n    }\n\n    .m-signature-pad--body canvas {\n        display: block;\n        position: absolute;\n        left: 0;\n        top: 0;\n        width: 100%;\n        height: 100%;\n        border-radius: 4px;\n        box-shadow: 0 0 5px rgba(0, 0, 0, 0.02) inset;\n      }\n    \n    .m-signature-pad--footer {\n      padding: 0px 20px;\n      margin-top: 10px;\n      position: relative;\n      height: 40px;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n    \n    .m-signature-pad--footer\n      .description {\n        color: #C3C3C3;\n        text-align: center;\n        font-size: 1.2em;\n      }\n    \n    .m-signature-pad--footer\n      .button {\n        background-color: #3F99F7;\n        height: 32px;\n        padding: 0 20px;\n        line-height: 32px;\n        text-align: center;\n        color: #FFF;\n        border: 1px solid transparent;\n        border-radius: 4px;\n        outline: none;\n        box-shadow: none;\n      }\n    \n    .m-signature-pad--footer\n      .button.clear {\n      }\n    \n    .m-signature-pad--footer\n      .button.save {\n      }\n    \n    @media screen and (max-width: 1024px) {\n      .m-signature-pad {\n        width: 100%;\n        height: 100%;\n      }\n      #github {\n        display: none;\n      }\n    }\n    \n    @media screen and (min-device-width: 768px) and (max-device-width: 1024px) {\n      .m-signature-pad {\n        margin: 0;\n      }\n    }\n    \n    @media screen and (max-height: 320px) {\n      .m-signature-pad--body {\n        left: 0;\n        right: 0;\n        top: 0;\n        bottom: 32px;\n      }\n      .m-signature-pad--footer {\n        left: 20px;\n        right: 20px;\n        bottom: 4px;\n        height: 28px;\n      }\n      .m-signature-pad--footer\n        .description {\n          font-size: 1em;\n          margin-top: 1em;\n        }\n    }\n    <%style%>\n    </style>\n</head>\n<body onselectstart=\"return false\">\n  <div class=\"rotated-<%orientation%>\">\n    <div id=\"signature-pad\" class=\"m-signature-pad\">\n      <div class=\"m-signature-pad--body\">\n        <img style=\"position: absolute; top: 0; left: 0; pointer-events: none;\" src=<%bgSrc%> width=<%bgWidth%> height=<%bgHeight%> />\n        <canvas></canvas>\n        <img style=\"position: absolute; top: 0; left: 0; pointer-events: none;\" src=<%overlaySrc%> width=<%overlayWidth%> height=<%overlayHeight%> />\n      </div>\n      <div class=\"m-signature-pad--footer\">\n        <button type=\"button\" class=\"button clear\" data-action=\"clear\"><%clear%></button>\n        <div class=\"description\"><%description%></div>\n        <button type=\"button\" class=\"button save\" data-action=\"save\"><%confirm%></button>\n      </div>\n    </div>\n  </div>\n\n  <script>\n    ${script}\n  </script>\n</body>\n</html>`;\n","export default `\n/*!\n * Signature Pad v3.0.0-beta.3 | https://github.com/szimek/signature_pad\n * (c) 2018 Szymon Nowak | Released under the MIT license\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global.SignaturePad = factory());\n}(this, (function () { 'use strict';\n\n  var Point = (function () {\n      function Point(x, y, time) {\n          this.x = x;\n          this.y = y;\n          this.time = time || Date.now();\n      }\n      Point.prototype.distanceTo = function (start) {\n          return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n      };\n      Point.prototype.equals = function (other) {\n          return this.x === other.x && this.y === other.y && this.time === other.time;\n      };\n      Point.prototype.velocityFrom = function (start) {\n          return this.time !== start.time\n              ? this.distanceTo(start) / (this.time - start.time)\n              : 0;\n      };\n      return Point;\n  }());\n\n  var Bezier = (function () {\n      function Bezier(startPoint, control2, control1, endPoint, startWidth, endWidth) {\n          this.startPoint = startPoint;\n          this.control2 = control2;\n          this.control1 = control1;\n          this.endPoint = endPoint;\n          this.startWidth = startWidth;\n          this.endWidth = endWidth;\n      }\n      Bezier.fromPoints = function (points, widths) {\n          var c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n          var c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n          return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n      };\n      Bezier.calculateControlPoints = function (s1, s2, s3) {\n          var dx1 = s1.x - s2.x;\n          var dy1 = s1.y - s2.y;\n          var dx2 = s2.x - s3.x;\n          var dy2 = s2.y - s3.y;\n          var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n          var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n          var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n          var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n          var dxm = m1.x - m2.x;\n          var dym = m1.y - m2.y;\n          var k = l2 / (l1 + l2);\n          var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n          var tx = s2.x - cm.x;\n          var ty = s2.y - cm.y;\n          return {\n              c1: new Point(m1.x + tx, m1.y + ty),\n              c2: new Point(m2.x + tx, m2.y + ty)\n          };\n      };\n      Bezier.prototype.length = function () {\n          var steps = 10;\n          var length = 0;\n          var px;\n          var py;\n          for (var i = 0; i <= steps; i += 1) {\n              var t = i / steps;\n              var cx = this.point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n              var cy = this.point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n              if (i > 0) {\n                  var xdiff = cx - px;\n                  var ydiff = cy - py;\n                  length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n              }\n              px = cx;\n              py = cy;\n          }\n          return length;\n      };\n      Bezier.prototype.point = function (t, start, c1, c2, end) {\n          return (start * (1.0 - t) * (1.0 - t) * (1.0 - t))\n              + (3.0 * c1 * (1.0 - t) * (1.0 - t) * t)\n              + (3.0 * c2 * (1.0 - t) * t * t)\n              + (end * t * t * t);\n      };\n      return Bezier;\n  }());\n\n  function throttle(fn, wait) {\n      if (wait === void 0) { wait = 250; }\n      var previous = 0;\n      var timeout = null;\n      var result;\n      var storedContext;\n      var storedArgs;\n      var later = function () {\n          previous = Date.now();\n          timeout = null;\n          result = fn.apply(storedContext, storedArgs);\n          if (!timeout) {\n              storedContext = null;\n              storedArgs = [];\n          }\n      };\n      return function wrapper() {\n          var args = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n              args[_i] = arguments[_i];\n          }\n          var now = Date.now();\n          var remaining = wait - (now - previous);\n          storedContext = this;\n          storedArgs = args;\n          if (remaining <= 0 || remaining > wait) {\n              if (timeout) {\n                  clearTimeout(timeout);\n                  timeout = null;\n              }\n              previous = now;\n              result = fn.apply(storedContext, storedArgs);\n              if (!timeout) {\n                  storedContext = null;\n                  storedArgs = [];\n              }\n          }\n          else if (!timeout) {\n              timeout = window.setTimeout(later, remaining);\n          }\n          return result;\n      };\n  }\n\n  var SignaturePad = (function () {\n      function SignaturePad(canvas, options) {\n          if (options === void 0) options = {};\n          var _this = this;\n          this.canvas = canvas;\n          this.options = options;\n          this._startingSignature = null;\n          this._isDrawing = true;\n          this._history = [];\n          this._handleMouseDown = function (event) {\n              if (event.which === 1) {\n                  _this._mouseButtonDown = true;\n                  _this._strokeBegin(event);\n              }\n          };\n          this._handleMouseMove = function (event) {\n              if (_this._mouseButtonDown) {\n                  _this._strokeMoveUpdate(event);\n              }\n          };\n          this._handleMouseUp = function (event) {\n              if (event.which === 1 && _this._mouseButtonDown) {\n                  _this._mouseButtonDown = false;\n                  _this._strokeEnd(event);\n              }\n          };\n          this._handleTouchStart = function (event) {\n              event.preventDefault();\n              if (event.targetTouches.length === 1) {\n                  var touch = event.changedTouches[0];\n                  _this._strokeBegin(touch);\n              }\n          };\n          this._handleTouchMove = function (event) {\n              event.preventDefault();\n              var touch = event.targetTouches[0];\n              _this._strokeMoveUpdate(touch);\n          };\n          this._handleTouchEnd = function (event) {\n              var wasCanvasTouched = event.target === _this.canvas;\n              if (wasCanvasTouched) {\n                  event.preventDefault();\n                  var touch = event.changedTouches[0];\n                  _this._strokeEnd(touch);\n              }\n          };\n          this.velocityFilterWeight = options.velocityFilterWeight || 0.7;\n          this.minWidth = options.minWidth || 0.5;\n          this.maxWidth = options.maxWidth || 2.5;\n          this.throttle = \"throttle\" in options ? options.throttle : 16;\n          this.minDistance = \"minDistance\" in options ? options.minDistance : 5;\n          this._strokeMoveUpdate = this.throttle\n            ? (this._strokeMoveUpdate = throttle(\n                SignaturePad.prototype._strokeUpdate,\n                this.throttle\n              ))\n            : SignaturePad.prototype._strokeUpdate;\n          this.dotSize = options.dotSize || function dotSize() {return (this.minWidth + this.maxWidth) / 2;};\n          this.penColor = options.penColor || \"black\";\n          this.backgroundColor = options.backgroundColor || \"rgba(255,255,255,0)\";\n          this.onBegin = options.onBegin;\n          this.onEnd = options.onEnd;\n          this._ctx = canvas.getContext(\"2d\");\n          this.clear();\n          this.on();\n      }\n      SignaturePad.prototype.clear = function () {\n          var ctx = this._ctx;\n          var canvas = this.canvas;\n          ctx.fillStyle = this.backgroundColor;\n          ctx.clearRect(0, 0, canvas.width, canvas.height);\n          ctx.fillRect(0, 0, canvas.width, canvas.height);\n          this._data = [];\n          this._reset();\n          this._isEmpty = true;\n      };\n      SignaturePad.prototype.undo = function () {\n        const data = this.toData();\n        if (data && data.length) {\n            this._history.push(data.pop()); // remove the last stroke\n        } else if (this._startingSignature) {\n            return; // they performed undo of background sig\n        }\n        this.clear();\n        if (this._startingSignature) {\n            this.fromDataURL(this._startingSignature, {}, () => this.fromData(data, true));\n        } else {\n            this.fromData(data, true);\n        }\n      };\n      SignaturePad.prototype.redo = function () {\n        if (!this._history.length) return;\n        const data = this.toData();\n        data.push(this._history.pop());\n        this.clear();\n        if (this._startingSignature) {\n            this.fromDataURL(this._startingSignature, {}, () => this.fromData(data, true));\n        } else {\n            this.fromData(data, true);\n        }\n      };\n      SignaturePad.prototype.draw = function () {\n        this._ctx.globalCompositeOperation = \"source-over\";\n        this._isDrawing = true;\n      };\n      SignaturePad.prototype.erase = function () {\n        this._ctx.globalCompositeOperation = \"destination-out\";\n        this._isDrawing = false;\n      };\n      SignaturePad.prototype.fromDataURL = function (dataUrl, options, callback) {\n          var _this = this;\n          if (options === void 0) options = {};\n          var image = new Image();\n          var ratio = options.ratio || window.devicePixelRatio || 1;\n          var width = options.width || this.canvas.width / ratio;\n          var height = options.height || this.canvas.height / ratio;\n          this._reset();\n          image.src = dataUrl;\n          image.onload = function () {\n            _this._ctx.globalCompositeOperation = \"source-over\";\n            _this._ctx.drawImage(image, 0, 0, width, height);\n            _this._ctx.globalCompositeOperation = _this._isDrawing ? \"source-over\" : \"destination-out\";\n              if (callback) {\n                  callback();\n              }\n          };\n          image.onerror = function (error) {\n              if (callback) {\n                  callback(error);\n              }\n          };\n          this._isEmpty = false;\n          if (!this._startingSignature) this._startingSignature = dataUrl;\n      };\n      SignaturePad.prototype.toDataURL = function (type = \"image/png\", encoderOptions) {\n        return type === \"image/svg+xml\" ? this._toSVG() : this.canvas.toDataURL(type, encoderOptions);\n      };\n      SignaturePad.prototype.on = function () {\n          this.canvas.style.touchAction = 'none';\n          this.canvas.style.msTouchAction = 'none';\n          if (window.PointerEvent) {\n              this._handlePointerEvents();\n          }\n          else {\n              this._handleMouseEvents();\n              if ('ontouchstart' in window) {\n                  this._handleTouchEvents();\n              }\n          }\n      };\n      SignaturePad.prototype.off = function () {\n          this.canvas.style.touchAction = 'auto';\n          this.canvas.style.msTouchAction = 'auto';\n          this.canvas.removeEventListener('pointerdown', this._handleMouseDown);\n          this.canvas.removeEventListener('pointermove', this._handleMouseMove);\n          document.removeEventListener('pointerup', this._handleMouseUp);\n          this.canvas.removeEventListener('mousedown', this._handleMouseDown);\n          this.canvas.removeEventListener('mousemove', this._handleMouseMove);\n          document.removeEventListener('mouseup', this._handleMouseUp);\n          this.canvas.removeEventListener('touchstart', this._handleTouchStart);\n          this.canvas.removeEventListener('touchmove', this._handleTouchMove);\n          this.canvas.removeEventListener('touchend', this._handleTouchEnd);\n      };\n      SignaturePad.prototype.isEmpty = function () {\n          return this._isEmpty;\n      };\n      SignaturePad.prototype.fromData = function (pointGroups, suppressClear = false) {\n        var _this = this;\n        if (!suppressClear) this.clear();\n        if (pointGroups && pointGroups.length > 0) {\n          this._fromData(\n            pointGroups,\n            ({ color, curve }) => _this._drawCurve({ color, curve }),\n            ({ color, point, dotSize }) => _this._drawDot({ color, point, dotSize })\n          );\n          this._data = pointGroups;\n        }\n      };\n      SignaturePad.prototype.toData = function () {\n          return this._data;\n      };\n      SignaturePad.prototype._strokeBegin = function (event) {\n        var newPointGroup = {\n          color: this.penColor,\n          dotSize: typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize,\n          minWidth: this.minWidth,\n          maxWidth: this.maxWidth,\n          compositeOperation: this._ctx.globalCompositeOperation,\n          points: [],\n        };\n        if (typeof this.onBegin === \"function\") {\n          this.onBegin(event);\n        }\n        this._data.push(newPointGroup);\n        this._history = [];\n        this._reset();\n        this._strokeUpdate(event);\n      };\n      SignaturePad.prototype._strokeUpdate = function (event) {\n          var x = event.clientX;\n          var y = event.clientY;\n          var point = this._createPoint(x, y);\n          var lastPointGroup = this._data[this._data.length - 1];\n          var lastPoints = lastPointGroup.points;\n          var lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];\n          var isLastPointTooClose = lastPoint\n              ? point.distanceTo(lastPoint) <= this.minDistance\n              : false;\n          var color = lastPointGroup.color;\n          if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n              var curve = this._addPoint(point);\n              if (!lastPoint) {\n                  this._drawDot({ color, point });\n              }\n              else if (curve) {\n                  this._drawCurve({ color, curve });\n              }\n              lastPoints.push({\n                  time: point.time,\n                  x: point.x,\n                  y: point.y\n              });\n          }\n      };\n      SignaturePad.prototype._strokeEnd = function (event) {\n          this._strokeUpdate(event);\n          if (typeof this.onEnd === 'function') {\n              this.onEnd(event);\n          }\n      };\n      SignaturePad.prototype._handlePointerEvents = function () {\n          this._mouseButtonDown = false;\n          this.canvas.addEventListener('pointerdown', this._handleMouseDown);\n          this.canvas.addEventListener('pointermove', this._handleMouseMove);\n          document.addEventListener('pointerup', this._handleMouseUp);\n      };\n      SignaturePad.prototype._handleMouseEvents = function () {\n          this._mouseButtonDown = false;\n          this.canvas.addEventListener('mousedown', this._handleMouseDown);\n          this.canvas.addEventListener('mousemove', this._handleMouseMove);\n          document.addEventListener('mouseup', this._handleMouseUp);\n      };\n      SignaturePad.prototype._handleTouchEvents = function () {\n          this.canvas.addEventListener('touchstart', this._handleTouchStart);\n          this.canvas.addEventListener('touchmove', this._handleTouchMove);\n          this.canvas.addEventListener('touchend', this._handleTouchEnd);\n      };\n      SignaturePad.prototype._reset = function () {\n          this._lastPoints = [];\n          this._lastVelocity = 0;\n          this._lastWidth = typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize;\n          this._ctx.fillStyle = this.penColor;\n      };\n      SignaturePad.prototype._createPoint = function (x, y) {\n          var rect = this.canvas.getBoundingClientRect();\n          if (<%orientation%>) {\n            return new Point(y - rect.top, rect.left+rect.width-x, new Date().getTime());\n          } else {\n            return new Point(x - rect.left, y - rect.top, new Date().getTime());\n          }\n      };\n      SignaturePad.prototype._addPoint = function (point, minWidth = this.minWidth, maxWidth = this.maxWidth) {\n          var _lastPoints = this._lastPoints;\n          _lastPoints.push(point);\n          if (_lastPoints.length > 2) {\n              if (_lastPoints.length === 3) {\n                  _lastPoints.unshift(_lastPoints[0]);\n              }\n              var widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2], minWidth, maxWidth);\n              var curve = Bezier.fromPoints(_lastPoints, widths);\n              _lastPoints.shift();\n              return curve;\n          }\n          return null;\n      };\n      SignaturePad.prototype._calculateCurveWidths = function (startPoint, endPoint, minWidth = this.minWidth, maxWidth = this.maxWidth) {\n          var velocity = this.velocityFilterWeight * endPoint.velocityFrom(startPoint) +\n              (1 - this.velocityFilterWeight) * this._lastVelocity;\n          var newWidth = this._strokeWidth(velocity, minWidth, maxWidth);\n          var widths = {\n              end: newWidth,\n              start: this._lastWidth\n          };\n          this._lastVelocity = velocity;\n          this._lastWidth = newWidth;\n          return widths;\n      };\n      SignaturePad.prototype._strokeWidth = function (velocity, minWidth = this.minWidth, maxWidth = this.maxWidth) {\n          return Math.max(maxWidth / (velocity + 1), minWidth);\n      };\n      SignaturePad.prototype._drawCurveSegment = function (x, y, width) {\n          var ctx = this._ctx;\n          ctx.moveTo(x, y);\n          ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n          this._isEmpty = false;\n      };\n      SignaturePad.prototype._drawCurve = function (_a) {\n          var color = _a.color, curve = _a.curve;\n          var ctx = this._ctx;\n          var widthDelta = curve.endWidth - curve.startWidth;\n          var drawSteps = Math.floor(curve.length()) * 2;\n          ctx.beginPath();\n          ctx.fillStyle = color;\n          for (var i = 0; i < drawSteps; i += 1) {\n              var t = i / drawSteps;\n              var tt = t * t;\n              var ttt = tt * t;\n              var u = 1 - t;\n              var uu = u * u;\n              var uuu = uu * u;\n              var x = uuu * curve.startPoint.x;\n              x += 3 * uu * t * curve.control1.x;\n              x += 3 * u * tt * curve.control2.x;\n              x += ttt * curve.endPoint.x;\n              var y = uuu * curve.startPoint.y;\n              y += 3 * uu * t * curve.control1.y;\n              y += 3 * u * tt * curve.control2.y;\n              y += ttt * curve.endPoint.y;\n              var width = curve.startWidth + ttt * widthDelta;\n              this._drawCurveSegment(x, y, width);\n          }\n          ctx.closePath();\n          ctx.fill();\n      };\n      SignaturePad.prototype._drawDot = function (_a) {\n        var color = _a.color, point = _a.point;\n        var ctx = this._ctx;\n        var width = _a.dotSize ? _a.dotSize : typeof this.dotSize === \"function\" ? this.dotSize() : this.dotSize;\n        ctx.beginPath();\n        this._drawCurveSegment(point.x, point.y, width);\n        ctx.closePath();\n        ctx.fillStyle = color;\n        ctx.fill();\n      };\n      SignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) {\n        for (var i = 0; i < pointGroups.length; i++) {\n          var group = pointGroups[i];\n          var color = group.color, points = group.points;\n          var minWidth = group.minWidth, maxWidth = group.maxWidth, dotSize = group.dotSize;\n          var compositeOperation = group.compositeOperation;\n          this._reset();\n          this._lastWidth = dotSize;\n          if (points.length > 1) {\n            for (var j = 0; j < points.length; j++) {\n              var point = new Point(points[j].x, points[j].y, points[j].time);\n              this._ctx.globalCompositeOperation = compositeOperation;\n              var curve = this._addPoint(point, minWidth, maxWidth);\n              if (curve) drawCurve({ color, curve });\n            };\n          } else drawDot({ color, point: points[0], dotSize });\n        };\n        this._ctx.globalCompositeOperation = this._isDrawing ? \"source-over\" : \"destination-out\";\n      };\n      SignaturePad.prototype._toSVG = function () {\n          var _this = this;\n          var pointGroups = this._data;\n          var ratio = Math.max(window.devicePixelRatio || 1, 1);\n          var minX = 0;\n          var minY = 0;\n          var maxX = this.canvas.width / ratio;\n          var maxY = this.canvas.height / ratio;\n          var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n          svg.setAttribute('width', this.canvas.width.toString());\n          svg.setAttribute('height', this.canvas.height.toString());\n          this._fromData(pointGroups, function (_a) {\n              var color = _a.color, curve = _a.curve;\n              var path = document.createElement(\"path\");\n              if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) {\n                var attr = \"M \" + curve.startPoint.x.toFixed(3) + \",\" + curve.startPoint.y.toFixed(3) + \" \" + (\"C \" + curve.control1.x.toFixed(3) + \",\" + curve.control1.y.toFixed(3) + \" \") + (curve.control2.x.toFixed(3) + \",\" + curve.control2.y.toFixed(3) + \" \") + (curve.endPoint.x.toFixed(3) + \",\" + curve.endPoint.y.toFixed(3));\n                path.setAttribute(\"d\", attr);\n                path.setAttribute(\"stroke-width\", (curve.endWidth * 2.25).toFixed(3));\n                path.setAttribute(\"stroke\", color);\n                path.setAttribute(\"fill\", \"none\");\n                path.setAttribute(\"stroke-linecap\", \"round\");\n                svg.appendChild(path);\n              }\n            },\n            function (_a) {\n              var color = _a.color,point = _a.point;\n              var circle = document.createElement(\"circle\");\n              var dotSize = _a.dotSize ? _a.dotSize : typeof _this.dotSize === \"function\" ? _this.dotSize() : _this.dotSize;\n              circle.setAttribute(\"r\", dotSize.toString());\n              circle.setAttribute(\"cx\", point.x.toString());\n              circle.setAttribute(\"cy\", point.y.toString());\n              circle.setAttribute(\"fill\", color);\n              svg.appendChild(circle);\n            }\n          );\n          var prefix = 'data:image/svg+xml;base64,';\n          var header = '<svg' +\n              ' xmlns=\"http://www.w3.org/2000/svg\"' +\n              ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"' +\n              (\" viewBox=\\\\\"\" + minX + \" \" + minY + \" \" + maxX + \" \" + maxY + \"\\\\\"\") +\n              (\" width=\\\\\"\" + maxX + \"\\\\\"\") +\n              (\" height=\\\\\"\" + maxY + \"\\\\\"\") +\n              '>';\n          var body = svg.innerHTML;\n          if (body === undefined) {\n              var dummy = document.createElement('dummy');\n              var nodes = svg.childNodes;\n              dummy.innerHTML = '';\n              for (var i = 0; i < nodes.length; i += 1) {\n                  dummy.appendChild(nodes[i].cloneNode(true));\n              }\n              body = dummy.innerHTML;\n          }\n          var footer = '</svg>';\n          var data = header + body + footer;\n          return prefix + btoa(data);\n      };\n      return SignaturePad;\n  }());\n\n  return SignaturePad;\n\n})));\n`;\n","export default `\n    var wrapper = document.getElementById(\"signature-pad\"),\n        clearButton = wrapper && wrapper.querySelector(\"[data-action=clear]\"),\n        saveButton = wrapper && wrapper.querySelector(\"[data-action=save]\"),\n        canvas = wrapper && wrapper.querySelector(\"canvas\"),\n        signaturePad;\n\n    function resizeCanvas() {\n        if (!canvas || !canvas.getContext || !signaturePad) {\n            return;\n        }\n\n        var context = canvas.getContext(\"2d\");\n        var ratio = Math.max(window.devicePixelRatio || 1, 1);\n\n        // Save current signature data before resizing\n        var imgData = signaturePad.toData();\n        var hasDrawnContent = imgData && imgData.length > 0;\n\n        // Use canvas client dimensions\n        var width = canvas.clientWidth;\n        var height = canvas.clientHeight;\n\n        // Resize canvas (this clears the canvas)\n        canvas.width = width * ratio;\n        canvas.height = height * ratio;\n        context.scale(ratio, ratio);\n\n        // Restore signature content\n        if (hasDrawnContent) {\n            signaturePad.fromData(imgData);\n        } else if (dataURL) {\n            signaturePad.fromDataURL(dataURL);\n        }\n    }\n\n    signaturePad = new SignaturePad(canvas, {\n        onBegin: () => window.ReactNativeWebView.postMessage(\"BEGIN\"),\n        onEnd: () => window.ReactNativeWebView.postMessage(\"END\"),\n        penColor: '<%penColor%>',\n        backgroundColor: '<%backgroundColor%>',\n        dotSize: <%dotSize%>,\n        minWidth: <%minWidth%>,\n        maxWidth: <%maxWidth%>,\n        minDistance: <%minDistance%>,\n    });\n\n    // Initial canvas setup\n    resizeCanvas();\n\n    function clearSignature () {\n        signaturePad.clear();\n        dataURL='';\n        window.ReactNativeWebView.postMessage(\"CLEAR\");\n    }\n\n    function undo() {\n        signaturePad.undo();\n        window.ReactNativeWebView.postMessage(\"UNDO\");\n    }\n\n    function redo() {\n        signaturePad.redo();\n        window.ReactNativeWebView.postMessage(\"REDO\");\n      }\n\n    function changePenColor(color) {\n        if (!signaturePad) {\n            return;\n        }\n        signaturePad.penColor = color;\n        window.ReactNativeWebView && window.ReactNativeWebView.postMessage(\"CHANGE_PEN\");\n    }\n\n    function changePenSize(minW, maxW) {\n        if (!signaturePad) {\n            return;\n        }\n        if (typeof minW !== 'number' || typeof maxW !== 'number' || minW < 0 || maxW < minW) {\n            return;\n        }\n        signaturePad.minWidth = minW;\n        signaturePad.maxWidth = maxW;\n        window.ReactNativeWebView && window.ReactNativeWebView.postMessage(\"CHANGE_PEN_SIZE\");\n    }\n\n    function getData () {\n        var data = signaturePad.toData();\n        window.ReactNativeWebView.postMessage(JSON.stringify(data));\n    }\n\n    function fromData (pointGroups) {\n        signaturePad.fromData(pointGroups);\n        window.ReactNativeWebView.postMessage(JSON.stringify(pointGroups));\n    }\n\n    function draw() {\n      signaturePad.draw();\n      window.ReactNativeWebView.postMessage(\"DRAW\");\n    }\n\n    function erase() {\n      signaturePad.erase();\n      window.ReactNativeWebView.postMessage(\"ERASE\");\n    }\n\n    function cropWhitespace(url) {\n        var myImage = new Image();\n        myImage.crossOrigin = \"Anonymous\";\n        myImage.onload = function(){\n            window.ReactNativeWebView.postMessage(removeImageBlanks(myImage));\n        }\n        myImage.src = url;\n\n        function removeImageBlanks(imageObject) {\n            var imgWidth = imageObject.width;\n            var imgHeight = imageObject.height;\n            var canvas = document.createElement('canvas');\n            canvas.setAttribute(\"width\", imgWidth);\n            canvas.setAttribute(\"height\", imgHeight);\n            var context = canvas.getContext('2d');\n            context.drawImage(imageObject, 0, 0);\n\n            var imageData = context.getImageData(0, 0, imgWidth, imgHeight),\n                data = imageData.data,\n                getRGB = function(x, y) {\n                    if (x < 0 || x >= imgWidth || y < 0 || y >= imgHeight) {\n                        return { red: 255, green: 255, blue: 255, opacity: 255 };\n                    }\n                    var offset = imgWidth * y + x;\n                    return {\n                        red:     data[offset * 4],\n                        green:   data[offset * 4 + 1],\n                        blue:    data[offset * 4 + 2],\n                        opacity: data[offset * 4 + 3]\n                    };\n                },\n                isWhite = function (rgb) {\n                    return !rgb.opacity || (rgb.red > 200 && rgb.green > 200 && rgb.blue > 200);\n                },\n                scanY = function (fromTop) {\n                    var offset = fromTop ? 1 : -1;\n                    for(var y = fromTop ? 0 : imgHeight - 1; fromTop ? (y < imgHeight) : (y > -1); y += offset) {\n                        for(var x = 0; x < imgWidth; x++) {\n                            var rgb = getRGB(x, y);\n                            if (!isWhite(rgb)) {\n                                if (fromTop) {\n                                    return y;\n                                } else {\n                                    return Math.min(y + 1, imgHeight);\n                                }\n                            }\n                        }\n                    }\n                    return null;\n                },\n                scanX = function (fromLeft) {\n                    var offset = fromLeft? 1 : -1;\n                    for(var x = fromLeft ? 0 : imgWidth - 1; fromLeft ? (x < imgWidth) : (x > -1); x += offset) {\n                        for(var y = 0; y < imgHeight; y++) {\n                            var rgb = getRGB(x, y);\n                            if (!isWhite(rgb)) {\n                                if (fromLeft) {\n                                    return x;\n                                } else {\n                                    return Math.min(x + 1, imgWidth);\n                                }\n                            }\n                        }\n                    }\n                    return null;\n                };\n\n            var cropTop = scanY(true),\n                cropBottom = scanY(false),\n                cropLeft = scanX(true),\n                cropRight = scanX(false),\n                cropWidth = cropRight - cropLeft,\n                cropHeight = cropBottom - cropTop;\n\n            canvas.setAttribute(\"width\", cropWidth);\n            canvas.setAttribute(\"height\", cropHeight);\n            canvas.getContext(\"2d\").drawImage(imageObject,\n                cropLeft, cropTop, cropWidth, cropHeight,\n                0, 0, cropWidth, cropHeight);\n\n            return canvas.toDataURL('<%imageType%>');\n        }\n    }\n\n    function readSignature() {\n        if (!signaturePad) {\n            return;\n        }\n\n        if (signaturePad.isEmpty()) {\n            window.ReactNativeWebView && window.ReactNativeWebView.postMessage(\"EMPTY\");\n        } else {\n            var imageType = '<%imageType%>' || 'image/png';\n            var url = signaturePad.toDataURL(imageType);\n\n            if (trimWhitespace === true) {\n                cropWhitespace(url);\n            } else {\n                window.ReactNativeWebView && window.ReactNativeWebView.postMessage(url);\n            }\n\n            if (autoClear === true && signaturePad) {\n                signaturePad.clear();\n            }\n        }\n    }\n\n    var autoClear = <%autoClear%>;\n\n    var trimWhitespace = <%trimWhitespace%>;\n\n    var dataURL = '<%dataURL%>';\n\n    if (dataURL) signaturePad.fromDataURL(dataURL);\n\n    if (clearButton) {\n        clearButton.addEventListener(\"click\", clearSignature);\n    }\n\n    if (saveButton) {\n        saveButton.addEventListener(\"click\", function() {\n            readSignature();\n            setTimeout(function() {\n                getData();\n            }, 10);\n        });\n    }\n`;\n","import WebView from './WebView';\n\nexport { WebView };\nexport default WebView;\n","import type { HostComponent, ViewProps } from 'react-native';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport {\n  DirectEventHandler,\n  Double,\n  Int32,\n  WithDefault,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\n\nexport type WebViewNativeEvent = Readonly<{\n  url: string;\n  loading: boolean;\n  title: string;\n  canGoBack: boolean;\n  canGoForward: boolean;\n  lockIdentifier: Double;\n}>;\nexport type WebViewCustomMenuSelectionEvent = Readonly<{\n  label: string;\n  key: string;\n  selectedText: string;\n}>;\nexport type WebViewMessageEvent = Readonly<{\n  url: string;\n  loading: boolean;\n  title: string;\n  canGoBack: boolean;\n  canGoForward: boolean;\n  lockIdentifier: Double;\n  data: string;\n}>;\nexport type WebViewOpenWindowEvent = Readonly<{\n  targetUrl: string;\n}>;\nexport type WebViewHttpErrorEvent = Readonly<{\n  url: string;\n  loading: boolean;\n  title: string;\n  canGoBack: boolean;\n  canGoForward: boolean;\n  lockIdentifier: Double;\n  description: string;\n  statusCode: Int32;\n}>;\n\nexport type WebViewErrorEvent = Readonly<{\n  url: string;\n  loading: boolean;\n  title: string;\n  canGoBack: boolean;\n  canGoForward: boolean;\n  lockIdentifier: Double;\n  domain?: string;\n  code: Int32;\n  description: string;\n}>;\n\nexport type WebViewNativeProgressEvent = Readonly<{\n  url: string;\n  loading: boolean;\n  title: string;\n  canGoBack: boolean;\n  canGoForward: boolean;\n  lockIdentifier: Double;\n  progress: Double;\n}>;\n\nexport type WebViewNavigationEvent = Readonly<{\n  url: string;\n  loading: boolean;\n  title: string;\n  canGoBack: boolean;\n  canGoForward: boolean;\n  lockIdentifier: Double;\n  navigationType:\n    | 'click'\n    | 'formsubmit'\n    | 'backforward'\n    | 'reload'\n    | 'formresubmit'\n    | 'other';\n  mainDocumentURL?: string;\n}>;\n\nexport type ShouldStartLoadRequestEvent = Readonly<{\n  url: string;\n  loading: boolean;\n  title: string;\n  canGoBack: boolean;\n  canGoForward: boolean;\n  lockIdentifier: Double;\n  navigationType:\n    | 'click'\n    | 'formsubmit'\n    | 'backforward'\n    | 'reload'\n    | 'formresubmit'\n    | 'other';\n  mainDocumentURL?: string;\n  isTopFrame: boolean;\n}>;\n\ntype ScrollEvent = Readonly<{\n  contentInset: {\n    bottom: Double;\n    left: Double;\n    right: Double;\n    top: Double;\n  };\n  contentOffset: {\n    y: Double;\n    x: Double;\n  };\n  contentSize: {\n    height: Double;\n    width: Double;\n  };\n  layoutMeasurement: {\n    height: Double;\n    width: Double;\n  };\n  targetContentOffset?: {\n    y: Double;\n    x: Double;\n  };\n  velocity?: {\n    y: Double;\n    x: Double;\n  };\n  zoomScale?: Double;\n  responderIgnoreScroll?: boolean;\n}>;\n\ntype WebViewRenderProcessGoneEvent = Readonly<{\n  didCrash: boolean;\n}>;\n\ntype WebViewDownloadEvent = Readonly<{\n  downloadUrl: string;\n}>;\n\n// type MenuItem = Readonly<{label: string, key: string}>;\n\nexport interface NativeProps extends ViewProps {\n  // Android only\n  allowFileAccess?: boolean;\n  allowsProtectedMedia?: boolean;\n  allowsFullscreenVideo?: boolean;\n  androidLayerType?: WithDefault<'none' | 'software' | 'hardware', 'none'>;\n  cacheMode?: WithDefault<\n    | 'LOAD_DEFAULT'\n    | 'LOAD_CACHE_ELSE_NETWORK'\n    | 'LOAD_NO_CACHE'\n    | 'LOAD_CACHE_ONLY',\n    'LOAD_DEFAULT'\n  >;\n  domStorageEnabled?: boolean;\n  downloadingMessage?: string;\n  forceDarkOn?: boolean;\n  geolocationEnabled?: boolean;\n  lackPermissionToDownloadMessage?: string;\n  messagingModuleName: string;\n  minimumFontSize?: Int32;\n  mixedContentMode?: WithDefault<'never' | 'always' | 'compatibility', 'never'>;\n  nestedScrollEnabled?: boolean;\n  onContentSizeChange?: DirectEventHandler<WebViewNativeEvent>;\n  onRenderProcessGone?: DirectEventHandler<WebViewRenderProcessGoneEvent>;\n  overScrollMode?: string;\n  saveFormDataDisabled?: boolean;\n  scalesPageToFit?: WithDefault<boolean, true>;\n  setBuiltInZoomControls?: WithDefault<boolean, true>;\n  setDisplayZoomControls?: boolean;\n  setSupportMultipleWindows?: WithDefault<boolean, true>;\n  textZoom?: Int32;\n  thirdPartyCookiesEnabled?: WithDefault<boolean, true>;\n  // Workaround to watch if listener if defined\n  hasOnScroll?: boolean;\n  // !Android only\n\n  // iOS only\n  allowingReadAccessToURL?: string;\n  allowsBackForwardNavigationGestures?: boolean;\n  allowsInlineMediaPlayback?: boolean;\n  allowsPictureInPictureMediaPlayback?: boolean;\n  allowsAirPlayForMediaPlayback?: boolean;\n  allowsLinkPreview?: WithDefault<boolean, true>;\n  automaticallyAdjustContentInsets?: WithDefault<boolean, true>;\n  autoManageStatusBarEnabled?: WithDefault<boolean, true>;\n  bounces?: WithDefault<boolean, true>;\n  contentInset?: Readonly<{\n    top?: Double;\n    left?: Double;\n    bottom?: Double;\n    right?: Double;\n  }>;\n  contentInsetAdjustmentBehavior?: WithDefault<\n    'never' | 'automatic' | 'scrollableAxes' | 'always',\n    'never'\n  >;\n  contentMode?: WithDefault<\n    'recommended' | 'mobile' | 'desktop',\n    'recommended'\n  >;\n  dataDetectorTypes?: WithDefault<\n    ReadonlyArray<\n      | 'address'\n      | 'link'\n      | 'calendarEvent'\n      | 'trackingNumber'\n      | 'flightNumber'\n      | 'lookupSuggestion'\n      | 'phoneNumber'\n      | 'all'\n      | 'none'\n    >,\n    'phoneNumber'\n  >;\n  decelerationRate?: Double;\n  directionalLockEnabled?: WithDefault<boolean, true>;\n  enableApplePay?: boolean;\n  hideKeyboardAccessoryView?: boolean;\n  keyboardDisplayRequiresUserAction?: WithDefault<boolean, true>;\n  limitsNavigationsToAppBoundDomains?: boolean;\n  mediaCapturePermissionGrantType?: WithDefault<\n    | 'prompt'\n    | 'grant'\n    | 'deny'\n    | 'grantIfSameHostElsePrompt'\n    | 'grantIfSameHostElseDeny',\n    'prompt'\n  >;\n  pagingEnabled?: boolean;\n  pullToRefreshEnabled?: boolean;\n  refreshControlLightMode?: boolean;\n  scrollEnabled?: WithDefault<boolean, true>;\n  sharedCookiesEnabled?: boolean;\n  textInteractionEnabled?: WithDefault<boolean, true>;\n  useSharedProcessPool?: WithDefault<boolean, true>;\n  onContentProcessDidTerminate?: DirectEventHandler<WebViewNativeEvent>;\n  onCustomMenuSelection?: DirectEventHandler<WebViewCustomMenuSelectionEvent>;\n  onFileDownload?: DirectEventHandler<WebViewDownloadEvent>;\n\n  menuItems?: ReadonlyArray<Readonly<{ label: string; key: string }>>;\n  suppressMenuItems?: Readonly<string>[];\n  // Workaround to watch if listener if defined\n  hasOnFileDownload?: boolean;\n  fraudulentWebsiteWarningEnabled?: WithDefault<boolean, true>;\n  // !iOS only\n\n  allowFileAccessFromFileURLs?: boolean;\n  allowUniversalAccessFromFileURLs?: boolean;\n  applicationNameForUserAgent?: string;\n  basicAuthCredential?: Readonly<{\n    username: string;\n    password: string;\n  }>;\n  cacheEnabled?: WithDefault<boolean, true>;\n  incognito?: boolean;\n  injectedJavaScript?: string;\n  injectedJavaScriptBeforeContentLoaded?: string;\n  injectedJavaScriptForMainFrameOnly?: WithDefault<boolean, true>;\n  injectedJavaScriptBeforeContentLoadedForMainFrameOnly?: WithDefault<\n    boolean,\n    true\n  >;\n  javaScriptCanOpenWindowsAutomatically?: boolean;\n  javaScriptEnabled?: WithDefault<boolean, true>;\n  webviewDebuggingEnabled?: boolean;\n  mediaPlaybackRequiresUserAction?: WithDefault<boolean, true>;\n  messagingEnabled: boolean;\n  onLoadingError: DirectEventHandler<WebViewErrorEvent>;\n  onLoadingFinish: DirectEventHandler<WebViewNavigationEvent>;\n  onLoadingProgress: DirectEventHandler<WebViewNativeProgressEvent>;\n  onLoadingStart: DirectEventHandler<WebViewNavigationEvent>;\n  onHttpError: DirectEventHandler<WebViewHttpErrorEvent>;\n  onMessage: DirectEventHandler<WebViewMessageEvent>;\n  onOpenWindow?: DirectEventHandler<WebViewOpenWindowEvent>;\n  hasOnOpenWindowEvent?: boolean;\n  onScroll?: DirectEventHandler<ScrollEvent>;\n  onShouldStartLoadWithRequest: DirectEventHandler<ShouldStartLoadRequestEvent>;\n  showsHorizontalScrollIndicator?: WithDefault<boolean, true>;\n  showsVerticalScrollIndicator?: WithDefault<boolean, true>;\n  indicatorStyle?: WithDefault<'default' | 'black' | 'white', 'default'>;\n  newSource: Readonly<{\n    uri?: string;\n    method?: string;\n    body?: string;\n\n    headers?: ReadonlyArray<Readonly<{ name: string; value: string }>>;\n    html?: string;\n    baseUrl?: string;\n  }>;\n  userAgent?: string;\n  injectedJavaScriptObject?: string;\n  paymentRequestEnabled?: boolean;\n}\n\nexport interface NativeCommands {\n  goBack: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n  goForward: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n  reload: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n  stopLoading: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n  injectJavaScript: (\n    viewRef: React.ElementRef<HostComponent<NativeProps>>,\n    javascript: string\n  ) => void;\n  requestFocus: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n  postMessage: (\n    viewRef: React.ElementRef<HostComponent<NativeProps>>,\n    data: string\n  ) => void;\n  // Android Only\n  loadUrl: (\n    viewRef: React.ElementRef<HostComponent<NativeProps>>,\n    url: string\n  ) => void;\n  clearFormData: (\n    viewRef: React.ElementRef<HostComponent<NativeProps>>\n  ) => void;\n  clearCache: (\n    viewRef: React.ElementRef<HostComponent<NativeProps>>,\n    includeDiskFiles: boolean\n  ) => void;\n  clearHistory: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;\n  // !Android Only\n}\n\nexport const Commands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: [\n    'goBack',\n    'goForward',\n    'reload',\n    'stopLoading',\n    'injectJavaScript',\n    'requestFocus',\n    'postMessage',\n    'loadUrl',\n    'clearFormData',\n    'clearCache',\n    'clearHistory',\n  ],\n});\n\nexport default codegenNativeComponent<NativeProps>(\n  'RNCWebView'\n) as HostComponent<NativeProps>;\n","import type { TurboModule } from 'react-native';\nimport { TurboModuleRegistry } from 'react-native';\nimport { Double } from 'react-native/Libraries/Types/CodegenTypes';\n\nexport interface Spec extends TurboModule {\n  isFileUploadSupported(): Promise<boolean>;\n  shouldStartLoadWithLockIdentifier(\n    shouldStart: boolean,\n    lockIdentifier: Double\n  ): void;\n}\n\nexport default TurboModuleRegistry.getEnforcing<Spec>('RNCWebViewModule');\n","import escapeStringRegexp from 'escape-string-regexp';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { Linking, View, ActivityIndicator, Text, Platform } from 'react-native';\nimport {\n  OnShouldStartLoadWithRequest,\n  ShouldStartLoadRequestEvent,\n  WebViewError,\n  WebViewErrorEvent,\n  WebViewHttpErrorEvent,\n  WebViewMessageEvent,\n  WebViewNavigation,\n  WebViewNavigationEvent,\n  WebViewOpenWindowEvent,\n  WebViewProgressEvent,\n  WebViewRenderProcessGoneEvent,\n  WebViewTerminatedEvent,\n} from './WebViewTypes';\nimport styles from './WebView.styles';\n\nconst defaultOriginWhitelist = ['http://*', 'https://*'] as const;\n\nconst extractOrigin = (url: string): string => {\n  const result = /^[A-Za-z][A-Za-z0-9+\\-.]+:(\\/\\/)?[^/]*/.exec(url);\n  return result === null ? '' : result[0];\n};\n\nconst originWhitelistToRegex = (originWhitelist: string): string =>\n  `^${escapeStringRegexp(originWhitelist).replace(/\\\\\\*/g, '.*')}`;\n\nconst passesWhitelist = (compiledWhitelist: readonly string[], url: string) => {\n  const origin = extractOrigin(url);\n  return compiledWhitelist.some((x) => new RegExp(x).test(origin));\n};\n\nconst compileWhitelist = (\n  originWhitelist: readonly string[]\n): readonly string[] =>\n  ['about:blank', ...(originWhitelist || [])].map(originWhitelistToRegex);\n\nconst createOnShouldStartLoadWithRequest = (\n  loadRequest: (\n    shouldStart: boolean,\n    url: string,\n    lockIdentifier: number\n  ) => void,\n  originWhitelist: readonly string[],\n  onShouldStartLoadWithRequest?: OnShouldStartLoadWithRequest\n) => {\n  return ({ nativeEvent }: ShouldStartLoadRequestEvent) => {\n    let shouldStart = true;\n    const { url, lockIdentifier } = nativeEvent;\n\n    if (!passesWhitelist(compileWhitelist(originWhitelist), url)) {\n      Linking.canOpenURL(url)\n        .then((supported) => {\n          if (supported) {\n            return Linking.openURL(url);\n          }\n          console.warn(`Can't open url: ${url}`);\n          return undefined;\n        })\n        .catch((e) => {\n          console.warn('Error opening URL: ', e);\n        });\n      shouldStart = false;\n    } else if (onShouldStartLoadWithRequest) {\n      shouldStart = onShouldStartLoadWithRequest(nativeEvent);\n    }\n\n    loadRequest(shouldStart, url, lockIdentifier);\n  };\n};\n\nconst defaultRenderLoading = () => (\n  <View style={styles.loadingOrErrorView}>\n    <ActivityIndicator />\n  </View>\n);\nconst defaultRenderError = (\n  errorDomain: string | undefined,\n  errorCode: number,\n  errorDesc: string\n) => (\n  <View style={styles.loadingOrErrorView}>\n    <Text style={styles.errorTextTitle}>Error loading page</Text>\n    <Text style={styles.errorText}>{`Domain: ${errorDomain}`}</Text>\n    <Text style={styles.errorText}>{`Error Code: ${errorCode}`}</Text>\n    <Text style={styles.errorText}>{`Description: ${errorDesc}`}</Text>\n  </View>\n);\n\nexport {\n  defaultOriginWhitelist,\n  createOnShouldStartLoadWithRequest,\n  defaultRenderLoading,\n  defaultRenderError,\n};\n\nexport const useWebViewLogic = ({\n  startInLoadingState,\n  onNavigationStateChange,\n  onLoadStart,\n  onLoad,\n  onLoadProgress,\n  onLoadEnd,\n  onError,\n  onHttpErrorProp,\n  onMessageProp,\n  onOpenWindowProp,\n  onRenderProcessGoneProp,\n  onContentProcessDidTerminateProp,\n  originWhitelist,\n  onShouldStartLoadWithRequestProp,\n  onShouldStartLoadWithRequestCallback,\n}: {\n  startInLoadingState?: boolean;\n  onNavigationStateChange?: (event: WebViewNavigation) => void;\n  onLoadStart?: (event: WebViewNavigationEvent) => void;\n  onLoad?: (event: WebViewNavigationEvent) => void;\n  onLoadProgress?: (event: WebViewProgressEvent) => void;\n  onLoadEnd?: (event: WebViewNavigationEvent | WebViewErrorEvent) => void;\n  onError?: (event: WebViewErrorEvent) => void;\n  onHttpErrorProp?: (event: WebViewHttpErrorEvent) => void;\n  onMessageProp?: (event: WebViewMessageEvent) => void;\n  onOpenWindowProp?: (event: WebViewOpenWindowEvent) => void;\n  onRenderProcessGoneProp?: (event: WebViewRenderProcessGoneEvent) => void;\n  onContentProcessDidTerminateProp?: (event: WebViewTerminatedEvent) => void;\n  originWhitelist: readonly string[];\n  onShouldStartLoadWithRequestProp?: OnShouldStartLoadWithRequest;\n  onShouldStartLoadWithRequestCallback: (\n    shouldStart: boolean,\n    url: string,\n    lockIdentifier?: number | undefined\n  ) => void;\n}) => {\n  const [viewState, setViewState] = useState<'IDLE' | 'LOADING' | 'ERROR'>(\n    startInLoadingState ? 'LOADING' : 'IDLE'\n  );\n  const [lastErrorEvent, setLastErrorEvent] = useState<WebViewError | null>(\n    null\n  );\n  const startUrl = useRef<string | null>(null);\n\n  const updateNavigationState = useCallback(\n    (event: WebViewNavigationEvent) => {\n      onNavigationStateChange?.(event.nativeEvent);\n    },\n    [onNavigationStateChange]\n  );\n\n  const onLoadingStart = useCallback(\n    (event: WebViewNavigationEvent) => {\n      // Needed for android\n      startUrl.current = event.nativeEvent.url;\n      // !Needed for android\n\n      onLoadStart?.(event);\n      updateNavigationState(event);\n    },\n    [onLoadStart, updateNavigationState]\n  );\n\n  const onLoadingError = useCallback(\n    (event: WebViewErrorEvent) => {\n      event.persist();\n      if (onError) {\n        onError(event);\n      } else {\n        console.warn('Encountered an error loading page', event.nativeEvent);\n      }\n      onLoadEnd?.(event);\n      if (event.isDefaultPrevented()) {\n        return;\n      }\n      setViewState('ERROR');\n      setLastErrorEvent(event.nativeEvent);\n    },\n    [onError, onLoadEnd]\n  );\n\n  const onHttpError = useCallback(\n    (event: WebViewHttpErrorEvent) => {\n      onHttpErrorProp?.(event);\n    },\n    [onHttpErrorProp]\n  );\n\n  // Android Only\n  const onRenderProcessGone = useCallback(\n    (event: WebViewRenderProcessGoneEvent) => {\n      onRenderProcessGoneProp?.(event);\n    },\n    [onRenderProcessGoneProp]\n  );\n  // !Android Only\n\n  // iOS Only\n  const onContentProcessDidTerminate = useCallback(\n    (event: WebViewTerminatedEvent) => {\n      onContentProcessDidTerminateProp?.(event);\n    },\n    [onContentProcessDidTerminateProp]\n  );\n  // !iOS Only\n\n  const onLoadingFinish = useCallback(\n    (event: WebViewNavigationEvent) => {\n      onLoad?.(event);\n      onLoadEnd?.(event);\n      const {\n        nativeEvent: { url },\n      } = event;\n      // on Android, only if url === startUrl\n      if (Platform.OS !== 'android' || url === startUrl.current) {\n        setViewState('IDLE');\n      }\n      // !on Android, only if url === startUrl\n      updateNavigationState(event);\n    },\n    [onLoad, onLoadEnd, updateNavigationState]\n  );\n\n  const onMessage = useCallback(\n    (event: WebViewMessageEvent) => {\n      onMessageProp?.(event);\n    },\n    [onMessageProp]\n  );\n\n  const onLoadingProgress = useCallback(\n    (event: WebViewProgressEvent) => {\n      const {\n        nativeEvent: { progress },\n      } = event;\n      // patch for Android only\n      if (Platform.OS === 'android' && progress === 1) {\n        setViewState((prevViewState) =>\n          prevViewState === 'LOADING' ? 'IDLE' : prevViewState\n        );\n      }\n      // !patch for Android only\n      onLoadProgress?.(event);\n    },\n    [onLoadProgress]\n  );\n\n  const onShouldStartLoadWithRequest = useMemo(\n    () =>\n      createOnShouldStartLoadWithRequest(\n        onShouldStartLoadWithRequestCallback,\n        originWhitelist,\n        onShouldStartLoadWithRequestProp\n      ),\n    [\n      originWhitelist,\n      onShouldStartLoadWithRequestProp,\n      onShouldStartLoadWithRequestCallback,\n    ]\n  );\n\n  const onOpenWindow = useCallback(\n    (event: WebViewOpenWindowEvent) => {\n      onOpenWindowProp?.(event);\n    },\n    [onOpenWindowProp]\n  );\n\n  return {\n    onShouldStartLoadWithRequest,\n    onLoadingStart,\n    onLoadingProgress,\n    onLoadingError,\n    onLoadingFinish,\n    onHttpError,\n    onRenderProcessGone,\n    onContentProcessDidTerminate,\n    onMessage,\n    onOpenWindow,\n    viewState,\n    setViewState,\n    lastErrorEvent,\n  };\n};\n","import { StyleSheet } from 'react-native';\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    overflow: 'hidden',\n  },\n  loadingOrErrorView: {\n    position: 'absolute',\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    height: '100%',\n    width: '100%',\n    backgroundColor: 'white',\n  },\n  loadingProgressBar: {\n    height: 20,\n  },\n  errorText: {\n    fontSize: 14,\n    textAlign: 'center',\n    marginBottom: 2,\n  },\n  errorTextTitle: {\n    fontSize: 15,\n    fontWeight: '500',\n    marginBottom: 10,\n  },\n  webView: {\n    backgroundColor: '#ffffff',\n  },\n  flexStart: {\n    alignSelf: 'flex-start',\n  },\n  colorRed: {\n    color: 'red',\n  },\n});\n\nexport default styles;\n","import { createPermissionHook } from 'expo-modules-core';\nimport CameraManager from './ExpoCameraManager';\nexport { default as CameraView } from './CameraView';\n// @needsAudit\n/**\n * Checks user's permissions for accessing camera.\n * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse).\n */\nasync function getCameraPermissionsAsync() {\n    return CameraManager.getCameraPermissionsAsync();\n}\n// @needsAudit\n/**\n * Asks the user to grant permissions for accessing camera.\n * On iOS this will require apps to specify an `NSCameraUsageDescription` entry in the **Info.plist**.\n * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse).\n */\nasync function requestCameraPermissionsAsync() {\n    return CameraManager.requestCameraPermissionsAsync();\n}\n// @needsAudit\n/**\n * Check or request permissions to access the camera.\n * This uses both `requestCameraPermissionsAsync` and `getCameraPermissionsAsync` to interact with the permissions.\n *\n * @example\n * ```ts\n * const [status, requestPermission] = useCameraPermissions();\n * ```\n */\nexport const useCameraPermissions = createPermissionHook({\n    getMethod: getCameraPermissionsAsync,\n    requestMethod: requestCameraPermissionsAsync,\n});\n// @needsAudit\n/**\n * Checks user's permissions for accessing microphone.\n * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse).\n */\nasync function getMicrophonePermissionsAsync() {\n    return CameraManager.getMicrophonePermissionsAsync();\n}\n// @needsAudit\n/**\n * Asks the user to grant permissions for accessing the microphone.\n * On iOS this will require apps to specify an `NSMicrophoneUsageDescription` entry in the **Info.plist**.\n * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse).\n */\nasync function requestMicrophonePermissionsAsync() {\n    return CameraManager.requestMicrophonePermissionsAsync();\n}\n// @needsAudit\n/**\n * Check or request permissions to access the microphone.\n * This uses both `requestMicrophonePermissionsAsync` and `getMicrophonePermissionsAsync` to interact with the permissions.\n *\n * @example\n * ```ts\n * const [status, requestPermission] = Camera.useMicrophonePermissions();\n * ```\n */\nexport const useMicrophonePermissions = createPermissionHook({\n    getMethod: getMicrophonePermissionsAsync,\n    requestMethod: requestMicrophonePermissionsAsync,\n});\n/**\n * Scan bar codes from the image at the given URL.\n * @param url URL to get the image from.\n * @param barcodeTypes An array of bar code types. Defaults to all supported bar code types on\n * the platform.\n * > __Note:__ Only QR codes are supported on iOS.\n * On android, the barcode should take up the majority of the image for best results.\n * @return A possibly empty array of objects of the `BarcodeScanningResult` shape, where the type\n * refers to the barcode type that was scanned and the data is the information encoded in the barcode.\n */\nexport async function scanFromURLAsync(url, barcodeTypes = ['qr']) {\n    return CameraManager.scanFromURLAsync(url, barcodeTypes);\n}\nexport * from './Camera.types';\nexport * from './PictureRef';\n/**\n * @hidden\n */\nexport const Camera = {\n    getCameraPermissionsAsync,\n    requestCameraPermissionsAsync,\n    getMicrophonePermissionsAsync,\n    requestMicrophonePermissionsAsync,\n    scanFromURLAsync,\n};\n//# sourceMappingURL=index.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoCamera');\n//# sourceMappingURL=ExpoCameraManager.js.map","import { Platform, UnavailabilityError } from 'expo-modules-core';\nimport { Component, createRef } from 'react';\nimport ExpoCamera from './ExpoCamera';\nimport CameraManager from './ExpoCameraManager';\nimport { ConversionTables, ensureNativeProps } from './utils/props';\nconst EventThrottleMs = 500;\nconst _PICTURE_SAVED_CALLBACKS = {};\nlet loggedRenderingChildrenWarning = false;\nlet _GLOBAL_PICTURE_ID = 1;\nfunction ensurePictureOptions(options) {\n    if (!options || typeof options !== 'object') {\n        return {};\n    }\n    if (options.quality === undefined) {\n        options.quality = 1;\n    }\n    if (options.mirror) {\n        console.warn('The `mirror` option is deprecated. Please use the `mirror` prop on the `CameraView` instead.');\n    }\n    if (options.onPictureSaved) {\n        const id = _GLOBAL_PICTURE_ID++;\n        _PICTURE_SAVED_CALLBACKS[id] = options.onPictureSaved;\n        options.id = id;\n        options.fastMode = true;\n    }\n    return options;\n}\nfunction ensureRecordingOptions(options = {}) {\n    if (!options || typeof options !== 'object') {\n        return {};\n    }\n    if (options.mirror) {\n        console.warn('The `mirror` option is deprecated. Please use the `mirror` prop on the `CameraView` instead.');\n    }\n    return options;\n}\nfunction _onPictureSaved({ nativeEvent, }) {\n    const { id, data } = nativeEvent;\n    const callback = _PICTURE_SAVED_CALLBACKS[id];\n    if (callback) {\n        callback(data);\n        delete _PICTURE_SAVED_CALLBACKS[id];\n    }\n}\nexport default class CameraView extends Component {\n    /**\n     * Property that determines if the current device has the ability to use `DataScannerViewController` (iOS 16+) or the Google code scanner (Android).\n     */\n    static isModernBarcodeScannerAvailable = CameraManager.isModernBarcodeScannerAvailable;\n    /**\n     * Check whether the current device has a camera. This is useful for web and simulators cases.\n     * This isn't influenced by the Permissions API (all platforms), or HTTP usage (in the browser).\n     * You will still need to check if the native permission has been accepted.\n     * @platform web\n     */\n    static async isAvailableAsync() {\n        if (!CameraManager.isAvailableAsync) {\n            throw new UnavailabilityError('expo-camera', 'isAvailableAsync');\n        }\n        return CameraManager.isAvailableAsync();\n    }\n    // @needsAudit\n    /**\n     * Queries the device for the available video codecs that can be used in video recording.\n     * @return A promise that resolves to a list of strings that represents available codecs.\n     * @platform ios\n     */\n    static async getAvailableVideoCodecsAsync() {\n        if (!CameraManager.getAvailableVideoCodecsAsync) {\n            throw new UnavailabilityError('Camera', 'getAvailableVideoCodecsAsync');\n        }\n        return CameraManager.getAvailableVideoCodecsAsync();\n    }\n    /**\n     * Get picture sizes that are supported by the device.\n     * @return Returns a Promise that resolves to an array of strings representing picture sizes that can be passed to `pictureSize` prop.\n     * The list varies across Android devices but is the same for every iOS.\n     */\n    async getAvailablePictureSizesAsync() {\n        return (await this._cameraRef.current?.getAvailablePictureSizes()) ?? [];\n    }\n    /**\n     * Returns the available lenses for the currently selected camera.\n     *\n     * @return Returns a Promise that resolves to an array of strings representing the lens type that can be passed to `selectedLens` prop.\n     * @platform ios\n     */\n    async getAvailableLensesAsync() {\n        return (await this._cameraRef.current?.getAvailableLenses()) ?? [];\n    }\n    /**\n     * Returns an object with the supported features of the camera on the current device.\n     */\n    getSupportedFeatures() {\n        return {\n            isModernBarcodeScannerAvailable: CameraManager.isModernBarcodeScannerAvailable,\n            toggleRecordingAsyncAvailable: CameraManager.toggleRecordingAsyncAvailable,\n        };\n    }\n    /**\n     * Resumes the camera preview.\n     */\n    async resumePreview() {\n        return this._cameraRef.current?.resumePreview();\n    }\n    /**\n     * Pauses the camera preview. It is not recommended to use `takePictureAsync` when preview is paused.\n     */\n    async pausePreview() {\n        return this._cameraRef.current?.pausePreview();\n    }\n    // Values under keys from this object will be transformed to native options\n    static ConversionTables = ConversionTables;\n    static defaultProps = {\n        zoom: 0,\n        facing: 'back',\n        enableTorch: false,\n        mode: 'picture',\n        flash: 'off',\n    };\n    _cameraHandle;\n    _cameraRef = createRef();\n    _lastEvents = {};\n    _lastEventsTimes = {};\n    async takePictureAsync(options) {\n        const pictureOptions = ensurePictureOptions(options);\n        if (Platform.OS === 'ios' && options?.pictureRef) {\n            return this._cameraRef.current?.takePictureRef?.(options);\n        }\n        return this._cameraRef.current?.takePicture(pictureOptions);\n    }\n    /**\n     * On Android, we will use the [Google code scanner](https://developers.google.com/ml-kit/vision/barcode-scanning/code-scanner).\n     * On iOS, presents a modal view controller that uses the [`DataScannerViewController`](https://developer.apple.com/documentation/visionkit/scanning_data_with_the_camera) available on iOS 16+.\n     * @platform android\n     * @platform ios\n     */\n    static async launchScanner(options) {\n        if (!options) {\n            options = { barcodeTypes: [] };\n        }\n        if (Platform.OS !== 'web' && CameraView.isModernBarcodeScannerAvailable) {\n            await CameraManager.launchScanner(options);\n        }\n    }\n    /**\n     * Dismiss the scanner presented by `launchScanner`.\n     * > **info** On Android, the scanner is dismissed automatically when a barcode is scanned.\n     * @platform ios\n     */\n    static async dismissScanner() {\n        if (Platform.OS !== 'web' && CameraView.isModernBarcodeScannerAvailable) {\n            await CameraManager.dismissScanner();\n        }\n    }\n    /**\n     * Invokes the `listener` function when a bar code has been successfully scanned. The callback is provided with\n     * an object of the `ScanningResult` shape, where the `type` refers to the bar code type that was scanned and the `data` is the information encoded in the bar code\n     * (in this case of QR codes, this is often a URL). See [`BarcodeType`](#barcodetype) for supported values.\n     * @param listener Invoked with the [ScanningResult](#scanningresult) when a bar code has been successfully scanned.\n     *\n     * @platform ios\n     * @platform android\n     */\n    static onModernBarcodeScanned(listener) {\n        return CameraManager.addListener('onModernBarcodeScanned', listener);\n    }\n    /**\n     * Starts recording a video that will be saved to cache directory. Videos are rotated to match device's orientation.\n     * Flipping camera during a recording results in stopping it.\n     * @param options A map of `CameraRecordingOptions` type.\n     * @return Returns a Promise that resolves to an object containing video file `uri` property and a `codec` property on iOS.\n     * The Promise is returned if `stopRecording` was invoked, one of `maxDuration` and `maxFileSize` is reached or camera preview is stopped.\n     * @platform android\n     * @platform ios\n     */\n    async recordAsync(options) {\n        const recordingOptions = ensureRecordingOptions(options);\n        return this._cameraRef.current?.record(recordingOptions);\n    }\n    /**\n     * Pauses or resumes the video recording. Only has an effect if there is an active recording. On `iOS`, this method only supported on `iOS` 18.\n     *\n     * @example\n     * ```ts\n     * const { toggleRecordingAsyncAvailable } = getSupportedFeatures()\n     *\n     * return (\n     *  {toggleRecordingAsyncAvailable && (\n     *    <Button title=\"Toggle Recording\" onPress={toggleRecordingAsync} />\n     *  )}\n     * )\n     * ```\n     */\n    async toggleRecordingAsync() {\n        return this._cameraRef.current?.toggleRecording();\n    }\n    /**\n     * Stops recording if any is in progress.\n     * @platform android\n     * @platform ios\n     */\n    stopRecording() {\n        this._cameraRef.current?.stopRecording();\n    }\n    _onCameraReady = () => {\n        if (this.props.onCameraReady) {\n            this.props.onCameraReady();\n        }\n    };\n    _onAvailableLensesChanged = ({ nativeEvent }) => {\n        if (this.props.onAvailableLensesChanged) {\n            this.props.onAvailableLensesChanged(nativeEvent);\n        }\n    };\n    _onMountError = ({ nativeEvent }) => {\n        if (this.props.onMountError) {\n            this.props.onMountError(nativeEvent);\n        }\n    };\n    _onResponsiveOrientationChanged = ({ nativeEvent, }) => {\n        if (this.props.onResponsiveOrientationChanged) {\n            this.props.onResponsiveOrientationChanged(nativeEvent);\n        }\n    };\n    _onObjectDetected = (callback) => ({ nativeEvent }) => {\n        const { type } = nativeEvent;\n        if (this._lastEvents[type] &&\n            this._lastEventsTimes[type] &&\n            JSON.stringify(nativeEvent) === this._lastEvents[type] &&\n            new Date().getTime() - this._lastEventsTimes[type].getTime() < EventThrottleMs) {\n            return;\n        }\n        if (callback) {\n            callback(nativeEvent);\n            this._lastEventsTimes[type] = new Date();\n            this._lastEvents[type] = JSON.stringify(nativeEvent);\n        }\n    };\n    _setReference = (ref) => {\n        if (ref) {\n            // TODO(Bacon): Unify these - perhaps with hooks?\n            if (Platform.OS === 'web') {\n                this._cameraHandle = ref;\n            }\n        }\n    };\n    render() {\n        const nativeProps = ensureNativeProps(this.props);\n        const onBarcodeScanned = this.props.onBarcodeScanned\n            ? this._onObjectDetected(this.props.onBarcodeScanned)\n            : undefined;\n        // @ts-expect-error\n        if (nativeProps.children && !loggedRenderingChildrenWarning) {\n            console.warn('The <CameraView> component does not support children. This may lead to inconsistent behaviour or crashes. If you want to render content on top of the Camera, consider using absolute positioning.');\n            loggedRenderingChildrenWarning = true;\n        }\n        return (<ExpoCamera {...nativeProps} ref={this._cameraRef} onCameraReady={this._onCameraReady} onMountError={this._onMountError} onBarcodeScanned={onBarcodeScanned} onAvailableLensesChanged={this._onAvailableLensesChanged} onPictureSaved={_onPictureSaved} onResponsiveOrientationChanged={this._onResponsiveOrientationChanged}/>);\n    }\n}\n//# sourceMappingURL=CameraView.js.map","import { requireNativeViewManager } from 'expo-modules-core';\nconst ExpoCamera = requireNativeViewManager('ExpoCamera');\nexport default ExpoCamera;\n//# sourceMappingURL=ExpoCamera.js.map","import { Platform } from 'expo-modules-core';\nimport CameraManager from '../ExpoCameraManager';\n// Values under keys from this object will be transformed to native options\nexport const ConversionTables = {\n    type: CameraManager.Type,\n    flash: CameraManager.FlashMode,\n};\nexport function convertNativeProps(props) {\n    if (!props || typeof props !== 'object') {\n        return {};\n    }\n    const nativeProps = {};\n    for (const [key, value] of Object.entries(props)) {\n        const prop = key;\n        if (typeof value === 'string' && ConversionTables[prop]) {\n            nativeProps[key] =\n                ConversionTables[prop][value];\n        }\n        else {\n            nativeProps[key] = value;\n        }\n    }\n    return nativeProps;\n}\nexport function ensureNativeProps(props) {\n    const newProps = convertNativeProps(props);\n    newProps.barcodeScannerEnabled = !!props?.onBarcodeScanned;\n    newProps.flashMode = props?.flash ?? 'off';\n    newProps.mute = props?.mute ?? false;\n    newProps.autoFocus = props?.autofocus ?? 'off';\n    if (Platform.OS !== 'web') {\n        delete newProps.poster;\n    }\n    return newProps;\n}\n//# sourceMappingURL=props.js.map","import { PermissionStatus, } from 'expo-modules-core';\nexport { PermissionStatus, };\n//# sourceMappingURL=Camera.types.js.map","import CameraManager from './ExpoCameraManager';\nexport default CameraManager.Picture;\n//# sourceMappingURL=PictureRef.js.map","import React, { useRef, useState } from \"react\";\nimport { ActivityIndicator, Modal, Pressable, StyleSheet, Text, View } from \"react-native\";\nimport { CameraView, useCameraPermissions } from \"expo-camera\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { savePhotoToPermanentFile } from \"../core/fileStorage\";\nimport {\n  enqueueWorkflowStepPhoto,\n  uploadWorkflowStepPhoto,\n} from \"../services/interventionsApi\";\nimport { uuidv4 } from \"./workflowUtils\";\n\ntype Props = {\n  interventionId: number;\n  stepId: string;\n  /**\n   * ID DB interne de la step (intervention_workflow_steps.id), requis\n   * pour que l'upload vers /mobile/intervention_workflow_files.php sache\n   * a quelle ligne attacher le fichier. Expose par le backend dans\n   * step.metadata.workflow_step_id. Peut etre null si step pas encore\n   * resynchronisee — dans ce cas on ne peut pas uploader et on bloque.\n   */\n  workflowStepId: number | null;\n  brandColor: string;\n  onCaptured: (uri: string) => void;\n};\n\nexport default function CameraCapture({ interventionId, stepId, workflowStepId, brandColor, onCaptured }: Readonly<Props>) {\n  const [visible, setVisible] = useState(false);\n  const [capturing, setCapturing] = useState(false);\n  const [uploadError, setUploadError] = useState<string | null>(null);\n  const [permission, requestPermission] = useCameraPermissions();\n  const cameraRef = useRef<CameraView | null>(null);\n  const insets = useSafeAreaInsets();\n\n  const openCamera = async () => {\n    if (!permission?.granted) {\n      const result = await requestPermission();\n      if (!result.granted) {\n        return;\n      }\n    }\n    setVisible(true);\n  };\n\n  const takePicture = async () => {\n    if (!cameraRef.current || capturing) {\n      return;\n    }\n\n    setCapturing(true);\n    setUploadError(null);\n    try {\n      const photo = await cameraRef.current.takePictureAsync({ quality: 0.7 });\n      if (!photo?.uri) {\n        return;\n      }\n      const permanentUri = await savePhotoToPermanentFile(interventionId, stepId, photo.uri);\n\n      // Upload immediat vers le serveur. Sans ca, la finalisation echoue\n      // avec \"Nombre de photos insuffisant\" car activeFileCount=0 cote DB.\n      // En cas d'echec (reseau coupe), on NE PERD PAS la photo : on la met en\n      // file de sync multipart (enqueueWorkflowStepPhoto) pour replay automatique\n      // au reconnect. Le idempotency_key est genere UNE fois et partage entre la\n      // tentative immediate et le replay -> pas de doublon si l'immediat avait en\n      // fait atteint le serveur (dedup backend, TTL 24h).\n      if (workflowStepId !== null && workflowStepId > 0) {\n        const name = permanentUri.split(\"/\").pop() || `photo_${Date.now()}.jpg`;\n        const mimeType = permanentUri.toLowerCase().endsWith(\".png\") ? \"image/png\" : \"image/jpeg\";\n        const idempotencyKey = uuidv4();\n        try {\n          await uploadWorkflowStepPhoto({\n            workflowStepId,\n            photoUri: permanentUri,\n            photoName: name,\n            mimeType,\n            idempotencyKey,\n          });\n        } catch (err) {\n          try {\n            await enqueueWorkflowStepPhoto({\n              workflowStepId,\n              photoUri: permanentUri,\n              photoName: name,\n              mimeType,\n              idempotencyKey,\n            });\n            setUploadError(\n              \"Hors-ligne : photo enregistree, elle sera synchronisee automatiquement au retour du reseau.\"\n            );\n          } catch {\n            // Echec de la mise en file (cas tres rare : SQLite indispo). On\n            // remonte l'erreur d'origine pour que le user retente la capture.\n            setUploadError(\n              err instanceof Error\n                ? `Photo sauvegardee localement, echec envoi: ${err.message}`\n                : \"Photo sauvegardee localement, echec envoi\"\n            );\n          }\n        }\n      } else {\n        setUploadError(\n          \"Workflow pas encore synchronise : photo gardee en local, reprends une photo apres refresh si besoin.\"\n        );\n      }\n\n      onCaptured(permanentUri);\n      setVisible(false);\n    } finally {\n      setCapturing(false);\n    }\n  };\n\n  return (\n    <>\n      <Pressable style={[styles.openButton, { borderColor: brandColor }]} onPress={openCamera}>\n        <Text style={[styles.openButtonText, { color: brandColor }]}>Prendre une photo</Text>\n      </Pressable>\n      {uploadError ? <Text style={styles.uploadErrorText}>{uploadError}</Text> : null}\n\n      <Modal visible={visible} animationType=\"slide\" onRequestClose={() => setVisible(false)}>\n        <View style={styles.modalRoot}>\n          <CameraView ref={cameraRef} style={styles.camera} facing=\"back\" />\n          <View style={[styles.actions, { paddingBottom: insets.bottom + 16 }]}>\n            <Pressable style={styles.secondaryButton} onPress={() => setVisible(false)}>\n              <Text style={styles.secondaryButtonText}>Annuler</Text>\n            </Pressable>\n            <Pressable\n              style={[styles.primaryButton, { backgroundColor: brandColor }, capturing && styles.disabled]}\n              onPress={() => {\n                takePicture();\n              }}\n              disabled={capturing}\n            >\n              {capturing ? (\n                <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n              ) : (\n                <Text style={styles.primaryButtonText}>Capturer</Text>\n              )}\n            </Pressable>\n          </View>\n        </View>\n      </Modal>\n    </>\n  );\n}\n\nconst styles = StyleSheet.create({\n  openButton: {\n    borderWidth: 1,\n    borderRadius: 8,\n    backgroundColor: \"#ffffff\",\n    paddingVertical: 10,\n    alignItems: \"center\",\n  },\n  openButtonText: {\n    fontWeight: \"700\",\n  },\n  modalRoot: {\n    flex: 1,\n    backgroundColor: \"#000000\",\n  },\n  camera: {\n    flex: 1,\n  },\n  actions: {\n    flexDirection: \"row\",\n    gap: 10,\n    padding: 16,\n    backgroundColor: \"#0f172a\",\n  },\n  secondaryButton: {\n    flex: 1,\n    borderRadius: 10,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    backgroundColor: \"#1e293b\",\n    paddingVertical: 12,\n  },\n  secondaryButtonText: {\n    color: \"#cbd5e1\",\n    fontWeight: \"700\",\n  },\n  primaryButton: {\n    flex: 1,\n    borderRadius: 10,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    paddingVertical: 12,\n  },\n  primaryButtonText: {\n    color: \"#ffffff\",\n    fontWeight: \"700\",\n  },\n  disabled: {\n    opacity: 0.6,\n  },\n  uploadErrorText: {\n    color: \"#b91c1c\",\n    fontSize: 12,\n    fontWeight: \"600\",\n    marginTop: 6,\n  },\n});\n","import { Directory, File, Paths } from \"expo-file-system\";\n\nconst mediaDirectory = new Directory(Paths.document, \"workflow-media\");\n\nfunction sanitizeStepId(stepId: string): string {\n  return stepId.replaceAll(/[^a-zA-Z0-9_-]/g, \"_\");\n}\n\nasync function ensureMediaDir(): Promise<void> {\n  if (!mediaDirectory.exists) {\n    mediaDirectory.create({ intermediates: true, idempotent: true });\n  }\n}\n\nexport async function savePhotoToPermanentFile(\n  interventionId: number,\n  stepId: string,\n  tempUri: string\n): Promise<string> {\n  await ensureMediaDir();\n  const timestamp = Date.now();\n  const name = `photo_${interventionId}_${sanitizeStepId(stepId)}_${timestamp}.jpg`;\n  const sourceFile = new File(tempUri);\n  const targetFile = new File(mediaDirectory, name);\n  sourceFile.copy(targetFile);\n  return targetFile.uri;\n}\n\nexport async function saveSignatureBase64ToPermanentFile(\n  interventionId: number,\n  stepId: string,\n  base64Data: string\n): Promise<string> {\n  await ensureMediaDir();\n  const timestamp = Date.now();\n  const name = `signature_${interventionId}_${sanitizeStepId(stepId)}_${timestamp}.png`;\n  const targetFile = new File(mediaDirectory, name);\n  targetFile.create({ overwrite: true, intermediates: true });\n  targetFile.write(base64Data, {\n    encoding: \"base64\",\n  });\n\n  return targetFile.uri;\n}\n","import React, { useRef, useState } from \"react\";\nimport { ActivityIndicator, Modal, Pressable, StyleSheet, Text, View } from \"react-native\";\nimport SignatureCanvas, { type SignatureViewRef } from \"react-native-signature-canvas\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { saveSignatureBase64ToPermanentFile } from \"../core/fileStorage\";\n\ntype Props = {\n  interventionId: number;\n  stepId: string;\n  brandColor: string;\n  onCaptured: (uri: string) => void;\n};\n\nfunction stripDataUrlPrefix(data: string): string {\n  const marker = \"base64,\";\n  const idx = data.indexOf(marker);\n  if (idx === -1) {\n    return data;\n  }\n  return data.slice(idx + marker.length);\n}\n\nexport default function SignatureCapture({ interventionId, stepId, brandColor, onCaptured }: Readonly<Props>) {\n  const [visible, setVisible] = useState(false);\n  const [saving, setSaving] = useState(false);\n  const signatureRef = useRef<SignatureViewRef>(null);\n  const insets = useSafeAreaInsets();\n\n  const handleOk = async (signatureDataUrl: string) => {\n    setSaving(true);\n    try {\n      const base64 = stripDataUrlPrefix(signatureDataUrl);\n      const uri = await saveSignatureBase64ToPermanentFile(interventionId, stepId, base64);\n      onCaptured(uri);\n      setVisible(false);\n    } finally {\n      setSaving(false);\n    }\n  };\n\n  return (\n    <>\n      <Pressable style={[styles.openButton, { borderColor: brandColor }]} onPress={() => setVisible(true)}>\n        <Text style={[styles.openButtonText, { color: brandColor }]}>Signer</Text>\n      </Pressable>\n\n      <Modal visible={visible} animationType=\"slide\" onRequestClose={() => setVisible(false)}>\n        <View style={styles.modalRoot}>\n          <View style={styles.canvasWrap}>\n            <SignatureCanvas\n              ref={signatureRef}\n              onOK={(data) => {\n                handleOk(data);\n              }}\n              onEmpty={() => {}}\n              descriptionText=\"\"\n              clearText=\"Effacer\"\n              confirmText=\"Valider\"\n              webStyle={`\n                .m-signature-pad--footer { display: flex; justify-content: space-between; }\n                body,html { height:100%; }\n              `}\n            />\n          </View>\n\n          <View style={[styles.actions, { paddingBottom: insets.bottom + 16 }]}>\n            <Pressable style={styles.secondaryButton} onPress={() => setVisible(false)}>\n              <Text style={styles.secondaryButtonText}>Annuler</Text>\n            </Pressable>\n            <Pressable\n              style={[styles.primaryButton, { backgroundColor: brandColor }, saving && styles.disabled]}\n              onPress={() => signatureRef.current?.readSignature()}\n              disabled={saving}\n            >\n              {saving ? (\n                <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n              ) : (\n                <Text style={styles.primaryButtonText}>Enregistrer</Text>\n              )}\n            </Pressable>\n          </View>\n        </View>\n      </Modal>\n    </>\n  );\n}\n\nconst styles = StyleSheet.create({\n  openButton: {\n    borderWidth: 1,\n    borderRadius: 8,\n    backgroundColor: \"#ffffff\",\n    paddingVertical: 10,\n    alignItems: \"center\",\n  },\n  openButtonText: {\n    fontWeight: \"700\",\n  },\n  modalRoot: {\n    flex: 1,\n    backgroundColor: \"#ffffff\",\n  },\n  canvasWrap: {\n    flex: 1,\n    backgroundColor: \"#ffffff\",\n  },\n  actions: {\n    flexDirection: \"row\",\n    gap: 10,\n    padding: 16,\n    borderTopWidth: 1,\n    borderTopColor: \"#e2e8f0\",\n  },\n  secondaryButton: {\n    flex: 1,\n    borderRadius: 10,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    backgroundColor: \"#e2e8f0\",\n    paddingVertical: 12,\n  },\n  secondaryButtonText: {\n    color: \"#334155\",\n    fontWeight: \"700\",\n  },\n  primaryButton: {\n    flex: 1,\n    borderRadius: 10,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    paddingVertical: 12,\n  },\n  primaryButtonText: {\n    color: \"#ffffff\",\n    fontWeight: \"700\",\n  },\n  disabled: {\n    opacity: 0.6,\n  },\n});\n","import React from \"react\";\nimport { ScrollView, StyleSheet, Text, View } from \"react-native\";\nimport { SafeAreaView } from \"react-native-safe-area-context\";\nimport { StatusBar } from \"expo-status-bar\";\nimport FeatureCard from \"./FeatureCard\";\nimport BrandLogo from \"../../shared/BrandLogo\";\n\nexport type HomeCard = {\n  key: string;\n  icon: string;\n  title: string;\n  subtitle?: string;\n  badge?: number | null;\n  comingSoon?: boolean;\n  onPress?: () => void;\n};\n\ntype Props = {\n  appDisplayName: string;\n  brandColor: string;\n  logoUrl?: string | null;\n  userName?: string | null;\n  isOnline: boolean;\n  cards: HomeCard[];\n  onChangeInstance: () => void;\n  onLogout: () => void;\n};\n\n// Page d'accueil \"hub\" : equivalent mobile du tableau de bord tech coolcare\n// (dashboard.php). Chaque carte ouvre une section. L'ecran d'accueil masque le\n// header natif et porte son propre header : une bande blanche surelevee (logo\n// tenant + nom de l'app + liens Instance / Deconnexion), visuellement separee\n// du corps. Les sous-ecrans, eux, utilisent le header natif (bouton retour).\nexport default function HomeHub({\n  appDisplayName,\n  brandColor,\n  logoUrl,\n  userName,\n  isOnline,\n  cards,\n  onChangeInstance,\n  onLogout,\n}: Readonly<Props>) {\n  return (\n    <SafeAreaView style={styles.screen} edges={[\"top\", \"left\", \"right\"]}>\n      <StatusBar style=\"dark\" />\n\n      <View style={styles.header}>\n        <View style={styles.brandBlock}>\n          <BrandLogo\n            logoUrl={logoUrl}\n            name={appDisplayName}\n            brandColor={brandColor}\n            size={40}\n            radius={10}\n            style={styles.logo}\n          />\n          <View style={styles.titleBlock}>\n            <Text style={[styles.appName, { color: brandColor }]} numberOfLines={1}>\n              {appDisplayName}\n            </Text>\n            {userName ? (\n              <Text style={styles.welcome} numberOfLines={1}>\n                Bonjour {userName}\n              </Text>\n            ) : null}\n          </View>\n        </View>\n        <View style={styles.headerActions}>\n          <Text style={styles.headerLink} onPress={onChangeInstance}>\n            Instance\n          </Text>\n          <Text style={styles.headerLink} onPress={onLogout}>\n            Deconnexion\n          </Text>\n        </View>\n      </View>\n\n      <View style={styles.body}>\n        <View style={styles.sectionRow}>\n          <Text style={styles.sectionTitle}>Tableau de bord</Text>\n          <View\n            style={[\n              styles.netDot,\n              { backgroundColor: isOnline ? \"#16a34a\" : \"#dc2626\" },\n            ]}\n          />\n        </View>\n\n        <ScrollView\n          contentContainerStyle={styles.grid}\n          showsVerticalScrollIndicator={false}\n        >\n          {cards.map((card) => (\n            <FeatureCard\n              key={card.key}\n              icon={card.icon}\n              title={card.title}\n              subtitle={card.subtitle}\n              brandColor={brandColor}\n              badge={card.badge}\n              comingSoon={card.comingSoon}\n              onPress={card.onPress}\n            />\n          ))}\n        </ScrollView>\n      </View>\n    </SafeAreaView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: \"#edf2f8\",\n  },\n  // Bande de header blanche, separee du corps par une bordure + ombre douce.\n  header: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    gap: 12,\n    paddingHorizontal: 16,\n    paddingVertical: 12,\n    backgroundColor: \"#ffffff\",\n    borderBottomWidth: 1,\n    borderBottomColor: \"#e2e8f0\",\n    // Ombre douce pour decoller le header du corps (iOS + Android).\n    shadowColor: \"#0f2d6b\",\n    shadowOffset: { width: 0, height: 2 },\n    shadowOpacity: 0.08,\n    shadowRadius: 6,\n    elevation: 3,\n  },\n  brandBlock: {\n    flex: 1,\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 10,\n  },\n  // Fond/bordure du logo ; taille/rayon poses par BrandLogo.\n  logo: {\n    backgroundColor: \"#f1f5f9\",\n    borderWidth: 1,\n    borderColor: \"#e2e8f0\",\n  },\n  titleBlock: {\n    flex: 1,\n  },\n  appName: {\n    fontSize: 18,\n    fontWeight: \"800\",\n  },\n  welcome: {\n    color: \"#6a7a96\",\n    fontWeight: \"600\",\n    fontSize: 12,\n    marginTop: 1,\n  },\n  headerActions: {\n    flexDirection: \"row\",\n    gap: 14,\n  },\n  headerLink: {\n    color: \"#1e56a8\",\n    fontWeight: \"700\",\n    fontSize: 13,\n  },\n  body: {\n    flex: 1,\n    padding: 16,\n    gap: 12,\n  },\n  sectionRow: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 8,\n  },\n  sectionTitle: {\n    fontSize: 16,\n    fontWeight: \"700\",\n    color: \"#16325c\",\n  },\n  netDot: {\n    width: 10,\n    height: 10,\n    borderRadius: 5,\n  },\n  grid: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: 12,\n    paddingBottom: 24,\n  },\n});\n","import React from \"react\";\nimport { Pressable, StyleSheet, Text, View } from \"react-native\";\n\ntype Props = {\n  icon: string;\n  title: string;\n  subtitle?: string;\n  brandColor: string;\n  badge?: number | null;\n  comingSoon?: boolean;\n  onPress?: () => void;\n};\n\n// Carte d'action du hub d'accueil. Reprend la grille de cartes du dashboard\n// tech coolcare (.actions-grid / .action-card) en version React Native.\nexport default function FeatureCard({\n  icon,\n  title,\n  subtitle,\n  brandColor,\n  badge,\n  comingSoon,\n  onPress,\n}: Readonly<Props>) {\n  // Une carte sans handler n'est pas cliquable (ex: fonctionnalite a venir non\n  // encore branchee). Le pastille \"Bientot\" est purement visuelle : une carte\n  // peut etre \"Bientot\" et quand meme ouvrir un ecran d'explication.\n  const disabled = !onPress;\n  const showBadge = !comingSoon && badge != null && badge > 0;\n\n  return (\n    <Pressable\n      style={({ pressed }) => [\n        styles.card,\n        disabled && styles.cardDisabled,\n        pressed && !disabled && styles.cardPressed,\n      ]}\n      onPress={onPress}\n      disabled={disabled}\n    >\n      <View style={styles.topRow}>\n        <Text style={styles.icon}>{icon}</Text>\n        {comingSoon ? (\n          <View style={styles.soonPill}>\n            <Text style={styles.soonText}>Bientot</Text>\n          </View>\n        ) : null}\n        {showBadge ? (\n          <View style={[styles.badge, { backgroundColor: brandColor }]}>\n            <Text style={styles.badgeText}>{badge}</Text>\n          </View>\n        ) : null}\n      </View>\n      <Text style={[styles.title, disabled && styles.titleDisabled]}>{title}</Text>\n      {subtitle ? <Text style={styles.subtitle}>{subtitle}</Text> : null}\n    </Pressable>\n  );\n}\n\nconst styles = StyleSheet.create({\n  card: {\n    flexBasis: \"47%\",\n    flexGrow: 1,\n    minHeight: 118,\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    backgroundColor: \"#ffffff\",\n    borderRadius: 14,\n    padding: 14,\n    gap: 8,\n    justifyContent: \"flex-start\",\n  },\n  cardDisabled: {\n    backgroundColor: \"#f4f7fc\",\n    borderColor: \"#e3ebf8\",\n  },\n  cardPressed: {\n    transform: [{ translateY: -1 }],\n    borderColor: \"#9db8e6\",\n  },\n  topRow: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    minHeight: 28,\n  },\n  icon: {\n    fontSize: 26,\n  },\n  badge: {\n    minWidth: 24,\n    height: 24,\n    borderRadius: 12,\n    paddingHorizontal: 6,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  badgeText: {\n    color: \"#ffffff\",\n    fontSize: 12,\n    fontWeight: \"800\",\n  },\n  soonPill: {\n    backgroundColor: \"#fef3c7\",\n    borderColor: \"#fcd34d\",\n    borderWidth: 1,\n    borderRadius: 999,\n    paddingHorizontal: 8,\n    paddingVertical: 2,\n  },\n  soonText: {\n    color: \"#92400e\",\n    fontSize: 10,\n    fontWeight: \"800\",\n  },\n  title: {\n    fontSize: 15,\n    fontWeight: \"800\",\n    color: \"#16325c\",\n  },\n  titleDisabled: {\n    color: \"#94a3b8\",\n  },\n  subtitle: {\n    fontSize: 12,\n    color: \"#6a7a96\",\n    fontWeight: \"600\",\n  },\n});\n","import React, { useState } from \"react\";\nimport {\n  Image,\n  StyleSheet,\n  Text,\n  View,\n  type StyleProp,\n  type ViewStyle,\n} from \"react-native\";\n\ntype Props = {\n  logoUrl?: string | null;\n  /** Nom du tenant / app — sert a derouler l'initiale du fallback. */\n  name: string;\n  /** Couleur de marque : fond du fallback initiale. */\n  brandColor: string;\n  size: number;\n  radius?: number;\n  /** Style du conteneur (fond/bordure/ombre) applique en mode image. */\n  style?: StyleProp<ViewStyle>;\n};\n\n// SVG non supporte par <Image> de React Native (rendrait un cadre blanc). On le\n// detecte pour retomber directement sur le fallback initiale, sans tenter le\n// chargement.\nfunction isRenderableImageUrl(url: string): boolean {\n  return !/\\.svg(\\?|#|$)/i.test(url);\n}\n\n/**\n * Logo de marque tenant avec fallback robuste : affiche l'image si l'URL est\n * exploitable (raster, pas SVG) et qu'elle charge ; sinon une pastille coloree\n * avec l'initiale du nom. Evite le \"cadre blanc\" quand le backend renvoie un\n * logo absent, en SVG, ou une URL cassee.\n */\nexport default function BrandLogo({\n  logoUrl,\n  name,\n  brandColor,\n  size,\n  radius,\n  style,\n}: Readonly<Props>) {\n  const [failed, setFailed] = useState(false);\n\n  const borderRadius = radius ?? Math.round(size * 0.22);\n  const showImage = Boolean(logoUrl && isRenderableImageUrl(logoUrl) && !failed);\n  const box = { width: size, height: size, borderRadius };\n\n  if (showImage) {\n    return (\n      <View style={[box, style]}>\n        <Image\n          source={{ uri: logoUrl as string }}\n          style={box}\n          resizeMode=\"contain\"\n          onError={() => setFailed(true)}\n        />\n      </View>\n    );\n  }\n\n  const initial = name.trim().charAt(0).toUpperCase() || \"M\";\n  return (\n    <View\n      style={[box, styles.fallback, { backgroundColor: brandColor }, style]}\n    >\n      <Text style={[styles.fallbackText, { fontSize: Math.round(size * 0.45) }]}>\n        {initial}\n      </Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  fallback: {\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  fallbackText: {\n    color: \"#ffffff\",\n    fontWeight: \"800\",\n  },\n});\n","import React, { useMemo } from \"react\";\nimport { ScrollView, StyleSheet, Text, View } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport type { MobileIntervention } from \"../../types/intervention\";\nimport { formatInterventionDate, isDoneStatus, isTodoStatus } from \"../../shared/interventionUtils\";\n\ntype Props = {\n  interventions: MobileIntervention[];\n  brandColor: string;\n};\n\nfunction parseDate(value: string | undefined): Date | null {\n  if (!value) {\n    return null;\n  }\n  const parsed = new Date(value.replace(\" \", \"T\"));\n  return Number.isNaN(parsed.getTime()) ? null : parsed;\n}\n\nfunction StatTile({\n  value,\n  label,\n  brandColor,\n}: Readonly<{ value: string | number; label: string; brandColor: string }>) {\n  return (\n    <View style={styles.tile}>\n      <Text style={[styles.tileValue, { color: brandColor }]}>{value}</Text>\n      <Text style={styles.tileLabel}>{label}</Text>\n    </View>\n  );\n}\n\n// Statistiques calculees cote mobile a partir des interventions deja chargees\n// (aucun appel reseau). Equivalent allege de la carte \"Statistiques\" du\n// dashboard coolcare. Le \"temps moyen\" cote web n'est pas reproductible ici car\n// les dates debut/fin ne figurent pas dans la liste mobile : on s'en tient aux\n// compteurs reellement disponibles.\nexport default function StatsScreen({ interventions, brandColor }: Readonly<Props>) {\n  const insets = useSafeAreaInsets();\n\n  const stats = useMemo(() => {\n    const now = new Date();\n    const month = now.getMonth();\n    const year = now.getFullYear();\n    const todayStr = now.toDateString();\n\n    let todo = 0;\n    let done = 0;\n    let thisMonth = 0;\n    let today = 0;\n    let last: Date | null = null;\n\n    for (const intervention of interventions) {\n      if (isTodoStatus(intervention.statut)) {\n        todo += 1;\n      }\n      if (isDoneStatus(intervention.statut)) {\n        done += 1;\n      }\n\n      // Les compteurs \"ce mois\" / \"aujourd'hui\" ne comptent que les\n      // interventions a faire ou terminees, jamais les annulees (ni un statut\n      // inconnu) : sinon les chiffres divergent du reste de l'app qui exclut\n      // 'annulee' (cf. interventionUtils).\n      const counts = isTodoStatus(intervention.statut) || isDoneStatus(intervention.statut);\n      const date = parseDate(intervention.date_prevue);\n      if (date) {\n        if (counts && date.getMonth() === month && date.getFullYear() === year) {\n          thisMonth += 1;\n        }\n        if (counts && date.toDateString() === todayStr) {\n          today += 1;\n        }\n        if (isDoneStatus(intervention.statut) && (!last || date > last)) {\n          last = date;\n        }\n      }\n    }\n\n    return {\n      total: interventions.length,\n      todo,\n      done,\n      thisMonth,\n      today,\n      lastLabel: last ? formatInterventionDate(last.toISOString()) : \"Aucune\",\n    };\n  }, [interventions]);\n\n  return (\n    <ScrollView\n      style={styles.screen}\n      contentContainerStyle={[styles.content, { paddingBottom: insets.bottom + 24 }]}\n      showsVerticalScrollIndicator={false}\n    >\n      <Text style={styles.heading}>Activite</Text>\n      <View style={styles.grid}>\n        <StatTile value={stats.today} label=\"Aujourd'hui\" brandColor={brandColor} />\n        <StatTile value={stats.thisMonth} label=\"Ce mois\" brandColor={brandColor} />\n        <StatTile value={stats.todo} label=\"A faire\" brandColor={brandColor} />\n        <StatTile value={stats.done} label=\"Terminees\" brandColor={brandColor} />\n      </View>\n\n      <View style={styles.row}>\n        <Text style={styles.rowLabel}>Total interventions</Text>\n        <Text style={styles.rowValue}>{stats.total}</Text>\n      </View>\n      <View style={styles.row}>\n        <Text style={styles.rowLabel}>Derniere intervention terminee</Text>\n        <Text style={styles.rowValue}>{stats.lastLabel}</Text>\n      </View>\n\n      <Text style={styles.note}>\n        Statistiques calculees a partir des missions chargees sur cet appareil.\n      </Text>\n    </ScrollView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: \"#edf2f8\",\n  },\n  content: {\n    padding: 16,\n    gap: 12,\n  },\n  heading: {\n    fontSize: 16,\n    fontWeight: \"700\",\n    color: \"#16325c\",\n  },\n  grid: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: 12,\n  },\n  tile: {\n    flexBasis: \"47%\",\n    flexGrow: 1,\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 14,\n    paddingVertical: 18,\n    alignItems: \"center\",\n    gap: 4,\n  },\n  tileValue: {\n    fontSize: 30,\n    fontWeight: \"800\",\n  },\n  tileLabel: {\n    fontSize: 12,\n    color: \"#6a7a96\",\n    fontWeight: \"700\",\n  },\n  row: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#e3ebf8\",\n    borderRadius: 12,\n    padding: 14,\n  },\n  rowLabel: {\n    flex: 1,\n    color: \"#334155\",\n    fontWeight: \"600\",\n  },\n  rowValue: {\n    color: \"#16325c\",\n    fontWeight: \"800\",\n  },\n  note: {\n    color: \"#6a7a96\",\n    fontSize: 12,\n    marginTop: 4,\n  },\n});\n","import React, { useMemo, useState } from \"react\";\nimport { Pressable, ScrollView, StyleSheet, Text, View } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport type { MobileIntervention } from \"../../types/intervention\";\nimport { detailValue, getStatusStyle, isTodoStatus } from \"../../shared/interventionUtils\";\n\ntype Props = {\n  interventions: MobileIntervention[];\n  brandColor: string;\n  onOpenDetail: (id: number) => void;\n  // Jour a preselectionner a l'ouverture (deep-link notification \"resume\n  // quotidien\"). \"today\" / \"tomorrow\" / absent => aujourd'hui.\n  initialDay?: \"today\" | \"tomorrow\";\n};\n\nconst WEEKDAYS = [\"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\", \"Dim\"];\nconst MONTHS = [\n  \"Janvier\", \"Fevrier\", \"Mars\", \"Avril\", \"Mai\", \"Juin\",\n  \"Juillet\", \"Aout\", \"Septembre\", \"Octobre\", \"Novembre\", \"Decembre\",\n];\n\nfunction parseDate(value: string | undefined): Date | null {\n  if (!value) {\n    return null;\n  }\n  const parsed = new Date(value.replace(\" \", \"T\"));\n  return Number.isNaN(parsed.getTime()) ? null : parsed;\n}\n\nfunction dayKey(y: number, m: number, d: number): string {\n  return `${y}-${String(m + 1).padStart(2, \"0\")}-${String(d).padStart(2, \"0\")}`;\n}\n\nfunction keyOf(d: Date): string {\n  return dayKey(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\nfunction timeLabel(d: Date): string {\n  return `${String(d.getHours()).padStart(2, \"0\")}:${String(d.getMinutes()).padStart(2, \"0\")}`;\n}\n\ntype Entry = { it: MobileIntervention; date: Date };\n\nexport default function PlanningScreen({ interventions, brandColor, onOpenDetail, initialDay }: Readonly<Props>) {\n  const insets = useSafeAreaInsets();\n  const now = useMemo(() => new Date(), []);\n  const todayKey = keyOf(now);\n\n  // Cible initiale : aujourd'hui par defaut, demain si le deep-link l'indique.\n  // `now`/`todayKey` restent la vraie date du jour (surlignage \"aujourd'hui\").\n  const initialTarget = useMemo(() => {\n    const t = new Date();\n    if (initialDay === \"tomorrow\") {\n      t.setDate(t.getDate() + 1);\n    }\n    return t;\n  }, [initialDay]);\n\n  const [viewYear, setViewYear] = useState(initialTarget.getFullYear());\n  const [viewMonth, setViewMonth] = useState(initialTarget.getMonth());\n  const [selectedKey, setSelectedKey] = useState(keyOf(initialTarget));\n\n  // Index des interventions planifiees par jour (toutes dates confondues).\n  const byDay = useMemo(() => {\n    const map = new Map<string, Entry[]>();\n    for (const it of interventions) {\n      // Calendrier : on n'affiche que les missions \"a faire / en cours\"\n      // (miroir de planning.php qui ne montre que planifiee + en_cours).\n      if (!isTodoStatus(it.statut)) {\n        continue;\n      }\n      const date = parseDate(it.date_prevue);\n      if (!date) {\n        continue;\n      }\n      const key = keyOf(date);\n      const list = map.get(key) ?? [];\n      list.push({ it, date });\n      map.set(key, list);\n    }\n    for (const list of map.values()) {\n      list.sort((a, b) => a.date.getTime() - b.date.getTime());\n    }\n    return map;\n  }, [interventions]);\n\n  // Construction de la grille du mois (semaines Lundi -> Dimanche).\n  const weeks = useMemo(() => {\n    const firstDay = new Date(viewYear, viewMonth, 1);\n    const offset = (firstDay.getDay() + 6) % 7; // 0 = lundi\n    const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();\n\n    const cells: (number | null)[] = [];\n    for (let i = 0; i < offset; i += 1) {\n      cells.push(null);\n    }\n    for (let d = 1; d <= daysInMonth; d += 1) {\n      cells.push(d);\n    }\n    while (cells.length % 7 !== 0) {\n      cells.push(null);\n    }\n    const rows: (number | null)[][] = [];\n    for (let i = 0; i < cells.length; i += 7) {\n      rows.push(cells.slice(i, i + 7));\n    }\n    return rows;\n  }, [viewYear, viewMonth]);\n\n  const changeMonth = (delta: number) => {\n    const base = new Date(viewYear, viewMonth + delta, 1);\n    setViewYear(base.getFullYear());\n    setViewMonth(base.getMonth());\n  };\n\n  const selectedEntries = byDay.get(selectedKey) ?? [];\n  const monthCount = useMemo(() => {\n    let n = 0;\n    for (const [key, list] of byDay.entries()) {\n      if (key.startsWith(`${viewYear}-${String(viewMonth + 1).padStart(2, \"0\")}-`)) {\n        n += list.length;\n      }\n    }\n    return n;\n  }, [byDay, viewYear, viewMonth]);\n\n  return (\n    <ScrollView\n      style={styles.screen}\n      contentContainerStyle={[styles.content, { paddingBottom: insets.bottom + 24 }]}\n      showsVerticalScrollIndicator={false}\n    >\n      {/* En-tete mois */}\n      <View style={styles.monthHeader}>\n        <Pressable style={styles.navBtn} onPress={() => changeMonth(-1)} hitSlop={8}>\n          <Text style={[styles.navArrow, { color: brandColor }]}>‹</Text>\n        </Pressable>\n        <View style={styles.monthTitleBlock}>\n          <Text style={styles.monthTitle}>\n            {MONTHS[viewMonth]} {viewYear}\n          </Text>\n          <Text style={styles.monthCount}>\n            {monthCount} intervention{monthCount > 1 ? \"s\" : \"\"}\n          </Text>\n        </View>\n        <Pressable style={styles.navBtn} onPress={() => changeMonth(1)} hitSlop={8}>\n          <Text style={[styles.navArrow, { color: brandColor }]}>›</Text>\n        </Pressable>\n      </View>\n\n      {/* Jours de la semaine */}\n      <View style={styles.weekRow}>\n        {WEEKDAYS.map((w) => (\n          <Text key={w} style={styles.weekday}>\n            {w}\n          </Text>\n        ))}\n      </View>\n\n      {/* Grille */}\n      <View style={styles.calendar}>\n        {weeks.map((week, wi) => (\n          <View key={`w${wi}`} style={styles.weekLine}>\n            {week.map((day, di) => {\n              if (day === null) {\n                return <View key={`e${wi}-${di}`} style={styles.cell} />;\n              }\n              const key = dayKey(viewYear, viewMonth, day);\n              const count = byDay.get(key)?.length ?? 0;\n              const isToday = key === todayKey;\n              const isSelected = key === selectedKey;\n              return (\n                <Pressable\n                  key={key}\n                  style={styles.cell}\n                  onPress={() => setSelectedKey(key)}\n                >\n                  <View\n                    style={[\n                      styles.dayInner,\n                      isToday && styles.dayToday,\n                      isSelected && { backgroundColor: brandColor },\n                    ]}\n                  >\n                    <Text\n                      style={[\n                        styles.dayNumber,\n                        isSelected && styles.dayNumberSelected,\n                      ]}\n                    >\n                      {day}\n                    </Text>\n                  </View>\n                  {count > 0 ? (\n                    <View\n                      style={[\n                        styles.dot,\n                        { backgroundColor: isSelected ? brandColor : \"#1e56a8\" },\n                      ]}\n                    />\n                  ) : (\n                    <View style={styles.dotPlaceholder} />\n                  )}\n                </Pressable>\n              );\n            })}\n          </View>\n        ))}\n      </View>\n\n      {/* Liste du jour selectionne */}\n      <Text style={styles.dayHeader}>\n        {(() => {\n          const [yy, mm, dd] = selectedKey.split(\"-\").map(Number);\n          const d = new Date(yy, mm - 1, dd);\n          return `${WEEKDAYS[(d.getDay() + 6) % 7]} ${dd} ${MONTHS[mm - 1]}`;\n        })()}\n      </Text>\n\n      {selectedEntries.length === 0 ? (\n        <Text style={styles.muted}>Aucune intervention ce jour-la.</Text>\n      ) : (\n        selectedEntries.map(({ it, date }) => {\n          const status = getStatusStyle(it.statut);\n          return (\n            <Pressable key={it.id} style={styles.row} onPress={() => onOpenDetail(it.id)}>\n              <View style={[styles.timeBadge, { borderColor: brandColor }]}>\n                <Text style={[styles.timeText, { color: brandColor }]}>{timeLabel(date)}</Text>\n              </View>\n              <View style={styles.rowBody}>\n                <Text style={styles.rowTitle}>{detailValue(it.site_nom)}</Text>\n                <Text style={styles.rowSub}>{detailValue(it.machine_nom)}</Text>\n              </View>\n              <View\n                style={[\n                  styles.chip,\n                  { backgroundColor: status.backgroundColor, borderColor: status.borderColor },\n                ]}\n              >\n                <Text style={[styles.chipText, { color: status.color }]}>{status.label}</Text>\n              </View>\n            </Pressable>\n          );\n        })\n      )}\n    </ScrollView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: \"#edf2f8\",\n  },\n  content: {\n    padding: 16,\n    gap: 12,\n  },\n  monthHeader: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n  },\n  navBtn: {\n    width: 40,\n    height: 40,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: 10,\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n  },\n  navArrow: {\n    fontSize: 24,\n    fontWeight: \"800\",\n    lineHeight: 26,\n  },\n  monthTitleBlock: {\n    alignItems: \"center\",\n  },\n  monthTitle: {\n    fontSize: 17,\n    fontWeight: \"800\",\n    color: \"#16325c\",\n  },\n  monthCount: {\n    fontSize: 12,\n    color: \"#6a7a96\",\n    fontWeight: \"600\",\n  },\n  weekRow: {\n    flexDirection: \"row\",\n  },\n  weekday: {\n    flex: 1,\n    textAlign: \"center\",\n    fontSize: 11,\n    fontWeight: \"700\",\n    color: \"#66748f\",\n  },\n  calendar: {\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 14,\n    padding: 6,\n    gap: 2,\n  },\n  weekLine: {\n    flexDirection: \"row\",\n  },\n  cell: {\n    flex: 1,\n    aspectRatio: 1,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    gap: 2,\n  },\n  dayInner: {\n    width: 34,\n    height: 34,\n    borderRadius: 17,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  dayToday: {\n    borderWidth: 1.5,\n    borderColor: \"#9db8e6\",\n  },\n  dayNumber: {\n    fontSize: 14,\n    fontWeight: \"700\",\n    color: \"#1f2f4f\",\n  },\n  dayNumberSelected: {\n    color: \"#ffffff\",\n  },\n  dot: {\n    width: 6,\n    height: 6,\n    borderRadius: 3,\n  },\n  dotPlaceholder: {\n    width: 6,\n    height: 6,\n  },\n  dayHeader: {\n    fontSize: 15,\n    fontWeight: \"800\",\n    color: \"#16325c\",\n    marginTop: 4,\n    textTransform: \"capitalize\",\n  },\n  muted: {\n    color: \"#6a7a96\",\n  },\n  row: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 10,\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 12,\n    padding: 12,\n  },\n  timeBadge: {\n    borderWidth: 1,\n    borderRadius: 8,\n    paddingVertical: 4,\n    paddingHorizontal: 6,\n    minWidth: 52,\n    alignItems: \"center\",\n  },\n  timeText: {\n    fontSize: 13,\n    fontWeight: \"800\",\n  },\n  rowBody: {\n    flex: 1,\n    gap: 2,\n  },\n  rowTitle: {\n    fontSize: 14,\n    fontWeight: \"700\",\n    color: \"#16325c\",\n  },\n  rowSub: {\n    fontSize: 12,\n    color: \"#6a7a96\",\n  },\n  chip: {\n    borderWidth: 1,\n    borderRadius: 999,\n    paddingVertical: 3,\n    paddingHorizontal: 8,\n  },\n  chipText: {\n    fontSize: 11,\n    fontWeight: \"700\",\n  },\n});\n","import React, { useState } from \"react\";\nimport {\n  ActivityIndicator,\n  Alert,\n  Modal,\n  Pressable,\n  ScrollView,\n  StyleSheet,\n  Text,\n  TextInput,\n  View,\n} from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport type { MobileUser } from \"../../types/auth\";\nimport { changePassword, updateTelephone } from \"../../services/profileApi\";\n\ntype Props = {\n  user: MobileUser | null;\n  instanceUrl: string | null;\n  brandColor: string;\n  onUserRefreshed: () => void | Promise<void>;\n};\n\nconst ROLE_LABELS: Record<string, string> = {\n  technicien: \"Technicien\",\n  admin: \"Administrateur\",\n  superadmin: \"Super administrateur\",\n};\n\n// Une date d'etalonnage est soit \"JJ/MM/AAAA\", soit un avertissement si absente\n// (meme logique que la carte \"Mes Informations\" du dashboard PWA).\nfunction formatCalibration(value: string | null | undefined): { text: string; warn: boolean } {\n  if (!value) {\n    return { text: \"⚠️ Etalonnage requis\", warn: true };\n  }\n  const parsed = new Date(`${value}T00:00:00`);\n  if (Number.isNaN(parsed.getTime())) {\n    return { text: value, warn: false };\n  }\n  const dd = String(parsed.getDate()).padStart(2, \"0\");\n  const mm = String(parsed.getMonth() + 1).padStart(2, \"0\");\n  return { text: `${dd}/${mm}/${parsed.getFullYear()}`, warn: false };\n}\n\nfunction InfoItem({ label, value }: Readonly<{ label: string; value: string }>) {\n  return (\n    <View style={styles.item}>\n      <Text style={styles.itemLabel}>{label}</Text>\n      <Text style={styles.itemValue}>{value}</Text>\n    </View>\n  );\n}\n\nfunction CalibrationItem({\n  label,\n  raw,\n}: Readonly<{ label: string; raw: string | null | undefined }>) {\n  const { text, warn } = formatCalibration(raw);\n  return (\n    <View style={styles.item}>\n      <Text style={styles.itemLabel}>{label}</Text>\n      <Text style={[styles.itemValue, warn && styles.warnValue]}>{text}</Text>\n    </View>\n  );\n}\n\nexport default function MyInfoScreen({\n  user,\n  instanceUrl,\n  brandColor,\n  onUserRefreshed,\n}: Readonly<Props>) {\n  const insets = useSafeAreaInsets();\n  const roleLabel = user?.role ? ROLE_LABELS[user.role] || user.role : \"-\";\n\n  // Edition telephone (inline).\n  const [editingPhone, setEditingPhone] = useState(false);\n  const [phone, setPhone] = useState(user?.telephone ?? \"\");\n  const [phoneSaving, setPhoneSaving] = useState(false);\n\n  // Le profil expose-t-il les champs enrichis ? (instance a jour)\n  const hasProfileFields =\n    user != null &&\n    (\"telephone\" in user ||\n      \"numero_habilitation_fluide\" in user ||\n      \"date_etalonage_detection_fuite\" in user);\n\n  const savePhone = async () => {\n    setPhoneSaving(true);\n    try {\n      await updateTelephone(phone.trim());\n      setEditingPhone(false);\n      await onUserRefreshed();\n    } catch (error) {\n      Alert.alert(\"Modification impossible\", error instanceof Error ? error.message : \"Erreur\");\n    } finally {\n      setPhoneSaving(false);\n    }\n  };\n\n  // Changement de mot de passe (modale).\n  const [pwdOpen, setPwdOpen] = useState(false);\n  const [currentPwd, setCurrentPwd] = useState(\"\");\n  const [newPwd, setNewPwd] = useState(\"\");\n  const [confirmPwd, setConfirmPwd] = useState(\"\");\n  const [pwdSubmitting, setPwdSubmitting] = useState(false);\n  const [pwdError, setPwdError] = useState<string | null>(null);\n\n  const closePwd = () => {\n    setPwdOpen(false);\n    setCurrentPwd(\"\");\n    setNewPwd(\"\");\n    setConfirmPwd(\"\");\n    setPwdError(null);\n    setPwdSubmitting(false);\n  };\n\n  const submitPwd = async () => {\n    if (!currentPwd || !newPwd) {\n      setPwdError(\"Renseignez le mot de passe actuel et le nouveau.\");\n      return;\n    }\n    if (newPwd !== confirmPwd) {\n      setPwdError(\"La confirmation ne correspond pas au nouveau mot de passe.\");\n      return;\n    }\n    setPwdSubmitting(true);\n    setPwdError(null);\n    try {\n      await changePassword(currentPwd, newPwd);\n      closePwd();\n      Alert.alert(\"Mot de passe modifie\", \"Votre mot de passe a ete mis a jour.\");\n    } catch (error) {\n      setPwdError(error instanceof Error ? error.message : \"Echec du changement\");\n      setPwdSubmitting(false);\n    }\n  };\n\n  return (\n    <>\n      <ScrollView\n        style={styles.screen}\n        contentContainerStyle={[styles.content, { paddingBottom: insets.bottom + 24 }]}\n        showsVerticalScrollIndicator={false}\n      >\n        <Text style={styles.heading}>Profil</Text>\n        <InfoItem label=\"Nom\" value={user?.name || \"-\"} />\n        <InfoItem label=\"Email\" value={user?.email || \"-\"} />\n        <InfoItem label=\"Role\" value={roleLabel} />\n\n        {/* Telephone editable */}\n        <View style={styles.item}>\n          <View style={styles.itemHeaderRow}>\n            <Text style={styles.itemLabel}>Telephone</Text>\n            {hasProfileFields && !editingPhone ? (\n              <Pressable\n                onPress={() => {\n                  setPhone(user?.telephone ?? \"\");\n                  setEditingPhone(true);\n                }}\n              >\n                <Text style={[styles.link, { color: brandColor }]}>Modifier</Text>\n              </Pressable>\n            ) : null}\n          </View>\n          {editingPhone ? (\n            <View style={styles.editRow}>\n              <TextInput\n                style={styles.input}\n                value={phone}\n                onChangeText={setPhone}\n                placeholder=\"Ex: 06 12 34 56 78\"\n                keyboardType=\"phone-pad\"\n                editable={!phoneSaving}\n              />\n              <View style={styles.editButtons}>\n                <Pressable\n                  style={[styles.smallButton, styles.cancelButton]}\n                  onPress={() => setEditingPhone(false)}\n                  disabled={phoneSaving}\n                >\n                  <Text style={styles.cancelText}>Annuler</Text>\n                </Pressable>\n                <Pressable\n                  style={[styles.smallButton, { backgroundColor: brandColor }]}\n                  onPress={savePhone}\n                  disabled={phoneSaving}\n                >\n                  {phoneSaving ? (\n                    <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n                  ) : (\n                    <Text style={styles.saveText}>Enregistrer</Text>\n                  )}\n                </Pressable>\n              </View>\n            </View>\n          ) : (\n            <Text style={styles.itemValue}>{user?.telephone || \"-\"}</Text>\n          )}\n        </View>\n\n        <InfoItem label=\"Instance\" value={instanceUrl || \"-\"} />\n\n        {hasProfileFields ? (\n          <>\n            <Text style={styles.heading}>Habilitation</Text>\n            <InfoItem\n              label=\"N° habilitation fluide\"\n              value={user?.numero_habilitation_fluide || \"-\"}\n            />\n\n            <Text style={styles.heading}>Etalonnages</Text>\n            <CalibrationItem\n              label=\"Detection de fuite\"\n              raw={user?.date_etalonage_detection_fuite}\n            />\n            <CalibrationItem\n              label=\"Capteur de temperature\"\n              raw={user?.date_etalonage_capteur_temperature}\n            />\n            <CalibrationItem label=\"Balance\" raw={user?.date_etalonage_balance} />\n\n            <Text style={styles.heading}>Securite</Text>\n            <Pressable\n              style={[styles.fullButton, { backgroundColor: brandColor }]}\n              onPress={() => setPwdOpen(true)}\n            >\n              <Text style={styles.fullButtonText}>Changer mon mot de passe</Text>\n            </Pressable>\n          </>\n        ) : (\n          <Text style={styles.note}>\n            Les etalonnages, l'habilitation et l'edition du profil necessitent une\n            instance a jour. Ils restent consultables depuis l'application web.\n          </Text>\n        )}\n      </ScrollView>\n\n      <Modal\n        visible={pwdOpen}\n        transparent\n        animationType=\"slide\"\n        onRequestClose={pwdSubmitting ? undefined : closePwd}\n      >\n        <View style={styles.modalOverlay}>\n          <View style={[styles.modalCard, { paddingBottom: insets.bottom + 16 }]}>\n            <Text style={styles.modalTitle}>Changer mon mot de passe</Text>\n\n            <Text style={styles.fieldLabel}>Mot de passe actuel</Text>\n            <TextInput\n              style={styles.input}\n              value={currentPwd}\n              onChangeText={setCurrentPwd}\n              secureTextEntry\n              editable={!pwdSubmitting}\n            />\n            <Text style={styles.fieldLabel}>Nouveau mot de passe</Text>\n            <TextInput\n              style={styles.input}\n              value={newPwd}\n              onChangeText={setNewPwd}\n              secureTextEntry\n              editable={!pwdSubmitting}\n            />\n            <Text style={styles.hint}>\n              8+ caracteres, avec majuscule, minuscule, chiffre et caractere special.\n            </Text>\n            <Text style={styles.fieldLabel}>Confirmer le nouveau mot de passe</Text>\n            <TextInput\n              style={styles.input}\n              value={confirmPwd}\n              onChangeText={setConfirmPwd}\n              secureTextEntry\n              editable={!pwdSubmitting}\n            />\n\n            {pwdError ? <Text style={styles.modalError}>{pwdError}</Text> : null}\n\n            <View style={styles.modalButtons}>\n              <Pressable\n                style={[styles.modalButton, styles.cancelButton]}\n                onPress={closePwd}\n                disabled={pwdSubmitting}\n              >\n                <Text style={styles.cancelText}>Annuler</Text>\n              </Pressable>\n              <Pressable\n                style={[styles.modalButton, { backgroundColor: brandColor }]}\n                onPress={() => void submitPwd()}\n                disabled={pwdSubmitting}\n              >\n                {pwdSubmitting ? (\n                  <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n                ) : (\n                  <Text style={styles.saveText}>Valider</Text>\n                )}\n              </Pressable>\n            </View>\n          </View>\n        </View>\n      </Modal>\n    </>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: \"#edf2f8\",\n  },\n  content: {\n    padding: 16,\n    gap: 10,\n  },\n  heading: {\n    fontSize: 16,\n    fontWeight: \"700\",\n    color: \"#16325c\",\n    marginTop: 6,\n  },\n  item: {\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#e3ebf8\",\n    borderRadius: 12,\n    padding: 14,\n    gap: 4,\n  },\n  itemHeaderRow: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n  },\n  itemLabel: {\n    fontSize: 11,\n    color: \"#66748f\",\n    fontWeight: \"700\",\n  },\n  itemValue: {\n    fontSize: 15,\n    color: \"#1f2f4f\",\n    fontWeight: \"700\",\n  },\n  warnValue: {\n    color: \"#b45309\",\n  },\n  link: {\n    fontWeight: \"700\",\n    fontSize: 13,\n  },\n  editRow: {\n    gap: 8,\n    marginTop: 4,\n  },\n  editButtons: {\n    flexDirection: \"row\",\n    gap: 8,\n    justifyContent: \"flex-end\",\n  },\n  input: {\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 10,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    fontSize: 15,\n    color: \"#1f2f4f\",\n    backgroundColor: \"#f8fbff\",\n  },\n  smallButton: {\n    borderRadius: 8,\n    paddingVertical: 8,\n    paddingHorizontal: 14,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  cancelButton: {\n    backgroundColor: \"#eef3fb\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n  },\n  cancelText: {\n    color: \"#1e56a8\",\n    fontWeight: \"700\",\n  },\n  saveText: {\n    color: \"#ffffff\",\n    fontWeight: \"800\",\n  },\n  fullButton: {\n    borderRadius: 10,\n    paddingVertical: 12,\n    alignItems: \"center\",\n  },\n  fullButtonText: {\n    color: \"#ffffff\",\n    fontWeight: \"800\",\n  },\n  note: {\n    color: \"#6a7a96\",\n    fontSize: 12,\n    marginTop: 4,\n  },\n  modalOverlay: {\n    flex: 1,\n    backgroundColor: \"rgba(15, 23, 42, 0.45)\",\n    justifyContent: \"flex-end\",\n  },\n  modalCard: {\n    backgroundColor: \"#ffffff\",\n    borderTopLeftRadius: 18,\n    borderTopRightRadius: 18,\n    padding: 20,\n    gap: 8,\n  },\n  modalTitle: {\n    fontSize: 18,\n    fontWeight: \"800\",\n    color: \"#16325c\",\n  },\n  fieldLabel: {\n    fontSize: 12,\n    fontWeight: \"700\",\n    color: \"#66748f\",\n    marginTop: 6,\n  },\n  hint: {\n    fontSize: 11,\n    color: \"#6a7a96\",\n  },\n  modalError: {\n    color: \"#b00020\",\n    fontWeight: \"600\",\n    marginTop: 6,\n  },\n  modalButtons: {\n    flexDirection: \"row\",\n    gap: 10,\n    marginTop: 14,\n  },\n  modalButton: {\n    flex: 1,\n    borderRadius: 10,\n    paddingVertical: 12,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n});\n","import apiClient from \"./apiClient\";\nimport type { ApiEnvelope } from \"../types/auth\";\n\n// Met a jour le telephone du technicien via /mobile/profile_update.php.\n// Erreur metier (format invalide) remontee en Error pour affichage.\nexport async function updateTelephone(telephone: string): Promise<void> {\n  const response = await apiClient.post<ApiEnvelope<{ telephone: string }>>(\n    \"/mobile/profile_update.php\",\n    { telephone }\n  );\n  if (!response.data?.success) {\n    throw new Error(response.data?.message || \"Mise a jour impossible\");\n  }\n}\n\n// Change le mot de passe via /mobile/password_change.php. Le backend verifie\n// le mot de passe actuel et la robustesse du nouveau ; tout refus remonte en\n// Error avec le message backend.\nexport async function changePassword(\n  currentPassword: string,\n  newPassword: string\n): Promise<void> {\n  const response = await apiClient.post<ApiEnvelope<{ updated: boolean }>>(\n    \"/mobile/password_change.php\",\n    { current_password: currentPassword, new_password: newPassword }\n  );\n  if (!response.data?.success) {\n    throw new Error(response.data?.message || \"Changement de mot de passe impossible\");\n  }\n}\n","import React, { useState } from \"react\";\nimport {\n  Alert,\n  Linking,\n  Platform,\n  Pressable,\n  ScrollView,\n  StyleSheet,\n  Text,\n  View,\n} from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport Constants from \"expo-constants\";\nimport * as MailComposer from \"expo-mail-composer\";\nimport { sendTestCrashReport } from \"../../core/crashLog\";\n\ntype Props = {\n  appDisplayName: string;\n  instanceUrl: string | null;\n  tenantId: string | number | null;\n  supportEmail: string | null;\n  supportPhone: string | null;\n};\n\nconst APP_VERSION = Constants.expoConfig?.version ?? \"?\";\n\n// Bloc diagnostic injecte dans le corps du mail de support : permet de remonter\n// la chaine technicien -> client -> prestataire sans avoir a redemander le\n// contexte (instance, tenant, version, plateforme).\nfunction buildDiagnostic(props: Readonly<Props>): string {\n  const lines = [\n    \"\",\n    \"----------\",\n    \"Informations techniques (ne pas supprimer) :\",\n    `Application : ${props.appDisplayName} v${APP_VERSION}`,\n    `Instance : ${props.instanceUrl || \"-\"}`,\n    `Identifiant client : ${props.tenantId != null ? String(props.tenantId) : \"-\"}`,\n    `Plateforme : ${Platform.OS} ${Platform.Version}`,\n  ];\n  return lines.join(\"\\n\");\n}\n\n// On NE PASSE PAS par Linking.canOpenURL : sur Android 11+ (API 30) la package\n// visibility renvoie false pour les schemes mailto:/tel: tant que l'app ne\n// declare pas une <queries> d'intent dans le manifeste, ce qui faisait croire\n// a tort qu'\"aucune application de messagerie n'est disponible\". openURL lance\n// l'activite directement (non soumise a la visibility) et ne rejette que si\n// aucune app ne sait reellement ouvrir le lien : on n'alerte que dans ce cas.\nasync function openUrl(url: string, errorMessage: string): Promise<void> {\n  try {\n    await Linking.openURL(url);\n  } catch {\n    Alert.alert(\"Action impossible\", errorMessage);\n  }\n}\n\nconst MAIL_UNAVAILABLE = \"Aucune application de messagerie n'est disponible sur cet appareil.\";\n\n// Ouvre le mail de support en laissant le technicien CHOISIR sa messagerie.\n// expo-mail-composer presente, sur Android, un selecteur d'application (Gmail /\n// Outlook / ...) a chaque envoi : on ne subit plus l'app mail definie par\n// defaut du systeme. Le sujet et le corps (diagnostic) sont transmis en clair,\n// pas en URL-encode. Repli sur un lien mailto: si aucun composeur natif n'est\n// disponible (composeAsync resolvant 'cancelled' = annulation normale, on ne\n// retombe pas sur le repli dans ce cas).\nasync function composeSupportEmail(to: string, subject: string, body: string): Promise<void> {\n  try {\n    if (await MailComposer.isAvailableAsync()) {\n      await MailComposer.composeAsync({ recipients: [to], subject, body });\n      return;\n    }\n  } catch {\n    // Composeur natif indisponible/en echec : on tente le repli mailto ci-dessous.\n  }\n  const mailto = `mailto:${to}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;\n  await openUrl(mailto, MAIL_UNAVAILABLE);\n}\n\n// Carte \"Support\" du dashboard coolcare, version mobile. Les coordonnees\n// proviennent du branding tenant (mobile-config) : c'est le support de\n// l'instance du technicien. En l'absence d'email/telephone configures cote\n// backend, on retombe sur l'orientation vers l'administrateur web.\nexport default function SupportScreen({\n  appDisplayName,\n  instanceUrl,\n  tenantId,\n  supportEmail,\n  supportPhone,\n}: Readonly<Props>) {\n  const insets = useSafeAreaInsets();\n\n  // Diagnostic d'observabilite : volontairement cache (appui long sur la version)\n  // pour qu'un technicien ne declenche pas un crash de test par megarde et ne\n  // pollue pas la vue SuperAdmin. Reserve AUX BUILDS DE DEV (__DEV__) : en\n  // production le bouton n'existe pas, aucun envoi de test possible. La chaine\n  // de crash reporting ayant ete validee, on retest via un build dev au besoin.\n  const diagnosticEnabled = __DEV__;\n  const [diagnosticVisible, setDiagnosticVisible] = useState(false);\n  const [sendingTestCrash, setSendingTestCrash] = useState(false);\n\n  const onTestCrash = () => {\n    if (sendingTestCrash) {\n      return;\n    }\n    Alert.alert(\n      \"Tester la remontee de crash\",\n      \"Un incident de TEST (clairement marque par le prefixe 🧪 [TEST]) va etre envoye au backend pour verifier la chaine d'observabilite. Il apparaitra dans la vue « Crashs mobile » du SuperAdmin et n'est PAS un vrai incident.\",\n      [\n        { text: \"Annuler\", style: \"cancel\" },\n        {\n          text: \"Envoyer le test\",\n          style: \"destructive\",\n          onPress: () => {\n            setSendingTestCrash(true);\n            void sendTestCrashReport()\n              .then((count) => {\n                if (count > 0) {\n                  Alert.alert(\n                    \"Test envoye ✅\",\n                    `${count} incident(s) transmis au backend. Ouvrez la vue « Crashs mobile » du SuperAdmin et reperez le prefixe 🧪 [TEST].`\n                  );\n                } else {\n                  Alert.alert(\n                    \"Conserve en local ⏳\",\n                    \"L'envoi n'a pas abouti (hors-ligne ou backend injoignable). L'incident de test reste stocke et sera reessaye automatiquement au prochain sync — exactement comme un vrai crash.\"\n                  );\n                }\n              })\n              .finally(() => setSendingTestCrash(false));\n          },\n        },\n      ]\n    );\n  };\n\n  const onEmail = () => {\n    if (!supportEmail) {\n      return;\n    }\n    const subject = `Support ${appDisplayName}`;\n    const body = buildDiagnostic({\n      appDisplayName,\n      instanceUrl,\n      tenantId,\n      supportEmail,\n      supportPhone,\n    });\n    void composeSupportEmail(supportEmail, subject, body);\n  };\n\n  const onCall = () => {\n    if (!supportPhone) {\n      return;\n    }\n    const cleaned = supportPhone.replace(/[^+\\d]/g, \"\");\n    void openUrl(\n      `tel:${cleaned}`,\n      \"Impossible de lancer l'appel depuis cet appareil.\"\n    );\n  };\n\n  const hasContact = Boolean(supportEmail || supportPhone);\n\n  return (\n    <ScrollView\n      style={styles.screen}\n      contentContainerStyle={[styles.content, { paddingBottom: insets.bottom + 24 }]}\n      showsVerticalScrollIndicator={false}\n    >\n      <Text style={styles.heading}>A propos</Text>\n      <Pressable\n        accessibilityRole={diagnosticEnabled ? \"button\" : \"text\"}\n        accessibilityLabel={`Application ${appDisplayName} version ${APP_VERSION}`}\n        accessibilityHint={\n          diagnosticEnabled ? \"Appui long : afficher les outils de diagnostic\" : undefined\n        }\n        delayLongPress={800}\n        onLongPress={\n          diagnosticEnabled ? () => setDiagnosticVisible((visible) => !visible) : undefined\n        }\n        style={styles.item}\n      >\n        <Text style={styles.itemLabel}>Application</Text>\n        <Text style={styles.itemValue}>\n          {appDisplayName} v{APP_VERSION}\n        </Text>\n      </Pressable>\n      <View style={styles.item}>\n        <Text style={styles.itemLabel}>Instance</Text>\n        <Text style={styles.itemValue}>{instanceUrl || \"-\"}</Text>\n      </View>\n      {tenantId != null ? (\n        <View style={styles.item}>\n          <Text style={styles.itemLabel}>Identifiant client</Text>\n          <Text style={styles.itemValue}>{String(tenantId)}</Text>\n        </View>\n      ) : null}\n\n      {diagnosticEnabled && diagnosticVisible ? (\n        <>\n          <Text style={styles.heading}>Diagnostic</Text>\n          <Pressable\n            accessibilityRole=\"button\"\n            accessibilityLabel=\"Tester la remontee de crash vers le backend\"\n            disabled={sendingTestCrash}\n            onPress={onTestCrash}\n            style={({ pressed }) => [\n              styles.item,\n              styles.actionItem,\n              styles.diagnosticItem,\n              pressed && styles.itemPressed,\n              sendingTestCrash && styles.itemPressed,\n            ]}\n          >\n            <View style={styles.actionText}>\n              <Text style={styles.itemLabel}>Observabilite</Text>\n              <Text style={styles.diagnosticValue}>\n                {sendingTestCrash ? \"Envoi en cours…\" : \"Tester la remontee de crash\"}\n              </Text>\n            </View>\n            <Text style={styles.diagnosticChevron}>🧪 ›</Text>\n          </Pressable>\n          <Text style={styles.diagnosticHint}>\n            Envoie un incident de TEST (prefixe 🧪 [TEST]) au backend pour verifier la chaine de\n            crash reporting. Visible ensuite dans la vue « Crashs mobile » du SuperAdmin.\n          </Text>\n        </>\n      ) : null}\n\n      <Text style={styles.heading}>Besoin d'aide ?</Text>\n\n      {supportEmail ? (\n        <Pressable\n          accessibilityRole=\"button\"\n          accessibilityLabel={`Ecrire au support : ${supportEmail}`}\n          onPress={onEmail}\n          style={({ pressed }) => [\n            styles.item,\n            styles.actionItem,\n            pressed && styles.itemPressed,\n          ]}\n        >\n          <View style={styles.actionText}>\n            <Text style={styles.itemLabel}>Email support</Text>\n            <Text style={styles.actionValue}>{supportEmail}</Text>\n          </View>\n          <Text style={styles.actionChevron}>Ecrire ›</Text>\n        </Pressable>\n      ) : null}\n\n      {supportPhone ? (\n        <Pressable\n          accessibilityRole=\"button\"\n          accessibilityLabel={`Appeler le support : ${supportPhone}`}\n          onPress={onCall}\n          style={({ pressed }) => [\n            styles.item,\n            styles.actionItem,\n            pressed && styles.itemPressed,\n          ]}\n        >\n          <View style={styles.actionText}>\n            <Text style={styles.itemLabel}>Telephone support</Text>\n            <Text style={styles.actionValue}>{supportPhone}</Text>\n          </View>\n          <Text style={styles.actionChevron}>Appeler ›</Text>\n        </Pressable>\n      ) : null}\n\n      <Text style={styles.paragraph}>\n        {hasContact\n          ? \"Pour toute question sur une intervention ou un probleme technique, contactez le support de votre instance. Les informations techniques de l'application sont jointes automatiquement a votre email.\"\n          : \"Pour toute question sur une intervention ou un probleme technique, contactez l'administrateur de votre instance via l'application web. Les coordonnees de support dediees s'afficheront ici quand l'API mobile les fournira.\"}\n      </Text>\n    </ScrollView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: \"#edf2f8\",\n  },\n  content: {\n    padding: 16,\n    gap: 10,\n  },\n  heading: {\n    fontSize: 16,\n    fontWeight: \"700\",\n    color: \"#16325c\",\n    marginTop: 4,\n  },\n  item: {\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#e3ebf8\",\n    borderRadius: 12,\n    padding: 14,\n    gap: 4,\n  },\n  actionItem: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n  },\n  itemPressed: {\n    opacity: 0.6,\n  },\n  diagnosticItem: {\n    borderColor: \"#f0c36d\",\n    backgroundColor: \"#fffaf0\",\n  },\n  diagnosticValue: {\n    fontSize: 15,\n    color: \"#9a6a00\",\n    fontWeight: \"700\",\n  },\n  diagnosticChevron: {\n    color: \"#9a6a00\",\n    fontWeight: \"700\",\n    fontSize: 14,\n    marginLeft: 12,\n  },\n  diagnosticHint: {\n    color: \"#8a6d3b\",\n    fontSize: 12,\n    lineHeight: 17,\n    paddingHorizontal: 2,\n  },\n  actionText: {\n    flex: 1,\n    gap: 4,\n  },\n  actionValue: {\n    fontSize: 15,\n    color: \"#1e56a8\",\n    fontWeight: \"700\",\n  },\n  actionChevron: {\n    color: \"#1e56a8\",\n    fontWeight: \"700\",\n    fontSize: 14,\n    marginLeft: 12,\n  },\n  itemLabel: {\n    fontSize: 11,\n    color: \"#66748f\",\n    fontWeight: \"700\",\n  },\n  itemValue: {\n    fontSize: 15,\n    color: \"#1f2f4f\",\n    fontWeight: \"700\",\n  },\n  paragraph: {\n    color: \"#475569\",\n    fontSize: 14,\n    lineHeight: 20,\n  },\n});\n","import ExpoMailComposer from './ExpoMailComposer';\n/**\n * Retrieves a list of available email clients installed on the device.\n * This can be used to present options to the user for sending emails through their preferred email client,\n * or to open an email client so the user can access their mailbox — for example, to open a confirmation email sent by your app.\n * @returns An array of available mail clients.\n */\nexport function getClients() {\n    return ExpoMailComposer.getClients();\n}\n// @needsAudit\n/**\n * Opens a mail modal for iOS and a mail app intent for Android and fills the fields with provided\n * data. On iOS you will need to be signed into the Mail app.\n * @return A promise fulfilled with an object containing a `status` field that specifies whether an\n * email was sent, saved, or cancelled. Android does not provide this info, so the status is always\n * set as if the email were sent.\n */\nexport async function composeAsync(options) {\n    return await ExpoMailComposer.composeAsync(options);\n}\n// @needsAudit\n/**\n * Determine if the `MailComposer` API can be used in this app.\n * @return A promise resolves to `true` if the API can be used, and `false` otherwise.\n * - Returns `true` when the device has a default email setup for sending mail.\n * - Can return `false` on iOS if an MDM profile is setup to block outgoing mail. If this is the\n * case, you may want to use the Linking API instead.\n * - Always returns `true` in the browser.\n */\nexport async function isAvailableAsync() {\n    return await ExpoMailComposer.isAvailableAsync();\n}\nexport * from './MailComposer.types';\n//# sourceMappingURL=MailComposer.js.map","import { requireNativeModule } from 'expo-modules-core';\n// TODO: Rename the package to 'ExpoMail'\nexport default requireNativeModule('ExpoMailComposer');\n//# sourceMappingURL=ExpoMailComposer.js.map","// @docsMissing\nexport var MailComposerStatus;\n(function (MailComposerStatus) {\n    MailComposerStatus[\"UNDETERMINED\"] = \"undetermined\";\n    MailComposerStatus[\"SENT\"] = \"sent\";\n    MailComposerStatus[\"SAVED\"] = \"saved\";\n    MailComposerStatus[\"CANCELLED\"] = \"cancelled\";\n})(MailComposerStatus || (MailComposerStatus = {}));\n//# sourceMappingURL=MailComposer.types.js.map","import React, { useCallback, useEffect, useState } from \"react\";\nimport {\n  ActivityIndicator,\n  Alert,\n  Modal,\n  Pressable,\n  ScrollView,\n  StyleSheet,\n  Text,\n  TextInput,\n  View,\n} from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { getMyBottles, postBottleAction, type BottleAction } from \"../../services/bottlesApi\";\nimport type { MobileBottle } from \"../../types/bottle\";\n\ntype Props = {\n  brandColor: string;\n};\n\nconst TYPE_LABELS: Record<string, string> = {\n  gaz: \"Gaz frigorigene\",\n  recup: \"Recuperation\",\n  transf: \"Transfert\",\n};\n\nconst STATUT_STYLES: Record<\n  string,\n  { label: string; color: string; backgroundColor: string; borderColor: string }\n> = {\n  commandee: {\n    label: \"Commandee\",\n    color: \"#1d4ed8\",\n    backgroundColor: \"#dbeafe\",\n    borderColor: \"#93c5fd\",\n  },\n  en_service: {\n    label: \"En service\",\n    color: \"#166534\",\n    backgroundColor: \"#dcfce7\",\n    borderColor: \"#86efac\",\n  },\n  retour_demande: {\n    label: \"Retour demande\",\n    color: \"#92400e\",\n    backgroundColor: \"#ffedd5\",\n    borderColor: \"#fdba74\",\n  },\n};\n\ntype ActionDescriptor = {\n  action: BottleAction;\n  label: string;\n  primary: boolean;\n  question: string;\n  // Action a formulaire (echange) : ouvre une modale au lieu d'un simple\n  // Alert de confirmation.\n  needsForm?: boolean;\n};\n\n// Types valides d'une nouvelle bouteille (echange). Miroir de\n// BouteilleGaz::TYPES_VALIDES cote backend.\nconst EXCHANGE_TYPES: { value: string; label: string }[] = [\n  { value: \"gaz\", label: \"Gaz frigorigene\" },\n  { value: \"recup\", label: \"Recuperation\" },\n  { value: \"transf\", label: \"Transfert\" },\n];\n\n// Actions tech disponibles selon le statut — cycle complet, miroir des\n// transitions backend (api/bouteilles_gaz.php) :\n//   en_service     -> request_return\n//   retour_demande -> confirm_drop (depose) | exchange (echange) | drop_to_stock\nconst ACTIONS_BY_STATUT: Record<string, ActionDescriptor[]> = {\n  en_service: [\n    {\n      action: \"request_return\",\n      label: \"Demander le retour\",\n      primary: true,\n      question: \"Demander le retour de cette bouteille ?\",\n    },\n  ],\n  retour_demande: [\n    {\n      action: \"confirm_drop\",\n      label: \"Confirmer le depot fournisseur\",\n      primary: true,\n      question: \"Confirmer le depot de cette bouteille chez le fournisseur ?\",\n    },\n    {\n      action: \"exchange\",\n      label: \"Echanger chez le fournisseur\",\n      primary: false,\n      question: \"\",\n      needsForm: true,\n    },\n    {\n      action: \"drop_to_stock\",\n      label: \"Rendre au stock central\",\n      primary: false,\n      question: \"Rendre cette bouteille au stock central ?\",\n    },\n  ],\n};\n\nfunction statutStyle(statut: string) {\n  return (\n    STATUT_STYLES[statut] || {\n      label: statut || \"-\",\n      color: \"#374151\",\n      backgroundColor: \"#f3f4f6\",\n      borderColor: \"#d1d5db\",\n    }\n  );\n}\n\nfunction BottleCard({\n  bottle,\n  brandColor,\n  busy,\n  onAction,\n}: Readonly<{\n  bottle: MobileBottle;\n  brandColor: string;\n  busy: boolean;\n  onAction: (descriptor: ActionDescriptor, bottle: MobileBottle) => void;\n}>) {\n  const status = statutStyle(bottle.statut);\n  const actions = ACTIONS_BY_STATUT[bottle.statut] || [];\n  return (\n    <View style={styles.card}>\n      <View style={styles.cardHeader}>\n        <Text style={styles.code}>{bottle.code_interne || `#${bottle.id}`}</Text>\n        <View\n          style={[\n            styles.chip,\n            { backgroundColor: status.backgroundColor, borderColor: status.borderColor },\n          ]}\n        >\n          <Text style={[styles.chipText, { color: status.color }]}>{status.label}</Text>\n        </View>\n      </View>\n      <Text style={styles.type}>{TYPE_LABELS[bottle.type] || bottle.type}</Text>\n      {bottle.numero_serie_fournisseur ? (\n        <Text style={styles.meta}>N° serie: {bottle.numero_serie_fournisseur}</Text>\n      ) : null}\n      {bottle.date_reception ? (\n        <Text style={styles.meta}>Recue le {bottle.date_reception}</Text>\n      ) : bottle.date_commande ? (\n        <Text style={styles.meta}>Commandee le {bottle.date_commande}</Text>\n      ) : null}\n\n      {actions.length > 0 ? (\n        <View style={styles.actionsRow}>\n          {busy ? (\n            <View style={styles.inlineLoader}>\n              <ActivityIndicator size=\"small\" />\n              <Text style={styles.muted}>Action en cours...</Text>\n            </View>\n          ) : (\n            actions.map((descriptor) => (\n              <Pressable\n                key={descriptor.action}\n                style={[\n                  styles.actionButton,\n                  descriptor.primary\n                    ? { backgroundColor: brandColor }\n                    : styles.actionButtonNeutral,\n                ]}\n                onPress={() => onAction(descriptor, bottle)}\n              >\n                <Text\n                  style={[\n                    styles.actionText,\n                    descriptor.primary ? styles.actionTextPrimary : styles.actionTextNeutral,\n                  ]}\n                >\n                  {descriptor.label}\n                </Text>\n              </Pressable>\n            ))\n          )}\n        </View>\n      ) : null}\n    </View>\n  );\n}\n\ntype LoadState =\n  | { kind: \"loading\" }\n  | { kind: \"unavailable\" }\n  | { kind: \"error\"; message: string }\n  | { kind: \"ready\"; bottles: MobileBottle[]; count: number; quota: number };\n\n// Carte \"Mes bouteilles de gaz\" du dashboard coolcare, version mobile branchee\n// sur /api/mobile/bottles.php (liste) + /api/mobile/bottle_action.php (actions\n// tech). Tolere l'absence des endpoints (404) pour rester compatible avec une\n// instance coolcare/missioflow non mise a jour.\nexport default function BottlesScreen({ brandColor }: Readonly<Props>) {\n  const insets = useSafeAreaInsets();\n  const [state, setState] = useState<LoadState>({ kind: \"loading\" });\n  const [busyId, setBusyId] = useState<number | null>(null);\n  const [actionMessage, setActionMessage] = useState<string | null>(null);\n  // Etat de la modale d'echange (action a formulaire).\n  const [exchangeBottle, setExchangeBottle] = useState<MobileBottle | null>(null);\n  const [exchangeSerial, setExchangeSerial] = useState(\"\");\n  const [exchangeType, setExchangeType] = useState<string | null>(null);\n  const [exchangeComment, setExchangeComment] = useState(\"\");\n  const [exchangeSubmitting, setExchangeSubmitting] = useState(false);\n  const [exchangeError, setExchangeError] = useState<string | null>(null);\n\n  const load = useCallback(async () => {\n    setState({ kind: \"loading\" });\n    try {\n      const result = await getMyBottles();\n      if (!result.available) {\n        setState({ kind: \"unavailable\" });\n        return;\n      }\n      setState({\n        kind: \"ready\",\n        bottles: result.payload.bottles,\n        count: result.payload.count,\n        quota: result.payload.quota,\n      });\n    } catch (error) {\n      setState({\n        kind: \"error\",\n        message: error instanceof Error ? error.message : \"Erreur de chargement\",\n      });\n    }\n  }, []);\n\n  useEffect(() => {\n    load();\n  }, [load]);\n\n  // Actions simples (confirmation -> appel -> reload). L'erreur metier remonte\n  // en Alert. Utilise pour request_return / confirm_drop / drop_to_stock.\n  const performSimpleAction = useCallback(\n    async (action: BottleAction, bottleId: number) => {\n      setBusyId(bottleId);\n      setActionMessage(null);\n      try {\n        await postBottleAction(action, bottleId);\n        setActionMessage(\"Action effectuee.\");\n        await load();\n      } catch (error) {\n        Alert.alert(\"Action impossible\", error instanceof Error ? error.message : \"Erreur\");\n      } finally {\n        setBusyId(null);\n      }\n    },\n    [load]\n  );\n\n  const closeExchange = useCallback(() => {\n    setExchangeBottle(null);\n    setExchangeSerial(\"\");\n    setExchangeType(null);\n    setExchangeComment(\"\");\n    setExchangeError(null);\n    setExchangeSubmitting(false);\n  }, []);\n\n  const runAction = useCallback(\n    (descriptor: ActionDescriptor, bottle: MobileBottle) => {\n      if (descriptor.needsForm) {\n        // Echange : on ouvre la modale (n° serie + type de la nouvelle bouteille).\n        setExchangeError(null);\n        setExchangeSerial(\"\");\n        setExchangeType(null);\n        setExchangeComment(\"\");\n        setExchangeBottle(bottle);\n        return;\n      }\n      Alert.alert(bottle.code_interne || `Bouteille #${bottle.id}`, descriptor.question, [\n        { text: \"Annuler\", style: \"cancel\" },\n        { text: \"Confirmer\", onPress: () => void performSimpleAction(descriptor.action, bottle.id) },\n      ]);\n    },\n    [performSimpleAction]\n  );\n\n  const submitExchange = useCallback(async () => {\n    if (!exchangeBottle) {\n      return;\n    }\n    const serial = exchangeSerial.trim();\n    if (serial === \"\") {\n      setExchangeError(\"Le numero de serie de la nouvelle bouteille est requis.\");\n      return;\n    }\n    if (!exchangeType) {\n      setExchangeError(\"Choisissez le type de la nouvelle bouteille.\");\n      return;\n    }\n\n    setExchangeSubmitting(true);\n    setExchangeError(null);\n    try {\n      await postBottleAction(\"exchange\", exchangeBottle.id, {\n        numero_serie_nouvelle: serial,\n        type_nouvelle: exchangeType,\n        commentaire: exchangeComment.trim() || undefined,\n      });\n      closeExchange();\n      setActionMessage(\"Echange effectue.\");\n      await load();\n    } catch (error) {\n      setExchangeError(error instanceof Error ? error.message : \"Echange impossible\");\n      setExchangeSubmitting(false);\n    }\n  }, [exchangeBottle, exchangeSerial, exchangeType, exchangeComment, closeExchange, load]);\n\n  return (\n    <>\n    <ScrollView\n      style={styles.screen}\n      contentContainerStyle={[styles.content, { paddingBottom: insets.bottom + 24 }]}\n      showsVerticalScrollIndicator={false}\n    >\n      {state.kind === \"loading\" ? (\n        <View style={styles.inlineLoader}>\n          <ActivityIndicator size=\"small\" />\n          <Text style={styles.muted}>Chargement des bouteilles...</Text>\n        </View>\n      ) : null}\n\n      {state.kind === \"unavailable\" ? (\n        <View style={styles.notice}>\n          <Text style={styles.noticeIcon}>🛢️</Text>\n          <Text style={styles.noticeTitle}>Bientot disponible</Text>\n          <Text style={styles.noticeText}>\n            Cette instance n'expose pas encore le suivi des bouteilles sur mobile.\n            Consultez vos bouteilles depuis l'application web en attendant.\n          </Text>\n        </View>\n      ) : null}\n\n      {state.kind === \"error\" ? (\n        <View style={styles.notice}>\n          <Text style={styles.noticeTitle}>Chargement impossible</Text>\n          <Text style={styles.noticeText}>{state.message}</Text>\n          <Pressable style={[styles.retryButton, { backgroundColor: brandColor }]} onPress={load}>\n            <Text style={styles.retryText}>Reessayer</Text>\n          </Pressable>\n        </View>\n      ) : null}\n\n      {state.kind === \"ready\" ? (\n        <>\n          <View style={styles.summaryRow}>\n            <Text style={styles.summaryText}>\n              {state.count} bouteille{state.count > 1 ? \"s\" : \"\"} attribuee\n              {state.count > 1 ? \"s\" : \"\"}\n              {state.quota > 0 ? ` / ${state.quota} max` : \"\"}\n            </Text>\n            <Pressable onPress={load}>\n              <Text style={[styles.refreshLink, { color: brandColor }]}>Rafraichir</Text>\n            </Pressable>\n          </View>\n\n          {actionMessage ? <Text style={styles.actionMessage}>{actionMessage}</Text> : null}\n\n          {state.bottles.length === 0 ? (\n            <Text style={styles.muted}>Aucune bouteille active ne vous est attribuee.</Text>\n          ) : (\n            state.bottles.map((bottle) => (\n              <BottleCard\n                key={bottle.id}\n                bottle={bottle}\n                brandColor={brandColor}\n                busy={busyId === bottle.id}\n                onAction={runAction}\n              />\n            ))\n          )}\n        </>\n      ) : null}\n    </ScrollView>\n\n    <Modal\n      visible={exchangeBottle !== null}\n      transparent\n      animationType=\"slide\"\n      onRequestClose={exchangeSubmitting ? undefined : closeExchange}\n    >\n      <View style={styles.modalOverlay}>\n        <View style={[styles.modalCard, { paddingBottom: insets.bottom + 16 }]}>\n          <Text style={styles.modalTitle}>\n            Echange — {exchangeBottle?.code_interne || `#${exchangeBottle?.id ?? \"\"}`}\n          </Text>\n          <Text style={styles.modalSubtitle}>\n            Renseignez la nouvelle bouteille recue chez le fournisseur. L'ancienne\n            sera marquee comme retournee.\n          </Text>\n\n          <Text style={styles.fieldLabel}>Numero de serie (nouvelle bouteille)</Text>\n          <TextInput\n            style={styles.input}\n            value={exchangeSerial}\n            onChangeText={setExchangeSerial}\n            placeholder=\"Ex: FR-2024-00123\"\n            autoCapitalize=\"characters\"\n            editable={!exchangeSubmitting}\n          />\n\n          <Text style={styles.fieldLabel}>Type</Text>\n          <View style={styles.typeRow}>\n            {EXCHANGE_TYPES.map((t) => {\n              const selected = exchangeType === t.value;\n              return (\n                <Pressable\n                  key={t.value}\n                  style={[\n                    styles.typeChip,\n                    selected\n                      ? { backgroundColor: brandColor, borderColor: brandColor }\n                      : null,\n                  ]}\n                  onPress={() => setExchangeType(t.value)}\n                  disabled={exchangeSubmitting}\n                >\n                  <Text style={[styles.typeChipText, selected ? styles.typeChipTextActive : null]}>\n                    {t.label}\n                  </Text>\n                </Pressable>\n              );\n            })}\n          </View>\n\n          <Text style={styles.fieldLabel}>Commentaire (optionnel)</Text>\n          <TextInput\n            style={[styles.input, styles.inputMultiline]}\n            value={exchangeComment}\n            onChangeText={setExchangeComment}\n            placeholder=\"Note libre\"\n            multiline\n            editable={!exchangeSubmitting}\n          />\n\n          {exchangeError ? <Text style={styles.modalError}>{exchangeError}</Text> : null}\n\n          <View style={styles.modalButtons}>\n            <Pressable\n              style={[styles.modalButton, styles.modalCancel]}\n              onPress={closeExchange}\n              disabled={exchangeSubmitting}\n            >\n              <Text style={styles.modalCancelText}>Annuler</Text>\n            </Pressable>\n            <Pressable\n              style={[styles.modalButton, { backgroundColor: brandColor }, exchangeSubmitting && styles.disabled]}\n              onPress={() => void submitExchange()}\n              disabled={exchangeSubmitting}\n            >\n              {exchangeSubmitting ? (\n                <ActivityIndicator size=\"small\" color=\"#ffffff\" />\n              ) : (\n                <Text style={styles.modalValidateText}>Valider l'echange</Text>\n              )}\n            </Pressable>\n          </View>\n        </View>\n      </View>\n    </Modal>\n    </>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: \"#edf2f8\",\n  },\n  content: {\n    padding: 16,\n    gap: 12,\n  },\n  inlineLoader: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    gap: 8,\n  },\n  muted: {\n    color: \"#6a7a96\",\n  },\n  summaryRow: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n  },\n  summaryText: {\n    color: \"#16325c\",\n    fontWeight: \"700\",\n  },\n  refreshLink: {\n    fontWeight: \"700\",\n  },\n  actionMessage: {\n    color: \"#1c7f45\",\n    fontWeight: \"600\",\n  },\n  card: {\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    backgroundColor: \"#ffffff\",\n    borderRadius: 12,\n    padding: 14,\n    gap: 6,\n  },\n  cardHeader: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    gap: 8,\n  },\n  code: {\n    fontSize: 16,\n    fontWeight: \"800\",\n    color: \"#16325c\",\n    letterSpacing: 1,\n  },\n  chip: {\n    borderWidth: 1,\n    borderRadius: 999,\n    paddingVertical: 3,\n    paddingHorizontal: 8,\n  },\n  chipText: {\n    fontSize: 11,\n    fontWeight: \"700\",\n  },\n  type: {\n    color: \"#334155\",\n    fontWeight: \"600\",\n  },\n  meta: {\n    color: \"#6a7a96\",\n    fontSize: 12,\n  },\n  actionsRow: {\n    marginTop: 6,\n    gap: 8,\n  },\n  actionButton: {\n    borderRadius: 8,\n    paddingVertical: 10,\n    alignItems: \"center\",\n  },\n  actionButtonNeutral: {\n    backgroundColor: \"#eef3fb\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n  },\n  actionText: {\n    fontWeight: \"700\",\n    fontSize: 13,\n  },\n  actionTextPrimary: {\n    color: \"#ffffff\",\n  },\n  actionTextNeutral: {\n    color: \"#1e56a8\",\n  },\n  notice: {\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 14,\n    padding: 20,\n    gap: 10,\n    alignItems: \"center\",\n  },\n  noticeIcon: {\n    fontSize: 44,\n  },\n  noticeTitle: {\n    fontSize: 18,\n    fontWeight: \"800\",\n    color: \"#16325c\",\n  },\n  noticeText: {\n    color: \"#475569\",\n    fontSize: 14,\n    lineHeight: 20,\n    textAlign: \"center\",\n  },\n  retryButton: {\n    borderRadius: 8,\n    paddingVertical: 10,\n    paddingHorizontal: 18,\n  },\n  retryText: {\n    color: \"#ffffff\",\n    fontWeight: \"700\",\n  },\n  disabled: {\n    opacity: 0.6,\n  },\n  modalOverlay: {\n    flex: 1,\n    backgroundColor: \"rgba(15, 23, 42, 0.45)\",\n    justifyContent: \"flex-end\",\n  },\n  modalCard: {\n    backgroundColor: \"#ffffff\",\n    borderTopLeftRadius: 18,\n    borderTopRightRadius: 18,\n    padding: 20,\n    gap: 8,\n  },\n  modalTitle: {\n    fontSize: 18,\n    fontWeight: \"800\",\n    color: \"#16325c\",\n  },\n  modalSubtitle: {\n    color: \"#6a7a96\",\n    fontSize: 13,\n    marginBottom: 4,\n  },\n  fieldLabel: {\n    fontSize: 12,\n    fontWeight: \"700\",\n    color: \"#66748f\",\n    marginTop: 6,\n  },\n  input: {\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 10,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    fontSize: 15,\n    color: \"#1f2f4f\",\n    backgroundColor: \"#f8fbff\",\n  },\n  inputMultiline: {\n    minHeight: 60,\n    textAlignVertical: \"top\",\n  },\n  typeRow: {\n    flexDirection: \"row\",\n    gap: 8,\n    flexWrap: \"wrap\",\n  },\n  typeChip: {\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    backgroundColor: \"#ffffff\",\n    borderRadius: 999,\n    paddingVertical: 8,\n    paddingHorizontal: 12,\n  },\n  typeChipText: {\n    fontSize: 13,\n    fontWeight: \"700\",\n    color: \"#334155\",\n  },\n  typeChipTextActive: {\n    color: \"#ffffff\",\n  },\n  modalError: {\n    color: \"#b00020\",\n    fontWeight: \"600\",\n    marginTop: 6,\n  },\n  modalButtons: {\n    flexDirection: \"row\",\n    gap: 10,\n    marginTop: 14,\n  },\n  modalButton: {\n    flex: 1,\n    borderRadius: 10,\n    paddingVertical: 12,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  },\n  modalCancel: {\n    backgroundColor: \"#eef3fb\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n  },\n  modalCancelText: {\n    color: \"#1e56a8\",\n    fontWeight: \"700\",\n  },\n  modalValidateText: {\n    color: \"#ffffff\",\n    fontWeight: \"800\",\n  },\n});\n","import apiClient, { ApiClientError } from \"./apiClient\";\nimport type { ApiEnvelope } from \"../types/auth\";\nimport type { BottlesPayload } from \"../types/bottle\";\n\n// Resultat volontairement discriminable : une instance qui n'expose pas encore\n// l'endpoint /mobile/bottles.php (vieux backend coolcare ou missioflow non mis\n// a jour) renvoie un 404. On le traduit en `available: false` au lieu de lever,\n// pour que l'app reste fonctionnelle sur TOUTES les instances (coolcare ET\n// missioflow), conformement a la contrainte thin-client multi-backend.\nexport type BottlesResult =\n  | { available: true; payload: BottlesPayload }\n  | { available: false };\n\nexport async function getMyBottles(): Promise<BottlesResult> {\n  try {\n    const response = await apiClient.get<ApiEnvelope<BottlesPayload>>(\n      \"/mobile/bottles.php\"\n    );\n\n    if (!response.data?.success || !response.data.data) {\n      throw new Error(response.data?.message || \"Bouteilles indisponibles\");\n    }\n\n    const payload = response.data.data;\n    return {\n      available: true,\n      payload: {\n        bottles: Array.isArray(payload.bottles) ? payload.bottles : [],\n        count: Number.isFinite(payload.count) ? Number(payload.count) : 0,\n        quota: Number.isFinite(payload.quota) ? Number(payload.quota) : 0,\n        technicien_id: Number(payload.technicien_id || 0),\n      },\n    };\n  } catch (error) {\n    if (error instanceof ApiClientError && error.status === 404) {\n      return { available: false };\n    }\n    throw error;\n  }\n}\n\nexport type BottleAction =\n  | \"request_return\"\n  | \"confirm_drop\"\n  | \"drop_to_stock\"\n  | \"exchange\";\n\nexport type BottleActionExtra = {\n  commentaire?: string;\n  numero_serie_nouvelle?: string;\n  type_nouvelle?: string;\n};\n\n// Declenche une action tech sur une bouteille via /mobile/bottle_action.php.\n// Le backend force le technicien_id depuis le JWT et revalide statut +\n// appartenance : un message d'erreur metier (mauvais statut, etc.) remonte ici\n// en Error pour affichage. Online-only : pas de file offline (mutation rare,\n// l'etat backend reste la source de verite).\nexport async function postBottleAction(\n  action: BottleAction,\n  bottleId: number,\n  extra: BottleActionExtra = {}\n): Promise<void> {\n  const response = await apiClient.post<ApiEnvelope<unknown>>(\n    \"/mobile/bottle_action.php\",\n    { action, bottle_id: bottleId, ...extra }\n  );\n\n  if (!response.data?.success) {\n    throw new Error(response.data?.message || \"Action impossible\");\n  }\n}\n","import React, { useState } from \"react\";\nimport {\n  ActivityIndicator,\n  Alert,\n  Image,\n  Pressable,\n  ScrollView,\n  StyleSheet,\n  Text,\n  TextInput,\n  View,\n} from \"react-native\";\nimport { CameraView, type BarcodeScanningResult, useCameraPermissions } from \"expo-camera\";\nimport type { SavedInstance } from \"../../core/instancesService\";\n\ntype Props = {\n  appDisplayName: string;\n  brandColor: string;\n  logoUrl: string | null;\n  instanceUrl: string;\n  onboardingError: string | null;\n  validatingInstance: boolean;\n  onChangeInstanceUrl: (value: string) => void;\n  onSaveEnvironment: () => void;\n  onScanPayload: (raw: string) => Promise<void>;\n  savedInstances: SavedInstance[];\n  onSelectInstance: (entry: SavedInstance) => void;\n  onRemoveInstance: (baseUrl: string) => void;\n};\n\nexport default function OnboardingScreen(props: Readonly<Props>) {\n  const {\n    appDisplayName,\n    brandColor,\n    logoUrl,\n    instanceUrl,\n    onboardingError,\n    validatingInstance,\n    onChangeInstanceUrl,\n    onSaveEnvironment,\n    onScanPayload,\n    savedInstances,\n    onSelectInstance,\n    onRemoveInstance,\n  } = props;\n\n  const confirmRemove = (entry: SavedInstance) => {\n    Alert.alert(\n      \"Retirer cette instance ?\",\n      `${entry.app_name || entry.base_url} sera retiree de la liste. Tu pourras la rajouter via QR/lien.`,\n      [\n        { text: \"Annuler\", style: \"cancel\" },\n        { text: \"Retirer\", style: \"destructive\", onPress: () => onRemoveInstance(entry.base_url) },\n      ]\n    );\n  };\n\n  const [showQrScanner, setShowQrScanner] = useState(false);\n  const [qrLocked, setQrLocked] = useState(false);\n  const [cameraPermission, requestCameraPermission] = useCameraPermissions();\n\n  const openScanner = async () => {\n    if (!cameraPermission?.granted) {\n      const permission = await requestCameraPermission();\n      if (!permission.granted) {\n        return;\n      }\n    }\n    setQrLocked(false);\n    setShowQrScanner(true);\n  };\n\n  const onBarcodeScanned = async (event: BarcodeScanningResult) => {\n    if (qrLocked) {\n      return;\n    }\n    setQrLocked(true);\n    await onScanPayload(event.data);\n  };\n\n  return (\n    <ScrollView contentContainerStyle={styles.container} keyboardShouldPersistTaps=\"handled\">\n      {logoUrl ? <Image source={{ uri: logoUrl }} style={styles.brandLogo} /> : null}\n      <Text style={[styles.title, { color: brandColor }]}>{appDisplayName}</Text>\n      <Text style={styles.subtitle}>\n        Renseigne l'URL mobile de ton instance ou scanne le QR code de l'admin.\n      </Text>\n\n      {savedInstances.length > 0 ? (\n        <View style={styles.savedBlock}>\n          <Text style={styles.savedTitle}>Mes instances</Text>\n          {savedInstances.map((entry) => (\n            <View key={entry.base_url} style={[styles.savedRow, { borderLeftColor: entry.primary_color || brandColor }]}>\n              <Pressable\n                style={styles.savedMain}\n                onPress={() => onSelectInstance(entry)}\n                disabled={validatingInstance}\n              >\n                <Text style={styles.savedName}>{entry.app_name || entry.base_url}</Text>\n                <Text style={styles.savedSub} numberOfLines={1}>\n                  {entry.last_email ? `${entry.last_email} · ` : \"\"}\n                  {entry.base_url}\n                </Text>\n              </Pressable>\n              <Pressable style={styles.savedRemove} onPress={() => confirmRemove(entry)} hitSlop={8}>\n                <Text style={styles.savedRemoveText}>✕</Text>\n              </Pressable>\n            </View>\n          ))}\n          <Text style={styles.savedHint}>Ou ajoute une nouvelle instance ci-dessous.</Text>\n        </View>\n      ) : null}\n\n      <TextInput\n        style={styles.input}\n        placeholder=\"https://instance.example.com/api/mobile\"\n        value={instanceUrl}\n        autoCapitalize=\"none\"\n        autoCorrect={false}\n        keyboardType=\"url\"\n        onChangeText={onChangeInstanceUrl}\n      />\n\n      {onboardingError ? <Text style={styles.error}>{onboardingError}</Text> : null}\n\n      <View style={styles.actions}>\n        <Pressable\n          style={[styles.secondaryButton, validatingInstance && styles.buttonDisabled]}\n          onPress={openScanner}\n          disabled={validatingInstance}\n        >\n          <Text style={styles.secondaryButtonText}>Scanner QR</Text>\n        </Pressable>\n        <Pressable\n          style={[styles.primaryButton, { backgroundColor: brandColor }, validatingInstance && styles.buttonDisabled]}\n          onPress={onSaveEnvironment}\n          disabled={validatingInstance}\n        >\n          <Text style={styles.primaryButtonText}>\n            {validatingInstance ? \"Validation...\" : \"Enregistrer URL\"}\n          </Text>\n        </Pressable>\n      </View>\n\n      {validatingInstance ? (\n        <View style={styles.inlineLoader}>\n          <ActivityIndicator size=\"small\" />\n          <Text style={styles.mutedText}>Validation de l'instance...</Text>\n        </View>\n      ) : null}\n\n      {showQrScanner ? (\n        <View style={styles.qrScannerWrap}>\n          <CameraView\n            style={styles.qrScanner}\n            facing=\"back\"\n            onBarcodeScanned={onBarcodeScanned}\n            barcodeScannerSettings={{ barcodeTypes: [\"qr\"] }}\n          />\n          <Pressable\n            style={styles.secondaryButton}\n            onPress={() => {\n              setQrLocked(false);\n              setShowQrScanner(false);\n            }}\n          >\n            <Text style={styles.secondaryButtonText}>Fermer le scanner</Text>\n          </Pressable>\n        </View>\n      ) : null}\n    </ScrollView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: { gap: 12, padding: 16 },\n  title: { fontSize: 22, fontWeight: \"700\" },\n  subtitle: { color: \"#6a7a96\" },\n  savedBlock: { gap: 8 },\n  savedTitle: { fontSize: 14, fontWeight: \"800\", color: \"#16325c\" },\n  savedRow: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderLeftWidth: 4,\n    borderRadius: 10,\n    paddingVertical: 10,\n    paddingHorizontal: 12,\n    gap: 8,\n  },\n  savedMain: { flex: 1, gap: 2 },\n  savedName: { fontSize: 15, fontWeight: \"700\", color: \"#16325c\" },\n  savedSub: { fontSize: 12, color: \"#6a7a96\" },\n  savedRemove: {\n    width: 30,\n    height: 30,\n    borderRadius: 15,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    backgroundColor: \"#f1f5f9\",\n  },\n  savedRemoveText: { color: \"#64748b\", fontWeight: \"800\", fontSize: 13 },\n  savedHint: { fontSize: 12, color: \"#6a7a96\", marginTop: 2 },\n  brandLogo: { width: 56, height: 56, borderRadius: 10, backgroundColor: \"#f1f5f9\" },\n  input: {\n    borderWidth: 1,\n    borderColor: \"#c5d2e5\",\n    borderRadius: 10,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    backgroundColor: \"#fbfdff\",\n  },\n  error: { color: \"#b00020\" },\n  actions: { flexDirection: \"row\", gap: 10 },\n  primaryButton: { flex: 1, borderRadius: 10, alignItems: \"center\", paddingVertical: 10 },\n  primaryButtonText: { color: \"#ffffff\", fontWeight: \"700\" },\n  secondaryButton: {\n    flex: 1,\n    backgroundColor: \"#edf3ff\",\n    borderRadius: 10,\n    alignItems: \"center\",\n    paddingVertical: 10,\n  },\n  secondaryButtonText: { color: \"#1e56a8\", fontWeight: \"600\" },\n  buttonDisabled: { opacity: 0.5 },\n  inlineLoader: { flexDirection: \"row\", alignItems: \"center\", gap: 8 },\n  mutedText: { color: \"#6a7a96\" },\n  qrScannerWrap: {\n    borderWidth: 1,\n    borderColor: \"#d8e4f6\",\n    borderRadius: 10,\n    overflow: \"hidden\",\n    backgroundColor: \"#f8fbff\",\n    gap: 8,\n    paddingBottom: 8,\n  },\n  qrScanner: { width: \"100%\", minHeight: 260 },\n});\n","import React, { useState } from \"react\";\nimport { Pressable, StyleSheet, Text, TextInput, View } from \"react-native\";\nimport BrandLogo from \"../../shared/BrandLogo\";\n\ntype Props = {\n  appDisplayName: string;\n  brandColor: string;\n  logoUrl: string | null;\n  configuredBaseUrl: string;\n  inviteToken: string | null;\n  email: string;\n  password: string;\n  submitting: boolean;\n  error: string | null;\n  statusMessage: string | null;\n  onChangeEmail: (value: string) => void;\n  onChangePassword: (value: string) => void;\n  onLogin: () => void;\n  onChangeInstance: () => void;\n};\n\nexport default function LoginScreen(props: Readonly<Props>) {\n  const {\n    appDisplayName,\n    brandColor,\n    logoUrl,\n    configuredBaseUrl,\n    inviteToken,\n    email,\n    password,\n    submitting,\n    error,\n    statusMessage,\n    onChangeEmail,\n    onChangePassword,\n    onLogin,\n    onChangeInstance,\n  } = props;\n\n  // Toggle d'affichage du mot de passe en clair. Aligne sur le comportement\n  // des pages login.php web (coolcare + missioflow) : permet de verifier la\n  // saisie pour eviter le verrouillage temporaire apres X echecs.\n  const [showPassword, setShowPassword] = useState(false);\n\n  return (\n    <View style={styles.container}>\n      <View style={styles.brandHeader}>\n        <BrandLogo\n          logoUrl={logoUrl}\n          name={appDisplayName}\n          brandColor={brandColor}\n          size={88}\n          radius={20}\n          style={styles.brandLogo}\n        />\n        <Text style={[styles.title, { color: brandColor }]}>{appDisplayName}</Text>\n        <Text style={styles.subtitle}>Connexion à votre espace</Text>\n      </View>\n\n      <View style={styles.instanceBadge}>\n        <Text style={styles.instanceBadgeLabel}>Instance active</Text>\n        <Text style={styles.instanceBadgeValue}>{configuredBaseUrl}</Text>\n      </View>\n\n      <TextInput\n        style={styles.input}\n        placeholder=\"Email\"\n        value={email}\n        autoCapitalize=\"none\"\n        autoCorrect={false}\n        keyboardType=\"email-address\"\n        onChangeText={onChangeEmail}\n      />\n      <View style={styles.passwordWrapper}>\n        <TextInput\n          style={[styles.input, styles.passwordInput]}\n          placeholder=\"Mot de passe\"\n          value={password}\n          secureTextEntry={!showPassword}\n          onChangeText={onChangePassword}\n          autoCapitalize=\"none\"\n          autoCorrect={false}\n        />\n        <Pressable\n          style={styles.passwordToggle}\n          onPress={() => setShowPassword((prev) => !prev)}\n          accessibilityRole=\"button\"\n          accessibilityLabel={showPassword ? \"Masquer le mot de passe\" : \"Afficher le mot de passe\"}\n          hitSlop={8}\n        >\n          <Text style={[styles.passwordToggleText, { color: brandColor }]}>\n            {showPassword ? \"Masquer\" : \"Afficher\"}\n          </Text>\n        </Pressable>\n      </View>\n\n      {inviteToken ? <Text style={styles.mutedText}>Token invitation detecte: {inviteToken}</Text> : null}\n      {error ? <Text style={styles.error}>{error}</Text> : null}\n      {statusMessage ? <Text style={styles.success}>{statusMessage}</Text> : null}\n\n      <Pressable\n        style={[styles.primaryButton, { backgroundColor: brandColor }, submitting && styles.buttonDisabled]}\n        onPress={onLogin}\n        disabled={submitting}\n      >\n        <Text style={styles.primaryButtonText}>{submitting ? \"Connexion...\" : \"Se connecter\"}</Text>\n      </Pressable>\n\n      <Pressable style={styles.secondaryButton} onPress={onChangeInstance}>\n        <Text style={styles.secondaryButtonText}>Changer d'instance</Text>\n      </Pressable>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: { gap: 12, padding: 16 },\n  // Bloc de marque centre en tete de l'ecran de connexion : logo tenant mis en\n  // valeur (carte blanche + ombre), nom de l'app, sous-titre.\n  brandHeader: {\n    alignItems: \"center\",\n    gap: 8,\n    paddingTop: 12,\n    paddingBottom: 8,\n  },\n  title: { fontSize: 24, fontWeight: \"800\", textAlign: \"center\" },\n  subtitle: { fontSize: 13, color: \"#6a7a96\", fontWeight: \"500\" },\n  // Carte du logo (fond/bordure/ombre) ; la taille/rayon sont poses par BrandLogo.\n  brandLogo: {\n    backgroundColor: \"#ffffff\",\n    borderWidth: 1,\n    borderColor: \"#e2e8f0\",\n    shadowColor: \"#0f2d6b\",\n    shadowOffset: { width: 0, height: 3 },\n    shadowOpacity: 0.12,\n    shadowRadius: 8,\n    elevation: 4,\n  },\n  instanceBadge: {\n    borderWidth: 1,\n    borderColor: \"#cfe0f8\",\n    borderRadius: 10,\n    backgroundColor: \"#f5f9ff\",\n    padding: 10,\n    gap: 4,\n  },\n  instanceBadgeLabel: { fontSize: 11, color: \"#5a6f94\", fontWeight: \"700\", textTransform: \"uppercase\" },\n  instanceBadgeValue: { color: \"#16325c\", fontSize: 12, fontWeight: \"600\" },\n  input: {\n    borderWidth: 1,\n    borderColor: \"#c5d2e5\",\n    borderRadius: 10,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    backgroundColor: \"#fbfdff\",\n  },\n  passwordWrapper: {\n    position: \"relative\",\n    justifyContent: \"center\",\n  },\n  passwordInput: {\n    // Reserve la place pour le bouton \"Afficher/Masquer\" a droite.\n    paddingRight: 80,\n  },\n  passwordToggle: {\n    position: \"absolute\",\n    right: 8,\n    top: 0,\n    bottom: 0,\n    justifyContent: \"center\",\n    paddingHorizontal: 4,\n  },\n  passwordToggleText: {\n    fontSize: 13,\n    fontWeight: \"600\",\n  },\n  mutedText: { color: \"#6a7a96\" },\n  error: { color: \"#b00020\" },\n  success: { color: \"#1c7f45\" },\n  primaryButton: { borderRadius: 10, alignItems: \"center\", paddingVertical: 12 },\n  primaryButtonText: { color: \"#ffffff\", fontWeight: \"700\" },\n  secondaryButton: {\n    marginTop: 6,\n    backgroundColor: \"#edf3ff\",\n    borderRadius: 10,\n    alignItems: \"center\",\n    paddingVertical: 10,\n  },\n  secondaryButtonText: { color: \"#1e56a8\", fontWeight: \"600\" },\n  buttonDisabled: { opacity: 0.5 },\n});\n","import { createNavigationContainerRef } from \"@react-navigation/native\";\nimport type { RootStackParamList } from \"./types\";\n\n// Ref global sur le NavigationContainer : permet de naviguer depuis l'exterieur\n// de l'arbre React (ex. le listener de tap sur une notification push, qui n'est\n// pas un composant). Branche via <NavigationContainer ref={navigationRef}>.\nexport const navigationRef = createNavigationContainerRef<RootStackParamList>();\n\nexport type PlanningDay = \"today\" | \"tomorrow\";\n\n/**\n * Ouvre le calendrier (ecran \"Planning\", imbrique dans \"AppNavigator\") sur le\n * bon jour. Retourne false si la navigation n'est pas prete OU si l'arbre\n * \"AppNavigator\" n'est pas encore monte (cold start avant restauration de\n * session) — l'appelant memorise alors la cible pour rejouer plus tard.\n */\nexport function navigateToPlanning(initialDay?: PlanningDay): boolean {\n  if (!navigationRef.isReady()) {\n    return false;\n  }\n  // navigate sur l'AppNavigator seulement s'il est dans l'etat courant : sinon\n  // (Login/Onboarding affiches), on echoue proprement plutot que de crasher.\n  const root = navigationRef.getRootState();\n  const hasApp = root?.routeNames?.includes(\"AppNavigator\");\n  if (!hasApp) {\n    return false;\n  }\n  navigationRef.navigate(\"AppNavigator\", {\n    screen: \"Planning\",\n    params: initialDay ? { initialDay } : undefined,\n  });\n  return true;\n}\n","import React from \"react\";\nimport { Pressable, ScrollView, StyleSheet, Text } from \"react-native\";\nimport { recordCrash } from \"../core/crashLog\";\n\n// Garde-fou de rendu : capture une erreur levee pendant le rendu d'un enfant\n// (la ou setGlobalHandler ne voit rien) et affiche un ecran de repli propre au\n// lieu d'un ecran blanc. L'incident est journalise via recordCrash, puis pousse\n// au backend au prochain cycle de sync. Voir OBSERVABILITE_CRASH.md (approche A).\n\ntype Props = {\n  children: React.ReactNode;\n};\n\ntype State = {\n  error: Error | null;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n  state: State = { error: null };\n\n  static getDerivedStateFromError(error: Error): State {\n    return { error };\n  }\n\n  componentDidCatch(error: Error, info: { componentStack?: string | null }): void {\n    void recordCrash({\n      kind: \"render\",\n      message: error.message,\n      stack: error.stack,\n      componentStack: info.componentStack ?? undefined,\n    });\n  }\n\n  private readonly handleRetry = (): void => {\n    this.setState({ error: null });\n  };\n\n  render(): React.ReactNode {\n    if (!this.state.error) {\n      return this.props.children;\n    }\n    return (\n      <ScrollView contentContainerStyle={styles.container}>\n        <Text style={styles.title}>Une erreur est survenue</Text>\n        <Text style={styles.message}>\n          L'application a rencontre un probleme inattendu. Vous pouvez reessayer.\n          L'incident a ete enregistre et sera transmis automatiquement.\n        </Text>\n        <Pressable\n          accessibilityRole=\"button\"\n          onPress={this.handleRetry}\n          style={({ pressed }) => [styles.button, pressed && styles.buttonPressed]}\n        >\n          <Text style={styles.buttonText}>Reessayer</Text>\n        </Pressable>\n      </ScrollView>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flexGrow: 1,\n    justifyContent: \"center\",\n    padding: 24,\n    gap: 16,\n    backgroundColor: \"#edf2f8\",\n  },\n  title: {\n    fontSize: 20,\n    fontWeight: \"700\",\n    color: \"#16325c\",\n    textAlign: \"center\",\n  },\n  message: {\n    fontSize: 15,\n    lineHeight: 21,\n    color: \"#475569\",\n    textAlign: \"center\",\n  },\n  button: {\n    backgroundColor: \"#1e56a8\",\n    borderRadius: 12,\n    paddingVertical: 14,\n    alignItems: \"center\",\n  },\n  buttonPressed: {\n    opacity: 0.7,\n  },\n  buttonText: {\n    color: \"#ffffff\",\n    fontSize: 16,\n    fontWeight: \"700\",\n  },\n});\n","import React, { useEffect, useRef, useState } from \"react\";\nimport {\n  Animated,\n  Easing,\n  Image,\n  StyleSheet,\n  Text,\n  View,\n} from \"react-native\";\nimport { StatusBar } from \"expo-status-bar\";\nimport * as Updates from \"expo-updates\";\n\ntype Phase = \"checking\" | \"downloading\" | \"ready\";\n\n// Duree minimale d'affichage de l'ecran pendant qu'une mise a jour est posee,\n// pour qu'il soit lisible meme quand le telechargement est instantane. Ne\n// s'applique PAS au cas \"pas d'update\" (ouverture rapide preservee).\nconst UPDATE_MIN_VISIBLE_MS = 1600;\n\n/**\n * Porte de demarrage : verifie une mise a jour OTA (expo-updates) AVANT\n * d'afficher l'app, telecharge si dispo puis recharge l'app sur le nouveau\n * bundle. Evite le cycle \"ouvrir / fermer / rouvrir\" : la nouvelle version est\n * appliquee des le premier lancement.\n *\n * - En dev / Expo Go (`Updates.isEnabled` false ou `__DEV__`) : on saute la\n *   verif et on affiche l'app immediatement (les OTA n'existent pas en dev).\n * - Aucune update / hors-ligne / erreur : on continue sans bloquer.\n * - Garde-fou : on ne bloque jamais l'ouverture plus de 8 s (reseau pendu).\n */\nexport default function UpdateGate({\n  children,\n}: Readonly<{ children: React.ReactNode }>) {\n  const [phase, setPhase] = useState<Phase>(() =>\n    Updates.isEnabled && !__DEV__ ? \"checking\" : \"ready\"\n  );\n\n  useEffect(() => {\n    if (phase === \"ready\") {\n      return;\n    }\n    let active = true;\n    let safety: ReturnType<typeof setTimeout>;\n    // Horodatage du moment ou la phase \"downloading\" commence : sert a garantir\n    // une duree minimale d'affichage de l'ecran de mise a jour (sinon, sur bon\n    // reseau, le telechargement est si rapide que l'ecran passe en un flash).\n    let downloadStartedAt = 0;\n\n    const waitMinVisible = async () => {\n      const elapsed = Date.now() - downloadStartedAt;\n      const remaining = UPDATE_MIN_VISIBLE_MS - elapsed;\n      if (remaining > 0) {\n        await new Promise((resolve) => setTimeout(resolve, remaining));\n      }\n    };\n\n    const run = async () => {\n      try {\n        const result = await Updates.checkForUpdateAsync();\n        if (!active) {\n          return;\n        }\n        if (result.isAvailable) {\n          // Update trouvee : on s'engage a la poser -> on annule le garde-fou\n          // pour ne pas afficher l'app puis la recharger brutalement.\n          clearTimeout(safety);\n          downloadStartedAt = Date.now();\n          setPhase(\"downloading\");\n          await Updates.fetchUpdateAsync();\n          // Laisse l'ecran \"Mise a jour en cours\" visible un minimum lisible\n          // avant de recharger, meme si le download a ete instantane.\n          await waitMinVisible();\n          if (!active) {\n            return;\n          }\n          // Redemarre l'app sur le nouveau bundle (ne revient jamais ici).\n          await Updates.reloadAsync();\n          return;\n        }\n      } catch {\n        // Hors-ligne, pas d'update, ou updates indispo : on continue vers l'app.\n      }\n      // Cas \"pas d'update\" : on n'impose PAS de delai -> ouverture rapide.\n      clearTimeout(safety);\n      if (active) {\n        setPhase(\"ready\");\n      }\n    };\n\n    safety = setTimeout(() => {\n      if (active) {\n        setPhase(\"ready\");\n      }\n    }, 8000);\n\n    void run();\n\n    return () => {\n      active = false;\n      clearTimeout(safety);\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  if (phase === \"ready\") {\n    return <>{children}</>;\n  }\n\n  return <UpdateSplash downloading={phase === \"downloading\"} />;\n}\n\nfunction UpdateSplash({ downloading }: Readonly<{ downloading: boolean }>) {\n  // Barre de progression indeterminee : le JS API d'expo-updates n'expose pas\n  // d'evenement de progression, donc on anime une barre qui glisse en boucle.\n  const slide = useRef(new Animated.Value(0)).current;\n\n  useEffect(() => {\n    const loop = Animated.loop(\n      Animated.timing(slide, {\n        toValue: 1,\n        duration: 1100,\n        easing: Easing.inOut(Easing.ease),\n        useNativeDriver: true,\n      })\n    );\n    loop.start();\n    return () => loop.stop();\n  }, [slide]);\n\n  const translateX = slide.interpolate({\n    inputRange: [0, 1],\n    outputRange: [-BAR_WIDTH, TRACK_WIDTH],\n  });\n\n  return (\n    <View style={styles.root}>\n      <StatusBar style=\"light\" />\n      <View style={styles.card}>\n        <Image\n          source={require(\"../../../assets/icon.png\")}\n          style={styles.logo}\n          resizeMode=\"contain\"\n        />\n        <Text style={styles.appName}>MissioFlow</Text>\n        <Text style={styles.title}>\n          {downloading ? \"Mise à jour en cours\" : \"Recherche de mises à jour\"}\n        </Text>\n        <Text style={styles.subtitle}>\n          {downloading\n            ? \"Téléchargement de la dernière version…\"\n            : \"Vérification de la dernière version…\"}\n        </Text>\n        <View style={styles.track}>\n          <Animated.View style={[styles.bar, { transform: [{ translateX }] }]} />\n        </View>\n      </View>\n      <Text style={styles.footer}>Quelques secondes…</Text>\n    </View>\n  );\n}\n\nconst TRACK_WIDTH = 190;\nconst BAR_WIDTH = 72;\n\nconst styles = StyleSheet.create({\n  root: {\n    flex: 1,\n    backgroundColor: \"#0b2a6b\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    padding: 24,\n  },\n  card: {\n    width: 290,\n    alignItems: \"center\",\n    paddingVertical: 30,\n    paddingHorizontal: 24,\n    borderRadius: 22,\n    backgroundColor: \"rgba(255,255,255,0.06)\",\n    borderWidth: 1,\n    borderColor: \"rgba(255,255,255,0.12)\",\n  },\n  logo: {\n    width: 76,\n    height: 76,\n    borderRadius: 20,\n    marginBottom: 14,\n  },\n  appName: {\n    color: \"#ffffff\",\n    fontSize: 21,\n    fontWeight: \"800\",\n    letterSpacing: 0.5,\n  },\n  title: {\n    color: \"#ffffff\",\n    fontSize: 16,\n    fontWeight: \"700\",\n    marginTop: 16,\n  },\n  subtitle: {\n    color: \"#c7d6f5\",\n    fontSize: 13,\n    marginTop: 6,\n    textAlign: \"center\",\n  },\n  track: {\n    width: TRACK_WIDTH,\n    height: 5,\n    borderRadius: 3,\n    backgroundColor: \"rgba(255,255,255,0.16)\",\n    overflow: \"hidden\",\n    marginTop: 22,\n  },\n  bar: {\n    width: BAR_WIDTH,\n    height: 5,\n    borderRadius: 3,\n    backgroundColor: \"#60a5fa\",\n  },\n  footer: {\n    color: \"#93b0e6\",\n    fontSize: 12,\n    marginTop: 26,\n  },\n});\n","export * from './Updates';\nexport * from './UpdatesEmitter';\nexport * from './Updates.types';\nexport * from './UseUpdates';\nexport * from './UseUpdates.types';\nexport * from './ExpoUpdatesModule.types';\n//# sourceMappingURL=index.js.map","import { CodedError } from 'expo-modules-core';\nimport { Image } from 'react-native';\nimport ExpoUpdates from './ExpoUpdates';\nimport { UpdatesCheckAutomaticallyValue, } from './Updates.types';\n/**\n * Whether `expo-updates` is enabled. This may be false in a variety of cases including:\n * - enabled set to false in configuration\n * - missing or invalid URL in configuration\n * - missing runtime version or SDK version in configuration\n * - error accessing storage on device during initialization\n *\n * When false, the embedded update is loaded.\n */\nexport const isEnabled = !!ExpoUpdates.isEnabled;\n/**\n * The UUID that uniquely identifies the currently running update. The\n * UUID is represented in its canonical string form and will always use lowercase letters.\n * This value is `null` when running in a local development environment or any other environment where `expo-updates` is disabled.\n * @example\n * `\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"`\n */\nexport const updateId = ExpoUpdates.updateId && typeof ExpoUpdates.updateId === 'string'\n    ? ExpoUpdates.updateId.toLowerCase()\n    : null;\n/**\n * The channel name of the current build, if configured for use with EAS Update. `null` otherwise.\n *\n * Expo Go and development builds are not set to a specific channel and can run any updates compatible with their native runtime. Therefore, this value will always be `null` when running an update on Expo Go or a development build.\n */\nexport const channel = ExpoUpdates.channel ?? null;\n/**\n * The runtime version of the current build.\n */\nexport const runtimeVersion = ExpoUpdates.runtimeVersion ?? null;\nconst _checkAutomaticallyMapNativeToJS = {\n    ALWAYS: UpdatesCheckAutomaticallyValue.ON_LOAD,\n    ERROR_RECOVERY_ONLY: UpdatesCheckAutomaticallyValue.ON_ERROR_RECOVERY,\n    NEVER: UpdatesCheckAutomaticallyValue.NEVER,\n    WIFI_ONLY: UpdatesCheckAutomaticallyValue.WIFI_ONLY,\n};\n/**\n * Determines if and when `expo-updates` checks for and downloads updates automatically on startup.\n */\nexport const checkAutomatically = _checkAutomaticallyMapNativeToJS[ExpoUpdates.checkAutomatically] ?? null;\n// @docsMissing\n/**\n * @hidden\n */\nexport const localAssets = ExpoUpdates.localAssets ?? {};\n/**\n * `expo-updates` does its very best to always launch monotonically newer versions of your app so\n * you don't need to worry about backwards compatibility when you put out an update. In very rare\n * cases, it's possible that `expo-updates` may need to fall back to the update that's embedded in\n * the app binary, even after newer updates have been downloaded and run (an \"emergency launch\").\n * This boolean will be `true` if the app is launching under this fallback mechanism and `false`\n * otherwise. If you are concerned about backwards compatibility of future updates to your app, you\n * can use this constant to provide special behavior for this rare case.\n */\nexport const isEmergencyLaunch = ExpoUpdates.isEmergencyLaunch;\n/**\n * If `isEmergencyLaunch` is set to true, this will contain a string error message describing\n * what failed during initialization.\n */\nexport const emergencyLaunchReason = ExpoUpdates.emergencyLaunchReason;\n/**\n * Number of milliseconds it took to launch.\n */\nexport const launchDuration = ExpoUpdates.launchDuration;\n/**\n * This will be true if the currently running update is the one embedded in the build,\n * and not one downloaded from the updates server.\n */\nexport const isEmbeddedLaunch = ExpoUpdates.isEmbeddedLaunch || false;\n// @docsMissing\n/**\n * @hidden\n */\nexport const isUsingEmbeddedAssets = ExpoUpdates.isUsingEmbeddedAssets || false;\n/**\n * If `expo-updates` is enabled, this is the\n * [manifest](/versions/latest/sdk/constants/#manifest) (or\n * [classic manifest](/versions/latest/sdk/constants/#appmanifest))\n * object for the update that's currently running.\n *\n * In development mode, or any other environment in which `expo-updates` is disabled, this object is\n * empty.\n */\nexport const manifest = (ExpoUpdates.manifestString ? JSON.parse(ExpoUpdates.manifestString) : ExpoUpdates.manifest) ??\n    {};\n/**\n * If `expo-updates` is enabled, this is a `Date` object representing the creation time of the update that's currently running (whether it was embedded or downloaded at runtime).\n *\n * In development mode, or any other environment in which `expo-updates` is disabled, this value is\n * null.\n */\nexport const createdAt = ExpoUpdates.commitTime\n    ? new Date(ExpoUpdates.commitTime)\n    : null;\n/**\n * During non-expo development we block accessing the updates API methods on the JS side, but when developing in\n * Expo Go or a development client build, the controllers should have control over which API methods should\n * be allowed.\n */\nconst shouldDeferToNativeForAPIMethodAvailabilityInDevelopment = !!ExpoUpdates.shouldDeferToNativeForAPIMethodAvailabilityInDevelopment;\n/**\n * Developer tool is set when a project is served by `expo start`.\n */\nconst isUsingDeveloperTool = 'extra' in manifest ? !!manifest.extra?.expoGo?.developer?.tool : false;\nconst manualUpdatesInstructions = 'To test usage of the expo-updates JS API in your app, make a release build with `npx expo run:ios --configuration Release` or ' +\n    '`npx expo run:android --variant Release`.';\nfunction resolveImageSource(source) {\n    if (typeof source === 'string') {\n        return { url: source };\n    }\n    if (typeof source === 'number') {\n        const resolved = Image.resolveAssetSource(source);\n        if (resolved) {\n            return {\n                url: resolved.uri,\n                width: resolved.width,\n                height: resolved.height,\n                scale: resolved.scale,\n            };\n        }\n        return null;\n    }\n    if (typeof source === 'object' && source !== null) {\n        return source;\n    }\n    return null;\n}\nfunction resolveReloadScreenOptions(options) {\n    if (!options.image) {\n        return options;\n    }\n    const resolvedImage = resolveImageSource(options.image);\n    return {\n        ...options,\n        image: resolvedImage || undefined,\n    };\n}\n/**\n * Instructs the app to reload using the most recently downloaded version. This is useful for\n * triggering a newly downloaded update to launch without the user needing to manually restart the\n * app.\n * Unlike `Expo.reloadAppAsync()` provided by the `expo` package,\n * this function not only reloads the app but also changes the loaded JavaScript bundle to that of the most recently downloaded update.\n *\n * It is not recommended to place any meaningful logic after a call to `await\n * Updates.reloadAsync()`. This is because the promise is resolved after verifying that the app can\n * be reloaded, and immediately before posting an asynchronous task to the main thread to actually\n * reload the app. It is unsafe to make any assumptions about whether any more JS code will be\n * executed after the `Updates.reloadAsync` method call resolves, since that depends on the OS and\n * the state of the native module and main threads.\n *\n * This method cannot be used in Expo Go or development mode, and the returned promise will be rejected if you\n * try to do so. It also rejects when `expo-updates` is not enabled.\n *\n * @return A promise that fulfills right before the reload instruction is sent to the JS runtime, or\n * rejects if it cannot find a reference to the JS runtime. If the promise is rejected in production\n * mode, it most likely means you have installed the module incorrectly. Double check you've\n * followed the installation instructions. In particular, on iOS ensure that you set the `bridge`\n * property on `EXUpdatesAppController` with a pointer to the `RCTBridge` you want to reload, and on\n * Android ensure you either call `UpdatesController.initialize` with the instance of\n * `ReactApplication` you want to reload, or call `UpdatesController.setReactNativeHost` with the\n * proper instance of `ReactNativeHost`.\n */\nexport async function reloadAsync(options) {\n    if ((__DEV__ || isUsingDeveloperTool) &&\n        !shouldDeferToNativeForAPIMethodAvailabilityInDevelopment) {\n        throw new CodedError('ERR_UPDATES_DISABLED', `You cannot use the Updates module in development mode in a production app. ${manualUpdatesInstructions}`);\n    }\n    if (options?.reloadScreenOptions) {\n        const resolvedOptions = resolveReloadScreenOptions(options.reloadScreenOptions);\n        return await ExpoUpdates.reload(resolvedOptions);\n    }\n    await ExpoUpdates.reload(null);\n}\n/**\n * Checks the server to see if a newly deployed update to your project is available. Does not\n * actually download the update. This method cannot be used in development mode, and the returned\n * promise will be rejected if you try to do so.\n *\n * Checking for an update uses a device's bandwidth and battery life like any network call.\n * Additionally, updates served by Expo may be rate limited. A good rule of thumb to check for\n * updates judiciously is to check when the user launches or foregrounds the app. Avoid polling for\n * updates in a frequent loop.\n *\n * @return A promise that fulfills with an [`UpdateCheckResult`](#updatecheckresult) object.\n *\n * The promise rejects in Expo Go or if the app is in development mode, or if there is an unexpected error or\n * timeout communicating with the server. It also rejects when `expo-updates` is not enabled.\n */\nexport async function checkForUpdateAsync() {\n    if ((__DEV__ || isUsingDeveloperTool) &&\n        !shouldDeferToNativeForAPIMethodAvailabilityInDevelopment) {\n        throw new CodedError('ERR_UPDATES_DISABLED', `You cannot check for updates in development mode. ${manualUpdatesInstructions}`);\n    }\n    const result = await ExpoUpdates.checkForUpdateAsync();\n    if ('manifestString' in result) {\n        const { manifestString, ...rest } = result;\n        return {\n            ...rest,\n            manifest: JSON.parse(manifestString),\n        };\n    }\n    return result;\n}\n/**\n * Retrieves the current extra params.\n *\n * This method cannot be used in Expo Go or development mode. It also rejects when `expo-updates` is not enabled.\n */\nexport async function getExtraParamsAsync() {\n    return await ExpoUpdates.getExtraParamsAsync();\n}\n/**\n * Sets an extra param if value is non-null, otherwise unsets the param.\n * Extra params are sent as an [Expo Structured Field Value Dictionary](/technical-specs/expo-sfv-0/)\n * in the `Expo-Extra-Params` header of update requests. A compliant update server may use these params when selecting an update to serve.\n *\n * This method cannot be used in Expo Go or development mode. It also rejects when `expo-updates` is not enabled.\n */\nexport async function setExtraParamAsync(key, value) {\n    return await ExpoUpdates.setExtraParamAsync(key, value ?? null);\n}\n/**\n * Retrieves the most recent `expo-updates` log entries.\n *\n * @param maxAge Sets the max age of retrieved log entries in milliseconds. Default to `3600000` ms (1 hour).\n *\n * @return A promise that fulfills with an array of [`UpdatesLogEntry`](#updateslogentry) objects;\n *\n * The promise rejects if there is an unexpected error in retrieving the logs.\n */\nexport async function readLogEntriesAsync(maxAge = 3600000) {\n    return await ExpoUpdates.readLogEntriesAsync(maxAge);\n}\n/**\n * Clears existing `expo-updates` log entries.\n *\n * > For now, this operation does nothing on the client.  Once log persistence has been\n * > implemented, this operation will actually remove existing logs.\n *\n * @return A promise that fulfills if the clear operation was successful.\n *\n * The promise rejects if there is an unexpected error in clearing the logs.\n *\n */\nexport async function clearLogEntriesAsync() {\n    await ExpoUpdates.clearLogEntriesAsync();\n}\n/**\n * Downloads the most recently deployed update to your project from server to the device's local\n * storage. This method cannot be used in development mode, and the returned promise will be\n * rejected if you try to do so.\n *\n > **Note:** [`reloadAsync()`](#updatesreloadasync) can be called after promise resolution to\n * reload the app using the most recently downloaded version. Otherwise, the update will be applied\n * on the next app cold start.\n *\n * @return A promise that fulfills with an [`UpdateFetchResult`](#updatefetchresult) object.\n *\n * The promise rejects in Expo Go or if the app is in development mode, or if there is an unexpected error or\n * timeout communicating with the server. It also rejects when `expo-updates` is not enabled.\n */\nexport async function fetchUpdateAsync() {\n    if ((__DEV__ || isUsingDeveloperTool) &&\n        !shouldDeferToNativeForAPIMethodAvailabilityInDevelopment) {\n        throw new CodedError('ERR_UPDATES_DISABLED', `You cannot fetch updates in development mode. ${manualUpdatesInstructions}`);\n    }\n    const result = await ExpoUpdates.fetchUpdateAsync();\n    if ('manifestString' in result) {\n        const { manifestString, ...rest } = result;\n        return {\n            ...rest,\n            manifest: JSON.parse(manifestString),\n        };\n    }\n    return result;\n}\n/**\n * Overrides updates URL and reuqest headers in runtime from build time.\n * This method allows you to load specific updates from a URL that you provide.\n * Use this method at your own risk, as it may cause unexpected behavior.\n * Because of the risk, this method requires `disableAntiBrickingMeasures` to be set to `true` in the **app.json** file.\n * [Learn more about use cases and limitations](https://docs.expo.dev/eas-update/override/).\n * @experimental\n */\nexport function setUpdateURLAndRequestHeadersOverride(configOverride) {\n    ExpoUpdates.setUpdateURLAndRequestHeadersOverride(configOverride);\n}\n/**\n * Overrides updates request headers in runtime from build time.\n * This method allows you to load specific updates with custom request headers.\n * Use this method at your own risk, as it may cause unexpected behavior.\n * [Learn more about use cases and limitations](https://docs.expo.dev/eas-update/override/).\n * @experimental\n */\nexport function setUpdateRequestHeadersOverride(requestHeaders) {\n    ExpoUpdates.setUpdateRequestHeadersOverride(requestHeaders);\n}\n/**\n * Shows the reload screen with customizable appearance. This is primarily useful for testing\n * how the reload screen will appear to users during app reloads and is only available in\n * debug builds of the app. The reload screen can be hidden by calling `hideReloadScreen()`.\n *\n *\n * @param options Configuration options for customizing the reload screen appearance.\n *\n * @hidden exposed for testing\n * @example\n * ```ts\n * import * as Updates from 'expo-updates';\n *\n * // Show the reload screen with custom styling for testing\n * await Updates.showReloadScreen({\n *   reloadScreenOptions: {\n *     backgroundColor: '#1a1a1a',\n *     spinner: {\n *       color: '#ffffff'\n *     }\n *   }\n * });\n *\n * // Hide it after 3 seconds\n * setTimeout(async () => {\n *   await Updates.hideReloadScreen();\n * }, 3000);\n *\n * // Test with a custom image\n * await Updates.showReloadScreen({\n *   reloadScreenOptions: {\n *     backgroundColor: '#ffffff',\n *     image: require('./assets/loading.png'),\n *     imageResizeMode: 'contain'\n *   }\n * });\n * ```\n */\nexport async function showReloadScreen(options) {\n    if (options?.reloadScreenOptions) {\n        const resolvedOptions = resolveReloadScreenOptions(options.reloadScreenOptions);\n        return ExpoUpdates.showReloadScreen(resolvedOptions);\n    }\n    return ExpoUpdates.showReloadScreen();\n}\n/**\n *\n * @hidden exposed for testing\n * @return A promise that resolves when the reload screen is hidden.\n */\nexport async function hideReloadScreen() {\n    return ExpoUpdates.hideReloadScreen();\n}\n//# sourceMappingURL=Updates.js.map","import { requireNativeModule } from 'expo-modules-core';\n/**\n * @internal\n */\nexport default requireNativeModule('ExpoUpdates');\n//# sourceMappingURL=ExpoUpdates.js.map","export var UpdateCheckResultNotAvailableReason;\n(function (UpdateCheckResultNotAvailableReason) {\n    /**\n     * No update manifest or rollback directive received from the update server.\n     */\n    UpdateCheckResultNotAvailableReason[\"NO_UPDATE_AVAILABLE_ON_SERVER\"] = \"noUpdateAvailableOnServer\";\n    /**\n     * An update manifest was received from the update server, but the update is not launchable,\n     * or does not pass the configured selection policy.\n     */\n    UpdateCheckResultNotAvailableReason[\"UPDATE_REJECTED_BY_SELECTION_POLICY\"] = \"updateRejectedBySelectionPolicy\";\n    /**\n     * An update manifest was received from the update server, but the update has been previously\n     * launched on this device and never successfully launched.\n     */\n    UpdateCheckResultNotAvailableReason[\"UPDATE_PREVIOUSLY_FAILED\"] = \"updatePreviouslyFailed\";\n    /**\n     * A rollback directive was received from the update server, but the directive does not pass\n     * the configured selection policy.\n     */\n    UpdateCheckResultNotAvailableReason[\"ROLLBACK_REJECTED_BY_SELECTION_POLICY\"] = \"rollbackRejectedBySelectionPolicy\";\n    /**\n     * A rollback directive was received from the update server, but this app has no embedded update.\n     */\n    UpdateCheckResultNotAvailableReason[\"ROLLBACK_NO_EMBEDDED\"] = \"rollbackNoEmbeddedConfiguration\";\n})(UpdateCheckResultNotAvailableReason || (UpdateCheckResultNotAvailableReason = {}));\n/**\n * The possible code values for `expo-updates` log entries\n */\nexport var UpdatesLogEntryCode;\n(function (UpdatesLogEntryCode) {\n    UpdatesLogEntryCode[\"NONE\"] = \"None\";\n    UpdatesLogEntryCode[\"NO_UPDATES_AVAILABLE\"] = \"NoUpdatesAvailable\";\n    UpdatesLogEntryCode[\"UPDATE_ASSETS_NOT_AVAILABLE\"] = \"UpdateAssetsNotAvailable\";\n    UpdatesLogEntryCode[\"UPDATE_SERVER_UNREACHABLE\"] = \"UpdateServerUnreachable\";\n    UpdatesLogEntryCode[\"UPDATE_HAS_INVALID_SIGNATURE\"] = \"UpdateHasInvalidSignature\";\n    UpdatesLogEntryCode[\"UPDATE_CODE_SIGNING_ERROR\"] = \"UpdateCodeSigningError\";\n    UpdatesLogEntryCode[\"UPDATE_FAILED_TO_LOAD\"] = \"UpdateFailedToLoad\";\n    UpdatesLogEntryCode[\"ASSETS_FAILED_TO_LOAD\"] = \"AssetsFailedToLoad\";\n    UpdatesLogEntryCode[\"JS_RUNTIME_ERROR\"] = \"JSRuntimeError\";\n    UpdatesLogEntryCode[\"INITIALIZATION_ERROR\"] = \"InitializationError\";\n    UpdatesLogEntryCode[\"UNKNOWN\"] = \"Unknown\";\n})(UpdatesLogEntryCode || (UpdatesLogEntryCode = {}));\n/**\n * The possible log levels for `expo-updates` log entries\n */\nexport var UpdatesLogEntryLevel;\n(function (UpdatesLogEntryLevel) {\n    UpdatesLogEntryLevel[\"TRACE\"] = \"trace\";\n    UpdatesLogEntryLevel[\"DEBUG\"] = \"debug\";\n    UpdatesLogEntryLevel[\"INFO\"] = \"info\";\n    UpdatesLogEntryLevel[\"WARN\"] = \"warn\";\n    UpdatesLogEntryLevel[\"ERROR\"] = \"error\";\n    UpdatesLogEntryLevel[\"FATAL\"] = \"fatal\";\n})(UpdatesLogEntryLevel || (UpdatesLogEntryLevel = {}));\n/**\n * The possible settings that determine if `expo-updates` will check for updates on app startup.\n * By default, Expo will check for updates every time the app is loaded.\n * Set this to `ON_ERROR_RECOVERY` to disable automatic checking unless recovering from an error.\n * Set this to `NEVER` to completely disable automatic checking.\n */\nexport var UpdatesCheckAutomaticallyValue;\n(function (UpdatesCheckAutomaticallyValue) {\n    /**\n     * Checks for updates whenever the app is loaded. This is the default setting.\n     */\n    UpdatesCheckAutomaticallyValue[\"ON_LOAD\"] = \"ON_LOAD\";\n    /**\n     * Only checks for updates when the app starts up after an error recovery.\n     */\n    UpdatesCheckAutomaticallyValue[\"ON_ERROR_RECOVERY\"] = \"ON_ERROR_RECOVERY\";\n    /**\n     * Only checks for updates when the app starts and has a Wi-Fi connection.\n     */\n    UpdatesCheckAutomaticallyValue[\"WIFI_ONLY\"] = \"WIFI_ONLY\";\n    /**\n     * Automatic update checks are off, and update checks must be done through the JS API.\n     */\n    UpdatesCheckAutomaticallyValue[\"NEVER\"] = \"NEVER\";\n})(UpdatesCheckAutomaticallyValue || (UpdatesCheckAutomaticallyValue = {}));\n//# sourceMappingURL=Updates.types.js.map","import ExpoUpdatesModule from './ExpoUpdates';\nexport let latestContext = transformNativeStateMachineContext(ExpoUpdatesModule.initialContext);\nExpoUpdatesModule.addListener('Expo.nativeUpdatesStateChangeEvent', _handleNativeStateChangeEvent);\nconst _updatesStateChangeListeners = new Set();\n// Reemits native state change events\nfunction _handleNativeStateChangeEvent(params) {\n    const newParams = typeof params === 'string' ? JSON.parse(params) : { ...params };\n    const transformedContext = transformNativeStateMachineContext(newParams.context);\n    // only process state change events if they are in order\n    if (transformedContext.sequenceNumber <= latestContext.sequenceNumber) {\n        return;\n    }\n    newParams.context = transformedContext;\n    latestContext = transformedContext;\n    _updatesStateChangeListeners.forEach((listener) => listener(newParams));\n}\n/**\n * Add listener for state change events\n * @hidden\n */\nexport const addUpdatesStateChangeListener = (listener) => {\n    _updatesStateChangeListeners.add(listener);\n    return {\n        remove() {\n            _updatesStateChangeListeners.delete(listener);\n        },\n    };\n};\n/**\n * Allows JS test to emit a simulated native state change event (used in unit testing)\n * @hidden\n */\nexport const emitTestStateChangeEvent = (event) => {\n    _handleNativeStateChangeEvent(event);\n};\n/**\n * Allows JS test to reset latest context (and sequence number)\n * @hidden\n */\nexport const resetLatestContext = () => {\n    latestContext = transformNativeStateMachineContext(ExpoUpdatesModule.initialContext);\n};\nfunction transformNativeStateMachineContext(originalNativeContext) {\n    const nativeContext = { ...originalNativeContext };\n    if (nativeContext.latestManifestString) {\n        nativeContext.latestManifest = JSON.parse(nativeContext.latestManifestString);\n        delete nativeContext.latestManifestString;\n    }\n    if (nativeContext.downloadedManifestString) {\n        nativeContext.downloadedManifest = JSON.parse(nativeContext.downloadedManifestString);\n        delete nativeContext.downloadedManifestString;\n    }\n    if (nativeContext.lastCheckForUpdateTimeString) {\n        nativeContext.lastCheckForUpdateTime = new Date(nativeContext.lastCheckForUpdateTimeString);\n        delete nativeContext.lastCheckForUpdateTimeString;\n    }\n    if (nativeContext.rollbackString) {\n        nativeContext.rollback = JSON.parse(nativeContext.rollbackString);\n        delete nativeContext.rollbackString;\n    }\n    return nativeContext;\n}\n//# sourceMappingURL=UpdatesEmitter.js.map","import { useEffect, useState } from 'react';\nimport { addUpdatesStateChangeListener, latestContext } from './UpdatesEmitter';\nimport { currentlyRunning, updatesStateFromContext } from './UseUpdatesUtils';\n/**\n * Hook that obtains information on available updates and on the currently running update.\n *\n * @return the structures with information on currently running and available updates.\n *\n * @example\n * ```tsx UpdatesDemo.tsx\n * import { StatusBar } from 'expo-status-bar';\n * import * as Updates from 'expo-updates';\n * import { useEffect } from 'react';\n * import { Button, Text, View } from 'react-native';\n *\n * export default function UpdatesDemo() {\n *   const {\n *     currentlyRunning,\n *     isUpdateAvailable,\n *     isUpdatePending\n *   } = Updates.useUpdates();\n *\n *   useEffect(() => {\n *     if (isUpdatePending) {\n *       // Update has successfully downloaded; apply it now\n *       Updates.reloadAsync();\n *     }\n *   }, [isUpdatePending]);\n *\n *   // If true, we show the button to download and run the update\n *   const showDownloadButton = isUpdateAvailable;\n *\n *   // Show whether or not we are running embedded code or an update\n *   const runTypeMessage = currentlyRunning.isEmbeddedLaunch\n *     ? 'This app is running from built-in code'\n *     : 'This app is running an update';\n *\n *   return (\n *     <View style={styles.container}>\n *       <Text style={styles.headerText}>Updates Demo</Text>\n *       <Text>{runTypeMessage}</Text>\n *       <Button onPress={() => Updates.checkForUpdateAsync()} title=\"Check manually for updates\" />\n *       {showDownloadButton ? (\n *         <Button onPress={() => Updates.fetchUpdateAsync()} title=\"Download and run update\" />\n *       ) : null}\n *       <StatusBar style=\"auto\" />\n *     </View>\n *   );\n * }\n * ```\n */\nexport const useUpdates = () => {\n    const [updatesState, setUpdatesState] = useState(updatesStateFromContext(latestContext));\n    // Change the state based on native state machine context changes\n    useEffect(() => {\n        const subscription = addUpdatesStateChangeListener((event) => {\n            setUpdatesState(updatesStateFromContext(event.context));\n        });\n        return () => subscription.remove();\n    }, []);\n    // Return the updates info and the user facing functions\n    return {\n        currentlyRunning,\n        ...updatesState,\n    };\n};\n//# sourceMappingURL=UseUpdates.js.map","import * as Updates from './Updates';\nimport { UpdateInfoType, } from './UseUpdates.types';\n// The currently running info, constructed from Updates constants\nexport const currentlyRunning = {\n    updateId: Updates.updateId ?? undefined,\n    channel: Updates.channel ?? undefined,\n    createdAt: Updates.createdAt ?? undefined,\n    launchDuration: Updates.launchDuration ?? undefined,\n    isEmbeddedLaunch: Updates.isEmbeddedLaunch,\n    isEmergencyLaunch: Updates.isEmergencyLaunch,\n    emergencyLaunchReason: Updates.emergencyLaunchReason,\n    manifest: Updates.manifest ?? undefined,\n    runtimeVersion: Updates.runtimeVersion ?? undefined,\n};\n// Constructs an UpdateInfo from a manifest\nexport const updateFromManifest = (manifest) => {\n    return {\n        type: UpdateInfoType.NEW,\n        updateId: manifest.id ?? '',\n        createdAt: manifest && 'createdAt' in manifest && manifest.createdAt\n            ? new Date(manifest.createdAt)\n            : // We should never reach this if the manifest is valid and has a commit time,\n                // but leave this in so that createdAt is always defined\n                new Date(0),\n        manifest,\n    };\n};\nexport const updateFromRollback = (rollback) => ({\n    type: UpdateInfoType.ROLLBACK,\n    createdAt: new Date(rollback.commitTime),\n    manifest: undefined,\n    updateId: undefined,\n});\n// Transform the useUpdates() state based on native state machine context\nexport const updatesStateFromContext = (context) => {\n    const availableUpdate = context?.latestManifest\n        ? updateFromManifest(context?.latestManifest)\n        : context.rollback\n            ? updateFromRollback(context.rollback)\n            : undefined;\n    const downloadedUpdate = context?.downloadedManifest\n        ? updateFromManifest(context?.downloadedManifest)\n        : context.rollback\n            ? updateFromRollback(context.rollback)\n            : undefined;\n    return {\n        isStartupProcedureRunning: context.isStartupProcedureRunning,\n        isUpdateAvailable: context.isUpdateAvailable,\n        isUpdatePending: context.isUpdatePending,\n        isChecking: context.isChecking,\n        isDownloading: context.isDownloading,\n        isRestarting: context.isRestarting,\n        restartCount: context.restartCount,\n        availableUpdate,\n        downloadedUpdate,\n        checkError: context.checkError,\n        downloadError: context.downloadError,\n        downloadProgress: context.downloadProgress,\n        lastCheckForUpdateTimeSinceRestart: context.lastCheckForUpdateTime,\n    };\n};\n//# sourceMappingURL=UseUpdatesUtils.js.map","/**\n * The different possible types of updates.\n * Currently, the only supported type is `UpdateInfoType.NEW`, indicating a new update that can be downloaded and launched\n * on the device.\n * In the future, other types of updates may be added to this list.\n */\nexport var UpdateInfoType;\n(function (UpdateInfoType) {\n    /**\n     * This is the type for new updates found on or downloaded from the update server, that are launchable on the device.\n     */\n    UpdateInfoType[\"NEW\"] = \"new\";\n    /**\n     * This type is used when an update is a directive to roll back to the embedded bundle.\n     */\n    UpdateInfoType[\"ROLLBACK\"] = \"rollback\";\n})(UpdateInfoType || (UpdateInfoType = {}));\n//# sourceMappingURL=UseUpdates.types.js.map","","import { recordCrash } from \"./crashLog\";\n\n// Installe les capteurs globaux d'erreurs JS. A appeler UNE seule fois, le plus\n// tot possible (au chargement du module App), avant tout rendu. Voir\n// OBSERVABILITE_CRASH.md (approche A, §3). Zero dependance externe.\n\ntype GlobalErrorHandler = (error: unknown, isFatal?: boolean) => void;\n\ntype ErrorUtilsLike = {\n  getGlobalHandler?: () => GlobalErrorHandler | undefined;\n  setGlobalHandler?: (handler: GlobalErrorHandler) => void;\n};\n\nlet installed = false;\n\nfunction toError(value: unknown): Error {\n  return value instanceof Error ? value : new Error(String(value));\n}\n\nfunction installGlobalErrorHandler(): void {\n  const errorUtils = (global as unknown as { ErrorUtils?: ErrorUtilsLike }).ErrorUtils;\n  if (!errorUtils?.setGlobalHandler) {\n    return;\n  }\n  // On CHAINE le handler precedent : on ne casse ni l'ecran rouge de dev ni le\n  // comportement de crash natif en prod, on ne fait que journaliser au passage.\n  const previous = errorUtils.getGlobalHandler?.();\n  errorUtils.setGlobalHandler((error, isFatal) => {\n    const err = toError(error);\n    void recordCrash({ kind: \"fatal\", message: err.message, stack: err.stack, isFatal });\n    previous?.(error, isFatal);\n  });\n}\n\nfunction installRejectionTracking(): void {\n  // Best-effort : le suivi des rejets de promesse non geres depend du polyfill\n  // \"promise\" embarque par React Native. Absent dans certains environnements\n  // (ex. Jest) -> on ignore, les exceptions fatales restent captees.\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-var-requires\n    const tracking = require(\"promise/setimmediate/rejection-tracking\") as {\n      enable: (options: {\n        allRejections?: boolean;\n        onUnhandled?: (id: number, error: unknown) => void;\n        onHandled?: (id: number) => void;\n      }) => void;\n    };\n    tracking.enable({\n      allRejections: true,\n      onUnhandled: (_id, error) => {\n        const err = toError(error);\n        void recordCrash({ kind: \"rejection\", message: err.message, stack: err.stack });\n      },\n      onHandled: () => {},\n    });\n  } catch {\n    // Module indisponible : suivi des rejets non installe (sans incidence sur le reste).\n  }\n}\n\nexport function installCrashHandlers(): void {\n  if (installed) {\n    return;\n  }\n  installed = true;\n  installGlobalErrorHandler();\n  installRejectionTracking();\n}\n\n// Reservoir de test uniquement : permet de reinstaller les handlers entre tests.\nexport function __resetCrashHandlersForTests(): void {\n  installed = false;\n}\n","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n  ReferenceError,\n  TypeError,\n  RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n  enabled = false;\n  Promise._B = null;\n  Promise._C = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n  options = options || {};\n  if (enabled) disable();\n  enabled = true;\n  var id = 0;\n  var displayId = 0;\n  var rejections = {};\n  Promise._B = function (promise) {\n    if (\n      promise._y === 2 && // IS REJECTED\n      rejections[promise._E]\n    ) {\n      if (rejections[promise._E].logged) {\n        onHandled(promise._E);\n      } else {\n        clearTimeout(rejections[promise._E].timeout);\n      }\n      delete rejections[promise._E];\n    }\n  };\n  Promise._C = function (promise, err) {\n    if (promise._x === 0) { // not yet handled\n      promise._E = id++;\n      rejections[promise._E] = {\n        displayId: null,\n        error: err,\n        timeout: setTimeout(\n          onUnhandled.bind(null, promise._E),\n          // For reference errors and type errors, this almost always\n          // means the programmer made a mistake, so log them after just\n          // 100ms\n          // otherwise, wait 2 seconds to see if they get handled\n          matchWhitelist(err, DEFAULT_WHITELIST)\n            ? 100\n            : 2000\n        ),\n        logged: false\n      };\n    }\n  };\n  function onUnhandled(id) {\n    if (\n      options.allRejections ||\n      matchWhitelist(\n        rejections[id].error,\n        options.whitelist || DEFAULT_WHITELIST\n      )\n    ) {\n      rejections[id].displayId = displayId++;\n      if (options.onUnhandled) {\n        rejections[id].logged = true;\n        options.onUnhandled(\n          rejections[id].displayId,\n          rejections[id].error\n        );\n      } else {\n        rejections[id].logged = true;\n        logError(\n          rejections[id].displayId,\n          rejections[id].error\n        );\n      }\n    }\n  }\n  function onHandled(id) {\n    if (rejections[id].logged) {\n      if (options.onHandled) {\n        options.onHandled(rejections[id].displayId, rejections[id].error);\n      } else if (!rejections[id].onUnhandled) {\n        console.warn(\n          'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n        );\n        console.warn(\n          '  This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n          rejections[id].displayId + '.'\n        );\n      }\n    }\n  }\n}\n\nfunction logError(id, error) {\n  console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n  var errStr = (error && (error.stack || error)) + '';\n  errStr.split('\\n').forEach(function (line) {\n    console.warn('  ' + line);\n  });\n}\n\nfunction matchWhitelist(error, list) {\n  return list.some(function (cls) {\n    return error instanceof cls;\n  });\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 * @flow strict\n * @format\n */\n\nimport type {PlatformSelectSpec, PlatformType} from './PlatformTypes';\n\nimport NativePlatformConstantsAndroid from './NativePlatformConstantsAndroid';\n\nconst Platform: PlatformType = {\n  __constants: null,\n  OS: 'android',\n  // $FlowFixMe[unsafe-getters-setters]\n  get Version(): number {\n    // $FlowFixMe[object-this-reference]\n    return this.constants.Version;\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get constants(): {\n    isTesting: boolean,\n    isDisableAnimations?: boolean,\n    reactNativeVersion: {\n      major: number,\n      minor: number,\n      patch: number,\n      prerelease: ?string,\n    },\n    Version: number,\n    Release: string,\n    Serial: string,\n    Fingerprint: string,\n    Model: string,\n    ServerHost?: string,\n    uiMode: string,\n    Brand: string,\n    Manufacturer: string,\n  } {\n    // $FlowFixMe[object-this-reference]\n    if (this.__constants == null) {\n      // $FlowFixMe[object-this-reference]\n      this.__constants = NativePlatformConstantsAndroid.getConstants();\n    }\n    // $FlowFixMe[object-this-reference]\n    return this.__constants;\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get isTesting(): boolean {\n    if (__DEV__) {\n      // $FlowFixMe[object-this-reference]\n      return this.constants.isTesting;\n    }\n    return false;\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get isDisableAnimations(): boolean {\n    // $FlowFixMe[object-this-reference]\n    return this.constants.isDisableAnimations ?? this.isTesting;\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get isTV(): boolean {\n    // $FlowFixMe[object-this-reference]\n    return this.constants.uiMode === 'tv';\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get isVision(): boolean {\n    return false;\n  },\n  select: <T>(spec: PlatformSelectSpec<T>): T =>\n    'android' in spec\n      ? // $FlowFixMe[incompatible-return]\n        spec.android\n      : 'native' in spec\n        ? // $FlowFixMe[incompatible-return]\n          spec.native\n        : // $FlowFixMe[incompatible-return]\n          spec.default,\n};\n\nexport default Platform;\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 * @flow strict\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid';\nimport NativePlatformConstantsAndroid from '../../src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid';\n\nexport default NativePlatformConstantsAndroid;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type ReactNativeVersionAndroid = {\n  major: number,\n  minor: number,\n  patch: number,\n  prerelease: ?string,\n};\n\nexport type PlatformConstantsAndroid = {\n  isTesting: boolean,\n  isDisableAnimations?: boolean,\n  reactNativeVersion: ReactNativeVersionAndroid,\n  Version: number,\n  Release: string,\n  Serial: string,\n  Fingerprint: string,\n  Model: string,\n  ServerHost?: string,\n  uiMode: string,\n  Brand: string,\n  Manufacturer: string,\n};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => PlatformConstantsAndroid;\n  +getAndroidID: () => string;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'PlatformConstants',\n): Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {ProcessedColorValue} from './processColor';\nimport type {ColorValue, NativeColorValue} from './StyleSheet';\n\n/** The actual type of the opaque NativeColorValue on Android platform */\ntype LocalNativeColorValue = {\n  resource_paths?: Array<string>,\n};\n\nexport const PlatformColor = (...names: Array<string>): ColorValue => {\n  /* $FlowExpectedError[incompatible-return]\n   * LocalNativeColorValue is the actual type of the opaque NativeColorValue on Android platform */\n  return ({resource_paths: names}: LocalNativeColorValue);\n};\n\nexport const normalizeColorObject = (\n  color: NativeColorValue,\n): ?ProcessedColorValue => {\n  /* $FlowExpectedError[incompatible-cast]\n   * LocalNativeColorValue is the actual type of the opaque NativeColorValue on Android platform */\n  if ('resource_paths' in (color: LocalNativeColorValue)) {\n    return color;\n  }\n  return null;\n};\n\nexport const processColorObject = (\n  color: NativeColorValue,\n): ?NativeColorValue => {\n  return color;\n};\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 * @flow strict-local\n * @format\n */\n\nimport type {PartialViewConfigWithoutName} from './PlatformBaseViewConfig';\n\nimport * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';\nimport ReactNativeStyleAttributes from '../Components/View/ReactNativeStyleAttributes';\nimport {DynamicallyInjectedByGestureHandler} from './ViewConfigIgnore';\n\nconst bubblingEventTypes = {\n  // Bubbling events from UIManagerModuleConstants.java\n  topChange: {\n    phasedRegistrationNames: {\n      captured: 'onChangeCapture',\n      bubbled: 'onChange',\n    },\n  },\n  topSelect: {\n    phasedRegistrationNames: {\n      captured: 'onSelectCapture',\n      bubbled: 'onSelect',\n    },\n  },\n  topTouchEnd: {\n    phasedRegistrationNames: {\n      captured: 'onTouchEndCapture',\n      bubbled: 'onTouchEnd',\n    },\n  },\n  topTouchCancel: {\n    phasedRegistrationNames: {\n      captured: 'onTouchCancelCapture',\n      bubbled: 'onTouchCancel',\n    },\n  },\n  topTouchStart: {\n    phasedRegistrationNames: {\n      captured: 'onTouchStartCapture',\n      bubbled: 'onTouchStart',\n    },\n  },\n  topTouchMove: {\n    phasedRegistrationNames: {\n      captured: 'onTouchMoveCapture',\n      bubbled: 'onTouchMove',\n    },\n  },\n\n  // Experimental/Work in Progress Pointer Events (not yet ready for use)\n  topPointerCancel: {\n    phasedRegistrationNames: {\n      captured: 'onPointerCancelCapture',\n      bubbled: 'onPointerCancel',\n    },\n  },\n  topPointerDown: {\n    phasedRegistrationNames: {\n      captured: 'onPointerDownCapture',\n      bubbled: 'onPointerDown',\n    },\n  },\n  topPointerEnter: {\n    phasedRegistrationNames: {\n      captured: 'onPointerEnterCapture',\n      bubbled: 'onPointerEnter',\n      skipBubbling: true,\n    },\n  },\n  topPointerLeave: {\n    phasedRegistrationNames: {\n      captured: 'onPointerLeaveCapture',\n      bubbled: 'onPointerLeave',\n      skipBubbling: true,\n    },\n  },\n  topPointerMove: {\n    phasedRegistrationNames: {\n      captured: 'onPointerMoveCapture',\n      bubbled: 'onPointerMove',\n    },\n  },\n  topPointerUp: {\n    phasedRegistrationNames: {\n      captured: 'onPointerUpCapture',\n      bubbled: 'onPointerUp',\n    },\n  },\n  topPointerOut: {\n    phasedRegistrationNames: {\n      captured: 'onPointerOutCapture',\n      bubbled: 'onPointerOut',\n    },\n  },\n  topPointerOver: {\n    phasedRegistrationNames: {\n      captured: 'onPointerOverCapture',\n      bubbled: 'onPointerOver',\n    },\n  },\n  topClick: {\n    phasedRegistrationNames: {\n      captured: 'onClickCapture',\n      bubbled: 'onClick',\n    },\n  },\n  topBlur: {\n    phasedRegistrationNames: {\n      captured: 'onBlurCapture',\n      bubbled: 'onBlur',\n    },\n  },\n  topFocus: {\n    phasedRegistrationNames: {\n      captured: 'onFocusCapture',\n      bubbled: 'onFocus',\n    },\n  },\n};\n\nconst directEventTypes = {\n  topAccessibilityAction: {\n    registrationName: 'onAccessibilityAction',\n  },\n  onGestureHandlerEvent: DynamicallyInjectedByGestureHandler({\n    registrationName: 'onGestureHandlerEvent',\n  }),\n  onGestureHandlerStateChange: DynamicallyInjectedByGestureHandler({\n    registrationName: 'onGestureHandlerStateChange',\n  }),\n\n  // Direct events from UIManagerModuleConstants.java\n  topContentSizeChange: {\n    registrationName: 'onContentSizeChange',\n  },\n  topScrollBeginDrag: {\n    registrationName: 'onScrollBeginDrag',\n  },\n  topMessage: {\n    registrationName: 'onMessage',\n  },\n  topSelectionChange: {\n    registrationName: 'onSelectionChange',\n  },\n  topLoadingFinish: {\n    registrationName: 'onLoadingFinish',\n  },\n  topMomentumScrollEnd: {\n    registrationName: 'onMomentumScrollEnd',\n  },\n  topLoadingStart: {\n    registrationName: 'onLoadingStart',\n  },\n  topLoadingError: {\n    registrationName: 'onLoadingError',\n  },\n  topMomentumScrollBegin: {\n    registrationName: 'onMomentumScrollBegin',\n  },\n  topScrollEndDrag: {\n    registrationName: 'onScrollEndDrag',\n  },\n  topScroll: {\n    registrationName: 'onScroll',\n  },\n  topLayout: {\n    registrationName: 'onLayout',\n  },\n};\n\nconst validAttributesForNonEventProps = {\n  // @ReactProps from BaseViewManager\n  backgroundColor: {process: require('../StyleSheet/processColor').default},\n  transform: true,\n  transformOrigin: true,\n  experimental_backgroundImage: {\n    process: require('../StyleSheet/processBackgroundImage').default,\n  },\n  boxShadow: ReactNativeFeatureFlags.enableNativeCSSParsing()\n    ? (true as const)\n    : {process: require('../StyleSheet/processBoxShadow').default},\n  filter: ReactNativeFeatureFlags.enableNativeCSSParsing()\n    ? (true as const)\n    : {process: require('../StyleSheet/processFilter').default},\n  mixBlendMode: true,\n  isolation: true,\n  opacity: true,\n  elevation: true,\n  shadowColor: {process: require('../StyleSheet/processColor').default},\n  zIndex: true,\n  renderToHardwareTextureAndroid: true,\n  testID: true,\n  nativeID: true,\n  accessibilityLabelledBy: true,\n  accessibilityLabel: true,\n  accessibilityHint: true,\n  accessibilityRole: true,\n  accessibilityCollection: true,\n  accessibilityCollectionItem: true,\n  accessibilityState: true,\n  accessibilityActions: true,\n  accessibilityValue: true,\n  experimental_accessibilityOrder: true,\n  importantForAccessibility: true,\n  screenReaderFocusable: true,\n  role: true,\n  rotation: true,\n  scaleX: true,\n  scaleY: true,\n  translateX: true,\n  translateY: true,\n  accessibilityLiveRegion: true,\n\n  // @ReactProps from LayoutShadowNode\n  width: true,\n  minWidth: true,\n  collapsable: true,\n  collapsableChildren: true,\n  maxWidth: true,\n  height: true,\n  minHeight: true,\n  maxHeight: true,\n  flex: true,\n  flexGrow: true,\n  rowGap: true,\n  columnGap: true,\n  gap: true,\n  flexShrink: true,\n  flexBasis: true,\n  aspectRatio: true,\n  flexDirection: true,\n  flexWrap: true,\n  alignSelf: true,\n  alignItems: true,\n  alignContent: true,\n  justifyContent: true,\n  overflow: true,\n  display: true,\n  boxSizing: true,\n\n  margin: true,\n  marginBlock: true,\n  marginBlockEnd: true,\n  marginBlockStart: true,\n  marginBottom: true,\n  marginEnd: true,\n  marginHorizontal: true,\n  marginInline: true,\n  marginInlineEnd: true,\n  marginInlineStart: true,\n  marginLeft: true,\n  marginRight: true,\n  marginStart: true,\n  marginTop: true,\n  marginVertical: true,\n\n  padding: true,\n  paddingBlock: true,\n  paddingBlockEnd: true,\n  paddingBlockStart: true,\n  paddingBottom: true,\n  paddingEnd: true,\n  paddingHorizontal: true,\n  paddingInline: true,\n  paddingInlineEnd: true,\n  paddingInlineStart: true,\n  paddingLeft: true,\n  paddingRight: true,\n  paddingStart: true,\n  paddingTop: true,\n  paddingVertical: true,\n\n  borderWidth: true,\n  borderStartWidth: true,\n  borderEndWidth: true,\n  borderTopWidth: true,\n  borderBottomWidth: true,\n  borderLeftWidth: true,\n  borderRightWidth: true,\n\n  outlineColor: {process: require('../StyleSheet/processColor').default},\n  outlineOffset: true,\n  outlineStyle: true,\n  outlineWidth: true,\n\n  start: true,\n  end: true,\n  left: true,\n  right: true,\n  top: true,\n  bottom: true,\n\n  inset: true,\n  insetBlock: true,\n  insetBlockEnd: true,\n  insetBlockStart: true,\n  insetInline: true,\n  insetInlineEnd: true,\n  insetInlineStart: true,\n\n  position: true,\n\n  style: ReactNativeStyleAttributes,\n\n  // ReactClippingViewManager @ReactProps\n  removeClippedSubviews: true,\n\n  // ReactViewManager @ReactProps\n  accessible: true,\n  hasTVPreferredFocus: true,\n  nextFocusDown: true,\n  nextFocusForward: true,\n  nextFocusLeft: true,\n  nextFocusRight: true,\n  nextFocusUp: true,\n\n  borderRadius: true,\n  borderTopLeftRadius: true,\n  borderTopRightRadius: true,\n  borderBottomRightRadius: true,\n  borderBottomLeftRadius: true,\n  borderTopStartRadius: true,\n  borderTopEndRadius: true,\n  borderBottomStartRadius: true,\n  borderBottomEndRadius: true,\n  borderEndEndRadius: true,\n  borderEndStartRadius: true,\n  borderStartEndRadius: true,\n  borderStartStartRadius: true,\n  borderStyle: true,\n  hitSlop: true,\n  pointerEvents: true,\n  nativeBackgroundAndroid: true,\n  nativeForegroundAndroid: true,\n  needsOffscreenAlphaCompositing: true,\n\n  borderColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderLeftColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderRightColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderTopColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderBottomColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderStartColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderEndColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderBlockColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderBlockEndColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  borderBlockStartColor: {\n    process: require('../StyleSheet/processColor').default,\n  },\n  focusable: true,\n  backfaceVisibility: true,\n} as const;\n\n// Props for bubbling and direct events\nconst validAttributesForEventProps = {\n  onLayout: true,\n\n  // PanResponder handlers\n  onMoveShouldSetResponder: true,\n  onMoveShouldSetResponderCapture: true,\n  onStartShouldSetResponder: true,\n  onStartShouldSetResponderCapture: true,\n  onResponderGrant: true,\n  onResponderReject: true,\n  onResponderStart: true,\n  onResponderEnd: true,\n  onResponderRelease: true,\n  onResponderMove: true,\n  onResponderTerminate: true,\n  onResponderTerminationRequest: true,\n  onShouldBlockNativeResponder: true,\n\n  // Touch events\n  onTouchStart: true,\n  onTouchMove: true,\n  onTouchEnd: true,\n  onTouchCancel: true,\n\n  // Pointer events\n  onClick: true,\n  onClickCapture: true,\n  onPointerEnter: true,\n  onPointerEnterCapture: true,\n  onPointerLeave: true,\n  onPointerLeaveCapture: true,\n  onPointerMove: true,\n  onPointerMoveCapture: true,\n  onPointerOut: true,\n  onPointerOutCapture: true,\n  onPointerOver: true,\n  onPointerOverCapture: true,\n} as const;\n\n/**\n * On Android, Props are derived from a ViewManager and its ShadowNode.\n *\n * Where did we find these base platform props from?\n * - Nearly all component ViewManagers descend from BaseViewManager,\n * - and BaseViewManagers' ShadowNodes descend from LayoutShadowNode.\n * - Also, all components inherit ViewConfigs from UIManagerModuleConstants.java.\n *\n * So, these ViewConfigs are generated from LayoutShadowNode and BaseViewManager.\n */\nconst PlatformBaseViewConfigAndroid: PartialViewConfigWithoutName = {\n  directEventTypes,\n  bubblingEventTypes,\n  validAttributes: {\n    ...validAttributesForNonEventProps,\n    ...validAttributesForEventProps,\n  },\n};\n\nexport default PlatformBaseViewConfigAndroid;\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 * @flow strict-local\n * @format\n */\n\nimport UIManager from '../../ReactNative/UIManager';\nimport nullthrows from 'nullthrows';\n\n/**\n * This is a function exposed to the React Renderer that can be used by the\n * pre-Fabric renderer to emit accessibility events to pre-Fabric nodes.\n */\nfunction legacySendAccessibilityEvent(\n  reactTag: number,\n  eventType: string,\n): void {\n  if (eventType === 'focus') {\n    nullthrows(UIManager.sendAccessibilityEvent)(\n      reactTag,\n      UIManager.getConstants().AccessibilityEventTypes.typeViewFocused,\n    );\n  }\n  if (eventType === 'click') {\n    nullthrows(UIManager.sendAccessibilityEvent)(\n      reactTag,\n      UIManager.getConstants().AccessibilityEventTypes.typeViewClicked,\n    );\n  }\n}\n\nexport default legacySendAccessibilityEvent;\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 * @flow\n * @format\n */\n\nimport type {EventSubscription} from '../vendor/emitter/EventEmitter';\nimport type {RequestBody} from './convertRequestBody';\nimport type {RCTNetworkingEventDefinitions} from './RCTNetworkingEventDefinitions.flow';\nimport type {NativeResponseType} from './XMLHttpRequest';\n\n// Do not require the native RCTNetworking module directly! Use this wrapper module instead.\n// It will add the necessary requestId, so that you don't have to generate it yourself.\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport Platform from '../Utilities/Platform';\nimport convertRequestBody from './convertRequestBody';\nimport NativeNetworkingAndroid from './NativeNetworkingAndroid';\n\ntype Header = [string, string];\n\n// Convert FormData headers to arrays, which are easier to consume in\n// native on Android.\nfunction convertHeadersMapToArray(headers: Object): Array<Header> {\n  const headerArray: Array<Header> = [];\n  for (const name in headers) {\n    headerArray.push([name, headers[name]]);\n  }\n  return headerArray;\n}\n\nlet _requestId = 1;\nfunction generateRequestId(): number {\n  return _requestId++;\n}\n\nconst emitter = new NativeEventEmitter<$FlowFixMe>(\n  // T88715063: NativeEventEmitter only used this parameter on iOS. Now it uses it on all platforms, so this code was modified automatically to preserve its behavior\n  // If you want to use the native module on other platforms, please remove this condition and test its behavior\n  Platform.OS !== 'ios' ? null : NativeNetworkingAndroid,\n);\n\n/**\n * This object is a wrapper around the native RCTNetworking module. It adds a necessary unique\n * requestId to each network request that can be used to abort that request later on.\n */\nconst RCTNetworking = {\n  addListener<K: $Keys<RCTNetworkingEventDefinitions>>(\n    eventType: K,\n    listener: (...RCTNetworkingEventDefinitions[K]) => mixed,\n    context?: mixed,\n  ): EventSubscription {\n    // $FlowFixMe[incompatible-call]\n    return emitter.addListener(eventType, listener, context);\n  },\n\n  sendRequest(\n    method: string,\n    trackingName: string | void,\n    url: string,\n    headers: Object,\n    data: RequestBody,\n    responseType: NativeResponseType,\n    incrementalUpdates: boolean,\n    timeout: number,\n    callback: (requestId: number) => mixed,\n    withCredentials: boolean,\n  ) {\n    const body = convertRequestBody(data);\n    if (body && body.formData) {\n      body.formData = body.formData.map(part => ({\n        ...part,\n        headers: convertHeadersMapToArray(part.headers),\n      }));\n    }\n    const requestId = generateRequestId();\n    NativeNetworkingAndroid.sendRequest(\n      method,\n      url,\n      requestId,\n      convertHeadersMapToArray(headers),\n      {...body, trackingName},\n      responseType,\n      incrementalUpdates,\n      timeout,\n      withCredentials,\n    );\n    callback(requestId);\n  },\n\n  abortRequest(requestId: number) {\n    NativeNetworkingAndroid.abortRequest(requestId);\n  },\n\n  clearCookies(callback: (result: boolean) => void) {\n    NativeNetworkingAndroid.clearCookies(callback);\n  },\n};\n\nexport default RCTNetworking;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid';\nimport NativeNetworkingAndroid from '../../src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid';\n\nexport default NativeNetworkingAndroid;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\ntype Header = [string, string];\n\nexport interface Spec extends TurboModule {\n  +sendRequest: (\n    method: string,\n    url: string,\n    requestId: number,\n    headers: Array<Header>,\n    data: Object,\n    responseType: string,\n    useIncrementalUpdates: boolean,\n    timeout: number,\n    withCredentials: boolean,\n  ) => void;\n  +abortRequest: (requestId: number) => void;\n  +clearCookies: (callback: (result: boolean) => void) => void;\n\n  // RCTEventEmitter\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('Networking'): Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {Args} from './NativeAlertManager';\n\nimport NativeDialogManagerAndroid from '../NativeModules/specs/NativeDialogManagerAndroid';\n\nfunction emptyCallback() {}\n\nexport function alertWithArgs(\n  args: Args,\n  callback: (id: number, value: string) => void,\n) {\n  // TODO(5998984): Polyfill it correctly with DialogManagerAndroid\n  if (!NativeDialogManagerAndroid) {\n    return;\n  }\n\n  NativeDialogManagerAndroid.showAlert(\n    // $FlowFixMe[prop-missing] - Mismatched platform interfaces.\n    args,\n    emptyCallback,\n    // $FlowFixMe[incompatible-call] - Mismatched platform interfaces.\n    callback || emptyCallback,\n  );\n}\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 * @flow strict-local\n * @format\n */\n\nimport NativeDeviceEventManager from '../../Libraries/NativeModules/specs/NativeDeviceEventManager';\nimport RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';\n\nconst DEVICE_BACK_EVENT = 'hardwareBackPress';\n\ntype BackPressEventName = 'backPress' | 'hardwareBackPress';\ntype BackPressHandler = () => ?boolean;\n\nconst _backPressSubscriptions: Array<BackPressHandler> = [];\n\nRCTDeviceEventEmitter.addListener(DEVICE_BACK_EVENT, function () {\n  for (let i = _backPressSubscriptions.length - 1; i >= 0; i--) {\n    if (_backPressSubscriptions[i]?.()) {\n      return;\n    }\n  }\n\n  BackHandler.exitApp();\n});\n\n/**\n * Detect hardware button presses for back navigation.\n *\n * Android: Detect hardware back button presses, and programmatically invoke the default back button\n * functionality to exit the app if there are no listeners or if none of the listeners return true.\n *\n * iOS: Not applicable.\n *\n * The event subscriptions are called in reverse order (i.e. last registered subscription first),\n * and if one subscription returns true then subscriptions registered earlier will not be called.\n *\n * Example:\n *\n * ```javascript\n * BackHandler.addEventListener('hardwareBackPress', function() {\n *  // this.onMainScreen and this.goBack are just examples, you need to use your own implementation here\n *  // Typically you would use the navigator here to go to the last state.\n *\n *  if (!this.onMainScreen()) {\n *    this.goBack();\n *    return true;\n *  }\n *  return false;\n * });\n * ```\n */\ntype TBackHandler = {\n  +exitApp: () => void,\n  +addEventListener: (\n    eventName: BackPressEventName,\n    handler: BackPressHandler,\n  ) => {remove: () => void, ...},\n};\nconst BackHandler: TBackHandler = {\n  exitApp: function (): void {\n    if (!NativeDeviceEventManager) {\n      return;\n    }\n\n    NativeDeviceEventManager.invokeDefaultBackPressHandler();\n  },\n\n  /**\n   * Adds an event handler. Supported events:\n   *\n   * - `hardwareBackPress`: Fires when the Android hardware back button is pressed.\n   */\n  addEventListener: function (\n    eventName: BackPressEventName,\n    handler: BackPressHandler,\n  ): {remove: () => void, ...} {\n    if (_backPressSubscriptions.indexOf(handler) === -1) {\n      _backPressSubscriptions.push(handler);\n    }\n    return {\n      remove: (): void => {\n        const index = _backPressSubscriptions.indexOf(handler);\n        if (index !== -1) {\n          _backPressSubscriptions.splice(index, 1);\n        }\n      },\n    };\n  },\n};\n\nexport default BackHandler;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeDeviceEventManager';\nimport NativeDeviceEventManager from '../../../src/private/specs_DEPRECATED/modules/NativeDeviceEventManager';\n\nexport default NativeDeviceEventManager;\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +invokeDefaultBackPressHandler: () => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('DeviceEventManager'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\nimport type {ProgressBarAndroidProps} from './ProgressBarAndroidTypes';\n\nimport ProgressBarAndroidNativeComponent from './ProgressBarAndroidNativeComponent';\n\nconst React = require('react');\n\nexport type {ProgressBarAndroidProps};\n\n/**\n * React component that wraps the Android-only `ProgressBar`. This component is\n * used to indicate that the app is loading or there is activity in the app.\n *\n * Example:\n *\n * ```\n * render: function() {\n *   var progressBar =\n *     <View style={styles.container}>\n *       <ProgressBar styleAttr=\"Inverse\" />\n *     </View>;\n\n *   return (\n *     <MyLoadingComponent\n *       componentView={componentView}\n *       loadingView={progressBar}\n *       style={styles.loadingComponent}\n *     />\n *   );\n * },\n * ```\n */\nconst ProgressBarAndroid: component(\n  ref?: React.RefSetter<\n    React.ElementRef<typeof ProgressBarAndroidNativeComponent>,\n  >,\n  ...props: ProgressBarAndroidProps\n) = function ProgressBarAndroid({\n  ref: forwardedRef,\n  // $FlowFixMe[incompatible-type]\n  styleAttr = 'Normal',\n  indeterminate = true,\n  animating = true,\n  ...restProps\n}: {\n  ref?: React.RefSetter<\n    React.ElementRef<typeof ProgressBarAndroidNativeComponent>,\n  >,\n  ...ProgressBarAndroidProps,\n}) {\n  return (\n    <ProgressBarAndroidNativeComponent\n      styleAttr={styleAttr}\n      indeterminate={indeterminate}\n      animating={animating}\n      {...restProps}\n      ref={forwardedRef}\n    />\n  );\n};\n\nexport default ProgressBarAndroid;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent';\nexport {default} from '../../../src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent';\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet';\nimport type {\n  Double,\n  WithDefault,\n} from '../../../../Libraries/Types/CodegenTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\n\ntype AndroidProgressBarNativeProps = $ReadOnly<{\n  ...ViewProps,\n\n  //Props\n  styleAttr?: string,\n  typeAttr?: string,\n  indeterminate: boolean,\n  progress?: WithDefault<Double, 0>,\n  animating?: WithDefault<boolean, true>,\n  color?: ?ColorValue,\n  testID?: WithDefault<string, ''>,\n}>;\n\nexport default (codegenNativeComponent<AndroidProgressBarNativeProps>(\n  'AndroidProgressBar',\n  {\n    interfaceOnly: true,\n  },\n): HostComponent<AndroidProgressBarNativeProps>);\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 * @flow strict-local\n * @format\n */\n\nimport type {HostInstance} from '../../src/private/types/HostInstance';\nimport type {ImageStyleProp} from '../StyleSheet/StyleSheet';\nimport type {RootTag} from '../Types/RootTagTypes';\nimport type {ImageProps} from './ImageProps';\nimport type {AbstractImageAndroid, ImageAndroid} from './ImageTypes.flow';\n\nimport flattenStyle from '../StyleSheet/flattenStyle';\nimport StyleSheet from '../StyleSheet/StyleSheet';\nimport TextAncestorContext from '../Text/TextAncestorContext';\nimport ImageAnalyticsTagContext from './ImageAnalyticsTagContext';\nimport {\n  unstable_getImageComponentDecorator,\n  useWrapRefWithImageAttachedCallbacks,\n} from './ImageInjection';\nimport {getImageSourcesFromImageProps} from './ImageSourceUtils';\nimport {convertObjectFitToResizeMode} from './ImageUtils';\nimport ImageViewNativeComponent from './ImageViewNativeComponent';\nimport NativeImageLoaderAndroid, {\n  type ImageSize,\n} from './NativeImageLoaderAndroid';\nimport resolveAssetSource from './resolveAssetSource';\nimport TextInlineImageNativeComponent from './TextInlineImageNativeComponent';\nimport * as React from 'react';\n\nlet _requestId = 1;\nfunction generateRequestId() {\n  return _requestId++;\n}\n\n/**\n * Retrieve the width and height (in pixels) of an image prior to displaying it\n *\n * See https://reactnative.dev/docs/image#getsize\n */\nfunction getSize(\n  url: string,\n  success?: (width: number, height: number) => void,\n  failure?: (error: mixed) => void,\n): void | Promise<ImageSize> {\n  const promise = NativeImageLoaderAndroid.getSize(url);\n  if (typeof success !== 'function') {\n    return promise;\n  }\n  promise\n    .then(sizes => success(sizes.width, sizes.height))\n    .catch(\n      failure ||\n        function () {\n          console.warn('Failed to get size for image: ' + url);\n        },\n    );\n}\n\n/**\n * Retrieve the width and height (in pixels) of an image prior to displaying it\n * with the ability to provide the headers for the request\n *\n * See https://reactnative.dev/docs/image#getsizewithheaders\n */\nfunction getSizeWithHeaders(\n  url: string,\n  headers: {[string]: string, ...},\n  success?: (width: number, height: number) => void,\n  failure?: (error: mixed) => void,\n): void | Promise<ImageSize> {\n  const promise = NativeImageLoaderAndroid.getSizeWithHeaders(url, headers);\n  if (typeof success !== 'function') {\n    return promise;\n  }\n  promise\n    .then(sizes => success(sizes.width, sizes.height))\n    .catch(\n      failure ||\n        function () {\n          console.warn('Failed to get size for image: ' + url);\n        },\n    );\n}\n\nfunction prefetchWithMetadata(\n  url: string,\n  queryRootName: string,\n  rootTag?: ?RootTag,\n  callback: ?(requestId: number) => void,\n): Promise<boolean> {\n  // TODO: T79192300 Log queryRootName and rootTag\n  return prefetch(url, callback);\n}\n\nfunction prefetch(\n  url: string,\n  callback: ?(requestId: number) => void,\n): Promise<boolean> {\n  const requestId = generateRequestId();\n  callback && callback(requestId);\n  return NativeImageLoaderAndroid.prefetchImage(url, requestId);\n}\n\nfunction abortPrefetch(requestId: number): void {\n  NativeImageLoaderAndroid.abortRequest(requestId);\n}\n\n/**\n * Perform cache interrogation.\n *\n * See https://reactnative.dev/docs/image#querycache\n */\nasync function queryCache(\n  urls: Array<string>,\n): Promise<{[string]: 'memory' | 'disk' | 'disk/memory', ...}> {\n  return NativeImageLoaderAndroid.queryCache(urls);\n}\n\n/**\n * A React component for displaying different types of images,\n * including network images, static resources, temporary local images, and\n * images from local disk, such as the camera roll.\n *\n * See https://reactnative.dev/docs/image\n */\nlet BaseImage: AbstractImageAndroid = ({\n  ref: forwardedRef,\n  ...props\n}: {\n  ref?: React.RefSetter<HostInstance>,\n  ...ImageProps,\n}) => {\n  let source = getImageSourcesFromImageProps(props) || {\n    uri: undefined,\n    width: undefined,\n    height: undefined,\n  };\n  const defaultSource = resolveAssetSource(props.defaultSource);\n  const loadingIndicatorSource = resolveAssetSource(\n    props.loadingIndicatorSource,\n  );\n\n  if (props.children != null) {\n    throw new Error(\n      'The <Image> component cannot contain children. If you want to render content on top of the image, consider using the <ImageBackground> component or absolute positioning.',\n    );\n  }\n\n  if (props.defaultSource != null && props.loadingIndicatorSource != null) {\n    throw new Error(\n      'The <Image> component cannot have defaultSource and loadingIndicatorSource at the same time. Please use either defaultSource or loadingIndicatorSource.',\n    );\n  }\n\n  let style: ImageStyleProp;\n  let sources;\n  if (Array.isArray(source)) {\n    style = [styles.base, props.style];\n    sources = source;\n  } else {\n    const {uri} = source;\n    if (uri === '') {\n      console.warn('source.uri should not be an empty string');\n    }\n    const width = source.width ?? props.width;\n    const height = source.height ?? props.height;\n    style = [{width, height}, styles.base, props.style];\n    sources = [source];\n  }\n\n  const {onLoadStart, onLoad, onLoadEnd, onError} = props;\n  const nativeProps = {\n    ...props,\n    style,\n    shouldNotifyLoadEvents: !!(onLoadStart || onLoad || onLoadEnd || onError),\n    // Both iOS and C++ sides expect to have \"source\" prop, whereas on Android it's \"src\"\n    // (for historical reasons). So in the latter case we populate both \"src\" and \"source\",\n    // in order to have a better alignment between platforms in the future.\n    src: sources,\n    source: sources,\n    /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n     * when making Flow check .android.js files. */\n    headers: (source?.[0]?.headers || source?.headers: ?{[string]: string}),\n    defaultSource: defaultSource ? defaultSource.uri : null,\n    loadingIndicatorSrc: loadingIndicatorSource\n      ? loadingIndicatorSource.uri\n      : null,\n    accessibilityLabel:\n      props['aria-label'] ?? props.accessibilityLabel ?? props.alt,\n    accessibilityLabelledBy:\n      props?.['aria-labelledby'] ?? props?.accessibilityLabelledBy,\n    accessible: props.alt !== undefined ? true : props.accessible,\n    accessibilityState: {\n      busy: props['aria-busy'] ?? props.accessibilityState?.busy,\n      checked: props['aria-checked'] ?? props.accessibilityState?.checked,\n      disabled: props['aria-disabled'] ?? props.accessibilityState?.disabled,\n      expanded: props['aria-expanded'] ?? props.accessibilityState?.expanded,\n      selected: props['aria-selected'] ?? props.accessibilityState?.selected,\n    },\n  };\n\n  const flattenedStyle = flattenStyle<ImageStyleProp>(style);\n  const objectFit = convertObjectFitToResizeMode(flattenedStyle?.objectFit);\n  const resizeMode =\n    objectFit || props.resizeMode || flattenedStyle?.resizeMode || 'cover';\n\n  const actualRef = useWrapRefWithImageAttachedCallbacks(forwardedRef);\n\n  return (\n    <ImageAnalyticsTagContext.Consumer>\n      {analyticTag => {\n        const nativePropsWithAnalytics =\n          analyticTag !== null\n            ? {\n                ...nativeProps,\n                internal_analyticTag: analyticTag,\n              }\n            : nativeProps;\n        return (\n          <TextAncestorContext.Consumer>\n            {hasTextAncestor => {\n              if (hasTextAncestor) {\n                return (\n                  <TextInlineImageNativeComponent\n                    // $FlowFixMe[incompatible-type]\n                    style={style}\n                    resizeMode={resizeMode}\n                    headers={nativeProps.headers}\n                    src={sources}\n                    ref={actualRef}\n                  />\n                );\n              }\n\n              return (\n                <ImageViewNativeComponent\n                  {...nativePropsWithAnalytics}\n                  resizeMode={resizeMode}\n                  ref={actualRef}\n                />\n              );\n            }}\n          </TextAncestorContext.Consumer>\n        );\n      }}\n    </ImageAnalyticsTagContext.Consumer>\n  );\n};\n\nconst imageComponentDecorator = unstable_getImageComponentDecorator();\nif (imageComponentDecorator != null) {\n  BaseImage = imageComponentDecorator(BaseImage);\n}\n\n// $FlowExpectedError[incompatible-type] Eventually we need to move these functions from statics of the component to exports in the module.\nconst Image: ImageAndroid = BaseImage;\n\nImage.displayName = 'Image';\n\n/**\n * Retrieve the width and height (in pixels) of an image prior to displaying it\n *\n * See https://reactnative.dev/docs/image#getsize\n */\n// $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.\nImage.getSize = getSize;\n\n/**\n * Retrieve the width and height (in pixels) of an image prior to displaying it\n * with the ability to provide the headers for the request\n *\n * See https://reactnative.dev/docs/image#getsizewithheaders\n */\n// $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.\nImage.getSizeWithHeaders = getSizeWithHeaders;\n\n/**\n * Prefetches a remote image for later use by downloading it to the disk\n * cache\n *\n * See https://reactnative.dev/docs/image#prefetch\n */\n// $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.\nImage.prefetch = prefetch;\n\n/**\n * Prefetches a remote image for later use by downloading it to the disk\n * cache, and adds metadata for queryRootName and rootTag.\n *\n * See https://reactnative.dev/docs/image#prefetch\n */\n// $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.\nImage.prefetchWithMetadata = prefetchWithMetadata;\n\n/**\n * Abort prefetch request.\n *\n * See https://reactnative.dev/docs/image#abortprefetch\n */\n// $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.\nImage.abortPrefetch = abortPrefetch;\n\n/**\n * Perform cache interrogation.\n *\n * See https://reactnative.dev/docs/image#querycache\n */\n// $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.\nImage.queryCache = queryCache;\n\n/**\n * Resolves an asset reference into an object.\n *\n * See https://reactnative.dev/docs/image#resolveassetsource\n */\n// $FlowFixMe[incompatible-use] This property isn't writable but we're actually defining it here for the first time.\nImage.resolveAssetSource = resolveAssetSource;\n\nconst styles = StyleSheet.create({\n  base: {\n    overflow: 'hidden',\n  },\n});\n\nexport default Image;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid';\nimport NativeImageLoaderAndroid from '../../src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid';\n\nexport default NativeImageLoaderAndroid;\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 * @flow\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport type ImageSize = {\n  width: number,\n  height: number,\n  ...\n};\n\nexport interface Spec extends TurboModule {\n  +abortRequest: (requestId: number) => void;\n  +getConstants: () => {};\n  +getSize: (uri: string) => Promise<ImageSize>;\n  +getSizeWithHeaders: (uri: string, headers: Object) => Promise<ImageSize>;\n  +prefetchImage: (uri: string, requestId: number) => Promise<boolean>;\n  +queryCache: (uris: Array<string>) => Promise<Object>;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('ImageLoader'): Spec);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {HostComponent} from '../../src/private/types/HostComponent';\nimport type {ViewProps} from '../Components/View/ViewPropTypes';\nimport type {PartialViewConfig} from '../Renderer/shims/ReactNativeTypes';\nimport type {ColorValue} from '../StyleSheet/StyleSheet';\nimport type {ImageResizeMode} from './ImageResizeMode';\n\nimport * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry';\n\ntype RCTTextInlineImageNativeProps = $ReadOnly<{\n  ...ViewProps,\n  resizeMode?: ?ImageResizeMode,\n  src?: ?$ReadOnlyArray<?$ReadOnly<{uri?: ?string, ...}>>,\n  tintColor?: ?ColorValue,\n  headers?: ?{[string]: string},\n}>;\n\nexport const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {\n  uiViewClassName: 'RCTTextInlineImage',\n  bubblingEventTypes: {},\n  directEventTypes: {},\n  validAttributes: {\n    resizeMode: true,\n    src: true,\n    tintColor: {\n      process: require('../StyleSheet/processColor').default,\n    },\n    headers: true,\n  },\n};\n\nconst TextInlineImage: HostComponent<RCTTextInlineImageNativeProps> =\n  NativeComponentRegistry.get<RCTTextInlineImageNativeProps>(\n    'RCTTextInlineImage',\n    () => __INTERNAL_VIEW_CONFIG,\n  );\n\nexport default TextInlineImage;\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 * @flow\n * @format\n */\n\nimport type {\n  MeasureInWindowOnSuccessCallback,\n  MeasureLayoutOnSuccessCallback,\n  MeasureOnSuccessCallback,\n} from '../../../src/private/types/HostInstance';\nimport type {\n  DrawerLayoutAndroidMethods,\n  DrawerLayoutAndroidProps,\n  DrawerLayoutAndroidState,\n} from './DrawerLayoutAndroidTypes';\n\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport dismissKeyboard from '../../Utilities/dismissKeyboard';\nimport StatusBar from '../StatusBar/StatusBar';\nimport View from '../View/View';\nimport AndroidDrawerLayoutNativeComponent, {\n  Commands,\n} from './AndroidDrawerLayoutNativeComponent';\nimport nullthrows from 'nullthrows';\nimport * as React from 'react';\nimport {createRef} from 'react';\n\nconst DRAWER_STATES = ['Idle', 'Dragging', 'Settling'] as const;\n\n/**\n * React component that wraps the platform `DrawerLayout` (Android only). The\n * Drawer (typically used for navigation) is rendered with `renderNavigationView`\n * and direct children are the main view (where your content goes). The navigation\n * view is initially not visible on the screen, but can be pulled in from the\n * side of the window specified by the `drawerPosition` prop and its width can\n * be set by the `drawerWidth` prop.\n *\n * Example:\n *\n * ```\n * render: function() {\n *   var navigationView = (\n *     <View style={{flex: 1, backgroundColor: '#fff'}}>\n *       <Text style={{margin: 10, fontSize: 15, textAlign: 'left'}}>I'm in the Drawer!</Text>\n *     </View>\n *   );\n *   return (\n *     <DrawerLayoutAndroid\n *       drawerWidth={300}\n *       drawerPosition=\"left\"\n *       renderNavigationView={() => navigationView}>\n *       <View style={{flex: 1, alignItems: 'center'}}>\n *         <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>Hello</Text>\n *         <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>World!</Text>\n *       </View>\n *     </DrawerLayoutAndroid>\n *   );\n * },\n * ```\n */\nclass DrawerLayoutAndroid\n  extends React.Component<DrawerLayoutAndroidProps, DrawerLayoutAndroidState>\n  implements DrawerLayoutAndroidMethods\n{\n  static get positions(): mixed {\n    console.warn(\n      'Setting DrawerLayoutAndroid drawerPosition using `DrawerLayoutAndroid.positions` is deprecated. Instead pass the string value \"left\" or \"right\"',\n    );\n\n    return {Left: 'left', Right: 'right'};\n  }\n\n  // $FlowFixMe[missing-local-annot]\n  _nativeRef =\n    createRef<React.ElementRef<typeof AndroidDrawerLayoutNativeComponent>>();\n\n  state: DrawerLayoutAndroidState = {\n    drawerOpened: false,\n  };\n\n  render(): React.Node {\n    const {\n      drawerBackgroundColor = 'white',\n      onDrawerStateChanged,\n      renderNavigationView,\n      onDrawerOpen,\n      onDrawerClose,\n      ...props\n    } = this.props;\n    const drawStatusBar = this.props.statusBarBackgroundColor != null;\n    const drawerViewWrapper = (\n      <View\n        style={[\n          styles.drawerSubview,\n          {\n            width: this.props.drawerWidth,\n            backgroundColor: drawerBackgroundColor,\n          },\n        ]}\n        pointerEvents={this.state.drawerOpened ? 'auto' : 'none'}\n        collapsable={false}>\n        {renderNavigationView()}\n        {drawStatusBar && <View style={styles.drawerStatusBar} />}\n      </View>\n    );\n    const childrenWrapper = (\n      <View style={styles.mainSubview} collapsable={false}>\n        {drawStatusBar && (\n          <StatusBar\n            translucent\n            backgroundColor={this.props.statusBarBackgroundColor}\n          />\n        )}\n        {drawStatusBar && (\n          <View\n            style={[\n              styles.statusBar,\n              {backgroundColor: this.props.statusBarBackgroundColor},\n            ]}\n          />\n        )}\n        {this.props.children}\n      </View>\n    );\n    return (\n      <AndroidDrawerLayoutNativeComponent\n        {...props}\n        ref={this._nativeRef}\n        drawerBackgroundColor={drawerBackgroundColor}\n        drawerWidth={this.props.drawerWidth}\n        drawerPosition={this.props.drawerPosition}\n        drawerLockMode={this.props.drawerLockMode}\n        style={[styles.base, this.props.style]}\n        onDrawerSlide={this._onDrawerSlide}\n        onDrawerOpen={this._onDrawerOpen}\n        onDrawerClose={this._onDrawerClose}\n        onDrawerStateChanged={this._onDrawerStateChanged}>\n        {childrenWrapper}\n        {drawerViewWrapper}\n      </AndroidDrawerLayoutNativeComponent>\n    );\n  }\n\n  /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's\n   * LTI update could not be added via codemod */\n  _onDrawerSlide = event => {\n    if (this.props.onDrawerSlide) {\n      // $FlowFixMe[unused-promise]\n      this.props.onDrawerSlide(event);\n    }\n    if (this.props.keyboardDismissMode === 'on-drag') {\n      dismissKeyboard();\n    }\n  };\n\n  _onDrawerOpen = () => {\n    this.setState({\n      drawerOpened: true,\n    });\n    if (this.props.onDrawerOpen) {\n      this.props.onDrawerOpen();\n    }\n  };\n\n  _onDrawerClose = () => {\n    this.setState({\n      drawerOpened: false,\n    });\n    if (this.props.onDrawerClose) {\n      this.props.onDrawerClose();\n    }\n  };\n\n  /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's\n   * LTI update could not be added via codemod */\n  _onDrawerStateChanged = event => {\n    if (this.props.onDrawerStateChanged) {\n      this.props.onDrawerStateChanged(\n        DRAWER_STATES[event.nativeEvent.drawerState],\n      );\n    }\n  };\n\n  /**\n   * Opens the drawer.\n   */\n  openDrawer() {\n    Commands.openDrawer(nullthrows(this._nativeRef.current));\n  }\n\n  /**\n   * Closes the drawer.\n   */\n  closeDrawer() {\n    Commands.closeDrawer(nullthrows(this._nativeRef.current));\n  }\n\n  /**\n   * Closing and opening example\n   * Note: To access the drawer you have to give it a ref\n   *\n   * Class component:\n   *\n   * render () {\n   *   this.openDrawer = () => {\n   *     this.refs.DRAWER.openDrawer()\n   *   }\n   *   this.closeDrawer = () => {\n   *     this.refs.DRAWER.closeDrawer()\n   *   }\n   *   return (\n   *     <DrawerLayoutAndroid ref={'DRAWER'}>\n   *      {children}\n   *     </DrawerLayoutAndroid>\n   *   )\n   * }\n   *\n   * Function component:\n   *\n   * const drawerRef = useRef()\n   * const openDrawer = () => {\n   *   drawerRef.current.openDrawer()\n   * }\n   * const closeDrawer = () => {\n   *   drawerRef.current.closeDrawer()\n   * }\n   * return (\n   *   <DrawerLayoutAndroid ref={drawerRef}>\n   *     {children}\n   *   </DrawerLayoutAndroid>\n   * )\n   */\n\n  /**\n   * Native methods\n   */\n  blur() {\n    nullthrows(this._nativeRef.current).blur();\n  }\n\n  focus() {\n    nullthrows(this._nativeRef.current).focus();\n  }\n\n  measure(callback: MeasureOnSuccessCallback) {\n    nullthrows(this._nativeRef.current).measure(callback);\n  }\n\n  measureInWindow(callback: MeasureInWindowOnSuccessCallback) {\n    nullthrows(this._nativeRef.current).measureInWindow(callback);\n  }\n\n  measureLayout(\n    relativeToNativeNode: number,\n    onSuccess: MeasureLayoutOnSuccessCallback,\n    onFail?: () => void,\n  ) {\n    nullthrows(this._nativeRef.current).measureLayout(\n      relativeToNativeNode,\n      onSuccess,\n      onFail,\n    );\n  }\n\n  setNativeProps(nativeProps: Object) {\n    nullthrows(this._nativeRef.current).setNativeProps(nativeProps);\n  }\n}\n\nconst styles = StyleSheet.create({\n  base: {\n    flex: 1,\n    elevation: 16,\n  },\n  mainSubview: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n  },\n  drawerSubview: {\n    position: 'absolute',\n    top: 0,\n    bottom: 0,\n  },\n  statusBar: {\n    height: StatusBar.currentHeight,\n  },\n  drawerStatusBar: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    right: 0,\n    height: StatusBar.currentHeight,\n    backgroundColor: 'rgba(0, 0, 0, 0.251)',\n  },\n});\n\nexport default DrawerLayoutAndroid as $FlowFixMe;\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 * @flow strict-local\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent';\nexport {default} from '../../../src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent';\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 * @flow strict-local\n * @format\n */\n\nimport type {ViewProps} from '../../../../Libraries/Components/View/ViewPropTypes';\nimport type {ColorValue} from '../../../../Libraries/StyleSheet/StyleSheet';\nimport type {\n  DirectEventHandler,\n  Float,\n  Int32,\n  WithDefault,\n} from '../../../../Libraries/Types/CodegenTypes';\nimport type {HostComponent} from '../../types/HostComponent';\n\nimport codegenNativeCommands from '../../../../Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from '../../../../Libraries/Utilities/codegenNativeComponent';\nimport * as React from 'react';\n\ntype DrawerStateEvent = $ReadOnly<{\n  drawerState: Int32,\n}>;\n\ntype DrawerSlideEvent = $ReadOnly<{\n  offset: Float,\n}>;\n\ntype AndroidDrawerLayoutNativeProps = $ReadOnly<{\n  ...ViewProps,\n  /**\n   * Determines whether the keyboard gets dismissed in response to a drag.\n   *   - 'none' (the default), drags do not dismiss the keyboard.\n   *   - 'on-drag', the keyboard is dismissed when a drag begins.\n   */\n  keyboardDismissMode?: WithDefault<'none' | 'on-drag', 'none'>,\n\n  /**\n   * Specifies the background color of the drawer. The default value is white.\n   * If you want to set the opacity of the drawer, use rgba. Example:\n   *\n   * ```\n   * return (\n   *   <DrawerLayoutAndroid drawerBackgroundColor=\"rgba(0,0,0,0.5)\">\n   *   </DrawerLayoutAndroid>\n   * );\n   * ```\n   */\n  drawerBackgroundColor: ColorValue,\n\n  /**\n   * Specifies the side of the screen from which the drawer will slide in.\n   */\n  drawerPosition?: WithDefault<'left' | 'right', 'left'>,\n\n  /**\n   * Specifies the width of the drawer, more precisely the width of the view that be pulled in\n   * from the edge of the window.\n   */\n\n  drawerWidth?: WithDefault<Float, null>,\n\n  /**\n   * Specifies the lock mode of the drawer. The drawer can be locked in 3 states:\n   * - unlocked (default), meaning that the drawer will respond (open/close) to touch gestures.\n   * - locked-closed, meaning that the drawer will stay closed and not respond to gestures.\n   * - locked-open, meaning that the drawer will stay opened and not respond to gestures.\n   * The drawer may still be opened and closed programmatically (`openDrawer`/`closeDrawer`).\n   */\n  drawerLockMode?: WithDefault<\n    'unlocked' | 'locked-closed' | 'locked-open',\n    'unlocked',\n  >,\n\n  /**\n   * Function called whenever there is an interaction with the navigation view.\n   */\n  onDrawerSlide?: ?DirectEventHandler<DrawerSlideEvent>,\n\n  /**\n   * Function called when the drawer state has changed. The drawer can be in 3 states:\n   * - Idle, meaning there is no interaction with the navigation view happening at the time\n   * - Dragging, meaning there is currently an interaction with the navigation view\n   * - Settling, meaning that there was an interaction with the navigation view, and the\n   * navigation view is now finishing its closing or opening animation\n   */\n  onDrawerStateChanged?: ?DirectEventHandler<DrawerStateEvent>,\n\n  /**\n   * Function called whenever the navigation view has been opened.\n   */\n  onDrawerOpen?: ?DirectEventHandler<null>,\n\n  /**\n   * Function called whenever the navigation view has been closed.\n   */\n  onDrawerClose?: ?DirectEventHandler<null>,\n\n  /**\n   * Make the drawer take the entire screen and draw the background of the\n   * status bar to allow it to open over the status bar. It will only have an\n   * effect on API 21+.\n   */\n  statusBarBackgroundColor?: ?ColorValue,\n}>;\n\ntype NativeType = HostComponent<AndroidDrawerLayoutNativeProps>;\n\ninterface NativeCommands {\n  +openDrawer: (viewRef: React.ElementRef<NativeType>) => void;\n  +closeDrawer: (viewRef: React.ElementRef<NativeType>) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['openDrawer', 'closeDrawer'],\n});\n\nexport default (codegenNativeComponent<AndroidDrawerLayoutNativeProps>(\n  'AndroidDrawerLayout',\n): NativeType);\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 * @flow strict-local\n * @format\n */\n\nimport type {ColorValue} from './StyleSheet';\n\nexport type DynamicColorIOSTuple = {\n  light: ColorValue,\n  dark: ColorValue,\n  highContrastLight?: ColorValue,\n  highContrastDark?: ColorValue,\n};\n\n/**\n * Specify color to display depending on the current system appearance settings\n *\n * @param tuple Colors you want to use for \"light mode\" and \"dark mode\"\n * @platform ios\n */\nexport const DynamicColorIOS = (tuple: DynamicColorIOSTuple): ColorValue => {\n  throw new Error('DynamicColorIOS is not available on this platform.');\n};\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 * @flow\n * @format\n */\n\nimport Platform from '../Utilities/Platform';\n\nlet Settings: {\n  get(key: string): any,\n  set(settings: Object): void,\n  watchKeys(keys: string | Array<string>, callback: () => void): number,\n  clearWatch(watchId: number): void,\n  ...\n};\n\nif (Platform.OS === 'ios') {\n  Settings = require('./Settings').default;\n} else {\n  Settings = require('./SettingsFallback').default;\n}\n\nexport default Settings;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Settings = {\n  get(key: string): any {\n    console.warn('Settings is not yet supported on this platform.');\n    return null;\n  },\n\n  set(settings: Object) {\n    console.warn('Settings is not yet supported on this platform.');\n  },\n\n  watchKeys(keys: string | Array<string>, callback: () => void): number {\n    console.warn('Settings is not yet supported on this platform.');\n    return -1;\n  },\n\n  clearWatch(watchId: number) {\n    console.warn('Settings is not yet supported on this platform.');\n  },\n};\n\nexport default Settings;\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 * @flow strict-local\n * @format\n */\n\nimport NativeToastAndroid from './NativeToastAndroid';\n\n/**\n * This exposes the native ToastAndroid module as a JS module. This has a function 'show'\n * which takes the following parameters:\n *\n * 1. String message: A string with the text to toast\n * 2. int duration: The duration of the toast. May be ToastAndroid.SHORT or ToastAndroid.LONG\n *\n * There is also a function `showWithGravity` to specify the layout gravity. May be\n * ToastAndroid.TOP, ToastAndroid.BOTTOM, ToastAndroid.CENTER.\n *\n * The 'showWithGravityAndOffset' function adds on the ability to specify offset\n * These offset values will translate to pixels.\n *\n * Basic usage:\n * ```javascript\n * ToastAndroid.show('A pikachu appeared nearby !', ToastAndroid.SHORT);\n * ToastAndroid.showWithGravity('All Your Base Are Belong To Us', ToastAndroid.SHORT, ToastAndroid.CENTER);\n * ToastAndroid.showWithGravityAndOffset('A wild toast appeared!', ToastAndroid.LONG, ToastAndroid.BOTTOM, 25, 50);\n * ```\n */\n\nconst ToastAndroidConstants = NativeToastAndroid.getConstants();\n\nconst ToastAndroid = {\n  // Toast duration constants\n  SHORT: (ToastAndroidConstants.SHORT: number),\n  LONG: (ToastAndroidConstants.LONG: number),\n  // Toast gravity constants\n  TOP: (ToastAndroidConstants.TOP: number),\n  BOTTOM: (ToastAndroidConstants.BOTTOM: number),\n  CENTER: (ToastAndroidConstants.CENTER: number),\n\n  show: function (message: string, duration: number): void {\n    NativeToastAndroid.show(message, duration);\n  },\n\n  showWithGravity: function (\n    message: string,\n    duration: number,\n    gravity: number,\n  ): void {\n    NativeToastAndroid.showWithGravity(message, duration, gravity);\n  },\n\n  showWithGravityAndOffset: function (\n    message: string,\n    duration: number,\n    gravity: number,\n    xOffset: number,\n    yOffset: number,\n  ): void {\n    NativeToastAndroid.showWithGravityAndOffset(\n      message,\n      duration,\n      gravity,\n      xOffset,\n      yOffset,\n    );\n  },\n};\n\nexport default ToastAndroid;\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 * @flow strict\n * @format\n */\n\nexport * from '../../../src/private/specs_DEPRECATED/modules/NativeToastAndroid';\nexport {default} from '../../../src/private/specs_DEPRECATED/modules/NativeToastAndroid';\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 * @flow strict\n * @format\n */\n\nimport type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';\n\nimport * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {\n    SHORT: number,\n    LONG: number,\n    TOP: number,\n    BOTTOM: number,\n    CENTER: number,\n  };\n  +show: (message: string, duration: number) => void;\n  +showWithGravity: (\n    message: string,\n    duration: number,\n    gravity: number,\n  ) => void;\n  +showWithGravityAndOffset: (\n    message: string,\n    duration: number,\n    gravity: number,\n    xOffset: number,\n    yOffset: number,\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('ToastAndroid'): Spec);\n","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationChannelManager from './NotificationChannelManager';\nexport default async function getNotificationChannelsAsync() {\n    if (!NotificationChannelManager.getNotificationChannelsAsync) {\n        throw new UnavailabilityError('Notifications', 'getNotificationChannelsAsync');\n    }\n    return (await NotificationChannelManager.getNotificationChannelsAsync()) ?? [];\n}\n//# sourceMappingURL=getNotificationChannelsAsync.android.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNotificationChannelManager');\n//# sourceMappingURL=NotificationChannelManager.native.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationChannelManager from './NotificationChannelManager';\nexport default async function getNotificationChannelAsync(channelId) {\n    if (!NotificationChannelManager.getNotificationChannelAsync) {\n        throw new UnavailabilityError('Notifications', 'getNotificationChannelAsync');\n    }\n    return await NotificationChannelManager.getNotificationChannelAsync(channelId);\n}\n//# sourceMappingURL=getNotificationChannelAsync.android.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationChannelManager from './NotificationChannelManager';\nimport { AndroidImportance, } from './NotificationChannelManager.types';\nexport default async function setNotificationChannelAsync(channelId, channel) {\n    if (!NotificationChannelManager.setNotificationChannelAsync) {\n        throw new UnavailabilityError('Notifications', 'setNotificationChannelAsync');\n    }\n    if (channel?.importance === AndroidImportance.UNSPECIFIED) {\n        console.warn(`Warning: You are setting the importance of the notification channel \"${channelId}\" to \"UNSPECIFIED\". ` +\n            `This may lead to errors on some Android versions. ` +\n            `It's recommended to instead use AndroidImportance.DEFAULT.`);\n    }\n    return await NotificationChannelManager.setNotificationChannelAsync(channelId, channel);\n}\n//# sourceMappingURL=setNotificationChannelAsync.android.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationChannelManager from './NotificationChannelManager';\nexport default async function deleteNotificationChannelAsync(channelId) {\n    if (!NotificationChannelManager.deleteNotificationChannelAsync) {\n        throw new UnavailabilityError('Notifications', 'deleteNotificationChannelAsync');\n    }\n    return await NotificationChannelManager.deleteNotificationChannelAsync(channelId);\n}\n//# sourceMappingURL=deleteNotificationChannelAsync.android.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationChannelGroupManager from './NotificationChannelGroupManager';\nexport default async function getNotificationChannelGroupsAsync() {\n    if (!NotificationChannelGroupManager.getNotificationChannelGroupsAsync) {\n        throw new UnavailabilityError('Notifications', 'getNotificationChannelGroupsAsync');\n    }\n    return await NotificationChannelGroupManager.getNotificationChannelGroupsAsync();\n}\n//# sourceMappingURL=getNotificationChannelGroupsAsync.android.js.map","import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('ExpoNotificationChannelGroupManager');\n//# sourceMappingURL=NotificationChannelGroupManager.native.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationChannelGroupManager from './NotificationChannelGroupManager';\nexport default async function getNotificationChannelGroupAsync(groupId) {\n    if (!NotificationChannelGroupManager.getNotificationChannelGroupAsync) {\n        throw new UnavailabilityError('Notifications', 'getNotificationChannelGroupAsync');\n    }\n    return await NotificationChannelGroupManager.getNotificationChannelGroupAsync(groupId);\n}\n//# sourceMappingURL=getNotificationChannelGroupAsync.android.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationChannelGroupManager from './NotificationChannelGroupManager';\nexport default async function setNotificationChannelGroupAsync(groupId, group) {\n    if (!NotificationChannelGroupManager.setNotificationChannelGroupAsync) {\n        throw new UnavailabilityError('Notifications', 'setNotificationChannelGroupAsync');\n    }\n    return await NotificationChannelGroupManager.setNotificationChannelGroupAsync(groupId, group);\n}\n//# sourceMappingURL=setNotificationChannelGroupAsync.android.js.map","import { UnavailabilityError } from 'expo-modules-core';\nimport NotificationChannelGroupManager from './NotificationChannelGroupManager';\nexport default async function deleteNotificationChannelAsync(groupId) {\n    if (!NotificationChannelGroupManager.deleteNotificationChannelGroupAsync) {\n        throw new UnavailabilityError('Notifications', 'deleteNotificationChannelGroupAsync');\n    }\n    return await NotificationChannelGroupManager.deleteNotificationChannelGroupAsync(groupId);\n}\n//# sourceMappingURL=deleteNotificationChannelGroupAsync.android.js.map","\"use strict\";\n\nexport { MaskedView } from \"./MaskedViewNative.js\";\n//# sourceMappingURL=MaskedView.android.js.map","import { TurboModuleRegistry } from 'react-native';\n\n// src/index.android.ts\nvar warnings = /* @__PURE__ */ new Set();\nvar isEdgeToEdge = () => {\n  var _a, _b;\n  return TurboModuleRegistry.get(\"RNEdgeToEdge\") != null || ((_b = (_a = TurboModuleRegistry.get(\"DeviceInfo\")) == null ? void 0 : _a.getConstants) == null ? void 0 : _b.call(_a).isEdgeToEdge) === true;\n};\nvar controlEdgeToEdgeValues = (values) => {\n  if (__DEV__ && isEdgeToEdge()) {\n    const entries = Object.entries(values).filter(\n      ([, value]) => typeof value !== \"undefined\"\n    );\n    const stableKey = entries.join(\" \");\n    if (entries.length < 1 || warnings.has(stableKey)) {\n      return;\n    }\n    warnings.add(stableKey);\n    const isPlural = entries.length > 1;\n    const lastIndex = entries.length - 1;\n    const list = entries.reduce(\n      (acc, [name], index) => index === 0 ? name : acc + (index === lastIndex ? \" and \" : \", \") + name,\n      \"\"\n    );\n    console.warn(\n      `${list} ${isPlural ? \"values are\" : \"value is\"} ignored when using react-native-edge-to-edge`\n    );\n  }\n};\n\nexport { controlEdgeToEdgeValues, isEdgeToEdge };\n//# sourceMappingURL=index.android.mjs.map\n//# sourceMappingURL=index.android.mjs.map","import React, {\n  forwardRef,\n  ReactElement,\n  useCallback,\n  useEffect,\n  useImperativeHandle,\n  useRef,\n} from 'react';\n\nimport { Image, View, ImageSourcePropType, HostComponent } from 'react-native';\n\nimport BatchedBridge from 'react-native/Libraries/BatchedBridge/BatchedBridge';\nimport EventEmitter from 'react-native/Libraries/vendor/emitter/EventEmitter';\n\nimport invariant from 'invariant';\n\nimport RNCWebView, { Commands, NativeProps } from './RNCWebViewNativeComponent';\nimport RNCWebViewModule from './NativeRNCWebViewModule';\nimport {\n  defaultOriginWhitelist,\n  defaultRenderError,\n  defaultRenderLoading,\n  useWebViewLogic,\n} from './WebViewShared';\nimport {\n  AndroidWebViewProps,\n  WebViewSourceUri,\n  type WebViewMessageEvent,\n  type ShouldStartLoadRequestEvent,\n} from './WebViewTypes';\n\nimport styles from './WebView.styles';\n\nconst { resolveAssetSource } = Image;\n\nconst directEventEmitter = new EventEmitter();\n\nconst registerCallableModule: (name: string, module: Object) => void =\n  // `registerCallableModule()` is available in React Native 0.74 and above.\n  // Fallback to use `BatchedBridge.registerCallableModule()` for older versions.\n\n  require('react-native').registerCallableModule ??\n  BatchedBridge.registerCallableModule.bind(BatchedBridge);\n\nregisterCallableModule('RNCWebViewMessagingModule', {\n  onShouldStartLoadWithRequest: (\n    event: ShouldStartLoadRequestEvent & { messagingModuleName?: string }\n  ) => {\n    directEventEmitter.emit('onShouldStartLoadWithRequest', event);\n  },\n  onMessage: (\n    event: WebViewMessageEvent & { messagingModuleName?: string }\n  ) => {\n    directEventEmitter.emit('onMessage', event);\n  },\n});\n\n/**\n * A simple counter to uniquely identify WebView instances. Do not use this for anything else.\n */\nlet uniqueRef = 0;\n\nconst WebViewComponent = forwardRef<{}, AndroidWebViewProps>(\n  (\n    {\n      overScrollMode = 'always',\n      javaScriptEnabled = true,\n      thirdPartyCookiesEnabled = true,\n      scalesPageToFit = true,\n      allowsFullscreenVideo = false,\n      allowFileAccess = false,\n      saveFormDataDisabled = false,\n      cacheEnabled = true,\n      androidLayerType = 'none',\n      originWhitelist = defaultOriginWhitelist,\n      setSupportMultipleWindows = true,\n      setBuiltInZoomControls = true,\n      setDisplayZoomControls = false,\n      nestedScrollEnabled = false,\n      startInLoadingState,\n      onNavigationStateChange,\n      onLoadStart,\n      onError,\n      onLoad,\n      onLoadEnd,\n      onLoadProgress,\n      onHttpError: onHttpErrorProp,\n      onRenderProcessGone: onRenderProcessGoneProp,\n      onMessage: onMessageProp,\n      onOpenWindow: onOpenWindowProp,\n      renderLoading,\n      renderError,\n      style,\n      containerStyle,\n      source,\n      nativeConfig,\n      onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,\n      injectedJavaScriptObject,\n      ...otherProps\n    },\n    ref\n  ) => {\n    const messagingModuleName = useRef<string>(\n      `WebViewMessageHandler${(uniqueRef += 1)}`\n    ).current;\n    const webViewRef = useRef<React.ComponentRef<\n      HostComponent<NativeProps>\n    > | null>(null);\n\n    const onShouldStartLoadWithRequestCallback = useCallback(\n      (shouldStart: boolean, url: string, lockIdentifier?: number) => {\n        if (lockIdentifier) {\n          RNCWebViewModule.shouldStartLoadWithLockIdentifier(\n            shouldStart,\n            lockIdentifier\n          );\n        } else if (shouldStart && webViewRef.current) {\n          Commands.loadUrl(webViewRef.current, url);\n        }\n      },\n      []\n    );\n\n    const {\n      onLoadingStart,\n      onShouldStartLoadWithRequest,\n      onMessage,\n      viewState,\n      setViewState,\n      lastErrorEvent,\n      onHttpError,\n      onLoadingError,\n      onLoadingFinish,\n      onLoadingProgress,\n      onOpenWindow,\n      onRenderProcessGone,\n    } = useWebViewLogic({\n      onNavigationStateChange,\n      onLoad,\n      onError,\n      onHttpErrorProp,\n      onLoadEnd,\n      onLoadProgress,\n      onLoadStart,\n      onRenderProcessGoneProp,\n      onMessageProp,\n      onOpenWindowProp,\n      startInLoadingState,\n      originWhitelist,\n      onShouldStartLoadWithRequestProp,\n      onShouldStartLoadWithRequestCallback,\n    });\n\n    useImperativeHandle(\n      ref,\n      () => ({\n        goForward: () =>\n          webViewRef.current && Commands.goForward(webViewRef.current),\n        goBack: () => webViewRef.current && Commands.goBack(webViewRef.current),\n        reload: () => {\n          setViewState('LOADING');\n          if (webViewRef.current) {\n            Commands.reload(webViewRef.current);\n          }\n        },\n        stopLoading: () =>\n          webViewRef.current && Commands.stopLoading(webViewRef.current),\n        postMessage: (data: string) =>\n          webViewRef.current && Commands.postMessage(webViewRef.current, data),\n        injectJavaScript: (data: string) =>\n          webViewRef.current &&\n          Commands.injectJavaScript(webViewRef.current, data),\n        requestFocus: () =>\n          webViewRef.current && Commands.requestFocus(webViewRef.current),\n        clearFormData: () =>\n          webViewRef.current && Commands.clearFormData(webViewRef.current),\n        clearCache: (includeDiskFiles: boolean) =>\n          webViewRef.current &&\n          Commands.clearCache(webViewRef.current, includeDiskFiles),\n        clearHistory: () =>\n          webViewRef.current && Commands.clearHistory(webViewRef.current),\n      }),\n      [setViewState, webViewRef]\n    );\n\n    useEffect(() => {\n      const onShouldStartLoadWithRequestSubscription =\n        directEventEmitter.addListener(\n          'onShouldStartLoadWithRequest',\n          (\n            event: ShouldStartLoadRequestEvent & {\n              messagingModuleName?: string;\n            }\n          ) => {\n            if (event.messagingModuleName === messagingModuleName) {\n              // eslint-disable-next-line @typescript-eslint/no-unused-vars\n              const { messagingModuleName: _, ...rest } = event;\n              onShouldStartLoadWithRequest(rest);\n            }\n          }\n        );\n\n      const onMessageSubscription = directEventEmitter.addListener(\n        'onMessage',\n        (event: WebViewMessageEvent & { messagingModuleName?: string }) => {\n          if (event.messagingModuleName === messagingModuleName) {\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            const { messagingModuleName: _, ...rest } = event;\n            onMessage(rest);\n          }\n        }\n      );\n\n      return () => {\n        onShouldStartLoadWithRequestSubscription.remove();\n        onMessageSubscription.remove();\n      };\n    }, [messagingModuleName, onMessage, onShouldStartLoadWithRequest]);\n\n    let otherView: ReactElement | undefined;\n    if (viewState === 'LOADING') {\n      otherView = (renderLoading || defaultRenderLoading)();\n    } else if (viewState === 'ERROR') {\n      invariant(\n        lastErrorEvent != null,\n        'lastErrorEvent expected to be non-null'\n      );\n      if (lastErrorEvent) {\n        otherView = (renderError || defaultRenderError)(\n          lastErrorEvent.domain,\n          lastErrorEvent.code,\n          lastErrorEvent.description\n        );\n      }\n    } else if (viewState !== 'IDLE') {\n      console.error(`RNCWebView invalid state encountered: ${viewState}`);\n    }\n\n    const webViewStyles = [styles.container, styles.webView, style];\n    const webViewContainerStyle = [styles.container, containerStyle];\n\n    if (typeof source !== 'number' && source && 'method' in source) {\n      if (source.method === 'POST' && source.headers) {\n        console.warn(\n          'WebView: `source.headers` is not supported when using POST.'\n        );\n      } else if (source.method === 'GET' && source.body) {\n        console.warn('WebView: `source.body` is not supported when using GET.');\n      }\n    }\n\n    const NativeWebView =\n      (nativeConfig?.component as typeof RNCWebView | undefined) || RNCWebView;\n\n    const sourceResolved = resolveAssetSource(source as ImageSourcePropType);\n    const newSource =\n      typeof sourceResolved === 'object'\n        ? Object.entries(sourceResolved as WebViewSourceUri).reduce(\n            (prev, [currKey, currValue]) => {\n              return {\n                ...prev,\n                [currKey]:\n                  currKey === 'headers' &&\n                  currValue &&\n                  typeof currValue === 'object'\n                    ? Object.entries(currValue).map(([key, value]) => {\n                        return {\n                          name: key,\n                          value,\n                        };\n                      })\n                    : currValue,\n              };\n            },\n            {}\n          )\n        : sourceResolved;\n\n    const webView = (\n      <NativeWebView\n        key=\"webViewKey\"\n        {...otherProps}\n        messagingEnabled={typeof onMessageProp === 'function'}\n        messagingModuleName={messagingModuleName}\n        hasOnScroll={!!otherProps.onScroll}\n        onLoadingError={onLoadingError}\n        onLoadingFinish={onLoadingFinish}\n        onLoadingProgress={onLoadingProgress}\n        onLoadingStart={onLoadingStart}\n        onHttpError={onHttpError}\n        onRenderProcessGone={onRenderProcessGone}\n        onMessage={onMessage}\n        onOpenWindow={onOpenWindow}\n        hasOnOpenWindowEvent={onOpenWindowProp !== undefined}\n        onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}\n        ref={webViewRef}\n        // TODO: find a better way to type this.\n        // @ts-expect-error source is old arch\n        source={sourceResolved}\n        newSource={newSource}\n        style={webViewStyles}\n        overScrollMode={overScrollMode}\n        javaScriptEnabled={javaScriptEnabled}\n        thirdPartyCookiesEnabled={thirdPartyCookiesEnabled}\n        scalesPageToFit={scalesPageToFit}\n        allowsFullscreenVideo={allowsFullscreenVideo}\n        allowFileAccess={allowFileAccess}\n        saveFormDataDisabled={saveFormDataDisabled}\n        cacheEnabled={cacheEnabled}\n        androidLayerType={androidLayerType}\n        setSupportMultipleWindows={setSupportMultipleWindows}\n        setBuiltInZoomControls={setBuiltInZoomControls}\n        setDisplayZoomControls={setDisplayZoomControls}\n        nestedScrollEnabled={nestedScrollEnabled}\n        injectedJavaScriptObject={JSON.stringify(injectedJavaScriptObject)}\n        {...nativeConfig?.props}\n      />\n    );\n\n    return (\n      <View style={webViewContainerStyle}>\n        {webView}\n        {otherView}\n      </View>\n    );\n  }\n);\n\n// native implementation should return \"true\" only for Android 5+\nconst { isFileUploadSupported } = RNCWebViewModule;\n\nconst WebView = Object.assign(WebViewComponent, { isFileUploadSupported });\n\nexport default WebView;\n"],"x_facebook_sources":[[{"names":["<global>","<anonymous>","clear","define","metroRequire","initializingModuleIds.slice.map$argument_0","shouldPrintRequireCycle","isIgnored","regExps.some$argument_0","modules.every$argument_0","metroImportDefault","metroImportAll","fallbackRequireContext","fallbackRequireResolveWeak","requireUnguarded","guardedLoadModule","unpackModuleId","packModuleId","registerSegment","moduleIds.forEach$argument_0","loadModuleImplementation","global.$RefreshReg$","unknownModuleError","metroRequire.Systrace.beginEvent","metroRequire.Systrace.endEvent","metroRequire.getModules","createHotReloadingObject","hot.accept","hot.dispose","metroHotUpdateModule","topologicalSort$argument_1","topologicalSort$argument_2","setTimeout$argument_0","topologicalSort","traverseDependentNodes","dependentNodes.forEach$argument_0","roots.forEach$argument_0","runUpdatedModule","performFullRefresh","isSpecifierSafeToCheck","isReactRefreshBoundary","shouldInvalidateReactRefreshBoundary","getRefreshBoundarySignature","registerExportsForReactRefresh","requireSystrace","requireRefresh"],"mappings":"AAA;kDCY,MD;kDCC,gBD;AEE;CFG;AGI;CH6B;AIC;6ECU;aDG;CJS;AMC;sBCQ,yCC,6BD,CD;yBGC,4BH;CNC;AUC;CVQ;AWE;CXqB;uBYG;CZK;2BaC;CbK;yBcC;6ETI;aSG;CdS;AeE;Cfc;AgBG;ChBU;AiBE;CjBE;AkBI;0BCW;SDI;ClBE;AoBC;sCCoC;iBDG;CpBiC;AsBC;CtBM;oBuBG,MvB;kBwBC,MxB;8ByBE;KzBE;mC0BC;oBCK;aDG;qBEC;aFE;K1BG;iC6BE;eCoB;aD8B,EE,cF;iDGiE;iBHG;K7BG;4BiCC;QCI;mCCc;aDE;SDG;sBGC;SHE;KjCE;6BqCC;KrCgD;+BsCC;KtCc;iCuCC;KvCO;iCwCC;KxCsB;+CyCC;KzCY;sC0CC;K1CiB;yC2CC;K3Ca;0B4CI;K5CE;yB6CC;K7CE"}],[{"names":["<global>","<anonymous>","inspect","stylizeNoColor","arrayToHash","array.forEach$argument_0","formatValue","keys.map$argument_0","formatPrimitive","formatError","formatArray","keys.forEach$argument_0","formatProperty","str.split.map$argument_0","reduceToSingleString","output.reduce$argument_0","isArray","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","objectToString","hasOwnProperty","getNativeLogFunction","Array.prototype.map.call$argument_1","repeat","Array.apply.map$argument_0","formatCellValue","consoleTablePolyfill","data.map$argument_0","rows.reduce$argument_0","Object.keys.forEach$argument_0","columns.forEach$argument_0","joinRow","row.map$argument_0","columnWidths.map$argument_0","groupFormat","consoleGroupPolyfill","consoleGroupCollapsedPolyfill","consoleGroupEndPolyfill","consoleAssertPolyfill","consoleTimeStampPolyfill","stringifySafe","error","args.map$argument_0","methodName","forEach$argument_0","stub","global.console.assert"],"mappings":"AAA;iBCoB;ECwB;GDO;EEE;GFE;EGE;kBCG;KDE;GHG;EKE;wBC2F;ODS;GLM;EOE;GPgB;EQE;GRE;ESE;iBCkB;KDM;GTE;EWE;mBC4B;eDE;qBCQ;iBDE;GX0B;EaE;+BCE;KDI;Gbc;EeI;GfE;EgBE;GhBE;EiBE;GjBE;EkBE;GlBE;EmBE;GnBE;EoBE;GpBE;EqBE;GrBE;EsBE;GtBE;EuBE;GvBE;EwBE;GxBE;EyBE;GzBE;E0BE;G1BK;E2BE;G3BE;E4BE;G5BE;E6BE;G7BE;CDG;A+BU;S9BC;yB+BM;S/BE;G8B2B;C/BC;AiCE;yCCC;GDE;CjCC;AmCE;CnCoB;AoCE;oBCK;KDK;kBEqB;iCCC,yBD;OFE;kBIQ;GJQ;EKI;wBCC;KDG;GLG;oCOE;GPE;CpCc;A4CQ;C5CG;A6CE;C7CG;A8CE;C9CG;A+CE;C/CG;AgDE;ChDI;AiDK,sCjD;IkDiC;KlDE;oBmDC;eCqB,2DD;KnDU;iCuCY;8BcM;SdG;KvCE;gEsDK;8BDE;SCE;KtDE;EuDG,kBvD;IwDU;KxDI"}],[{"names":["<global>","<anonymous>","ErrorUtils.setGlobalHandler","ErrorUtils.getGlobalHandler","ErrorUtils.reportError","ErrorUtils.reportFatalError","ErrorUtils.applyWithGuard","ErrorUtils.applyWithGuardIfNeeded","ErrorUtils.inGuard","ErrorUtils.guard","guarded"],"mappings":"AAA;MCwB;ODE;EEW;GFE;EGC;GHE;EIC;GJE;EKC;GLG;EMC;GNsB;EOC;GPe;EQC;GRE;ESC;ICc;KDQ;GTG"}],[{"names":["<global>","<anonymous>","global.$$require_external"],"mappings":"AAA,0EC,gID,uCE,gIF"}],[{"names":["<global>","_classCallCheck","_defineProperties","_createClass","_toPropertyKey","_toPrimitive","<anonymous>","e","t","o","u","c","u$argument_0","d","f","b","h","m","_","p","y","S","g","v","get","push","shift","forEach","peek","q","E","W","B","O","j","k","A","L","F","I","$","M","Y","Q","x","N","H","V","U","G","X","ReadableStreamDefaultReader","cancel","read","K$argument_1._chunkSteps","K$argument_1._closeSteps","K$argument_1._errorSteps","releaseLock","J","K","Z","D.forEach$argument_0","ee","ne","ae","ie","le","se","ue","ce","f$argument_1","fe","z.next","z._return","be","he","next","_return","_nextSteps","y$argument_0","_returnSteps","_$argument_1","ho.next","ho._return","ho.co","_e","pe","Se","ge","ve","we","Re","ReadableStreamBYOBRequest","respond","respondWithNewView","ReadableByteStreamController","close","enqueue","error","value","Te","Ce","Pe","b$argument_1","b$argument_2","qe","Ee","We","Be","Oe","je","ke","Ae","ze","De","Le","Fe","$e","Me","Ye","Qe","xe","Ne","He","Ve","Ue","Ge","Xe","Je","Ke","Ze","et","tt","rt","ot","nt","ReadableStreamBYOBReader","it$argument_3._chunkSteps","it$argument_3._closeSteps","it$argument_3._errorSteps","at","it","Ie","lt","st","ut","ct","dt","ft","bt","ht","mt","_t","pt","WritableStream","abort","getWriter","yt","St","gt","vt","wt","Rt","Tt","Ct","Pt","r._writeRequests.forEach$argument_0","qt","Et","Wt","WritableStreamDefaultWriter","write","Bt","Ot","kt","At","jt","zt","WritableStreamDefaultController","Lt","Ft","It","$t","Mt","Yt","Qt","xt","Nt","Ht","Vt","Ut","Gt","Xt","Jt","Kt","Zt","er","tr","rr","or","ir","no","de.push$argument_0","q$argument_0","de.map$argument_0","P$argument_2","lo","C","P","n","h$argument_1","ReadableStreamDefaultController","lr","sr","ur","cr","dr","fr","br","hr","mr","_r","pr","Sr","a","i","gr","vr","wr","Rr","Tr","ReadableStream","getReader","pipeThrough","pipeTo","tee","yr","m$argument_1","T","w","R","values","from","Cr","Pr","qr","Er","Wr","Br","r.forEach$argument_0","Or","jr","kr","Ar","zr","ByteLengthQueuingStrategy","Dr","Lr","Fr","CountQueuingStrategy","Ir","$r","Mr","Yr","Qr","xr","TransformStream","l","s","Nr","Hr","Vr","Ur","Gr","TransformStreamDefaultController","terminate","Xr","Jr","Kr","Zr","_$argument_2","eo","to","ro","oo"],"mappings":"AAA;ACO,4GC,8MC,uJC,0FC,kRL,CM,wBC,cC,uEF,UG,yFH,mGI,8BC,wBC,OD,GE,2BC,wCC,yCC,uBC,8BC,kCC,4Bb,Mc,yGd,Ce,wIC,+DhB,uCiB,4JjB,qBkB,6BlB,oBmB,yKnB,qBoB,mNpB,uBqB,uLrB,oBsB,yEtB,2JuB,oGvB,sBuB,wBC,oDC,0KzB,qHyB,qFC,oFC,kCrB,6DqB,GC,4BC,kKC,mJ9B,+I+B,+HC,uFC,oBjC,qEiC,kDC,6FC,mFC,+BC,+BC,8ItC,4BsC,6HC,+EC,+BC,gDC,gGC,oDC,0D5C,uC6C,sS7C,qBkB,8DlB,sB8C,qH9C,oB+C,mIzC,kByC,8BC,uBD,aE,6BF,aG,OH,K/C,2BmD,+FnD,2DmD,OnD,OoD,uGC,yLC,0EC,qBD,GE,oIxD,ayD,gCC,0E1D,sY2D,qC3D,e2D,oC3D,oC2D,C3D,I2D,O3D,I4D,oC5D,a4D,C5D,mB4D,O5D,C6D,gHC,kIC,4DC,qBD,yB/D,0LiE,wFjE,qBkE,2DlE,CmE,qOnE,+CiE,+QG,+IpE,uCqE,+HrE,qBsE,wBrE,qBqE,uGtE,sBuE,4BrE,wBqE,uGvE,0BwE,kIlE,kBkE,2BxB,mCyB,wBzB,GwB,avB,oFuB,atB,8DsB,MxE,4B0E,yLC,uBD,oC1E,iB4E,oE5E,C6E,4E7E,C8E,mB9E,E+E,4KC,yHhF,6FiF,oGC,4HC,6MC,mDC,mCrF,uCsF,gItF,mBkB,2DlB,uBuF,yYvF,kCwF,oexF,gZyF,sIzF,0BkB,gElB,yBkB,gElB,qB0F,2U1F,uB2F,4kB3F,qB4F,mE5F,gB6F,iF7F,gB6F,8a7F,gB6F,uK7F,O8F,wHC,kIC,uBhG,+MgG,wEC,8DD,GE,iBF,KG,gDC,wGpG,mGoG,SC,uDC,6GC,iGC,wFC,kFC,qcC,oCC,0GC,oJC,4JC,4G/G,0J+G,M/G,8X+G,cC,kDC,iEC,2WC,2gBnH,2JmH,gNC,4GC,8JC,2NtH,sEsH,iDC,uIC,gbC,kyBC,yVzB,8ByB,GxB,iBwB,GC,gIC,sIC,iJC,gCC,qDC,yDC,4DjI,4bkI,wblI,qBkB,+DlB,sB8C,sH9C,oB+C,0Z/C,wH+C,6H/C,qC+C,6SzC,kByC,oCoF,wBpF,aqF,wBrF,asF,QtF,M/C,2BmD,gGnD,4DmD,OnD,OsI,4GC,6HC,mFxI,+CwI,itBD,sCE,mFlF,qBkF,GC,8HC,sIC,0C5I,K4I,EC,kMC,+B9I,U8I,CC,iC/I,a+I,CC,iChJ,agJ,CC,iCjJ,aiJ,CC,iClJ,qBkJ,CC,gFnJ,maoJ,qJpJ,6aoJ,qHpJ,gSoJ,qBpJ,qBkB,2DlB,qBqJ,gJrJ,qB0F,0M1F,yBsJ,wEtJ,OuJ,gCC,2QC,oHC,yCC,sZrJ,yGqJ,4DC,kLtJ,2DsJ,oIC,qDC,oI9J,sF8J,uBC,wHC,iBD,gP9D,6B8D,G7D,4B6D,GE,iFC,6JC,uEnK,kBmK,6BnK,mZoK,+hBpK,qBkB,+DlB,yBkB,qHlB,8IkB,OlB,mBkB,6DlB,qBqJ,2FrJ,kDqJ,wBrJ,qB0F,iM1F,2BmD,yGnD,qBqK,wHrK,OsK,+GC,iDC,0DxK,sBwK,MC,0JC,2D1K,sB0K,MD,qDE,kF3K,8H2K,4R3K,sBM,kEN,G2K,W3K,mJ2K,a3K,whB4K,4I5K,0BkB,yElB,oBkB,0MlB,qB4F,uH5F,gB6F,8D7F,gB6F,oB7F,O6K,oHC,sL9K,4E8K,gK7E,8B6E,G5E,+B4E,GC,0HC,uDC,kOjL,8KiG,KjG,4RiG,SjG,GkG,IlG,2LkG,WlG,GiL,IjL,4IiG,MjG,oFiG,8FjG,GkG,iClG,wFkG,WlG,GiL,MC,0EC,+BC,mEC,0GC,4IC,oIC,qFC,mCnL,6FmL,GC,+BC,oMC,qLC,kCvL,2DuL,kCC,+BC,2BC,8LC,iLjM,8mBC,8HD,mKkM,oG5L,uC6L,4FC,2CD,gBC,2CD,ME,wBC,MD,GF,Q7L,oGiM,kBF,WE,ajM,0BiM,kBF,WE,ajM,gCkM,cH,IrM,iIqM,IG,QlM,mL+L,W/L,QmM,qCzI,qByI,GC,gEnL,mBoL,2B1G,W0G,GzG,UyG,QpL,sDC,sEoL,UpL,IE,4GpB,cH,mD6D,O1D,0B0C,kC1C,a2C,S3C,iB0D,E7D,QG,S4L,GlM,uC6M,4I7M,0BkB,gElB,qB0F,6I1F,uB2F,oK3F,qB4F,mE5F,gB6F,wE7F,gB6F,0M7F,gB6F,Y7F,O8M,oHC,uF9G,8D8G,G7G,iB6G,KC,+GC,iGC,4HC,qNC,kGC,mIC,mGC,6StH,8BsH,GrH,iBqH,GC,4IC,mDzN,iC2M,mEhI,mNgI,G3M,G0N,8D1N,OyN,gBzN,uD0N,mE/I,qN+I,G1N,G2N,+HhJ,qHgJ,G3N,OyN,UG,iC5N,a4N,CC,iC7N,a6N,CC,iC9N,a8N,CC,4IC,gLhO,uLgO,4HhO,maiO,qJjO,shBiO,4JjO,qViO,sCjO,yOiO,qBjO,qBkB,2DlB,sB8C,mJ9C,yBkO,gFlO,sHkO,4ClO,2BmO,+FnO,yRmO,gYnO,sBoO,wjBpO,mBqO,sDC,wDtO,+EM,SN,GY,kC2N,4G3N,GC,6DmC,OyB,wQzB,GnC,aoC,gSpC,aqC,WrC,GE,iGoH,O1D,iT0D,GpH,aqH,qRrH,asH,WtH,GC,qIC,qIuN,cxO,kByO,iFzO,c0O,iF1O,iBsO,ItO,kFM,SN,GY,iEoC,OyB,qHzB,GpC,aqC,wGrC,asC,WtC,cI,chB,kBa,8Eb,ce,8Ef,uBuO,kGvO,WsO,ID,QrO,sB2O,iE3O,kG2O,M3O,6G2O,mB3O,gB6F,kC7F,sB4O,8B5O,O6O,2B7O,K6O,wGC,2HC,0FC,oHC,yCC,0OC,0BD,kDE,yID,oBC,IC,gHC,0GC,sIvP,0sBwP,exP,qDyP,gNzP,4BkB,sGlB,kBkB,mDlB,O0P,gIC,kI3P,oP4P,K5P,qD6P,4L7P,4BkB,iGlB,kBkB,mDlB,O8P,sHC,6HC,iChQ,agQ,CC,iCjQ,aiQ,CC,iClQ,qBkQ,CC,iCnQ,amQ,CnQ,6QoQ,oKpQ,6foQ,sPpQ,yB2N,sB3N,2JqQ,qBrQ,0G2E,yF3E,WqQ,MrQ,GK,oBL,8IM,6DN,mDiG,4FjG,GkG,mDlG,oBK,IL,GsQ,qBtQ,iJM,6DN,qDiG,iGjG,GkG,oDlG,oBsQ,MtQ,0BO,oBP,yDO,IP,GQ,qBR,iJM,6DN,qDiG,uGjG,GkG,0DlG,oBQ,MR,6JoQ,S9P,S8P,gBpQ,mgBoQ,qFpQ,uBkB,mElB,sBkB,mElB,OuQ,qHC,qEC,oGC,yCC,+HrQ,2CqQ,qB3Q,uQ4Q,8I5Q,0BkB,+HlB,uB2F,uE3F,qB4F,wG5F,yB6Q,yD7Q,6I6Q,O7Q,O8Q,qHC,+FC,4PhR,yBgR,oCC,2DC,+CD,GE,8IC,8IC,mKC,4GtR,q4BN"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","registerRootComponent","AppRegistry.registerComponent$argument_1"],"mappings":"AAA;eCqC;wCCU,wBD;CDgB"}],[{"names":["<global>","forEach$argument_0","requestAnimationFrame$argument_0","AppRegistry.registerComponent$argument_1"],"mappings":"AAA;wCCgC;4BCU;ODI;GDE;wCGa,sBH"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","install$argument_1"],"mappings":"AAA;uBCO,0CD;6BCE,sDD;6BCE,sDD;eCE,0BD;2BCE,sCD;oCCI,wDD;2BCG,gDD"}],[{"names":["<global>","ExpoFormData","ensureMinArgCount","normalizeArgs","installFormDataPatch","append","set","formData.prototype._delete","formData.prototype.get","formData.prototype.has","forEach","entries","keys","values"],"mappings":"AAA;OC8B;CD2B;AEE;CFQ;AGE;CHmB;OIE;8BCC;GDK;2BEG;GFqB;gCGG;GHU;6BIG;GJe;6BKG;GLU;iCMI;GNgB;iCOI;GPQ;8BQG;GRI;gCSG;GTQ;CJM"}],[{"names":["<global>","defineLazyObjectProperty","getValue","setValue","installGlobal","defineLazyObjectProperty$argument_2.get"],"mappings":"AAA;ACiB;ECe;GDc;EEC;GFS;CDQ;OIe;ICqB;KDS;CJI"}],[{"names":["<global>","inRange","codePointsToString","normalizeBytes","Stream","Stream#constructor","Stream#endOfStream","Stream#read","Stream#prepend","Stream#push","decoderError","getEncoding","ENCODING_MAP.forEach$argument_0","category.encodings.forEach$argument_0","encoding.labels.forEach$argument_0","DECODERS.UTF8","UTF8Decoder","UTF8Decoder#constructor","UTF8Decoder#handler","TextDecoder","constructor","get__encoding","get__fatal","get__ignoreBOM","decode","serializeStream"],"mappings":"AAA;ACY;CDE;AEO;CFY;AGE;CHW;AIgB;ECG;GDI;EEK;GFE;EGU;GHG;EIS;GJM;EKS;GLM;CJC;AUE;CVG;AWS;CXM;qBYsB;6BCC;4BCC;KDE;GDC;CZC;WeI,qCf;AgBS;ECU,mDD;EEQ;GF4G;ChBC;OmBI;ECQ;GD0B;EEG;GFE;EGE;GHE;EIE;GJE;EKE;GLkD;EMG;GNa;CnBC"}],[{"names":["_classCallCheck","<global>"],"mappings":"AAA;CCE"}],[{"names":["<global>","_defineProperties","_createClass"],"mappings":"AAA;ACC;CDK;AEC;CFI"}],[{"names":["<global>","toPropertyKey"],"mappings":"AAA;ACE;CDG"}],[{"names":["_typeof","<anonymous>","<global>"],"mappings":"AAA;wGCG;GDE,GC;GDE;CEC"}],[{"names":["<global>","toPrimitive"],"mappings":"AAA;ACC;CDS"}],[{"names":["<global>","TextDecoderStream","constructor","transform","flush","get__encoding","get__fatal","get__ignoreBOM","TextEncoderStream","TextEncoderStream#constructor","TextEncoderStream#get__encoding"],"mappings":"AAA;OCC;ECG;MCG;ODU;MEC;OFO;GDG;EIE;GJE;EKE;GLE;EME;GNE;CDC;OQG;ECG;MNI;OMsB;MLE;OKU;GDG;EEE;GFE;CRC"}],[{"names":["<global>","_callSuper"],"mappings":"AAA;ACG;CDE"}],[{"names":["_getPrototypeOf","<anonymous>","<global>"],"mappings":"AAA;mGCC;GDE;CEC"}],[{"names":["_isNativeReflectConstruct","Reflect.construct$argument_2","<global>"],"mappings":"AAA;2ECE,cD;CEK"}],[{"names":["<global>","_possibleConstructorReturn"],"mappings":"AAA;ACE;CDI"}],[{"names":["_assertThisInitialized","<global>"],"mappings":"AAA;CCG"}],[{"names":["<global>","_inherits"],"mappings":"AAA;ACC;CDW"}],[{"names":["_setPrototypeOf","<anonymous>","<global>"],"mappings":"AAA;mGCC;GDE;CEC"}],[{"names":["<global>","_wrapNativeSuper","Wrapper"],"mappings":"AAA;ACI;ICS;KDE;CDU"}],[{"names":["_isNativeFunction","<global>"],"mappings":"AAA;CCM"}],[{"names":["<global>","_construct"],"mappings":"AAA;ACE;CDM"}],[{"names":["<global>","getBlobUrlPrefix","createObjectURL","revokeObjectURL","canParse"],"mappings":"AAA;ACkC;CDsB;sBEqC;CFO;sBGE;CHE;eIE;CJQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","iface.is","iface.isImpl","iface.convert","iface.create","iface.createImpl","iface._internalSetup","iface.setup","iface.install","URL","constructor","toJSON","get__href","set__href","toString","get__origin","get__protocol","set__protocol","get__username","set__username","get__password","set__password","get__host","set__host","get__hostname","set__hostname","get__port","set__port","get__pathname","set__pathname","get__search","set__search","get__searchParams","utils.getSameObject$argument_2","get__hash","set__hash"],"mappings":"AAA;ECa;GDY;EEC;GFc;EGC;GHK;EIE;GJa;EKC;GLG;EMC,sBN;EOC;GPc;EQE;ICC;MCC;ODoB;MEE;OFM;MGE;OHM;MIE;OJQ;MKE;OLK;MME;ONM;MOE;OPM;MQE;ORU;MSE;OTM;MUE;OVU;MWE;OXM;MYE;OZU;MaE;ObM;McE;OdQ;MeE;OfM;MgBE;OhBU;MiBE;OjBM;MkBE;OlBQ;MmBE;OnBM;MoBE;OpBU;MqBE;OrBM;MsBE;OtBU;MuBE;yDCK;SDE;OvBC;MyBE;OzBM;M0BE;O1BQ,CD;GR6B"}],[{"names":["<global>","_","type","evenRound","integerPart","sign","modulo","censorNegativeZero","createIntegerConversion","<anonymous>","exports.any","exports._void","exports.boolean","exports.double","exports.unrestrictedDouble","exports.float","exports.unrestrictedFloat","exports.DOMString","exports.ByteString","exports.USVString","exports.object","convertCallbackFunction","isArrayBuffer","exports.ArrayBuffer","exports.DataView","forEach$argument_0","exports.name","exports.ArrayBufferView","exports.BufferSource"],"mappings":"AAA;ACE;CDE;AEE;CFyB;AGG;CHiB;AIE;CJE;AKE;CLE;AME;CNQ;AOE;CPE;AQE;WCmB;KD8C;CRC;cUE;CVE;eWE;CXE;kBYE;CZE;iBac;CbQ;iCcE;CdI;gBeE;CfkB;gCgBE;ChBY;oBiBE;CjBc;qBkBE;ClBU;oBmBE;CnB0B;iBoBE;CpBM;AqBM;CrBK;AsBK;CtBO;sBuBG;CvBK;mBwBI;CxBO;UyBK;oBCG;KDM;CzBC;0B2BI;C3BM;uB4BE;C5BM"}],[{"names":["<global>","isObject","hasOwn","getSameObject","wrapperForImpl","implForWrapper","tryWrapperForImpl","tryImplForWrapper","isArrayIndexPropName","isArrayBuffer"],"mappings":"AAA;ACG;CDE;AEE;CFE;AGO;CHW;AIE;CJE;AKE;CLE;AME;CNG;AOE;CPG;AQK;CRa;ASI;CTO"}],[{"names":["<global>","URLImpl","URLImpl#constructor","URLImpl#get__href","URLImpl#set__href","URLImpl#get__origin","URLImpl#get__protocol","URLImpl#set__protocol","URLImpl#get__username","URLImpl#set__username","URLImpl#get__password","URLImpl#set__password","URLImpl#get__host","URLImpl#set__host","URLImpl#get__hostname","URLImpl#set__hostname","URLImpl#get__port","URLImpl#set__port","URLImpl#get__pathname","URLImpl#set__pathname","URLImpl#get__search","URLImpl#set__search","URLImpl#get__searchParams","URLImpl#get__hash","URLImpl#set__hash","URLImpl#toJSON"],"mappings":"AAA;yBCK;ECC;GDyB;EEE;GFE;EGE;GHa;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPE;EQE;GRM;ESE;GTE;EUE;GVM;EWE;GXY;EYE;GZM;EaE;GbM;EcE;GdM;EeE;GfM;EgBE;GhBU;EiBE;GjBU;EkBE;GlBO;EmBE;GnBM;EoBE;GpBa;EqBE;GrBE;EsBE;GtBM;EuBE;GvBS;EwBE;GxBE;CDC"}],[{"names":["<global>","countSymbols","at","isSingleDot","isDoubleDot","isWindowsDriveLetterCodePoints","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenHostCodePointExcludingPercent","isSpecialScheme","isSpecial","isNotSpecial","defaultPort","utf8PercentEncode","isC0ControlPercentEncode","isUserinfoPercentEncode","isFragmentPercentEncode","isPathPercentEncode","percentEncodeChar","parseIPv4Number","parseIPv4","serializeIPv4","parseIPv6","serializeIPv6","parseHost","parseOpaqueHost","findLongestZeroSequence","serializeHost","domainToASCII","trimControlChars","trimTabAndNewline","shortenPath","includesCredentials","cannotHaveAUsernamePasswordPort","isNormalizedWindowsDriveLetter","URLStateMachine","parseSchemeStart","parseScheme","parseNoScheme","parseSpecialRelativeOrAuthority","parsePathOrAuthority","parseRelative","parseRelativeSlash","parseSpecialAuthoritySlashes","parseSpecialAuthorityIgnoreSlashes","parseAuthority","parseHostName","parsePort","startsWithWindowsDriveLetter","parseFile","parseFileSlash","parseFileHost","parsePathStart","parsePath","parseCannotBeABaseURLPath","parseQuery","parseFragment","serializeURL","serializeOrigin","module.exports.serializeURLOrigin","module.exports.basicURLParse","module.exports.setTheUsername","module.exports.setThePassword","module.exports.serializeInteger","module.exports.parseURL"],"mappings":"AAA;ACkB;CDE;AEE;CFG;AGE;CHE;AIE;CJG;AKE;CLE;AME;CNE;AOE;CPE;AQE;CRE;ASE;CTE;AUE;CVE;AWE;CXE;AYE;CZE;AaE;CbE;AcE;CdU;AeE;CfE;AgBI;ChBE;AiBG;CjBE;AkBG;ClBE;AmBE;CnBQ;AoBE;CpB4B;AqBE;CrB2C;AsBE;CtBa;AuBE;CvB+H;AwBE;CxB4B;AyBE;CzB6B;A0BE;C1BW;A2BE;C3BiC;A4BE;C5BW;A6BE;C7BO;A8BE;C9BE;A+BE;C/BE;AgCE;ChCU;AiCE;CjCE;AkCE;ClCE;AmCE;CnCE;AoCE;CpC2D;kDqCE;CrCa;4CsCE;CtCwD;+CuCE;CvCmB;mEwCE;CxCW;uDyCE;CzCS;8C0CE;C1C2C;oD2CE;C3CkB;+D4CE;C5CW;sE6CE;C7CS;+C8CE;C9CuC;0C+CG;C/CsD;0CgDE;ChD0B;AiDI;CjDK;0CkDE;ClD0C;gDmDE;CnDoB;+CoDE;CpDkC;gDqDE;CrDwB;0CsDE;CtDqD;+DuDE;CvDyB;2CwDE;CxDmC;8CyDE;CzDgB;A0DE;C1DuC;A2DE;C3DS;oC4DI;C5DiC;+B6DE;C7DW;gC8DE;C9DM;gC+DE;C/DM;kCgEM;ChEE;0BiEE;CjEO"}],[{"names":["<global>","typedArraySupport","proto.foo","Object.defineProperty$argument_2.get","createBuffer","Buffer","from","Buffer.from","assertSize","alloc","Buffer.alloc","allocUnsafe","Buffer.allocUnsafe","Buffer.allocUnsafeSlow","fromString","fromArrayLike","fromArrayView","fromArrayBuffer","fromObject","checked","SlowBuffer","isBuffer","compare","isEncoding","concat","byteLength","slowToString","swap","swap16","swap32","swap64","toString","equals","inspect","bidirectionalIndexOf","arrayIndexOf","read","includes","indexOf","lastIndexOf","hexWrite","utf8Write","asciiWrite","base64Write","ucs2Write","write","toJSON","base64Slice","utf8Slice","decodeCodePointsArray","asciiSlice","latin1Slice","hexSlice","utf16leSlice","slice","checkOffset","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","copy","fill","base64clean","utf8ToBytes","asciiToBytes","utf16leToBytes","base64ToBytes","blitBuffer","isInstance","numberIsNaN","<anonymous>"],"mappings":"AAA;ACgD;uBCI,yBD;CDO;OGI;GHG;OGK;GHG;AIG;CJQ;AKY;CLW;AMI;CNoD;cOU;CPE;AQO;CRM;ASE;CTc;eUM;CVE;AWE;CXG;qBYK;CZE;yBaI;CbE;AcE;CdsB;AeE;CfO;AgBE;ChBM;AiBE;CjBsB;AkBE;ClBuB;AmBE;CnBQ;AoBE;CpBK;kBqBE;CrBG;iBsBE;CtByB;oBuBE;CvBiB;gBwBE;CxBuC;AyBE;CzB8C;A0BG;C1BoE;A2BU;C3BI;0B4BE;C5BS;0B6BE;C7BU;0B8BE;C9BY;4B+BE;C/BK;0BgCI;ChCI;2BiCE;CjCM;2BsBK;CtB+D;AkCW;ClCsD;AmCE;ECmB;GDM;CnC6B;4BqCE;CrCE;2BsCE;CtCE;+BuCE;CvCE;AwCE;CxCuB;AyCE;CzCE;A0CE;C1CE;A2CE;C3CE;A4CE;C5CE;yB6CE;C7CmE;0B8CE;C9CK;A+CE;C/CM;AgDE;ChD0E;AiDO;CjDgB;AkDE;ClDQ;AmDE;CnDQ;AoDE;CpDW;AqDE;CrDQ;yBsDE;CtD0B;AuDK;CvDG;8BwDG;CxDa;8ByDG;CzDc;6B0DG;C1DI;gC2DG;C3DI;gC4DG;C5DI;gC6DG;C7DQ;gC8DG;C9DQ;6B+DE;C/DgB;6BgEE;ChEgB;4BiEE;CjEK;+BkEE;ClEK;+BmEE;CnEK;+BoEE;CpEQ;+BqEE;CrEQ;+BsEE;CtEI;+BuEE;CvEI;gCwEE;CxEI;gCyEE;CzEI;A0EE;C1EI;+B2EG;C3EiB;+B4EG;C5EiB;8B6EG;C7EM;iC8EG;C9EO;iC+EG;C/EO;iCgFG;ChFS;iCiFG;CjFS;8BkFE;ClFqB;8BmFE;CnFqB;6BoFE;CpFO;gCqFE;CrFO;gCsFE;CtFO;gCuFE;CvFS;gCwFE;CxFU;AyFE;CzFG;A0FE;C1FQ;gC2FE;C3FE;gC4FE;C5FE;A6FE;C7FQ;iC8FE;C9FE;iC+FE;C/FE;wBgGG;ChGuC;wBiGM;CjGiE;AkGO;ClGY;AmGE;CnG8E;AoGE;CpGO;AqGE;CrGc;AsGE;CtGE;AuGE;CvGM;AwGK;CxGI;AyGC;CzGG;2B0GI;C1GU"}],[{"names":["<global>","getLens","byteLength","_byteLength","toByteArray","tripletToBase64","encodeChunk","fromByteArray"],"mappings":"AAA;ACqB;CDiB;AEG;CFK;AGE;CHE;AIE;CJ4C;AKE;CLK;AME;CNW;AOE;CP+B"}],[{"names":["<global>","exports.read","exports.write"],"mappings":"AAA;eCC;CD+B;gBEE;CFkD"}],[{"names":["<global>","error","map","mapDomain","ucs2decode","ucs2encode","basicToDigit","digitToBasic","adapt","decode","encode","toUnicode","mapDomain$argument_1","toASCII"],"mappings":"AAA;ACwC;CDE;AEU;CFO;AGY;CHc;AIe;CJsB;mBKU,iDL;qBMW;CNW;qBOa;CPI;cQO;CRQ;eSS;CTqF;eUS;CVsF;kBWa;yBCC;EDI;CXC;gBaa;yBDC;ECI;CbC"}],[{"names":["<global>","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex"],"mappings":"AAA;ACE;CDE;AEE;CFE;AGE;CHE;AIE;CJE"}],[{"names":["<global>","strictlySplitByteSequence","replaceByteInByteSequence","percentEncode","percentDecode","parseUrlencoded","serializeUrlencodedByte","serializeUrlencoded","module.exports.parseUrlencoded"],"mappings":"AAA;ACK;CDa;AEE;CFO;AGE;CHO;AIE;CJY;AKE;CL0B;AME;CNkB;AOE;CP0B;EQO;GRE"}],[{"names":["<global>","_slicedToArray"],"mappings":"AAA;ACI;CDE"}],[{"names":["_arrayWithHoles","<global>"],"mappings":"AAA;CCE"}],[{"names":["_iterableToArrayLimit","<global>"],"mappings":"AAA;CC0B"}],[{"names":["<global>","_unsupportedIterableToArray"],"mappings":"AAA;ACC;CDM"}],[{"names":["_arrayLikeToArray","<global>"],"mappings":"AAA;CCI"}],[{"names":["_nonIterableRest","<global>"],"mappings":"AAA;CCE"}],[{"names":["<global>","next","iface.is","iface.isImpl","iface.convert","iface.createDefaultIterator","iface.create","iface.createImpl","iface._internalSetup","iface.setup","iface.install","URLSearchParams","constructor","append","_delete","get","getAll","has","set","sort","toString","keys","values","entries","forEach"],"mappings":"AAA;WCU;KD0B;EEgB;GFY;EGC;GHc;EIC;GJK;EKE;GLO;EME;GNa;EOC;GPG;EQC,sBR;ESC;GTc;EUE;ICC;MCC;ODkF;MEE;OF4B;MGE;OHqB;MIE;OJqB;MKE;OLqB;MME;ONqB;MOE;OP4B;MQE;ORM;MSE;OTM;MUE;OVK;MWE;OXK;MYE;OZK;MaE;ObuB,CD;GV4B"}],[{"names":["<global>","stableSortBy","arr.map$argument_0","arr.map.sort$argument_0","arr.map.sort.map$argument_0","URLSearchParamsImpl","URLSearchParamsImpl#constructor","URLSearchParamsImpl#_updateSteps","URLSearchParamsImpl#append","URLSearchParamsImpl#_delete","URLSearchParamsImpl#get","URLSearchParamsImpl#getAll","URLSearchParamsImpl#has","URLSearchParamsImpl#set","URLSearchParamsImpl#sort","stableSortBy$argument_1","URLSearchParamsImpl#@@iterator","URLSearchParamsImpl#toString"],"mappings":"AAA;ACG;SCE,kCD;UEC,sDF;SGC,kBH;CDC;yBKE;ECC;GDyB;EEE;GFQ;EGE;GHG;EIE;GJU;EKE;GLO;EME;GNQ;EOE;GPO;EQE;GRoB;ESE;0CCC,qBD;GTE;EWE;GXE;EYE;GZE;CLC"}],[{"names":["<global>","get__url"],"mappings":"AAA;ECU;GDE"}],[{"names":["<global>","getBundleUrl"],"mappings":"AAA;OCM;CDU"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getConstants"],"mappings":"AAA;EC0B;GDM"}],[{"names":["<global>","requireModule","get","getEnforcing"],"mappings":"AAA;ACkB;CDoB;OEE;CFE;OGE"}],[{"names":["<global>","invariant","format.replace$argument_1"],"mappings":"AAA;gBCoB;8BCkB,uCD;CDQ"}],[{"names":["<global>","genModule","methods.forEach$argument_0","module.getConstants","loadModule","genMethod","promiseMethodWrapper","Promise$argument_0","BatchedBridge.enqueueNativeCall$argument_3","BatchedBridge.enqueueNativeCall$argument_4","nonPromiseMethodWrapper","arrayContains","updateErrorWithErrorData","forEach$argument_0","defineLazyObjectProperty$argument_2.get"],"mappings":"AAA;AC2B;oBC2B;KDW;0BEM,oCF;CDY;AIK;CJQ;AKE;SCG;yBCM;UCK,qBD;UEC;aFM;ODE;KDC;SKE;KLkC;CLK;AWE;CXE;AYE;CZS;IagB;eCc,qCD;KbG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","MessageQueue","constructor","spy","prototype.__spy","callFunctionReturnFlushedQueue","__guard$argument_0","invokeCallbackAndReturnFlushedQueue","flushedQueue","getEventLoopRunningTime","registerCallableModule","_lazyCallableModules.name","registerLazyCallableModule","getCallableModule","callNativeSyncHook","processCallbacks","_successCallbacks.forEach$argument_0","enqueueNativeCall","isValidArgument","replacer","createDebugLookup","setReactNativeMicrotasksCallback","__guard","__shouldPauseOnThrow","__callReactNativeMicrotasks","__callFunction","__invokeCallback"],"mappings":"AAA;ACyC;ECgB;GD4B;EEM;qCCE;ODM;GFM;EIE;iBCK;KDE;GJG;EME;iBDI;KCE;GNG;EOE;iBFC;KEE;GPK;EQE;GRE;ESE;sCCC,YD;GTC;EWE;sCDG;KCQ;GXC;EYE;GZG;EaE;GbkB;EcE;yCCe;WDK;Gd6B;EgBE;8BCiB;OD6B;uBEK;OFS;GhByC;EmBE;GnBS;EoBK;GpBE;EqBM;GrBU;EsBO;GtBO;EuBE;GvBS;EwBE;GxBsC;EyBE;GzBiD;CDC"}],[{"names":["<global>","isEnabled","setEnabled","beginEvent","endEvent","beginAsyncEvent","endAsyncEvent","counterEvent"],"mappings":"AAA;OCgC;CDI;OEQ,gDF;OGM;CHM;OIK;CJI;OKO;CLiB;OMM;CNe;OOK;CPO"}],[{"names":["<global>","deepFreezeAndThrowOnMutationInDev","throwOnImmutableMutation","identity"],"mappings":"AAA;AC6B;CDyC;AEI;CFS;AGE;CHE"}],[{"names":["<global>","createStringifySafeWithLimits","replacer","stringifySafe"],"mappings":"AAA;OCgB;ECe;GD6C;SEE;GFgC;CDC"}],[{"names":["<global>","warnOnce"],"mappings":"AAA;ACqB;CDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","defineLazyObjectProperty","getValue","setValue"],"mappings":"AAA;ACe;ECgB;GDc;EEC;GFS;CDQ"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;ECkB;GDG;ECC,sDD"}],[{"names":["<global>","deserializer","as","unpair","deserialize"],"mappings":"AAA;qBCO;aCC;GDG;iBEE;GFuD;CDG;oBIW,kDJ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","typeOf","shouldSkip","serializer","as","pair","serialize"],"mappings":"AAA;eCU;CD8B;mBEE;CFG;mBGE;aCE;GDI;eEE;GF6F;CHG;mBMc;CNG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","buildAsyncRequire","universal_loadBundleAsync","loadBundleAsync._catch$argument_0"],"mappings":"AAA;OCgB;SCG;gDCK;KDG;GDK;CDC"}],[{"names":["asyncGeneratorStep","<global>","_asyncToGenerator","<anonymous>","Promise$argument_0","_next","_throw"],"mappings":"AAA;CCQ;ACC;SCC;uBCG;MCE;ODE;MEC;OFE;KDE;GDC;CDC"}],[{"names":["<global>","loadBundleAsync","fetchThenEvalAsync.then$argument_0"],"mappings":"AAA;OCc;+CCM;KDG;CDE"}],[{"names":["<global>","buildUrlForBundle","joinComponents"],"mappings":"AAA;OCO;CDoB;AEE;CFE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","fetchThenEvalAsync","fetchAsync.then$argument_0","jsonParseOptional"],"mappings":"AAA;OCa;8BCC;GD2B;CDC;AGE;CHM"}],[{"names":["<global>","MetroServerError","MetroServerError#constructor"],"mappings":"AAA,OC;ECI;GDO;CDC"}],[{"names":["<global>","LoadBundleFromServerError","LoadBundleFromServerError#constructor","LoadBundleFromServerRequestError","fetchAsync","Promise$argument_0","addListener$argument_1","<anonymous>","Promise._finally$argument_0"],"mappings":"AAA;ACa;ECG;GDO;CDC;AGE;CHE;OIE;ICY;0DCK;ODI;QCG;SDQ;QCI;SDK;QCI;SDY;QEa;SFE;KDG;YIC;GJK;CJC"}],[{"names":["<global>","module.exports.get__ActivityIndicator","module.exports.get__Button","module.exports.get__DrawerLayoutAndroid","module.exports.get__FlatList","module.exports.get__Image","module.exports.get__ImageBackground","module.exports.get__InputAccessoryView","module.exports.get__KeyboardAvoidingView","module.exports.get__experimental_LayoutConformance","module.exports.get__Modal","module.exports.get__Pressable","module.exports.get__ProgressBarAndroid","module.exports.get__RefreshControl","module.exports.get__SafeAreaView","module.exports.get__ScrollView","module.exports.get__SectionList","module.exports.get__StatusBar","module.exports.get__Switch","module.exports.get__Text","module.exports.get__unstable_TextAncestorContext","module.exports.get__TextInput","module.exports.get__Touchable","module.exports.get__TouchableHighlight","module.exports.get__TouchableNativeFeedback","module.exports.get__TouchableOpacity","module.exports.get__TouchableWithoutFeedback","module.exports.get__View","module.exports.get__VirtualizedList","module.exports.get__VirtualizedSectionList","module.exports.get__unstable_VirtualView","module.exports.get__AccessibilityInfo","module.exports.get__ActionSheetIOS","module.exports.get__Alert","module.exports.get__Animated","module.exports.get__Appearance","module.exports.get__AppRegistry","module.exports.get__AppState","module.exports.get__BackHandler","module.exports.get__Clipboard","module.exports.get__codegenNativeCommands","module.exports.get__codegenNativeComponent","module.exports.get__DeviceEventEmitter","module.exports.get__DeviceInfo","module.exports.get__DevMenu","module.exports.get__DevSettings","module.exports.get__Dimensions","module.exports.get__DynamicColorIOS","module.exports.get__Easing","module.exports.get__findNodeHandle","module.exports.get__I18nManager","module.exports.get__InteractionManager","module.exports.get__Keyboard","module.exports.get__LayoutAnimation","module.exports.get__Linking","module.exports.get__LogBox","module.exports.get__NativeAppEventEmitter","module.exports.get__NativeDialogManagerAndroid","module.exports.get__NativeEventEmitter","module.exports.get__NativeModules","module.exports.get__Networking","module.exports.get__PanResponder","module.exports.get__PermissionsAndroid","module.exports.get__PixelRatio","module.exports.get__Platform","module.exports.get__PlatformColor","module.exports.get__PushNotificationIOS","module.exports.get__processColor","module.exports.get__registerCallableModule","module.exports.get__requireNativeComponent","module.exports.get__RootTagContext","module.exports.get__Settings","module.exports.get__Share","module.exports.get__StyleSheet","module.exports.get__Systrace","module.exports.get__ToastAndroid","module.exports.get__TurboModuleRegistry","module.exports.get__UIManager","module.exports.get__unstable_batchedUpdates","module.exports.get__useAnimatedValue","module.exports.get__useColorScheme","module.exports.get__useWindowDimensions","module.exports.get__UTFSequence","module.exports.get__Vibration","module.exports.get__VirtualViewMode","Object.defineProperty$argument_2.get"],"mappings":"AAA;ECiC;GDG;EEC;GFE;EGC;GHG;EIC;GJE;EKC;GLE;EMC;GNE;EOC;GPG;EQC;GRG;ESC;GTG;EUC;GVE;EWC;GXE;EYC;GZS;EaC;GbG;EcM;GdQ;EeC;GfE;EgBC;GhBE;EiBC;GjBE;EkBC;GlBE;EmBC;GnBE;EoBC;GpBE;EqBC;GrBE;EsBC;GtBE;EuBC;GvBG;EwBC;GxBG;EyBC;GzBE;E0BC;G1BG;E2BC;G3BE;E4BC;G5BE;E6BC;G7BE;E8BC;G9BE;E+BG;G/BG;EgCC;GhCE;EiCC;GjCE;EkCG;GlCE;EmCC;GnCE;EoCC;GpCE;EqCC;GrCE;EsCC;GtCE;EuCC;GvCQ;EwCC;GxCE;EyCC;GzCE;E0CC;G1CE;E2CC;G3CE;E4CC;G5CE;E6CC;G7CE;E8CC;G9CE;E+CC;G/CG;EgDC;GhDE;EiDC;GjDE;EkDC;GlDE;EmDI;GnDE;EoDC;GpDE;EqDC;GrDE;EsDC;GtDE;EuDC;GvDE;EwDC;GxDE;EyDC;GzDG;E0DC;G1DE;E2DC;G3DE;E4DC;G5DE;E6DC;G7DE;E8DC;G9DE;E+DC;G/DE;EgEC;GhEE;EiEC;GjEG;EkEC;GlES;EmEC;GnEE;EoEC;GpEE;EqEC;GrEE;EsEC;GtEE;EuEC;GvEE;EwEC;GxEE;EyEC;GzEE;E0EC;G1EE;E2EC;G3EE;E4EC;G5EE;E6EC;G7EE;E8EC;G9EG;E+EC;G/EE;EgFC;GhFE;EiFC;GjFE;EkFC;GlFE;EmFC;GnFE;EoFC;GpFG;IqFW;KrFO;IqFQ;KrFQ;IqFQ;KrFO;IqFQ;KrFO;IqFQ;KrFO"}],[{"names":["<global>","ActivityIndicator"],"mappings":"AAA;ICiE;CD6D"}],[{"names":["<global>","_objectWithoutProperties"],"mappings":"AAA;ACC;CDU"}],[{"names":["_objectWithoutPropertiesLoose","<global>"],"mappings":"AAA;CCQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","default.setStyleAttributePreprocessor","default.create"],"mappings":"AAA;ECqK;GDyB;EEM;GFY"}],[{"names":["<global>","composeStyles"],"mappings":"AAA;eCe"}],[{"names":["<global>","flattenStyle"],"mappings":"AAA;ACsB;CD+B"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","createGetter","<anonymous>","createJavaScriptFlagGetter","createGetter$argument_1","createNativeFlagGetter","getOverrides","setOverrides","maybeLogUnavailableNativeModuleError"],"mappings":"AAA;AC4B;SCO;GDK;CDC;OGE;ICQ;KDG;CHG;OKI;IDO;KCG;CLG;OME;CNE;OOE;CPe;AQM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","processAspectRatio","aspectRatio.split.map$argument_0","matches.some$argument_0"],"mappings":"AAA;ACc;6CCe,aD;2CEa,4BF;CDkB"}],[{"names":["<global>","processBackgroundImage","processColorStops","parseBackgroundImageCSSString","parseRadialGradientCSSString","parseLinearGradientCSSString","parseColorStopsCSSString","getDirectionForKeyword","getAngleInDegrees","getPositionFromCSSValue","splitGradients"],"mappings":"AAA;eC0E;CD6G;AEE;CF8D;AGE;CHwB;AIE;CJ0S;AKE;CLyC;AME;CNuG;AOE;CP+B;AQE;CRwB;ASE;CTQ;AUE"}],[{"names":["<global>","processColor"],"mappings":"AAA;ACoB;CDoC"}],[{"names":["<global>","normalizeColor"],"mappings":"AAA;ACiB;CDc"}],[{"names":["<global>","normalizeColor","hue2rgb","hslToRgb","hwbToRgb","call","callModern","callWithSlashSeparator","commaSeparatedCall","getMatchers","parse255","parse360","parse1","parsePercentage","normalizeKeyword"],"mappings":"AAA;ACc;CD4J;AEE;CFiB;AGE;CHY;AIE;CJgB;AKK;CLE;AME;CNE;AOE;CPQ;AQE;CRE;ASI;CTkC;AUE;CVS;AWE;CXG;AYE;CZS;AaE;CbU;AcE;Cd4J"}],[{"names":["<global>","processBoxShadow","parseBoxShadowString","rawBoxShadows.split.map$argument_0","rawBoxShadows.split.map.filter$argument_0","parseLength"],"mappings":"AAA;eCwB;CDiF;AEE;SCK,eD;YEC,eF;CF8E;AKE"}],[{"names":["<global>","processFilter","_getFilterAmount","parseDropShadow","parseDropShadowString","parseLength"],"mappings":"AAA;eCoC;CD+E;AEE;CF4D;AGE;CHoE;AIE;CJsD;AKE"}],[{"names":["<global>","processFontVariant"],"mappings":"AAA;ACc;CDa"}],[{"names":["<global>","processTransform","_getKeyAndValueFromCSSTransform","_validateTransforms","transform.forEach$argument_0","_validateTransform"],"mappings":"AAA;ACuB;CD0B;uEEK;CFoF;AGE;oBCC;GDgB;CHC;AKE;CL0G"}],[{"names":["<global>","processTransformOrigin","_validateTransformOrigin"],"mappings":"AAA;eCiB;CD+F;AEE"}],[{"names":["<global>","sizesDiffer"],"mappings":"AAA;ACe;CDQ"}],[{"names":["<global>","PixelRatio","get","getFontScale","getPixelSizeForLayoutSize","roundToNearestPixel","startDetecting"],"mappings":"AAA;AC0D;ECyB;GDE;EEa;GFE;EGO;GHE;EIQ;GJG;EKG,0BL;CDC"}],[{"names":["<global>","Dimensions","get","set","addEventListener","RCTDeviceEventEmitter.addListener$argument_1"],"mappings":"AAA;ACgC;ECkB;GDI;EEQ;GFiC;EGU;GHU;CDC;EKK;GLE"}],[{"names":["<global>","RCTDeviceEventEmitterImpl","RCTDeviceEventEmitterImpl#emit","beginEvent$argument_0"],"mappings":"AAA;ACyB;ECE;eCI,+CD;GDG;CDC"}],[{"names":["<global>","_superPropGet","<anonymous>"],"mappings":"AAA;ACE;2CCE;GDE;CDC"}],[{"names":["<global>","_get","<anonymous>"],"mappings":"AAA;ACC;qGCC;GDM;CDC"}],[{"names":["<global>","_superPropBase"],"mappings":"AAA;ACC;CDG"}],[{"names":["<global>","EventEmitter","constructor","addListener","registration.remove","emit","removeAllListeners","listenerCount","allocate"],"mappings":"AAA;eCoE;ECQ;GDG;EEM;MCkB;ODE;GFI;EIS;GJc;EKK;GLS;EMK;GNI;CDC;AQE"}],[{"names":["_classPrivateFieldBase","<global>"],"mappings":"AAA;CCG"}],[{"names":["<global>","_classPrivateFieldKey"],"mappings":"AAA;ACC;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getConstants"],"mappings":"AAA;ECkD;GDK"}],[{"names":["<global>","View"],"mappings":"AAA;ACyB;CD6L"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getIteratorFn","ReactNoopUpdateQueue.isMounted","ReactNoopUpdateQueue.enqueueForceUpdate","ReactNoopUpdateQueue.enqueueReplaceState","ReactNoopUpdateQueue.enqueueSetState","Component","Component.prototype.setState","Component.prototype.forceUpdate","ComponentDummy","PureComponent","ReactElement","cloneAndReplaceKey","isValidElement","escape","key.replace$argument_1","getElementKey","noop$1","resolveThenable","thenable.then$argument_0","thenable.then$argument_1","mapIntoArray","mapIntoArray$argument_4","mapChildren","lazyInitializer","ctor.then$argument_0","ctor.then$argument_1","<anonymous>","noop","exports.Children.forEach","mapChildren$argument_1","exports.Children.count","exports.Children.toArray","exports.Children.only","exports.__COMPILER_RUNTIME.c","exports.cache","exports.cloneElement","exports.createContext","exports.createElement","exports.createRef","exports.forwardRef","exports.lazy","exports.memo","exports.startTransition","exports.unstable_useCacheRefresh","exports.use","exports.useActionState","exports.useCallback","exports.useContext","exports.useDebugValue","exports.useDeferredValue","exports.useEffect","exports.useId","exports.useImperativeHandle","exports.useInsertionEffect","exports.useLayoutEffect","exports.useMemo","exports.useOptimistic","exports.useReducer","exports.useRef","exports.useState","exports.useSyncExternalStore","exports.useTransition"],"mappings":"AAA;ACuB;CDM;eEE;KFE;wBGC,cH;yBIC,cJ;qBKC,cL;AMI;CNK;+BOE;CPU;kCQC;CRE;ASC,4BT;AUE;CVK;AWQ;CXS;AYC;CZS;AaC;CbM;AcC;yBCI;KDE;CdE;AgBE;ChBI;AiBC,oBjB;AkBC;cCY;eDI;cEC;eFG;ClBW;AqBC;2DCyC;WDE;CrBiE;AuBC;yCDI;GCE;CvBE;AwBC;MCK;ODG;MEC;OFG;CxBM;M2BI;O3ByB;A4BC,kB5B;W6BG;MCG;ODE;G7BG;S+BC;0BDE;KCE;G/BE;WgCC;4BFE;OEE;GhCE;QiCC;GjCM;KkCY;GlCE;gBmCE;SRC;GQE;CnCC;uBoCC;CpC0B;wBqCC;CrCe;wBsCC;CtCuB;oBuCC;CvCE;qBwCC;CxCE;eyCE;CzCM;e0CC;C1CM;0B2CC;C3CkB;mC4CC;C5CE;c6CC;C7CE;yB8CC;C9CE;sB+CC;C/CE;qBgDC;ChDE;wBiDC,cjD;2BkDC;ClDE;oBmDC;CnDO;gBoDC;CpDE;8BqDC;CrDE;6BsDC;CtDE;0BuDC;CvDE;kBwDC;CxDE;wByDC;CzDE;qB0DC;C1DE;iB2DC;C3DE;mB4DC;C5DE;+B6DC;C7DU;wB8DC;C9DE"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;gDCkB;IDE"}],[{"names":["<global>","setRuntimeConfigProvider","get","ReactNativeViewConfigRegistry.register$argument_1","getWithFallback_DEPRECATED","FallbackNativeComponent","hasNativeViewConfig","unstable_hasStaticViewConfig"],"mappings":"AAA;OCiC;CDS;OEQ;+CCI;GDsD;CFI;OIW;kCCiB;GDE;CJG;AME;CNG;OOQ"}],[{"names":["<global>","getNativeComponentAttributes","attachDefaultEventTypes","merge","getDifferForType","getProcessorForType"],"mappings":"AAA;AC6B;CD0E;AEE;CFqB;AGG;CH0B;AIE;CJoB;AKE;CLgC"}],[{"names":["<global>","getSourceCodeScriptURL","getDevServerURL","_coerceLocalScriptURL","getScriptURL","setCustomSourceTransformer","addCustomSourceTransformer","resolveAssetSource"],"mappings":"AAA;ACgC;CDO;AEE;CFa;AGE;CHoB;AIE;CJK;AKO;CLI;AMM;CNI;AOM;CP6B"}],[{"names":["<global>","getScaledAssetPath","getAssetPathInDrawableFolder","assetSupportsNetworkLoads","AssetSourceResolver","constructor","isLoadedFromServer","isLoadedFromFileSystem","defaultAsset","getAssetUsingResolver","assetServerURL","scaledAssetPath","scaledAssetURLNearBundle","resourceIdentifierWithoutScale","drawableFolderInBundle","fromSource"],"mappings":"AAA;ACmD;CDK;AEK;CFK;AGgB;CHE;AIE;ECO;GDI;EEE;GFM;EGE;GHE;EIE;GJgB;EKE;GLkB;EMM;GNU;EOM;GPE;EQM;GRQ;ESQ;GTM;EUO;GVG;EWE;GXQ;CJI"}],[{"names":["<global>","pickScale","setUrlCacheBreaker","getUrlCacheBreaker"],"mappings":"AAA;OCe;CDc;OEE;CFE;OGE"}],[{"names":["<global>","getAndroidAssetSuffix","getAndroidResourceFolderName","getAndroidResourceIdentifier","getBasePath"],"mappings":"AAA;AC6B;CDW;AEa;CFmB;AGE;CHQ;AIE;CJG"}],[{"names":["<global>","module.exports.registerAsset","module.exports.getAssetByID"],"mappings":"AAA,8CC,iBD,cE,cF"}],[{"names":["<global>","processColorArray","processColorElement"],"mappings":"AAA;ACkB;CDI;AEE;CFQ"}],[{"names":["<global>","insetsDiffer"],"mappings":"AAA;AC2B;CDU"}],[{"names":["<global>","matricesDiffer"],"mappings":"AAA;ACqB;CDwB"}],[{"names":["<global>","pointsDiffer"],"mappings":"AAA;ACoB;CDI"}],[{"names":["<global>","isFabricReactTag","measure","measureInWindow","measureLayout","measureLayoutRelativeToParent","FabricUIManager.measure$argument_1","dispatchViewManagerCommand"],"mappings":"AAA;ACe;CDG;EEU;GF0B;EGE;GHwB;EIE;GJqC;EKE;UCoB;WDE;GLW;EOE;GPiC"}],[{"names":["<global>","getFabricUIManager","createProxyWithCachedProperties","defineLazyObjectProperty$argument_2.get"],"mappings":"AAA;OCwI;CDW;AEO;WCQ,kCD"}],[{"names":["<global>","nullthrows"],"mappings":"AAA;ACE;CDO"}],[{"names":["<global>","raiseSoftError","<anonymous>","UIManagerJSOverridenAPIs.measure","UIManagerJSOverridenAPIs.measureInWindow","UIManagerJSOverridenAPIs.measureLayout","UIManagerJSOverridenAPIs.measureLayoutRelativeToParent","UIManagerJSOverridenAPIs.dispatchViewManagerCommand","UIManagerJSUnusedInNewArchAPIs.createView","UIManagerJSUnusedInNewArchAPIs.updateView","UIManagerJSUnusedInNewArchAPIs.setChildren","UIManagerJSUnusedInNewArchAPIs.manageChildren","UIManagerJSUnusedInNewArchAPIs.setJSResponder","UIManagerJSUnusedInNewArchAPIs.clearJSResponder","Platform.select$argument_0.android.getConstantsForViewManager","Platform.select$argument_0.android.getDefaultEventTypes","Platform.select$argument_0.android.setLayoutAnimationEnabledExperimental","Platform.select$argument_0.android.sendAccessibilityEvent","Platform.select$argument_0.ios.lazilyLoadView","Platform.select$argument_0.ios.focus","Platform.select$argument_0.ios.blur","UIManagerJS.getViewManagerConfig","UIManagerJS.hasViewManagerConfig","UIManagerJS.getConstants","UIManagerJS.findSubviewIn","FabricUIManager.findNodeAtPoint$argument_3","FabricUIManager.measure$argument_1","UIManagerJS.viewIsDescendantOf","UIManagerJS.configureNextLayoutAnimation","Object.keys.forEach$argument_0","UIManagerJS.getConstants.ViewManagerNames.forEach$argument_0","defineLazyObjectProperty$argument_2.get"],"mappings":"AAA;ACqB;CDK;qCEK;CFU;oCEQ;CFU;WGO;GHY;mBIC;GJK;iBKC;GLY;iCMC;GNW;8BOC;GPM;cQS;GRO;cSC;GTE;eUC;GVE;kBWC;GXS;kBYC;GZE;oBaC;GbE;gCca;KdO;0BeC;KfO;2CgBC;KhBM;4BiBC;KjBqC;oBkBQ;KlBG;WmBC;KnBS;UoBC;KpBS;wBqBS;GrBkB;wBsBC;GtBE;gBuBC;GvBO;iBwBC;MCyB;UCmB;WDE;ODE;GxBE;sB2BC;G3BmC;gC4BC;G5BW;qD6BI;G7BE;wD8BG;aCE;6EDC;K9BE"}],[{"names":["<global>","unstable_hasComponent"],"mappings":"AAA;OCkB"}],[{"names":["<global>","getConstants","getViewManagerConfig","UIManagerJS.createView","UIManagerJS.getConstants","UIManagerJS.getViewManagerConfig","UIManagerJS.hasViewManagerConfig","lazifyViewManagerConfig","defineLazyObjectProperty$argument_2.get","Object.keys.forEach$argument_0","NativeUIManager.getConstants.ViewManagerNames.forEach$argument_0"],"mappings":"AAA;AC4B;CDM;AEE;CF2C;EGK;GHa;EIC;GJE;EKC;GLE;EMC;GNE;AOU;WCK;2CCI;WDK;ODE;WCG;2CCK;WDK;ODE;CPG;sCSQ;GTE;0DUE;WFE;+EEC;GVE;sCSI;aDM;SCO;GTG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","processEventTypes","register","get"],"mappings":"AAA;ACoC;CD+B;OEO;CFc;OGO"}],[{"names":["<global>","validate","stringifyValidationResult","differences.map$argument_0","accumulateDifferences","ifObject"],"mappings":"AAA;OCuC;CD+B;OEE;uBCQ;KDQ;CFG;AIE;CJkD;AKE"}],[{"names":["<global>","createViewConfig","composeIndexers"],"mappings":"AAA;OCoB;CDsB;AEE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","DynamicallyInjectedByGestureHandler","ConditionallyIgnoredEventHandlers","isIgnored"],"mappings":"AAA;OCkB;CDG;OEe;CFO;OGE"}],[{"names":["<global>","codegenNativeCommands","options.supportedCommands.forEach$argument_0","commandObj.command"],"mappings":"AAA;ACgB;oCCK;0BCE;KDG;GDC;CDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","renderElement","findHostInstance_DEPRECATED","findNodeHandle","dispatchCommand","sendAccessibilityEvent","unmountComponentAtNodeAndRemoveContainer","unstable_batchedUpdates","isProfilingRenderer","isChildPublicInstance","getNodeFromInternalInstanceHandle","getPublicInstanceFromInternalInstanceHandle","getPublicInstanceFromRootTag"],"mappings":"AAA;OCwB;CDmC;OEE;CFQ;OGE;CHQ;OIE;CJoB;OKE;CLQ;OMM;CNM;OOE;CPS;OQE;CRE;OSE;CTQ;OUE;CVO;OWE;CXO;OYE"}],[{"names":["<global>","getExtendedError","onUncaughtError","onCaughtError","onRecoverableError"],"mappings":"AAA;ACuB;CDiC;OEE;CFK;OGE;CHK;OIE"}],[{"names":["<global>","SyntheticError","unstable_setExceptionDecorator","preprocessException","reportException","handleException","reactConsoleErrorHandler","args.map$argument_0","installConsoleErrorReporter"],"mappings":"AAA;OCe;CDE;AEkB;CFI;AGE;CHY;AIM;CJ2E;AKgB;CL2B;AMI;WC+C,2DD;CNqC;AQM;CRa"}],[{"names":["<global>","convertHermesStack","parseErrorStack","stacktraceParser.parse.map$argument_0"],"mappings":"AAA;ACiB;CDqB;eEE;+CCY;UDG"}],[{"names":["<global>","isInternalBytecodeSourceUrl","parseLine","parseHermesStack"],"mappings":"AAA;AC4E;CDG;AEE;CFsC;eGE"}],[{"names":["<global>","parse","lines.reduce$argument_0","parseChrome","parseWinjs","parseGecko","parseJSC","parseNode"],"mappings":"AAA;ACU;sBCE;GDQ;CDC;AGI;CH6B;AII;CJc;AKK;CLwB;AMI;CNc;AOI;CPc"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ExceptionsManager.reportFatalException","ExceptionsManager.reportSoftException","ExceptionsManager.dismissRedbox","ExceptionsManager.reportException"],"mappings":"AAA;ECyD;GDM;EEC;GFM;EGC;GHK;EIC;GJU"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","module.exports.get__BatchedBridge","module.exports.get__ExceptionsManager","module.exports.get__Platform","module.exports.get__RCTEventEmitter","module.exports.get__ReactNativeViewConfigRegistry","module.exports.get__TextInputState","module.exports.get__UIManager","module.exports.get__deepDiffer","module.exports.get__deepFreezeAndThrowOnMutationInDev","module.exports.get__flattenStyle","module.exports.get__ReactFiberErrorDialog","module.exports.get__legacySendAccessibilityEvent","module.exports.get__RawEventEmitter","module.exports.get__CustomEvent","module.exports.get__createAttributePayload","module.exports.get__diffAttributePayloads","module.exports.get__createPublicRootInstance","module.exports.get__createPublicInstance","module.exports.get__createPublicTextInstance","module.exports.get__getNativeTagFromPublicInstance","module.exports.get__getNodeFromPublicInstance","module.exports.get__getInternalInstanceHandleFromPublicInstance"],"mappings":"AAA;ECuD;GDE;EEC;GFE;EGC;GHE;EIC;GJE;EKC;GLE;EMC;GNE;EOC;GPE;EQE;GRE;ESC;GTI;EUE;GVI;EWC;GXE;EYC;GZG;EaC;GbE;EcC;GdE;EeC;GfG;EgBC;GhBG;EiBC;GjBG;EkBC;GlBG;EmBC;GnBG;EoBC;GpBG;EqBC;GrBG;EsBC;GtBG"}],[{"names":["<global>","register"],"mappings":"AAA;ECe;GDE"}],[{"names":["<global>","<anonymous>","global.RN$registerCallableModule$argument_1"],"mappings":"AAA;wDCkB;6CCQ,qBD;CDa"}],[{"names":["<global>","currentlyFocusedInput","currentlyFocusedField","focusInput","blurInput","focusField","blurField","focusTextInput","blurTextInput","registerInput","unregisterInput","isTextInput"],"mappings":"AAA;ACyB;CDE;AEM;CFQ;AGE;CHI;AIE;CJI;AKE;CLM;AME;CNM;AOO;CPgC;AQO;CRwB;ASE;CTY;AUE;CVW;AWE;CXY"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;IC0tB,4BD"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;ICkC,4BD"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","unstable_setLogListeners","deepDiffer"],"mappings":"AAA;ACoB;CDE;AEK;CFsE"}],[{"names":["<global>","showErrorDialog"],"mappings":"AAA;EC0B;GDmC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","CustomEvent","constructor","get__detail"],"mappings":"AAA;eCyB;ECG;GDI;EEE;GFE"}],[{"names":["<global>","Event","constructor","get__bubbles","get__cancelable","get__composed","get__currentTarget","get__defaultPrevented","get__eventPhase","get__isTrusted","get__target","get__timeStamp","get__type","composedPath","preventDefault","stopImmediatePropagation","stopPropagation"],"mappings":"AAA;eC6C;EC2C;GDuB;EEE;GFE;EGE;GHE;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPE;EQE;GRE;ESE;GTE;EUE;GVE;EWE;GXE;EYE;GZE;EaE;Gbe;EcE;GdG;EeE;GfE;CDC"}],[{"names":["<global>","setPlatformObject","isPlatformObject","getPlatformObjectClone"],"mappings":"AAA;ECwB;GDgB;OEK;CFG;OGK"}],[{"names":["<global>","getCurrentTarget","setCurrentTarget","getComposedPath","setComposedPath","getEventPhase","setEventPhase","getInPassiveListenerFlag","setInPassiveListenerFlag","getIsTrusted","setIsTrusted","getStopImmediatePropagationFlag","setStopImmediatePropagationFlag","getStopPropagationFlag","setStopPropagationFlag","getTarget","setTarget"],"mappings":"AAA;OCgC;CDG;OEE;CFM;OGE;CHG;OIE;CJM;OKE;CLG;OME;CNG;OOE;CPG;OQE;CRG;OSE;CTG;OUE;CVG;OWE;CXG;OYE;CZM;OaE;CbG;OcE;CdG;OeE;CfG;OgBE"}],[{"names":["<global>","defaultDiffer","restoreDeletedValuesInNestedArray","diffNestedArrayProperty","diffNestedProperty","clearNestedProperty","diffProperties","addNestedProperty","clearProperties","create","diff"],"mappings":"AAA;ACoC;CDQ;AEE;CF2D;AGE;CHoC;AIE;CJoD;AKM;CLuB;AMQ;CNmL;AOE;CP+D;AQM;CRM;OSE;CTK;OUE"}],[{"names":["<global>","getReactNativeDocumentModule","getReactNativeElementClass","getReactFabricHostComponentClass","getReadOnlyTextClass","createPublicRootInstance","createPublicInstance","createPublicTextInstance","getNativeTagFromPublicInstance","getNodeFromPublicInstance","getInternalInstanceHandleFromPublicInstance"],"mappings":"AAA;ACuC;CDO;AEE;CFM;AGE;CHM;AIE;CJM;OKE;CLU;OME;CNsB;OOE;CPM;OQE;CRI;OSE;CTe;OUE"}],[{"names":["<global>","ReactNativeDocument","constructor","get__childElementCount","get__children","get__documentElement","get__firstElementChild","get__lastElementChild","get__nodeName","get__nodeType","get__nodeValue","get__textContent","createDocumentElement","createReactNativeDocument"],"mappings":"AAA;eC6B;ECG;GDM;EEE;GFG;EGE;GHE;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPE;EQE;GRE;ESE;GTE;EUG;GVE;CDC;AYE;CZiC;OaE"}],[{"names":["<global>","HTMLCollection","constructor","get__length","item","namedItem","@@iterator","createHTMLCollection"],"mappings":"AAA;eCqB;ECS;GDW;EEE;GFE;EGE;GHU;EIK;GJE;EKG;GLE;CDC;OOU"}],[{"names":["<global>","createValueIterator","createKeyIterator","createEntriesIterator"],"mappings":"AAA;OCyB;CDI;OEE;CFM;OGE"}],[{"names":["<global>","ReactNativeDocumentElementInstanceHandleImpl","createReactNativeDocumentElementInstanceHandle","getNativeElementReferenceFromReactNativeDocumentElementInstanceHandle","setNativeElementReferenceForReactNativeDocumentElementInstanceHandle","getPublicInstanceFromReactNativeDocumentElementInstanceHandle","setPublicInstanceForReactNativeDocumentElementInstanceHandle","isReactNativeDocumentElementInstanceHandle"],"mappings":"AAA;ACa;CDG;OEI;CFE;OGE;CHI;OIE;CJK;OKE;CLI;OME;CNK;OOE"}],[{"names":["<global>","createReactNativeDocumentInstanceHandle","getNativeNodeReferenceFromReactNativeDocumentInstanceHandle","getPublicInstanceFromReactNativeDocumentInstanceHandle","isReactNativeDocumentInstanceHandle"],"mappings":"AAA;OCkB;CDI;OEE;CFI;OGE;CHK;OIE"}],[{"names":["<global>","noop","ReactNativeElement","constructor","get__offsetHeight","get__offsetLeft","get__offsetParent","get__offsetTop","get__offsetWidth","blur","focus","measure","measureInWindow","measureLayout","setNativeProps","replaceConstructorWithoutSuper"],"mappings":"AAA;aCsC,QD;AEqB;ECS;GDW;EEE;GFI;EGE;GHS;EIE;GJoB;EKE;GLS;EME;GNI;EOM;GPE;EQE;GRE;ESE;GTK;EUE;GVK;EWE;GX0B;EYE;GZe;CFC;AeI;EbM;Gac;CfM"}],[{"names":["<global>","warnForStyleProps"],"mappings":"AAA;eCY"}],[{"names":["<global>","getRendererProxy","getInstanceHandle","setInstanceHandle","getOwnerDocument","setOwnerDocument","getPublicInstanceFromInstanceHandle","getNativeNodeReference","getNativeElementReference","getNativeTextReference"],"mappings":"AAA;ACwC;CDO;OEK;CFG;OGE;CHM;OIE;CJK;OKE;CLM;OME;CNsB;OOE;CPmB;OQE;CRc;OSE"}],[{"names":["<global>","ReadOnlyElement","get__childElementCount","get__children","get__clientHeight","get__clientLeft","get__clientTop","get__clientWidth","get__firstElementChild","get__id","get__lastElementChild","get__nextElementSibling","get__nodeName","get__nodeType","get__nodeValue","set__nodeValue","get__previousElementSibling","get__scrollHeight","get__scrollLeft","get__scrollTop","get__scrollWidth","get__tagName","get__textContent","getBoundingClientRect","hasPointerCapture","setPointerCapture","releasePointerCapture","getChildElements","getChildNodes.filter$argument_0"],"mappings":"AAA;eCwB;ECC;GDE;EEE;GFE;EGE;GHS;EIE;GJS;EKE;GLS;EME;GNS;EOE;GPQ;EQE;GRM;ESE;GTQ;EUE;GVE;EWE;GXE;EYE;GZE;EaE;GbE;EcE,qCd;EeE;GfE;EgBE;GhBS;EiBE;GjBS;EkBE;GlBS;EmBE;GnBS;EoBE;GpBQ;EqBE;GrBQ;EsBE;GtBE;EuBK;GvBM;EwBE;GxBK;EyBE;GzBK;CDC;A2BE;ICG,iDD;C3BE;OuBO"}],[{"names":["<global>","DOMRect","get__x","set__x","get__y","set__y","get__width","set__width","get__height","set__height","fromRect","setPlatformObject$argument_1.clone"],"mappings":"AAA;eC2B;ECI;GDE;EEE;GFE;EGK;GHE;EIE;GJE;EKK;GLE;EME;GNE;EOK;GPE;EQE;GRE;ESK;GTM;CDC;SWG,4DX"}],[{"names":["<global>","castToNumber","DOMRectReadOnly","constructor","get__x","get__y","get__width","get__height","get__top","get__right","get__bottom","get__left","toJSON","fromRect","__getInternalX","__getInternalY","__getInternalWidth","__getInternalHeight","__setInternalX","__setInternalY","__setInternalWidth","__setInternalHeight","setPlatformObject$argument_1.clone"],"mappings":"AAA;AC2B;CDE;eEO;ECM;GDK;EEK;GFE;EGK;GHE;EIK;GJE;EKK;GLE;EMK;GNS;EOK;GPS;EQK;GRS;ESK;GTS;EUE;GVY;EWK;GXM;EYE;GZE;EaE;GbE;EcE;GdE;EeE;GfE;EgBE;GhBE;EiBE;GjBE;EkBE;GlBE;EmBE;GnBE;CFC;SsBG,oEtB"}],[{"names":["<global>","getElementSibling"],"mappings":"AAA;OCmB"}],[{"names":["<global>","ReadOnlyNode","constructor","get__childNodes","get__firstChild","get__isConnected","get__lastChild","get__nextSibling","get__nodeName","get__nodeType","get__nodeValue","get__ownerDocument","get__parentElement","get__parentNode","get__previousSibling","get__textContent","compareDocumentPosition","contains","getRootNode","hasChildNodes","getChildNodes","childNodeInstanceHandles.map$argument_0","getNodeSiblingsAndPosition","getReadOnlyElementClass"],"mappings":"AAA;eC4B;ECC;GDS;EEE;GFG;EGE;GHQ;EIE;GJQ;EKE;GLQ;EME;GNS;EOK;GPI;EQK;GRI;ESK;GTI;EUE;GVE;EWE;GXQ;EYE;GZc;EaE;GbS;EcK;GdI;EeE;Gfc;EgBE;GhBQ;EiBE;GjBO;EkBE;GlBE;CDwF;OoBI;SCW,qED;CpBE;AsBE;CtBiB;AuBG"}],[{"names":["<global>","NodeList","constructor","get__length","item","entries","forEach","keys","values","@@iterator","createNodeList"],"mappings":"AAA;eCyB;ECS;GDQ;EEE;GFE;EGE;GHU;EIE;GJE;EKE;GLgB;EME;GNE;EOE;GPE;EQG;GRE;CDC;OUU"}],[{"names":["<global>","getRawNativeDOMForTests","compareDocumentPosition","getChildNodes","getParentNode","isConnected","getBorderWidth","getBoundingClientRect","getInnerSize","getScrollPosition","getScrollSize","getTagName","getTextContent","hasPointerCapture","releasePointerCapture","setPointerCapture","getOffset","linkRootNode","measure","measureInWindow","measureLayout","setNativeProps"],"mappings":"AAA;OC0K;CDE;EE2Q;GFK;EGE;GHK;EIE;GJK;EKE;GLE;EMM;GNY;EOE;GPa;EQE;GRK;ESE;GTK;EUE;GVK;EWE;GXE;EYE;GZE;EaE;GbK;EcE;GdK;EeE;GfK;EgBM;GhBS;EiBM;GjBO;EkBM;GlBE;EmBE;GnBK;EoBE;GpBO;EqBK;GrBW"}],[{"names":["<global>","noop","ReactFabricHostComponent","constructor","blur","focus","measure","measureInWindow","measureLayout","unstable_getBoundingClientRect","setNativeProps"],"mappings":"AAA;aCqC,QD;eEK;ECO;GDQ;EEE;GFE;EGE;GHE;EIE;GJO;EKE;GLO;EME;GNiC;EOE;GPc;EQE;GRY"}],[{"names":["<global>","ReadOnlyText","get__nodeName","get__nodeType"],"mappings":"AAA;eCe;ECI;GDE;EEK;GFE"}],[{"names":["<global>","ReadOnlyCharacterData","get__nextElementSibling","get__previousElementSibling","get__data","get__length","get__textContent","get__nodeValue","substringData"],"mappings":"AAA;eCmB;ECC;GDE;EEE;GFE;EGE;GHQ;EIE;GJE;EKK;GLE;EMK;GNE;EOE;GPc"}],[{"names":["<global>","describeBuiltInComponentFrame","describeNativeComponentFrame","RunInRootFrame.DetermineComponentFrameRoot","Fake","Object.defineProperty$argument_2.set","Fake._catch$argument_0","describeFiber","getStackByFiberInDevAndProd","getIteratorFn","getComponentNameFromType","executeDispatch","executeDirectDispatch","functionThatReturnsTrue","functionThatReturnsFalse","SyntheticEvent","assign$argument_1.preventDefault","assign$argument_1.stopPropagation","assign$argument_1.persist","assign$argument_1.destructor","SyntheticEvent.Interface.currentTarget","SyntheticEvent.Interface.timeStamp","SyntheticEvent.extend","E","Class","createOrGetPooledEvent","releasePooledEvent","addEventPoolingTo","SyntheticEvent.extend$argument_0.touchHistory","isStartish","isMoveish","timestampForTouch","getTouchIdentifier","recordTouchStart","recordTouchMove","recordTouchEnd","ResponderTouchHistoryStore.instrument","ResponderTouchHistoryStore.recordTouchTrack","accumulate","accumulateInto","forEachAccumulated","changeResponder","getParent$1","traverseTwoPhase$1","getListener$1","accumulateDirectionalDispatches$1","accumulateDirectDispatchesSingle$1","accumulateTwoPhaseDispatchesSingleSkipTarget","accumulateTwoPhaseDispatchesSingle$1","ResponderEventPlugin._getResponder","ResponderEventPlugin.extractEvents","ResponderEventPlugin.injection.injectGlobalResponderHandler","recomputePluginOrdering","publishRegistrationName","getListener","accumulateDirectionalDispatches","traverseTwoPhase","accumulateTwoPhaseDispatchesSingle","accumulateDirectDispatchesSingle","injectedNamesToPlugins$jscomp$inline_278.ReactNativeBridgeEventPlugin.extractEvents","defaultDiffer","restoreDeletedValuesInNestedArray","diffNestedProperty","addNestedProperty","clearNestedProperty","diffProperties","fastAddProperties","batchedUpdatesImpl","batchedUpdates$1","executeDispatchesAndReleaseTopLevel","dispatchEvent","batchedUpdates$1$argument_0","setIsStrictModeForDevtools","clz32Fallback","getHighestPriorityLanes","getNextLanes","checkIfRootIsPrerendering","computeExpirationTime","claimNextTransitionLane","claimNextRetryLane","createLaneMap","markRootUpdated$1","markRootFinished","markSpawnedDeferredLane","markRootEntangled","lanesToEventPriority","getNearestMountedFiber","assertIsMounted","findCurrentFiberUsingSlowPath","findCurrentHostFiberImpl","createCursor","pop","push","createCapturedValueAtFiber","pushHostContainer","popHostContainer","pushHostContext","popHostContext","upgradeHydrationErrorsToRecoverable","is","pushProvider","popProvider","scheduleContextWorkOnParentPath","propagateContextChanges","propagateParentContextChanges","checkIfContextChanged","prepareToReadContext","readContext","readContextDuringReconciliation","readContextForConsumer","<anonymous>","signal.addEventListener","abort","listeners.forEach$argument_0","createCache","releaseCache","scheduleCallback$2$argument_1","ensureRootIsScheduled","flushSyncWorkAcrossRoots_impl","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","scheduleTaskForRootDuringMicrotask","performWorkOnRootViaSchedulerTask","performSyncWorkOnRoot","scheduleImmediateRootScheduleTask","scheduleMicrotask$argument_0","requestTransitionLane","entangleAsyncAction","currentEntangledActionThenable.then","pingEngtangledActionScope","chainThenableValue","thenableWithOverride.then","thenable.then$argument_0","thenable.then$argument_1","ReactSharedInternals.S","peekCacheFromPool","pushTransition","getSuspendedCache","shallowEqual","noopSuspenseyCommitThenable.then","isThenableResolved","noop","trackUsedThenable","thenableState.then$argument_0","thenableState.then$argument_1","getSuspendedThenable","checkIfUseWrappedInAsyncCatch","finishQueueingConcurrentUpdates","enqueueUpdate$1","enqueueConcurrentHookUpdate","enqueueConcurrentRenderForLane","markUpdateLaneFromFiberToRoot","getRootForUpdatedFiber","initializeUpdateQueue","cloneUpdateQueue","createUpdate","enqueueUpdate","entangleTransitions","enqueueCapturedUpdate","suspendIfUpdateReadFromEntangledAsyncAction","processUpdateQueue","callCallback","commitCallbacks","pushHiddenContext","reuseHiddenContextOnStack","popHiddenContext","throwInvalidHookError","areHookInputsEqual","renderWithHooks","finishRenderingHooks","renderWithHooksAgain","TransitionAwareHostComponent","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","updateWorkInProgressHook","createFunctionComponentUpdateQueue","useThenable","use","useMemoCache","current.data.map$argument_0","basicStateReducer","updateReducer","updateReducerImpl","rerenderReducer","updateSyncExternalStore","pushStoreConsistencyCheck","updateStoreInstance","subscribeToStore","subscribe$argument_0","checkIfSnapshotChanged","forceStoreRerender","mountStateImpl","updateOptimisticImpl","dispatchActionState","actionNode.then","runActionStateAction","handleActionReturnValue","returnValue.then$argument_0","returnValue.then$argument_1","onActionSuccess","onActionError","notifyActionListeners","actionStateReducer","mountActionState","updateActionState","updateActionStateImpl","actionStateActionEffect","rerenderActionState","pushSimpleEffect","createEffectInstance","updateRef","mountEffectImpl","updateEffectImpl","mountEffect","updateEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","mountDeferredValueImpl","updateDeferredValueImpl","startTransition","dispatchSetStateInternal$argument_2.then","useHostTransitionStatus","updateId","updateRefresh","refreshCache","dispatchReducerAction","dispatchSetState","dispatchSetStateInternal","dispatchOptimisticSetState","isRenderPhaseUpdate","enqueueRenderPhaseUpdate","entangleTransitionUpdate","HooksDispatcherOnMount.useCallback","HooksDispatcherOnMount.useImperativeHandle","HooksDispatcherOnMount.useLayoutEffect","HooksDispatcherOnMount.useInsertionEffect","HooksDispatcherOnMount.useMemo","HooksDispatcherOnMount.useReducer","HooksDispatcherOnMount.useRef","HooksDispatcherOnMount.useState","HooksDispatcherOnMount.useDeferredValue","HooksDispatcherOnMount.useTransition","HooksDispatcherOnMount.useSyncExternalStore","HooksDispatcherOnMount.useId","HooksDispatcherOnMount.useOptimistic","HooksDispatcherOnMount.useCacheRefresh","HooksDispatcherOnUpdate.useState","HooksDispatcherOnUpdate.useDeferredValue","HooksDispatcherOnUpdate.useTransition","HooksDispatcherOnUpdate.useOptimistic","HooksDispatcherOnRerender.useState","HooksDispatcherOnRerender.useDeferredValue","HooksDispatcherOnRerender.useTransition","HooksDispatcherOnRerender.useOptimistic","unwrapThenable","coerceRef","throwOnInvalidObjectType","resolveLazy","createChildReconciler","deleteChild","deleteRemainingChildren","mapRemainingChildren","useFiber","placeChild","placeSingleChild","updateTextNode","updateElement","updatePortal","updateFragment","createChild","updateSlot","updateFromMap","reconcileChildrenArray","oldFiber.forEach$argument_0","reconcileChildrenIterator","reconcileChildFibersImpl","pushPrimaryTreeSuspenseHandler","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","applyDerivedStateFromProps","classComponentUpdater.enqueueSetState","classComponentUpdater.enqueueReplaceState","classComponentUpdater.enqueueForceUpdate","checkShouldComponentUpdate","constructClassInstance","callComponentWillReceiveProps","mountClassInstance","resolveClassComponentProps","defaultOnRecoverableError","logUncaughtError","setTimeout$argument_0","logCaughtError","createRootErrorUpdate","lane.callback","createClassErrorUpdate","initializeClassErrorUpdate","update.payload","update.callback","throwException","reconcileChildren","updateForwardRef","updateMemoComponent","updateSimpleMemoComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","markRef","updateFunctionComponent","replayFunctionComponent","updateClassComponent","finishClassComponent","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","updateSuspenseComponent","mountSuspensePrimaryChildren","mountWorkInProgressOffscreenFiber","retrySuspenseComponentWithoutHydrating","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","updateSuspenseListComponent","resetSuspendedCurrentOnMountInLegacyMode","bailoutOnAlreadyFinishedWork","checkScheduledUpdateOrContext","attemptEarlyBailoutIfNoScheduledUpdate","beginWork","doesRequireClone","appendAllChildren","appendAllChildrenToContainer","updateHostContainer","scheduleRetryEffect","cutOffTailIfNeeded","bubbleProperties","completeWork","unwindWork","unwindInterruptedWork","commitHookEffectListMount","commitHookEffectListUnmount","commitClassCallbacks","safelyCallComponentWillUnmount","safelyAttachRef","safelyDetachRef","commitHostMount","commitBeforeMutationEffects","commitLayoutEffectOnFiber","detachFiberAfterEffects","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","getRetryCache","attachSuspenseRetryListeners","wakeables.forEach$argument_0","recursivelyTraverseMutationEffects","commitMutationEffectsOnFiber","commitReconciliationEffects","recursivelyTraverseLayoutEffects","recursivelyTraverseDisappearLayoutEffects","recursivelyTraverseReappearLayoutEffects","commitOffscreenPassiveMountEffects","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","commitPassiveMountOnFiber","recursivelyTraverseReconnectPassiveEffects","recursivelyTraverseAtomicPassiveEffects","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","detachAlternateSiblings","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","DefaultAsyncDispatcher.getCacheForType","requestUpdateLane","requestDeferredLane","scheduleUpdateOnFiber","performWorkOnRoot","commitRootWhenReady","isRenderConsistentWithExternalStores","markRootSuspended","resetWorkInProgressStack","prepareFreshStack","handleThrow","pushDispatcher","pushAsyncDispatcher","renderDidSuspendDelayIfPossible","renderRootSync","workLoopSync","renderRootConcurrent","lanes","workLoopConcurrentByScheduler","performUnitOfWork","replaySuspendedUnitOfWork","throwAndUnwindWorkLoop","completeUnitOfWork","unwindUnitOfWork","commitRoot","scheduleCallback$argument_1","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","releaseRootPooledCache","flushPendingEffects","flushPassiveEffects","captureCommitPhaseErrorOnRoot","captureCommitPhaseError","attachPingListener","pingSuspendedRoot","retryTimedOutBoundary","retryDehydratedSuspenseBoundary","resolveRetryWakeable","scheduleCallback","FiberNode","createFiberImplClass","shouldConstruct","createWorkInProgress","resetWorkInProgress","createFiberFromTypeAndProps","createFiberFromFragment","createFiberFromText","createFiberFromPortal","FiberRootNode","createPortal$1","findHostInstance","updateContainer","shim$1","shim","extraDevToolsConfig.getInspectorDataForViewTag","extraDevToolsConfig.getInspectorDataForViewAtPoint","createTextInstance","getPublicInstance","resolveUpdatePriority","cloneHiddenInstance","getFiberCurrentPropsFromNode$1","getInstanceFromNode$1","getNodeFromInstance$1","ResponderEventPlugin.injection.injectGlobalResponderHandler$argument_0.onChange","nativeOnUncaughtError","nativeOnCaughtError","exports.createPortal","exports.dispatchCommand","exports.findHostInstance_DEPRECATED","exports.findNodeHandle","exports.getNodeFromInternalInstanceHandle","exports.getPublicInstanceFromInternalInstanceHandle","exports.getPublicInstanceFromRootTag","exports.isChildPublicInstance","exports.render","exports.sendAccessibilityEvent","exports.stopSurface","updateContainer$argument_3","exports.unmountComponentAtNode"],"mappings":"AAA;ACyB;CDe;AEE;mCCO;uBCG;aDE;mBEE;eFE;yBGyB,cH;ODO;CFoF;AOC;CPwB;AQC;CRW;ASsB;CTM;AUE;CVmD;AWM;CXQ;AYC;CZY;AaC;CbE;AcC;CdE;AeC;Cf2B;kBgBE;GhBQ;mBiBC;GjBO;WkBC;GlBE;cmBE;GnBQ;iBoBK;GpBE;aqBI;GrBE;wBsBI;ECC,eD;EEC;GFE;CtBW;AyBE;CzBY;A0BC;C1BO;A2BC;C3BI;gB4BE;G5BE;A6BE;C7BE;A8BC;C9BE;A+BW;C/BE;AgCC;ChCI;AiCC;CjC4B;AkCC;ClCW;AmCC;CnCW;gBoCG;KpCE;sBqCC;KrCgC;AsCG;CtCU;AuCC;CvCU;AwCC;CxCE;AyCG;CzCS;A0CyD;C1CI;A2CC;C3CI;A4CC;C5Cc;A6CC;C7Ce;A8CC;C9CgB;A+CC;C/CM;AgDC;ChDQ;mBiDE;KjDE;mBkDE;KlD0Q;oCmDG;OnDE;AoDK;CpDyD;AqDC;CrDO;AsDI;CtDc;AuDO;CvDe;AwDC;CxDW;AyDC;CzDS;A0DC;C1DgB;qB2Dc;O3DuC;A4DiC;C5DQ;A6DC;C7DqC;A8DC;C9DqD;A+DC;C/DgB;AgEC;ChEgB;AiEC;CjEmF;AkEC;ClE4B;AmEC;CnEE;AoEE;CpEQ;AqEE;CrEkB;AsEC;mBCM;GDmC;CtEC;AwEc;CxEM;AyEI;CzEG;A0EG;C1EqD;A2EC;C3EuC;A4EC;C5EO;A6EC;C7EwC;A8EC;C9EK;A+EC;C/EK;AgFC;ChFG;AiFC;CjFI;AkFC;ClF8C;AmFC;CnFS;AoFC;CpFS;AqFC;CrFS;AsFC;CtFa;AuFC;CvFG;AwFC;CxF2E;AyFC;CzFS;A0FG;C1FE;A2FC;C3FG;A4FC;C5FI;A6FG;C7FiB;A8FK;C9FO;A+FC;C/FI;AgGC;ChGK;AiGC;CjGM;AkGE;ClGW;AmGC;CnGE;AoGK;CpGG;AqGC;CrGG;AsGC;CtGY;AuGC;CvG4D;AwGC;CxG6C;AyGC;CzGgB;A0GC;C1GK;A2GC;C3GE;A4GC;C5GG;A6GC;C7Ga;Q8GI;gCCI;eDE;uBEE;8BCE;aDE;WFC;S9GC;AkHW;ClHM;AmHC;uCCG;KDE;CnHC;AqHO;CrHS;AsHC;CtH2C;AuHC;CvHE;AwHC;CxHmB;AyHC;CzHuE;A0HC;C1HkB;A2HC;C3HG;A4HC;wBCE;ODO;C5HE;A8HC;C9HI;A+HK;YCQ;ODE;C/HM;AiIC;CjIa;AkIC;YCM;ODE;IEG;KFI;IGC;KHK;ClIG;yBsIE;CtIO;AuIE;CvIK;AwIC;CxII;AyIC;CzIK;A0IE;C1IqB;wC2IU,c3I;A4IC;C5IG;A6IC,kB7I;A8IC;UCyB;WDM;UEC;WFM;C9IgB;AiJE;CjJQ;AkJC;ClJQ;AmJI;CnJwB;AoJC;CpJS;AqJC;CrJG;AsJC;CtJG;AuJC;CvJ0B;AwJC;CxJY;AyJE;CzJQ;A0JC;C1JU;A2JC;C3JE;A4JC;C5JgB;A6JC;C7JS;A8JC;C9J2C;A+JE;C/JK;AgKC;ChK8H;AiKC;CjKO;AkKC;ClKS;AmKG;CnKK;AoKC;CpKG;AqKC;CrKI;AsKW;CtKI;AuKC;CvKK;AwKC;CxK6B;AyKC;CzKkB;A0KC;C1KwB;A2KC;C3KW;A4KC;C5KI;A6KC;C7KkB;A8KC;C9KY;A+KC;C/KmC;AgLC;ChLE;AiLC;CjLgB;AkLC;ClLM;AmLC;mCCY;aDE;CnLmB;AqLC;CrLE;AsLC;CtLG;AuLC;CvL2G;AwLC;CxLsB;AyLC;CzLiC;A0LC;C1LY;A2LC;C3LI;A4LC;mBCC;GDE;C5LC;A8LC;C9LS;A+LC;C/LG;AgMC;ChMuB;AiMC;CjMO;AkMC;YCoB;ODE;ClMa;AoMC;CpM0B;AqMC;QCK;SDE;QEC;SFE;CrMG;AwMC;CxMa;AyMC;CzMa;A0MC;C1MG;A2MC;C3ME;A4MC;C5MsC;A6MC;C7MG;A8MC;C9M+B;A+MC;C/ME;AgNC;ChNW;AiNC;CjNc;AkNC;ClNE;AmNC;CnNE;AoNC;CpNU;AqNC;CrNe;AsNC;CtNE;AuNC;CvNE;AwNC;CxNE;AyNC;CzNE;A0NC;W5GI;K4GE;M5GM;O4GE;C1NE;A2NC;C3NG;A4NC,6B5N;A6NC;C7NQ;A8NC;C9NiB;A+NC;C/NQ;AgOC;ChOc;AiOC;cCuC,cD;CjOO;AmOC;CnOE;AoOC;CpOE;AqOC;CrOE;AsOC;CtOiB;AuOC;CvOgB;AwOC;CxOG;AyOC;CzOwC;A0OC;C1OqB;A2OC;C3OM;A4OC;C5OQ;A6OC;C7OQ;iB8O6B;K9OM;yB+OG;K/OQ;qBgPC;KhPE;wBiPC;KjPE;akPC;KlPc;gBmPC;KnP4B;YoPC;KpPI;cqPC;KrPM;sBsPE;KtPG;mBuPC;KvPW;0BwPC;KxPwB;WyPC;KzPW;mB0PI;K1PmB;qB2PE;K3PK;c4Pc;K5PE;sB6PE;K7PQ;mB8PC;K9PS;mB+PM;K/PG;cgQgB;KhQE;sBiQE;KjQU;mBkQC;KlQS;mBmQM;KnQM;AoQM;CpQK;AqQC;CrQG;AsQC;CtQa;AuQC;CvQG;AwQC;ECC;GDO;EEC;GFM;EGC;GHO;EIC;GJK;EKC;GLc;EMC;GNK;EOC;GPU;EQC;GRmC;ESC;GTe;EUC;GVe;EWC;GXoE;EYC;GZgD;EaC;GbqE;EcC;uBCsF;ODE;GdE;EgBC;uBDoE;OCE;GhBE;EiBC;GjB2K;S1JC;G0J2B;CxQC;A0RK;C1RQ;A2RC;C3Ra;A4RC;C5RG;A6RC;C7RI;A8RE;C9RsB;A+RC;C/Re;mBgSE;GhSU;uBiSC;GjSW;sBkSC;GlSU;AmSE;CnSe;AoSC;CpSa;AqSC;CrSa;AsSC;CtSgC;AuSC;CvSc;M8GI;O9GyB;AwSC;CxSE;AySC;eCK;KDE;CzSE;A2SC;eDQ;KCE;C3SE;A4SC;kBCI;GDE;C5SE;A8SC;C9SI;A+SC;qBCI;KDE;sBEC;KFE;uBEK;KFU;C/SC;AkTC;ClTqK;AmTK;CnTU;AoTC;CpT+B;AqTC;CrTmD;AsTC;CtTgC;AuTC;CvT4D;AwTC;CxTqB;AyTC;CzTc;A0TC;C1TwB;A2TC;C3TyB;A4TC;C5TgM;A6TC;C7TkC;A8TO;C9TE;A+TC;C/TQ;AgUC;ChUqR;AiUC;CjUO;AkUC;ClUU;AmUC;CnUa;AoUC;CpUK;AqUC;CrUuB;AsUC;CtUsF;AuUC;CvUM;AwUC;CxU8B;AyUC;CzUI;A0UC;C1UmF;A2UC;C3U+X;A4UC;C5US;A6UC;C7UoC;A8UC;C9U4C;A+UC;C/UU;AgVC;ChVO;AiVC;CjVuB;AkVC;ClVuB;AmVC;CnV4W;AoVC;CpV6D;AqVC;CrVgC;AsVC;CtVqB;AuVC;CvVqC;AwVC;CxVU;AyVC;CzVe;A0VC;C1VuB;A2VC;C3VqB;A4VC;C5VQ;A6VK;C7VqE;A8VC;C9ViH;A+VC;C/Ve;AgWC;ChWQ;AiWC;CjW8F;AkWC;ClWuB;AmWC;oBCE;GDI;CnWC;AqWC;CrWc;AsWC;CtW4H;AuWC;CvWI;AwWC;CxWK;AyWC;CzWwC;A0WC;C1W2G;A2WC;C3Wa;A4WC;C5WO;A6WC;C7We;A8WC;C9W8I;A+WC;C/W4F;AgXC;ChX4B;AiXE;CjXK;AkXC;ClX6B;AmXC;CnXa;AoXC;CpXkB;AqXC;CrX2B;AsXC;CtXkC;AuXC;CvX6C;qBwXE;KxXO;AyXmC;CzXS;A0XC;C1XS;A2XC;C3XgC;A4XC;C5X4J;A6XC;C7X0B;A8XC;C9XiC;A+XC;C/XoB;AgYC;ChYgB;AiYC;CjY0C;AkYC;ClYwB;AmYC;CnYI;AoYC;CpYI;AqYC;CrYgB;AsYC;CtY4D;AuYC;CvYE;AwYC;oBCgC;aDM;CxYyE;A0YC;C1YG;A2YC;C3YI;A4YC;C5YmC;A6YC;C7Y2D;A8YC;C9Y4B;A+YC;C/YsB;AgZC;2CC4C;SDG;ChZuB;AkZC;ClZwB;AmZC;CnZuB;AoZC;CpZ0D;AqZC;CrZK;AsZC;CtZK;AuZC;CvZ4C;AwZC;CxZM;AyZC;CzZsC;A0ZC;C1Ze;A2ZC;C3ZiB;A4ZC;C5ZO;A6ZC;C7ZK;A8ZC;C9ZqB;A+ZC;C/ZE;AgaC;ChauB;AiaC;CjaE;AkaC;ClaG;AmaC;CnaoC;AoaC;Cpa+B;AqaC;CrakF;AsaC;CtaI;AuaC;CvaI;AwaC;Cxac;AyaC;CzayC;A0aC;C1aU;A2aC;C3aa;A4aC;C5ae;A6aC;C7aI;A8aC;C9aI;gC+aiB;K/aI;oCgbC;KhbI;AibO;CjbiB;AkbC;ClbkB;AmbE;CnbW;AobG;CpbW;iCqbc;CrbE;wBsbC;CtbI;wBubC;CvbI;YwbE;Gxbe;AybS;CzbQ;A0bC;C1bQ;qBmEC;CnEW;uB2bwB;C3bO;0B4bC;C5bc;sC6bC;C7bQ;yB8bC;C9bsB;4C+bC;C/bM;sDgcC;Chcc;uCicC;CjcI;gCkcC;ClcE;iBmcC;CncqE;iCocC;Cpca;sBqcC;sCCG;KDG;CrcC;iCucC;CvcE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setUpDefaltReactNativeEnvironment"],"mappings":"AAA;eCY"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setUpDOM","polyfillGlobal$argument_1"],"mappings":"AAA;eCc;ICS,oDD;ICK,4DD;ICK,wDD;ICK,0ED;ICK,oED;ICK,0DD;ICK,iED;ICK,mED;ICK,0DD;ICK,6DD;ICK,gED"}],[{"names":["<global>","polyfillObjectProperty","polyfillGlobal"],"mappings":"AAA;OC2B;CDsB;OEE"}],[{"names":["<global>","DOMRectList","constructor","get__length","item","@@iterator","createDOMRectList"],"mappings":"AAA;eCsB;ECS;GDW;EEE;GFE;EGE;GHU;EIG;GJE;CDC;OMU"}],[{"names":["<global>","global.performance.mark","global.performance.measure","global.performance.now"],"mappings":"AAA;YCsB,QD;eEC,QF;WGC;OHG"}],[{"names":["<global>","<anonymous>","Performance","get__memory","get__rnStartupTiming","mark","clearMarks","measure","clearMeasures","getEntries","getEntriesByType","getEntriesByName"],"mappings":"AAA;4DCsC,gBD;eEiB;ECI;GDyB;EEG;GFoB;EGE;GHmB;EIE;GJO;EKE;GLmF;EME;GNO;EOa;GPM;EQE;GRiB;ESE;GTqB;CFC"}],[{"names":["_readOnlyError","<global>"],"mappings":"AAA;CCE"}],[{"names":["<global>","DOMException","constructor","get__name","get__code","setPlatformObject$argument_1.clone"],"mappings":"AAA;eC0E;ECwD;GDU;EEE;GFE;EGE;GHE;CDC;SKe,gEL"}],[{"names":["<global>","PerformanceEventTiming","PerformanceEventTiming#constructor","PerformanceEventTiming#get__processingStart","PerformanceEventTiming#get__processingEnd","PerformanceEventTiming#get__interactionId","PerformanceEventTiming#toJSON","getCachedEventCounts","global.queueMicrotask$argument_0","EventCounts","EventCounts#get__size","EventCounts#entries","EventCounts#forEach","EventCounts#get","EventCounts#has","EventCounts#keys","EventCounts#values"],"mappings":"AAA;OC6B;ECK;GDiB;EEE;GFE;EGE;GHE;EIE;GJE;EKE;GLO;CDC;AOU;wBCiB;GDM;CPG;OSO;ECC;GDE;EEE;GFE;EGE;GHE;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPE"}],[{"names":["<global>","warnNoNativePerformance"],"mappings":"AAA;OCY"}],[{"names":["<global>","PerformanceEntry","constructor","get__name","get__entryType","get__startTime","get__duration","toJSON"],"mappings":"AAA;OC8B;ECM;GDU;EEE;GFE;EGE;GHE;EIE;GJE;EKE;GLE;EME;GNO;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","rawToPerformanceEntry","rawToPerformanceEntryType","performanceEntryTypeToRaw"],"mappings":"AAA;OC8B;CDkD;OEE;CFmB;OGE"}],[{"names":["<global>","TaskAttributionTiming","PerformanceLongTaskTiming","PerformanceLongTaskTiming#get__attribution","PerformanceLongTaskTiming#toJSON"],"mappings":"AAA;OCsB,uDD;OEK;ECC;GDE;EEE;GFK"}],[{"names":["<global>","PerformanceResourceTiming","PerformanceResourceTiming#constructor","PerformanceResourceTiming#get__fetchStart","PerformanceResourceTiming#get__requestStart","PerformanceResourceTiming#get__connectStart","PerformanceResourceTiming#get__connectEnd","PerformanceResourceTiming#get__responseStart","PerformanceResourceTiming#get__responseEnd","PerformanceResourceTiming#get__responseStatus","PerformanceResourceTiming#toJSON"],"mappings":"AAA;OC+B;ECS;GDyB;EEE;GFE;EGE;GHE;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPE;EQE;GRE;ESE;GTW"}],[{"names":["<global>","PerformanceMark","PerformanceMark#constructor","PerformanceMark#get__detail","PerformanceMeasure","PerformanceMeasure#constructor","PerformanceMeasure#get__detail"],"mappings":"AAA;OC+B;ECG;GDW;EEE;GFE;CDC;OIE;ECG;GDW;EEE;GFE"}],[{"names":["<global>","MemoryInfo","constructor","get__jsHeapSizeLimit","get__totalJSHeapSize","get__usedJSHeapSize"],"mappings":"AAA;eCqB;ECK;GDM;EEK;GFE;EGK;GHE;EIK;GJE;CDC"}],[{"names":["<global>","ReactNativeStartupTiming","constructor","get__startTime","get__endTime","get__initializeRuntimeStart","get__initializeRuntimeEnd","get__executeJavaScriptBundleEntryPointStart","get__executeJavaScriptBundleEntryPointEnd"],"mappings":"AAA;eCyB;ECY;GDW;EEK;GFE;EGK;GHE;EIK;GJE;EKK;GLE;EMK;GNE;EOK;GPE;CDC"}],[{"names":["<global>","polyfillGlobal$argument_1"],"mappings":"AAA;4BCoC,mCD"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","valuePromise","Promise.resolve","Promise$argument_0","iterableToArray","Promise.all","res","val.then$argument_0","p.then$argument_0","onSettledFulfill","onSettledReject","mapAllSettled","Promise.allSettled","Promise.reject","Promise.race","iterableToArray.forEach$argument_0","Promise.prototype._catch","getAggregateError","promiseAny","resolveOnce","rejectionCheck","promises.forEach$argument_0"],"mappings":"AAA;ACiB;CDK;kBEC;yBCiB;ODE;CFI;sBIE;CJU;cKE;qBFG;IGG;mBCQ;WDE;mBEM;aFE;KHS;GEI;CLC;ASE;CTE;AUC;CVE;AWC;CXY;qBYC;CZE;iBaE;qBVC;GUE;CbC;ecE;qBXC;oCYC;KZE;GWC;CdC;6BgBI;ChBE;AiBE;CjBW;ckBE;qBfC;IgBK;KhBK;IiBE;KjBM;uBkBK;OlBE;GeE;ClBC"}],[{"names":["<global>","noop","getThen","tryCallOne","tryCallTwo","Promise","Promise.prototype.then","safeThen","self.constructor$argument_0","handle","handleResolved","setImmediate$argument_0","resolve","reject","finale","Handler","doResolve","tryCallTwo$argument_1","tryCallTwo$argument_2"],"mappings":"AAA;ACI,kBD;AEqB;CFO;AGE;CHO;AIC;CJO;AKI;CLa;yBMK;CNO;AOE;8BCC;GDI;CPC;ASC;CTsB;AUE;eCC;GDgB;CVC;AYC;CZgC;AaE;CbO;AcC;CdW;AeE;CfI;AgBQ;2BCE;GDI,EE;GFI;ChBK"}],[{"names":["<global>","Promise.prototype._finally","then$argument_0","Promise.resolve.then$argument_0","then$argument_1"],"mappings":"AAA;4BCK;mBCC;qCCC;KDE;GDC,EG;qCDC;KCE;GHC;CDC"}],[{"names":["<global>","polyfillGlobal$argument_1","defineLazyTimer"],"mappings":"AAA;IC8B;+BDE;ICO,oDD;ICI,sDD;ICK;oCDE;ICK;mCDE;0BEO;yBDW,gDC;GFC;ICa,mDD;ICQ,oED;ICI,oED"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setImmediate","global.queueMicrotask$argument_0","clearImmediate"],"mappings":"AAA;OCuB;wBCoB;GDO;CDG;OGK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","_getFreeIndex","_allocateCallback","_callTimer","callback$argument_0.timeRemaining","_callReactNativeMicrotasksPass","_clearIndex","_freeCallback","setTimeout","_allocateCallback$argument_0","setInterval","queueReactNativeMicrotask","requestAnimationFrame","requestIdleCallback","<anonymous>","setTimeout$argument_0","cancelIdleCallback","clearTimeout","clearInterval","clearReactNativeMicrotask","cancelAnimationFrame","callTimers","callIdleCallbacks","errors.forEach$argument_0","callReactNativeMicrotasks","emitTimeDriftWarning","createTimer","deleteTimer","setSendIdleEvents"],"mappings":"AAA;ACiD;CDM;AEE;CFO;AGO;uBC6C;SDQ;CHc;AKM;CLwB;AME;CNK;AOE;CPmB;cQY;MCM,iCD;GRK;eUM;MDM,iCC;GVK;6BWU;MFE,iCE;GXK;yBYK;GZI;uBaO;UCW;WDO;oDEO;OFU;GbI;sBgBE;GhBgB;gBiBE;GjBE;iBkBE;GlBE;6BmBE;GnBM;wBoBE;GpBE;cqBM;aPkB;aOE;GrBO;qBsBE;mBCsB;0BRC;OQE,ID;GtBE;EwBM;mBDG;0BRC;OQE,IC;GxBE;EyBK;GzBM;A0BG;C1BQ;A2BE;C3BG;A4BE;C5BG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","queueMicrotask","then._catch$argument_0","setTimeout$argument_0"],"mappings":"AAA;eCqB;WCa;iBCE;ODE,ID"}],[{"names":["<global>","handleError"],"mappings":"AAA;wBCsB;KDO"}],[{"names":["<global>","hasNativeConstructor$argument_0","polyfillGlobal$argument_1"],"mappings":"AAA;ICyB,eD;uCEW;GFQ"}],[{"names":["<global>","isNativeFunction","hasNativeConstructor"],"mappings":"AAA;OCiB;CDE;OEM"}],[{"names":["<global>","<anonymous>","define","wrap","tryCatch","Generator","GeneratorFunction","GeneratorFunctionPrototype","define$argument_2","defineIteratorMethods","forEach$argument_0","exports.isGeneratorFunction","exports.mark","exports.awrap","AsyncIterator","invoke","PromiseImpl.resolve.then$argument_0","PromiseImpl.resolve.then$argument_1","enqueue","callInvokeWithMethodAndArg","PromiseImpl$argument_0","exports.async","iter.next.then$argument_0","makeInvokeMethod","maybeInvokeDelegate","pushTryEntry","resetTryEntry","Context","exports.keys","next","values","doneResult","Context.prototype.reset","Context.prototype.stop","Context.prototype.dispatchException","handle","Context.prototype.abrupt","Context.prototype.complete","Context.prototype.finish","Context.prototype._catch","Context.prototype.delegateYield"],"mappings":"AAA;eCO;ECY;GDQ;aCK;KDE;EEG;GFW;EGa;GHM;EIe,uBJ;EKC,+BL;EMC,wCN;4COK;GPE;EQ6B;wCCC;gCFC;OEE;KDC;GRC;gCUE;GVQ;iBWE;GXS;kBYM;GZE;EaE;ICC;yDCU;WDE,EE;WFE;+CCG;SDM,EE;SFI;KDE;III;MCC;+BCC;SDE;ODC;KJqB;GbK;uDOG;GPE;kBoBM;yBCU;SDE;GpBC;EsBE;WRG;KQwE;GtBC;EuBM;GvB8E;6BOa;GPE;yBOE;GPE;EwBE;GxBa;EyBE;GzBK;E0BE;G1BO;iB2BE;WCU;KDe;G3BC;E6BE;2BDY;SCa;G7BQ;E8BG;G9BE;W+BK;K/BwB;UgCE;KhCU;uBiCE;MCM;ODa;KjCuC;YmCE;KnCgC;coCE;KpCiB;YqCE;KrCS;asCE;KtCgB;mBuCE;KvCc;CDS"}],[{"names":["<global>","polyfillGlobal$argument_1"],"mappings":"AAA;ECsB,kDD;2BCE,4CD;wBCE,uCD;0BCC,yCD;0BCC,yCD;2BCC,0CD;4BCC,+CD;uBCC,qCD;uBCC,qCD;6BCC,2CD;sBCC,gCD;kCCC,4CD;ECG,uED;ECI,mED"}],[{"names":["<global>","XMLHttpRequestEventTarget","XMLHttpRequestEventTarget#get__onload","XMLHttpRequestEventTarget#set__onload","XMLHttpRequestEventTarget#get__onloadstart","XMLHttpRequestEventTarget#set__onloadstart","XMLHttpRequestEventTarget#get__onprogress","XMLHttpRequestEventTarget#set__onprogress","XMLHttpRequestEventTarget#get__ontimeout","XMLHttpRequestEventTarget#set__ontimeout","XMLHttpRequestEventTarget#get__onerror","XMLHttpRequestEventTarget#set__onerror","XMLHttpRequestEventTarget#get__onabort","XMLHttpRequestEventTarget#set__onabort","XMLHttpRequestEventTarget#get__onloadend","XMLHttpRequestEventTarget#set__onloadend","XMLHttpRequest","__setInterceptor_DO_NOT_USE","enableProfiling","constructor","_reset","get__responseType","set__responseType","get__responseText","get__response","__didCreateRequest","__didUploadProgress","__didReceiveResponse","__didReceiveData","__didReceiveIncrementalData","__didReceiveDataProgress","__didCompleteResponse","_clearSubscriptions","forEach$argument_0","getAllResponseHeaders","sort$argument_0","sortedHeaders.map$argument_0","getResponseHeader","setRequestHeader","setTrackingName","setPerformanceLogger","open","send","RCTNetworking.addListener$argument_1","doSend","abort","setResponseHeaders","Object.keys.reduce$argument_0","setReadyState","addEventListener","_getMeasureURL","get__onabort","set__onabort","get__onerror","set__onerror","get__onload","set__onload","get__onloadstart","set__onloadstart","get__onprogress","set__onprogress","get__ontimeout","set__ontimeout","get__onloadend","set__onloadend","get__onreadystatechange","set__onreadystatechange"],"mappings":"AAA;ACoF;ECC;GDE;EEC;GFE;EGC;GHE;EIC;GJE;EKC;GLE;EMC;GNE;EOC;GPE;EQC;GRE;ESC;GTE;EUC;GVE;EWC;GXE;EYC;GZE;EaC;GbE;EcC;GdE;CDC;AgBK;EC6C;GDE;EEE;GFE;EGE;GHG;EIE;GJkB;EKE;GLE;EME;GN2B;EOE;GPW;EQE;GRiD;ESG;GTU;EUG;GVe;EWE;GX0B;EYE;GZU;EaE;GbyB;EcE;GdgB;EeG;GfoC;EgBE;wCCC;KDI;GhBE;EkBE;6DC8B;KDQ;aEK;SFE;GlBG;EqBE;GrBG;EsBE;GtBK;EuBK;GvBG;EwBK;GxBG;EyBE;GzBgB;E0BE;sDCY;yCDC;6DCI;0CDC;yDCI;sCDC;oECI;iDDC;iECI;8CDC;8DCI;2CDC;mBEY;KF8B;G1BM;E6BE;G7BmB;E8BE;OCK;KDI;G9BC;EgCE;GhCiB;EiCE;GjCS;EkCE;GlCI;EmCM;GnCE;EoCE;GpCE;EqCE;GrCE;EsCE;GtCE;EuCE;GvCE;EwCE;GxCE;EyCE;GzCE;E0CE;G1CE;E2CE;G3CE;E4CE;G5CE;E6CE;G7CE;E8CE;G9CE;E+CE;G/CE;EgDE;GhDE;EiDE;GjDE;EkDE;GlDE;ChBC"}],[{"names":["<global>","getEventHandlerAttributeMap","setEventHandlerAttributeMap","getEventHandlerAttribute","setEventHandlerAttribute"],"mappings":"AAA;ACsD;CDK;AEE;CFM;OGQ;CHM;OIQ"}],[{"names":["<global>","EventTarget","addEventListener","signal.addEventListener$argument_1","removeEventListener","dispatchEvent","EVENT_TARGET_GET_THE_PARENT_KEY","INTERNAL_DISPATCH_METHOD_KEY","validateCallback","getDefaultPassiveValue","dispatch","getEventPath","invoke","getListenersForPhase","setListenersMap","getEventDispatchFlag","setEventDispatchFlag"],"mappings":"AAA;eC8D;ECC;QC8E;SDK;GDM;EGE;GHmC;EIE;GJkB;EKU;GLE;EMM;GNE;CDC;AQI;CRM;ASE;CTK;AUU;CV6C;AWQ;CXc;AYM;CZoE;AaK;CbS;AcE;CdY;AeI;CfG;AgBE"}],[{"names":["<global>","dispatchTrustedEvent"],"mappings":"AAA;OC2C"}],[{"names":["<global>","ProgressEvent","constructor","get__lengthComputable","get__loaded","get__total"],"mappings":"AAA;eC2B;ECK;GDM;EEE;GFE;EGE;GHE;EIE;GJE"}],[{"names":["<global>","uuidv4","xxxxxxxxXxxx4xxxYxxxXxxxxxxxxxxx.replace$argument_1","createBlobCollector","BlobManager","createFromParts","parts.map$argument_0","items.reduce$argument_0","createFromOptions","release","addNetworkingHandler","addWebSocketHandler","removeWebSocketHandler","sendOverSocket"],"mappings":"AAA;AC0B;iECC;GDI;CDC;AGS;CHM;AIK;ECS;4BCO;KDiB;8BEC;KFU;GDW;EIM;GJgB;EKK;GLQ;EMM;GNI;EOM;GPI;EQM;GRI;ESK;GTI;CJC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getConstants","addNetworkingHandler","addWebSocketHandler","removeWebSocketHandler","sendOverSocket","createFromParts","release"],"mappings":"AAA;ICiC;KDK;IEC;KFE;IGC;KHE;IIC;KJE;IKC;KLE;IMC;KNE;IOC;KPE"}],[{"names":["<global>","Blob","constructor","set__data","get__data","slice","close","get__size","get__type"],"mappings":"AAA;ACmD;ECQ;GDG;EEQ;GFE;EGG;GHM;EIE;GJoC;EKc;GLI;EMM;GNE;EOO;GPE;CDC"}],[{"names":["<global>","register","unregister","has"],"mappings":"AAA;wBCY;CDQ;0BEE;CFU;mBGE;CHE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","<anonymous>","PerformanceLogger","PerformanceLogger#addTimespan","PerformanceLogger#append","PerformanceLogger#clear","PerformanceLogger#clearCompleted","PerformanceLogger#close","PerformanceLogger#currentTimestamp","PerformanceLogger#getExtras","PerformanceLogger#getPoints","PerformanceLogger#getPointExtras","PerformanceLogger#getTimespans","PerformanceLogger#hasTimespan","PerformanceLogger#isClosed","PerformanceLogger#logEverything","PerformanceLogger#markPoint","PerformanceLogger#removeExtra","PerformanceLogger#setExtra","PerformanceLogger#startTimespan","PerformanceLogger#stopTimespan","createPerformanceLogger"],"mappings":"AAA;gCCoB,8BD;AEE;ECO;GDiC;EEE;GFW;EGE;GHO;EIE;GJW;EKE;GLE;EME;GNE;EOE;GPE;EQE;GRE;ESE;GTE;EUE;GVE;EWE;GXE;EYE;GZE;EaE;GbmB;EcE;Gd2B;EeE;GfI;EgBE;GhBkB;EiBE;GjBgC;EkBE;GlByC;CFC;eqBW"}],[{"names":["<global>","convertRequestBody"],"mappings":"AAA;AC2B;CDgB"}],[{"names":["<global>","binaryToBase64"],"mappings":"AAA;ACc;CDc"}],[{"names":["<global>","encodeFilename","FormData","constructor","append","getAll","_parts.filter$argument_0","_parts.filter.map$argument_0","getParts","_parts.map$argument_0"],"mappings":"AAA;ACmC;CDE;AEsB;ECG;GDE;EEE;GFO;EGE;cCE,wBD;WEC,oBF;GHC;EME;2BCC;KDqB;GNC;CFC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","<anonymous>","isDataView","normalizeName","normalizeValue","iteratorFor","iterator.next","iterator.@@iterator","Headers","headers.forEach$argument_0","Object.getOwnPropertyNames.forEach$argument_0","Headers.prototype.append","Headers.prototype._delete","Headers.prototype.get","Headers.prototype.has","Headers.prototype.set","Headers.prototype.forEach","Headers.prototype.keys","forEach$argument_0","Headers.prototype.values","Headers.prototype.entries","consumed","fileReaderReady","Promise$argument_0","reader.onload","reader.onerror","readBlobAsArrayBuffer","readBlobAsText","readArrayBufferAsText","bufferClone","Body","_initBody","blob","arrayBuffer","text","formData","json","normalizeMethod","Request","Request.prototype.clone","decode","body.trim.split.forEach$argument_0","parseHeaders","preProcessedHeaders.split.map$argument_0","preProcessedHeaders.split.map.forEach$argument_0","Response","Response.prototype.clone","Response.error","Response.redirect","exports.DOMException","fetch","abortXhr","xhr.onload","setTimeout$argument_0","xhr.onerror","xhr.ontimeout","xhr.onabort","fixUrl","request.headers.forEach$argument_0","xhr.onreadystatechange"],"mappings":"AAA,CC;CDI,QC;EC4B;GDE;EEsB;GFQ;EGE;GHK;EIG;YCE;ODG;kCEI;OFE;GJI;EOE;sBCI;ODE;sBCE;ODK;kDEE;OFE;GPE;6BUE;GVK;gCWE;GXE;0BYE;GZG;0BaE;GbE;0BcE;GdE;8BeE;GfM;2BgBE;iBCE;KDE;GhBE;6BkBE;iBDE;KCE;GlBE;8BmBE;iBFE;KEE;GnBE;EoBM;GpBM;EqBE;uBCC;sBCC;ODE;uBEC;OFE;KDC;GrBC;EyBE;GzBK;E0BE;G1BO;E2BE;G3BQ;E4BE;G5BQ;E6BE;qBCG;KD4C;kBEG;OFe;uBGG;KHoB;gBIE;KJe;sBKG;OLE;gBMG;KNE;G7BG;EoCK;GpCG;EqCE;oDrCkC;KqCK;GrCsB;4BsCE;GtCE;EuCE;eCK;ODO;GvCE;EyCE;WCU;ODE;eEC;OFW;GzCE;E4CI;G5CkB;6B6CI;G7CO;mB8CE;G9CM;sB+CI;G/CM;2BgDM;KhDK;EiDK;uB3BC;M4BS;O5BE;mB6BE;mBCc;SDE;O7BC;oB+BE;mBDC;SCE;O/BC;sBgCE;mBFC;SEE;OhCC;oBiCE;mBHC;SGE;OjCC;MkCE;OlCM;yDbsB;SaG;gCmCC;SnCI;gCmCE;SnCE;iCoCM;SpCK;K2BI;GjDC;CDkB"}],[{"names":["<global>","WebSocket","constructor","get__binaryType","set__binaryType","close","send","ping","_close","_unregisterEvents","_subscriptions.forEach$argument_0","_registerEvents","_eventEmitter.addListener$argument_1","get__onclose","set__onclose","get__onerror","set__onerror","get__onmessage","set__onmessage","get__onopen","set__onopen"],"mappings":"AAA;AC2E;ECsB;GDmD;EEE;GFE;EGE;GHgB;EIE;GJO;EKE;GLyB;EME;GNM;EOE;GPS;EQE;gCCC,eD;GRE;EUE;yDCE;ODc;sDCC;ODO;wDCC;ODc;wDCC;ODe;GVE;EYE;GZE;EaE;GbE;EcE;GdE;EeE;GfE;EgBE;GhBE;EiBE;GjBE;EkBE;GlBE;EmBE;GnBE;CDC"}],[{"names":["<global>","MessageEvent","constructor","get__data","get__origin","get__lastEventId"],"mappings":"AAA;eC+B;ECK;GDM;EEE;GFE;EGE;GHE;EIE;GJE"}],[{"names":["<global>","CloseEvent","constructor","get__wasClean","get__code","get__reason"],"mappings":"AAA;eC2B;ECK;GDM;EEE;GFE;EGE;GHE;EIE;GJE"}],[{"names":["<global>","NativeEventEmitter","constructor","addListener","remove","emit","removeAllListeners","listenerCount"],"mappings":"AAA;eC8C;ECQ;GD6B;EEE;cCa;ODO;GFE;EIE;GJO;EKE;GLS;EME;GNE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","File","constructor","get__name","get__lastModified"],"mappings":"AAA;ACqB;ECI;GDY;EEK;GFG;EGK;GHE;CDC"}],[{"names":["<global>","FileReader","constructor","_reset","_setReadyState","readAsArrayBuffer","NativeFileReaderModule.readAsDataURL.then$argument_0","NativeFileReaderModule.readAsDataURL.then$argument_1","readAsDataURL","readAsText","NativeFileReaderModule.readAsText.then$argument_0","NativeFileReaderModule.readAsText.then$argument_1","abort","get__readyState","get__error","get__result","get__onabort","set__onabort","get__onerror","set__onerror","get__onload","set__onload","get__onloadstart","set__onloadstart","get__onloadend","set__onloadend","get__onprogress","set__onprogress"],"mappings":"AAA;ACiC;ECc;GDG;EEE;GFI;EGE;GHa;EIE;MCU;ODU;MEC;OFM;GJE;EOE;MFU;OEM;MDC;OCM;GPE;EQE;MCU;ODM;MEC;OFM;GRE;EWE;GXS;EYE;GZE;EaE;GbE;EcE;GdE;EeE;GfE;EgBE;GhBE;EiBE;GjBE;EkBE;GlBE;EmBE;GnBE;EoBE;GpBE;EqBE;GrBE;EsBE;GtBE;EuBE;GvBE;EwBE;GxBE;EyBE;GzBE;E0BE;G1BE;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","validateBaseUrl","URL","createObjectURL","revokeObjectURL","constructor","get__hash","get__host","get__hostname","get__href","get__origin","get__password","get__pathname","get__port","get__protocol","get__search","get__searchParams","toJSON","toString","get__username"],"mappings":"AAA;ACwD;CDK;OEE;ECI;GDK;EEE;GFE;EGG;GHuC;EIE;GJG;EKE;GLM;EME;GNG;EOE;GPE;EQE;GRG;ESE;GTG;EUE;GVG;EWE;GXG;EYE;GZG;EaE;GbG;EcE;GdK;EeE;GfE;EgBE;GhBQ;EiBE;GjBG"}],[{"names":["<global>","URLSearchParams","get__size","constructor","params.replace.split.forEach$argument_0","pair.split.map$argument_0","params.forEach$argument_0","Object.entries.forEach$argument_0","append","_delete","get","getAll","has","set","keys","values","generateValues","entries","generateEntries","forEach","sort","sort$argument_0","@@iterator","toString","Array.from.map$argument_0","values.map$argument_0"],"mappings":"AAA;OCY;ECG;GDE;EEE;iBCU;iBCM,oDD;SDE;qBGG,yCH;qCIG,yCJ;GFE;EOE;GPM;EQE;GRE;ESE;GTG;EUE;GVE;EWE;GXE;EYE;GZE;EaE;GbE;EcE;ICC;KDM;GdE;EgBE;ICC;KDQ;GhBG;EkBE;GlBQ;EmBE;6CCE,gCD;GnBE;EqBG;GrBU;EsBE;WCE;YCG;sCDG;oBDE;GtBG"}],[{"names":["<global>","AbortSignal","AbortSignal#constructor","AbortSignal#get__aborted","createAbortSignal","abortSignal","AbortController","AbortController#constructor","AbortController#get__signal","AbortController#abort","getSignal"],"mappings":"AAA;ACU;ICI;KDG;IEI;KFM;CDC;AIK;CJK;AKI;CLM;AMqB;ICI;KDE;IEI;KFE;IGI;KHE;CNC;AUQ;CVM"}],[{"names":["<global>","pd","setCancelFlag","Event","Event.prototype.get__type","Event.prototype.get__target","Event.prototype.get__currentTarget","Event.prototype.composedPath","Event.prototype.get__NONE","Event.prototype.get__CAPTURING_PHASE","Event.prototype.get__AT_TARGET","Event.prototype.get__BUBBLING_PHASE","Event.prototype.get__eventPhase","Event.prototype.stopPropagation","Event.prototype.stopImmediatePropagation","Event.prototype.get__bubbles","Event.prototype.get__cancelable","Event.prototype.preventDefault","Event.prototype.get__defaultPrevented","Event.prototype.get__composed","Event.prototype.get__timeStamp","Event.prototype.get__srcElement","Event.prototype.get__cancelBubble","Event.prototype.set__cancelBubble","Event.prototype.get__returnValue","Event.prototype.set__returnValue","Event.prototype.initEvent","defineRedirectDescriptor","get","set","defineCallDescriptor","value","defineWrapper","CustomEvent","getWrapper","wrapEvent","isStopped","setEventPhase","setCurrentTarget","setPassiveListener","isObject","getListeners","defineEventAttributeDescriptor","defineEventAttribute","defineCustomEventTarget","CustomEventTarget","EventTarget","EventTarget.prototype.addEventListener","EventTarget.prototype.removeEventListener","EventTarget.prototype.dispatchEvent"],"mappings":"AAA;ACuC;CDQ;AEM;CFqB;AGY;CHwB;IIQ;KJE;IKM;KLE;IMM;KNE;IOK;KPM;IQM;KRE;ISM;KTE;IUM;KVE;IWM;KXE;IYM;KZE;IaM;KbO;IcM;KdQ;IeM;KfE;IgBM;KhBE;IiBM;KjBE;IkBM;KlBE;ImBM;KnBE;IoBM;KpBE;IqBO;KrBE;IsBO;KtBE;IuBC;KvBU;IwBO;KxBE;IyBC;KzBI;I0BS;K1BE;A2BwB;QCE;SDE;QEC;SFE;C3BI;A8BQ;QCE;SDG;C9BI;AgCS;ICO;KDE;ChCuB;AkCQ;ClCW;AmCS;CnCG;AoCQ;CpCE;AqCS;CrCE;AsCS;CtCE;AuCS;CvCE;AwC4B;CxCE;AyCQ;CzCQ;A0CQ;QdE;ScU;QbE;SayC;C1CI;A2CQ;C3CM;A4CQ;ICE;KDE;C5Ce;A8Ce;C9CkB;I+CW;K/C6C;IgDS;KhD+B;IiDO;KjDoE"}],[{"names":["<global>","global.alert"],"mappings":"AAA;iBCiB;GDI"}],[{"names":["<global>","Alert","alert","onAction","onError","prompt","callbackOrButtons.forEach$argument_0","alertWithArgs$argument_1"],"mappings":"AAA;AC6D;ECC;uBCuD;ODkB;sBEC,oDF;GDG;EIK;kCCkB;SDe;QEgB;SFG;GJG;CDC"}],[{"names":["<global>","polyfillObjectProperty$argument_2"],"mappings":"AAA;+CCoB,mBD"}],[{"names":["<global>","registerModule$argument_1"],"mappings":"AAA;2BCc,wCD;6BCE,0CD;yBCE,4CD;ECG,8DD;ECI,iED;ECI,6DD;8BCI,+CD;ICI,uDD"}],[{"names":["<global>","logIfNoNativeHook","logToConsole","setWarningHandler"],"mappings":"AAA;EC0B;GDU;EEG;GFS;EGE;GHE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setup","enable","disable","registerBundle","log"],"mappings":"AAA;ECiB,UD;EEC;GFK;EGC,YH;EIC,mBJ;EKC,QL"}],[{"names":["<global>","__fetchSegment","SegmentFetcher.fetchSegment$argument_2"],"mappings":"AAA;ACmB;ICc;KDe;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","registerComponent$argument_1","NoOp"],"mappings":"AAA;wCCmB;WCI;KDE;CDE"}],[{"names":["<global>","componentProviderInstrumentationHook","setWrapperComponentProvider","setRootViewStyleProvider","registerConfig","config.forEach$argument_0","registerComponent","runnables.appKey","registerRunnable","registerSection","getAppKeys","getSectionKeys","getSections","getRunnable","getRegistry","setComponentProviderInstrumentationHook","runApplication","setSurfaceProps","unmountApplicationComponentAtRootTag","registerHeadlessTask","registerCancellableHeadlessTask$argument_2","<anonymous>","registerCancellableHeadlessTask","startHeadlessTask","taskProvider.then$argument_0","taskProvider.then._catch$argument_0","NativeHeadlessJsTaskSupport.notifyTaskRetry.then$argument_0","cancelHeadlessTask"],"mappings":"AAA;ECyC,6CD;OEK;CFI;OGE;CHE;OIE;iBCC;GDgB;CJC;OMO;sBCM;GDgB;CNK;OQE;CRG;OSE;CTK;OUE;CVE;OWE;CXE;OYE;CZI;OaE;CbE;OcE;CdK;OeE;CfI;OgBO;ChBoB;OiBK;CjBsB;OkBO;ClBE;OmBO;yDCK,MC;GFE;CnBC;OsBO;CtBY;OuBO;UCc;KDI;WEC;UCS;WDI;KFG;CvBC;O2BO"}],[{"names":["<global>","setActiveScene","_listeners.forEach$argument_0","getActiveScene","addActiveSceneChangedListener","remove","_listeners.filter$argument_0"],"mappings":"AAA;ECmB;uBCE,kCD;GDC;EGE;GHE;EIE;cCM;uCCC,iCD;ODC;GJE"}],[{"names":["<global>","coerceDisplayMode"],"mappings":"AAA;OCoB;CDS"}],[{"names":["<global>","HeadlessJsTaskError"],"mappings":"AAA;eCU"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","renderApplication"],"mappings":"AAA;eCiC"}],[{"names":["<global>","usePerformanceLogger"],"mappings":"AAA;OC4B;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","AppContainer"],"mappings":"AAA;qBCiB;CDyB"}],[{"names":["<global>","createRootTag"],"mappings":"AAA;OCwB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","jsxProd"],"mappings":"AAA;ACa;CDiB"}],[{"names":["<global>","getCachedComponentWithDisplayName","ComponentWithDisplayName"],"mappings":"AAA;eCmB;+BCM,gDD"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","push","peek","pop","compare","getCurrentTime","advanceTimers","handleTimeout","unstable_scheduleCallback$1","unstable_cancelCallback$1","unstable_getCurrentPriorityLevel$1","shouldYieldToHost","requestPaint","performWorkUntilDeadline","schedulePerformWorkUntilDeadline","requestHostTimeout","localSetTimeout$argument_0","throwNotImplemented"],"mappings":"AAA;ACW;CDU;AEC;CFE;AGC;CH6B;AIC;CJG;mBKI;GLE;mBKI;GLE;AMc;CNU;AOC;CPa;AQC;CRmD;ASC;CTE;AUC;CVE;AWI;CXE;AYC;CZE;AaC;CbsE;qCcG;GdE;qCcK;GdE;qCcE;GdE;AeC;kCCC;GDE;CfC;AiByC;CjBE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","describeBuiltInComponentFrame","describeNativeComponentFrame","RunInRootFrame.DetermineComponentFrameRoot","Fake","Object.defineProperty$argument_2.set","Fake._catch$argument_0","describeFiber","getStackByFiberInDevAndProd","getIteratorFn","getComponentNameFromType","executeDispatch","executeDirectDispatch","functionThatReturnsTrue","functionThatReturnsFalse","SyntheticEvent","assign$argument_1.preventDefault","assign$argument_1.stopPropagation","assign$argument_1.persist","assign$argument_1.destructor","SyntheticEvent.Interface.currentTarget","SyntheticEvent.Interface.timeStamp","SyntheticEvent.extend","E","Class","createOrGetPooledEvent","releasePooledEvent","addEventPoolingTo","SyntheticEvent.extend$argument_0.touchHistory","isStartish","isMoveish","timestampForTouch","getTouchIdentifier","recordTouchStart","recordTouchMove","recordTouchEnd","ResponderTouchHistoryStore.instrument","ResponderTouchHistoryStore.recordTouchTrack","accumulate","accumulateInto","forEachAccumulated","changeResponder","getParent$1","traverseTwoPhase$1","getListener$1","accumulateDirectionalDispatches$1","accumulateDirectDispatchesSingle$1","accumulateTwoPhaseDispatchesSingleSkipTarget","accumulateTwoPhaseDispatchesSingle$1","ResponderEventPlugin._getResponder","ResponderEventPlugin.extractEvents","ResponderEventPlugin.injection.injectGlobalResponderHandler","recomputePluginOrdering","publishRegistrationName","getListener","accumulateDirectionalDispatches","traverseTwoPhase","accumulateTwoPhaseDispatchesSingle","accumulateDirectDispatchesSingle","injectedNamesToPlugins$jscomp$inline_283.ReactNativeBridgeEventPlugin.extractEvents","getInstanceFromTag","batchedUpdatesImpl","batchedUpdates$1","executeDispatchesAndReleaseTopLevel","_receiveRootNodeIDEvent","batchedUpdates$1$argument_0","ReactNativePrivateInterface.RCTEventEmitter.register$argument_0.receiveEvent","ReactNativePrivateInterface.RCTEventEmitter.register$argument_0.receiveTouches","getFiberCurrentPropsFromNode$1","getNodeFromInstance","ResponderEventPlugin.injection.injectGlobalResponderHandler$argument_0.onChange","getNearestMountedFiber","assertIsMounted","findCurrentFiberUsingSlowPath","findCurrentHostFiberImpl","defaultDiffer","restoreDeletedValuesInNestedArray","diffNestedProperty","addNestedProperty","clearNestedProperty","diffProperties","mountSafeCallback_NOT_REALLY_SAFE","<anonymous>","ReactNativeFiberHostComponent","_proto.blur","_proto.focus","_proto.measure","_proto.measureInWindow","_proto.measureLayout","_proto.setNativeProps","setIsStrictModeForDevtools","clz32Fallback","getHighestPriorityLanes","getNextLanes","checkIfRootIsPrerendering","computeExpirationTime","claimNextTransitionLane","claimNextRetryLane","createLaneMap","markRootUpdated$1","markRootFinished","markSpawnedDeferredLane","markRootEntangled","lanesToEventPriority","shim$1","shim","extraDevToolsConfig.getInspectorDataForViewTag","extraDevToolsConfig.getInspectorDataForViewAtPoint","allocateTag","recursivelyUncacheFiberNode","finalizeInitialChildren","parentInstance._children.map$argument_0","getPublicInstance","createCursor","pop","push","createCapturedValueAtFiber","pushHostContainer","popHostContainer","pushHostContext","popHostContext","upgradeHydrationErrorsToRecoverable","is","pushProvider","popProvider","scheduleContextWorkOnParentPath","propagateContextChanges","propagateParentContextChanges","checkIfContextChanged","prepareToReadContext","readContext","readContextDuringReconciliation","readContextForConsumer","signal.addEventListener","abort","listeners.forEach$argument_0","createCache","releaseCache","scheduleCallback$2$argument_1","ensureRootIsScheduled","flushSyncWorkAcrossRoots_impl","processRootScheduleInImmediateTask","scheduleTaskForRootDuringMicrotask","performWorkOnRootViaSchedulerTask","performSyncWorkOnRoot","requestTransitionLane","entangleAsyncAction","currentEntangledActionThenable.then","pingEngtangledActionScope","chainThenableValue","thenableWithOverride.then","thenable.then$argument_0","thenable.then$argument_1","ReactSharedInternals.S","peekCacheFromPool","pushTransition","getSuspendedCache","shallowEqual","noopSuspenseyCommitThenable.then","isThenableResolved","noop","trackUsedThenable","thenableState.then$argument_0","thenableState.then$argument_1","getSuspendedThenable","checkIfUseWrappedInAsyncCatch","finishQueueingConcurrentUpdates","enqueueUpdate$1","enqueueConcurrentHookUpdate","enqueueConcurrentRenderForLane","markUpdateLaneFromFiberToRoot","getRootForUpdatedFiber","initializeUpdateQueue","cloneUpdateQueue","createUpdate","enqueueUpdate","entangleTransitions","enqueueCapturedUpdate","suspendIfUpdateReadFromEntangledAsyncAction","processUpdateQueue","callCallback","commitCallbacks","pushHiddenContext","reuseHiddenContextOnStack","popHiddenContext","throwInvalidHookError","areHookInputsEqual","renderWithHooks","finishRenderingHooks","renderWithHooksAgain","TransitionAwareHostComponent","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","updateWorkInProgressHook","createFunctionComponentUpdateQueue","useThenable","use","useMemoCache","current.data.map$argument_0","basicStateReducer","updateReducer","updateReducerImpl","rerenderReducer","updateSyncExternalStore","pushStoreConsistencyCheck","updateStoreInstance","subscribeToStore","subscribe$argument_0","checkIfSnapshotChanged","forceStoreRerender","mountStateImpl","updateOptimisticImpl","dispatchActionState","actionNode.then","runActionStateAction","handleActionReturnValue","returnValue.then$argument_0","returnValue.then$argument_1","onActionSuccess","onActionError","notifyActionListeners","actionStateReducer","mountActionState","updateActionState","updateActionStateImpl","actionStateActionEffect","rerenderActionState","pushSimpleEffect","createEffectInstance","updateRef","mountEffectImpl","updateEffectImpl","mountEffect","updateEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","mountDeferredValueImpl","updateDeferredValueImpl","startTransition","dispatchSetStateInternal$argument_2.then","useHostTransitionStatus","updateId","updateRefresh","refreshCache","dispatchReducerAction","dispatchSetState","dispatchSetStateInternal","dispatchOptimisticSetState","isRenderPhaseUpdate","enqueueRenderPhaseUpdate","entangleTransitionUpdate","HooksDispatcherOnMount.useCallback","HooksDispatcherOnMount.useImperativeHandle","HooksDispatcherOnMount.useLayoutEffect","HooksDispatcherOnMount.useInsertionEffect","HooksDispatcherOnMount.useMemo","HooksDispatcherOnMount.useReducer","HooksDispatcherOnMount.useRef","HooksDispatcherOnMount.useState","HooksDispatcherOnMount.useDeferredValue","HooksDispatcherOnMount.useTransition","HooksDispatcherOnMount.useSyncExternalStore","HooksDispatcherOnMount.useId","HooksDispatcherOnMount.useOptimistic","HooksDispatcherOnMount.useCacheRefresh","HooksDispatcherOnUpdate.useState","HooksDispatcherOnUpdate.useDeferredValue","HooksDispatcherOnUpdate.useTransition","HooksDispatcherOnUpdate.useOptimistic","HooksDispatcherOnRerender.useState","HooksDispatcherOnRerender.useDeferredValue","HooksDispatcherOnRerender.useTransition","HooksDispatcherOnRerender.useOptimistic","unwrapThenable","coerceRef","throwOnInvalidObjectType","resolveLazy","createChildReconciler","deleteChild","deleteRemainingChildren","mapRemainingChildren","useFiber","placeChild","placeSingleChild","updateTextNode","updateElement","updatePortal","updateFragment","createChild","updateSlot","updateFromMap","reconcileChildrenArray","oldFiber.forEach$argument_0","reconcileChildrenIterator","reconcileChildFibersImpl","pushPrimaryTreeSuspenseHandler","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","applyDerivedStateFromProps","classComponentUpdater.enqueueSetState","classComponentUpdater.enqueueReplaceState","classComponentUpdater.enqueueForceUpdate","checkShouldComponentUpdate","constructClassInstance","callComponentWillReceiveProps","mountClassInstance","resolveClassComponentProps","defaultOnRecoverableError","logUncaughtError","setTimeout$argument_0","logCaughtError","createRootErrorUpdate","lane.callback","createClassErrorUpdate","initializeClassErrorUpdate","update.payload","update.callback","throwException","reconcileChildren","updateForwardRef","updateMemoComponent","updateSimpleMemoComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","markRef","updateFunctionComponent","replayFunctionComponent","updateClassComponent","finishClassComponent","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","updateSuspenseComponent","mountSuspensePrimaryChildren","mountWorkInProgressOffscreenFiber","retrySuspenseComponentWithoutHydrating","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","updateSuspenseListComponent","resetSuspendedCurrentOnMountInLegacyMode","bailoutOnAlreadyFinishedWork","checkScheduledUpdateOrContext","attemptEarlyBailoutIfNoScheduledUpdate","beginWork","scheduleRetryEffect","cutOffTailIfNeeded","bubbleProperties","completeWork","unwindWork","unwindInterruptedWork","commitHookEffectListMount","commitHookEffectListUnmount","commitClassCallbacks","safelyCallComponentWillUnmount","safelyAttachRef","safelyDetachRef","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","insertOrAppendPlacementNode","commitBeforeMutationEffects","commitLayoutEffectOnFiber","detachFiberAfterEffects","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","getRetryCache","attachSuspenseRetryListeners","wakeables.forEach$argument_0","recursivelyTraverseMutationEffects","commitMutationEffectsOnFiber","commitReconciliationEffects","recursivelyTraverseLayoutEffects","recursivelyTraverseDisappearLayoutEffects","recursivelyTraverseReappearLayoutEffects","commitOffscreenPassiveMountEffects","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","commitPassiveMountOnFiber","recursivelyTraverseReconnectPassiveEffects","recursivelyTraverseAtomicPassiveEffects","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","detachAlternateSiblings","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","DefaultAsyncDispatcher.getCacheForType","requestUpdateLane","requestDeferredLane","scheduleUpdateOnFiber","performWorkOnRoot","commitRootWhenReady","isRenderConsistentWithExternalStores","markRootSuspended","resetWorkInProgressStack","prepareFreshStack","handleThrow","pushDispatcher","pushAsyncDispatcher","renderDidSuspendDelayIfPossible","renderRootSync","workLoopSync","renderRootConcurrent","lanes","workLoopConcurrentByScheduler","performUnitOfWork","replaySuspendedUnitOfWork","throwAndUnwindWorkLoop","completeUnitOfWork","unwindUnitOfWork","commitRoot","scheduleCallback$argument_1","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","releaseRootPooledCache","flushPendingEffects","flushPassiveEffects","captureCommitPhaseErrorOnRoot","captureCommitPhaseError","attachPingListener","pingSuspendedRoot","retryTimedOutBoundary","retryDehydratedSuspenseBoundary","resolveRetryWakeable","scheduleCallback","FiberNode","createFiberImplClass","shouldConstruct","createWorkInProgress","resetWorkInProgress","createFiberFromTypeAndProps","createFiberFromFragment","createFiberFromText","createFiberFromPortal","FiberRootNode","createPortal$1","findHostInstance","updateContainer","nativeOnUncaughtError","nativeOnCaughtError","unmountComponentAtNode","updateContainer$argument_3","exports.createPortal","exports.dispatchCommand","exports.findHostInstance_DEPRECATED","exports.findNodeHandle","exports.isChildPublicInstance","exports.render","exports.sendAccessibilityEvent","exports.unmountComponentAtNodeAndRemoveContainer"],"mappings":"AAA;ACyB;CDe;AEE;mCCO;uBCG;aDE;mBEE;eFE;yBGyB,cH;ODO;CFoF;AOC;CPwB;AQC;CRW;ASsB;CTM;AUE;CVmD;AWM;CXQ;AYC;CZY;AaC;CbE;AcC;CdE;AeC;Cf2B;kBgBE;GhBQ;mBiBC;GjBO;WkBC;GlBE;cmBE;GnBQ;iBoBK;GpBE;aqBI;GrBE;wBsBI;ECC,eD;EEC;GFE;CtBW;AyBE;CzBY;A0BC;C1BO;A2BC;C3BI;gB4BE;G5BE;A6BE;C7BE;A8BC;C9BE;A+BW;C/BE;AgCC;ChCI;AiCC;CjC4B;AkCC;ClCW;AmCC;CnCW;gBoCG;KpCE;sBqCC;KrCgC;AsCG;CtCU;AuCC;CvCU;AwCC;CxCE;AyCG;CzCS;A0CyD;C1CI;A2CC;C3CI;A4CC;C5Cc;A6CC;C7Ce;A8CC;C9CgB;A+CC;C/CM;AgDC;ChDQ;mBiDE;KjDE;mBkDE;KlD0Q;oCmDG;OnDE;AoDK;CpDyD;AqDC;CrDO;AsDI;CtDc;AuDO;CvDe;AwDC;CxDW;AyDC;CzDS;A0DC;C1DgB;qB2Dc;O3DuC;A4D+B;C5DE;A6DC;C7DE;A8DE;C9DQ;A+DE;C/DkB;AgEE;mBCK;GDuC;ChEC;gBkEE;GlEE;kBmEC;GnE+B;iCoEE;CpEE;sBqEE;CrEQ;YsEE;GtEO;AuEE;CvEa;AwEC;CxEG;AyEC;CzE2E;A0EC;C1ES;A2EK;C3EQ;A4EC;C5EqC;A6EC;C7EqD;A8EC;C9EgB;A+EC;C/EgB;AgFC;ChFmF;AiFC;SCC;GDM;CjFC;qCkFC;ICC;KDK;kBEE;KFE;mBGC;KHE;qBIC;KJK;6BKC;KLK;2BMC;KNa;4BOC;KPa;GlFE;A0Fc;C1FM;A2FI;C3FG;A4FG;C5FqD;A6FC;C7FuC;A8FC;C9FO;A+FC;C/FwC;AgGC;ChGK;AiGC;CjGK;AkGC;ClGG;AmGC;CnGI;AoGC;CpG8C;AqGC;CrGS;AsGC;CtGS;AuGC;CvGS;AwGC;CxGI;AyGC;CzGI;gC0GG;K1GI;oC2GC;K3GI;A4GK;C5GK;A6GC;C7GS;A8GC;gDCE;GDE;C9GM;AgHC;ChHI;AiHc;CjHE;AkHC;ClHG;AmHC;CnHI;AoHG;CpHiB;AqHK;CrHM;AsHC;CtHI;AuHC;CvHiB;AwHC;CxHM;AyHE;CzHW;A0HC;C1HE;A2HK;C3HG;A4HC;C5HG;A6HC;C7HY;A8HC;C9H4D;A+HC;C/H6C;AgIC;ChIgB;AiIC;CjIK;AkIC;ClIE;AmIC;CnIG;AoIC;CpIa;QkFI;gCmDI;enDE;uBoDE;8BCE;aDE;WpDC;SlFC;AwIW;CxIM;AyIC;uCCG;KDE;CzIC;A2IO;C3IU;A4IC;C5I2C;A6IC;C7ImB;A8IC;C9I0E;A+IC;C/IkB;AgJC;ChJG;AiJC;CjJI;AkJK;YCQ;ODE;ClJM;AoJC;CpJa;AqJC;YCM;ODE;IEG;KFI;IGC;KHK;CrJG;yByJE;CzJO;A0JE;C1JK;A2JC;C3JI;A4JC;C5JK;A6JE;C7JqB;wC8JU,c9J;A+JC;C/JG;AgKC,kBhK;AiKC;UCyB;WDM;UEC;WFM;CjKgB;AoKE;CpKQ;AqKC;CrKQ;AsKI;CtKwB;AuKC;CvKS;AwKC;CxKG;AyKC;CzKG;A0KC;C1K0B;A2KC;C3KY;A4KE;C5KQ;A6KC;C7KU;A8KC;C9KE;A+KC;C/KgB;AgLC;ChLS;AiLC;CjL2C;AkLE;ClLK;AmLC;CnL8H;AoLC;CpLO;AqLC;CrLS;AsLG;CtLK;AuLC;CvLG;AwLC;CxLI;AyLW;CzLI;A0LC;C1LK;A2LC;C3L6B;A4LC;C5LkB;A6LC;C7LwB;A8LC;C9LW;A+LC;C/LI;AgMC;ChMkB;AiMC;CjMY;AkMC;ClMmC;AmMC;CnME;AoMC;CpMgB;AqMC;CrMM;AsMC;mCCY;aDE;CtMmB;AwMC;CxME;AyMC;CzMG;A0MC;C1M2G;A2MC;C3MsB;A4MC;C5MiC;A6MC;C7MY;A8MC;C9MI;A+MC;mBCC;GDE;C/MC;AiNC;CjNS;AkNC;ClNG;AmNC;CnNuB;AoNC;CpNO;AqNC;YCoB;ODE;CrNa;AuNC;CvN0B;AwNC;QCK;SDE;QEC;SFE;CxNG;A2NC;C3Na;A4NC;C5Na;A6NC;C7NG;A8NC;C9NE;A+NC;C/NsC;AgOC;ChOG;AiOC;CjO+B;AkOC;ClOE;AmOC;CnOW;AoOC;CpOc;AqOC;CrOE;AsOC;CtOE;AuOC;CvOU;AwOC;CxOe;AyOC;CzOE;A0OC;C1OE;A2OC;C3OE;A4OC;C5OE;A6OC;W3JI;K2JE;M3JM;O2JE;C7OE;A8OC;C9OG;A+OC,6B/O;AgPC;ChPQ;AiPC;CjPiB;AkPC;ClPQ;AmPC;CnPc;AoPC;cCuC,cD;CpPO;AsPC;CtPE;AuPC;CvPE;AwPC;CxPE;AyPC;CzPiB;A0PC;C1PgB;A2PC;C3PG;A4PC;C5PwC;A6PC;C7PqB;A8PC;C9PM;A+PC;C/PQ;AgQC;ChQQ;iBiQ6B;KjQM;yBkQG;KlQQ;qBmQC;KnQE;wBoQC;KpQE;aqQC;KrQc;gBsQC;KtQ4B;YuQC;KvQI;cwQC;KxQM;sByQE;KzQG;mB0QC;K1QW;0B2QC;K3QwB;W4QC;K5QW;mB6QI;K7QmB;qB8QE;K9QK;c+Qc;K/QE;sBgRE;KhRQ;mBiRC;KjRS;mBkRM;KlRG;cmRgB;KnRE;sBoRE;KpRU;mBqRC;KrRS;mBsRM;KtRM;AuRM;CvRK;AwRC;CxRG;AyRC;CzRa;A0RC;C1RG;A2RC;ECC;GDO;EEC;GFM;EGC;GHO;EIC;GJK;EKC;GLc;EMC;GNK;EOC;GPU;EQC;GRmC;ESC;GTe;EUC;GVe;EWC;GXoE;EYC;GZgD;EaC;GbqE;EcC;uBCsF;ODE;GdE;EgBC;uBDoE;OCE;GhBE;EiBC;GjB2K;SzMC;GyM2B;C3RC;A6SK;C7SQ;A8SC;C9Sa;A+SC;C/SG;AgTC;ChTI;AiTE;CjTsB;AkTC;ClTe;mBmTE;GnTU;uBoTC;GpTW;sBqTC;GrTU;AsTE;CtTe;AuTC;CvTa;AwTC;CxTa;AyTC;CzTgC;A0TC;C1Tc;MkFI;OlFyB;A2TC;C3TE;A4TC;eCK;KDE;C5TE;A8TC;eDQ;KCE;C9TE;A+TC;kBCI;GDE;C/TE;AiUC;CjUI;AkUC;qBCI;KDE;sBEC;KFE;uBEK;KFU;ClUC;AqUC;CrUqK;AsUK;CtUU;AuUC;CvU+B;AwUC;CxUmD;AyUC;CzUgC;A0UC;C1U4D;A2UC;C3UqB;A4UC;C5Uc;A6UC;C7UwB;A8UC;C9UyB;A+UC;C/UgM;AgVC;ChVkC;AiVO;CjVE;AkVC;ClVQ;AmVC;CnVqR;AoVC;CpVO;AqVC;CrVU;AsVC;CtVa;AuVC;CvVK;AwVC;CxVuB;AyVC;CzVsF;A0VC;C1VM;A2VC;C3V8B;A4VC;C5VI;A6VC;C7VmF;A8VC;C9V+X;A+VC;C/VO;AgWC;ChWuB;AiWC;CjWuB;AkWC;ClW2U;AmWC;CnW6D;AoWC;CpWgC;AqWC;CrWqB;AsWC;CtWqC;AuWC;CvWU;AwWC;CxWe;AyWC;CzWuB;A0WC;C1WqB;A2WC;C3WE;A4WC;C5WkB;A6WC;C7WmB;A8WC;C9W2D;A+WK;C/WqE;AgXC;ChXgH;AiXC;CjXe;AkXG;ClXQ;AmXC;CnXmJ;AoXC;CpXuB;AqXC;oBCE;GDI;CrXC;AuXC;CvXsC;AwXC;CxXyP;AyXC;CzXgD;A0XC;C1XK;A2XC;C3XwC;A4XC;C5XsG;A6XC;C7Xa;A8XC;C9XO;A+XC;C/Xe;AgYC;ChY8I;AiYC;CjY4F;AkYC;ClY4B;AmYE;CnYK;AoYC;CpY6B;AqYC;CrYa;AsYC;CtYkB;AuYC;CvY2B;AwYC;CxYkC;AyYC;CzY6C;qB0YE;K1YO;A2YmC;C3YW;A4YC;C5YS;A6YC;C7YgC;A8YC;C9Y4J;A+YC;C/Y0B;AgZC;ChZiC;AiZC;CjZoB;AkZC;ClZgB;AmZC;CnZ0C;AoZC;CpZwB;AqZC;CrZI;AsZC;CtZI;AuZC;CvZgB;AwZC;CxZ4D;AyZC;CzZE;A0ZC;oBCgC;aDM;C1ZyE;A4ZC;C5ZG;A6ZC;C7ZI;A8ZC;C9ZmC;A+ZC;C/Z2D;AgaC;Cha4B;AiaC;CjasB;AkaC;2CC4C;SDG;ClauB;AoaC;CpawB;AqaC;CrauB;AsaC;Cta0D;AuaC;CvaK;AwaC;CxaK;AyaC;Cza4C;A0aC;C1aM;A2aC;C3asC;A4aC;C5ae;A6aC;C7aiB;A8aC;C9aO;A+aC;C/aK;AgbC;ChbqB;AibC;CjbE;AkbC;ClbuB;AmbC;CnbE;AobC;CpbG;AqbC;CrboC;AsbC;Ctb+B;AubC;CvbkF;AwbC;CxbI;AybC;CzbI;A0bC;C1bc;A2bC;C3byC;A4bC;C5bU;A6bC;C7ba;A8bC;C9be;A+be;C/bQ;AgcC;ChcQ;AicC;sCCG;KDE;CjcC;qB6DC;C7DW;uBmcwB;CncO;0BocC;Cpcc;sCqcC;CrcQ;yBscC;CtcsB;gCucC;CvcE;iBwcC;CxcqD;iCycC;Czca;mD0cE;C1cG"}],[{"names":["<global>","codegenNativeComponent"],"mappings":"AAA;ACiC;CDqC"}],[{"names":["<global>","requireNativeComponent","createReactNativeComponentClass$argument_1"],"mappings":"AAA;+BC4B;qDCG;iDDC;4BDC"}],[{"names":["<global>","createReactNativeComponentClass"],"mappings":"AAA;wCC2B;CDK"}],[{"names":["<global>","Button"],"mappings":"AAA;ICqS;CDwG"}],[{"names":["<global>","TextImpl","useTextPressability","useMemo$argument_0","_onPressIn","_onPressOut","onResponderGrant","onResponderMove","onResponderRelease","onResponderTerminate","NativePressableVirtualText","NativePressableText"],"mappings":"AAA;ICwC;CD6R;AEwB;yBCiB;mBCQ;ODG;oBEE;OFG;GDW;ICc;YGI;aHK;YIC;aJK;YKC;aLK;YMC;aNK;WDU;ICc,2CD;CFG;IUgB;CVqB;IWW;CXqB"}],[{"names":["<global>","PressabilityDebugView","isEnabled","setEnabled"],"mappings":"AAA;OCqC;CDgC;OEI;CFK;OGE"}],[{"names":["<global>","createSquare","normalizeRect"],"mappings":"AAA;OCoB;CDE;OEE"}],[{"names":["<global>","usePressability","useEffect$argument_0","<anonymous>"],"mappings":"AAA;eC+B;YCW;GDI;YCI;aCE;ODE;GDE"}],[{"names":["<global>","isActiveSignal","isActivationSignal","isPressInSignal","isTerminalSignal","Pressability","constructor","configure","reset","getEventHandlers","setLongPressDeactivationDistance","_createEventHandlers","focusEventHandlers.onBlur","focusEventHandlers.onFocus","responderEventHandlers.onStartShouldSetResponder","responderEventHandlers.onResponderGrant","setTimeout$argument_0","responderEventHandlers.onResponderMove","responderEventHandlers.onResponderRelease","responderEventHandlers.onResponderTerminate","responderEventHandlers.onResponderTerminationRequest","responderEventHandlers.onClick","responderEventHandlers.onStartShouldSetResponder.testOnly_pressabilityConfig","hoverPointerEvents.onPointerEnter","hoverPointerEvents.onPointerLeave","onMouseEnter","onMouseLeave","_receiveSignal","PressabilityPerformanceEventEmitter.emitEvent$argument_0","_performTransitionSideEffects","_activate","_deactivate","_measureResponderRegion","_measureCallback","_isTouchWithinResponderRegion","_handleLongPress","_cancelHoverInDelayTimeout","_cancelHoverOutDelayTimeout","_cancelLongPressDelayTimeout","_cancelPressDelayTimeout","_cancelPressOutDelayTimeout","normalizeDelay","getTouchFromPressEvent","convertPointerEventToMouseEvent"],"mappings":"AAA;uBCgP;6CDE;2BEE;wCFE;wBGE;6CHG;yBIE;qEJC;eKoH;ECuB;GDE;EEE;GFE;EGK;GHU;EIK;GJK;EKE;GLE;EME;cCE;ODK;eEC;OFK;iCGI;OHG;wBIE;+CCW;WDE;iDCU;SDE;OJG;uBME;ONiC;0BOE;OPE;4BQE;ORE;qCSE;OTG;eUE;OVkB;QWO,kBX;4CYY;qDPO;eOE;SZK;4CaG;wDRQ;iBQE;SbM;4BcY;6DTW;uBSE;edM;4BeE;6DVW;uBUE;efM;GNQ;EsBM;oDCM;ODK;GtBqB;EwBM;GxB0D;EyBE;GzBQ;E0BE;gDfe;SeE;G1BM;E2BE;G3BU;qB4BE;G5BiB;E6BE;G7B4C;E8BE;G9BO;E+BE;G/BK;EgCE;GhCK;EiCE;GjCK;EkCE;GlCK;EmCE;GnCK;CLC;AyCE;CzCM;+B0CE;C1CU;A2CE"}],[{"names":["<global>","playTouchSound"],"mappings":"AAA;kBCa;GDI"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","shouldEmitW3CPointerEvents","shouldPressibilityUseW3CPointerEventsForHover"],"mappings":"AAA;8BC0B,WD;iDEC,WF"}],[{"names":["<global>","enableHover","disableHover","isHoverEnabled"],"mappings":"AAA;wBCoC;KDK;yBEE;KFK;OGQ"}],[{"names":["<global>","PressabilityPerformanceEventEmitter","constructor","addListener","removeListener","emitEvent","_listeners.forEach$argument_0"],"mappings":"AAA;ACmB;ECG,gBD;EEE;GFE;EGE;GHK;EIE;4BCM,2BD;GJC;CDC"}],[{"names":["<global>","createReactNativeComponentClass$argument_1"],"mappings":"AAA;8CCoE;oCDG;yDCM;+CDG"}],[{"names":["<global>","TouchableNativeFeedback","SelectableBackground","SelectableBackgroundBorderless","Ripple","canUseNativeForeground","_createPressabilityConfig","onPressIn","onPressMove","onPressOut","_dispatchPressedStateChange","_dispatchHotspotUpdate","render","componentDidUpdate","componentDidMount","componentWillUnmount","<anonymous>"],"mappings":"AAA;ACkI;OCc;IDI;OEa;IFI;OGsB;GHa;iDIK;6BJC;EKM;iBCkB;ODQ;mBEC;OFI;kBGC;OHO;GLE;ESE;GTY;EUE;GViB;EWE;GX+F;EYE;GZK;EaE;GbE;EcE;GdE;CDC;MgBM;iDhBG;MgBG,4ChB"}],[{"names":["<global>","TouchableOpacity","_createPressabilityConfig","onBlur","onFocus","onPressIn","onPressOut","_setOpacityTo","_opacityActive","_opacityInactive","_getChildStyleOpacityWithDefault","render","componentDidUpdate","componentDidMount","componentWillUnmount","Touchable"],"mappings":"AAA;AC8K;ECS;cCa;ODO;eEC;OFO;iBGG;OHS;kBIC;OJK;GDE;EMK;GNO;EOE;GPE;EQE;GRE;ESE;GTK;EUE;GVyF;EWE;GXgB;EYE;GZE;EaE;GbG;CDC;IeK;mDfM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","default.get__FlatList","default.get__Image","default.get__ScrollView","default.get__SectionList","default.get__Text","default.get__View"],"mappings":"AAA;EC0B;GDE;EEC;GFE;EGC;GHE;EIC;GJE;EKC;GLE;EMC;GNE"}],[{"names":["<global>","addImpl","subtractImpl","divideImpl","multiplyImpl","moduloImpl","diffClampImpl","_combineCallbacks","<anonymous>","maybeVectorAnim","springImpl","start","stop","reset","_startNativeLoop","_isUsingNativeDriver","timingImpl","decayImpl","sequenceImpl","onComplete","animations.forEach$argument_0","parallelImpl","result.start","cb","result.stop","result.reset","result._startNativeLoop","result._isUsingNativeDriver","delayImpl","staggerImpl","animations.map$argument_0","loopImpl","restart","forkEventImpl","unforkEventImpl","eventImpl"],"mappings":"AAA;gBCiD;CDK;qBEE;CFK;mBGE;CHK;qBIE;CJK;mBKE;CLE;sBME;CNM;0BOE;WCK;KDG;CPI;wBSE;CTgD;mBUE;gBCI;GDsB;aCG;ODE;YEE;OFE;aGE;OHE;wBIE;OJG;4BKE;OLE;CVG;mBgBE;gBLI;GKsB;aLI;OKE;YJE;OIE;aHE;OGE;wBFE;OEG;4BDE;OCE;ChBG;kBiBE;gBNI;GMU;aNI;OME;YLE;OKE;aJE;OIE;wBHE;OGG;4BFE;OEE;CjBG;qBkBE;WPK;yBQC;ORgB;KOO;UNE;KMI;WLE;yBOC;OPI;KKE;sBJE;KII;0BHE;KGE;ClBE;qBqBO;WCU;yBFM;mBGC;SHY;OEO;KDC;UGE;yBJC;OIG;KHC;WIE;yBLC;OKI;KJC;sBKE;KLI;0BME;KNE;CrBI;kB4BE;C5BQ;oB6BE;mBCK;KDE;C7BE;iB+BQ;WpBQ;sBqBC;OrBY;KoBU;UnBE;KmBG;WlBE;KkBI;sBjBE;KiBI;0BhBE;KgBE;C/BE;AiCE;WzBU;KyBG;CjCE;AkCE;ClCO;kBmCE;CnCU"}],[{"names":["<global>","attachNativeEventImpl","traverse","eventMappings.forEach$argument_0","detach","validateMapping","validate","argMapping.forEach$argument_0","AnimatedEvent","constructor","__addListener","__removeListener","_listeners.filter$argument_0","__attach","__detach","__getHandler","<anonymous>","_argMapping.forEach$argument_0","_callListeners","_listeners.forEach$argument_0"],"mappings":"AAA;OCgC;mBCU;GDgB;0BEY;KFM;IGI;8BDE;SCO;KHE;CDE;AKE;mBCC;GDwC;qBEM;GFE;CLC;OQE;ECO;GDc;EEE;GFE;EGE;6CCC,iCD;GHC;EKE;GLY;EME;GNO;EOE;eCI;SDM;WCO;uBdM;OcqB;+BCC;ODE;KDG;GPC;mBUE;4BCC,6BD;GVC"}],[{"names":["<global>","createNativeOperations","nativeOperations.methodName","queue.push$argument_0","<anonymous>","API.setWaitingForIdentifier","API.unsetWaitingForIdentifier","API.disableQueue","API.createAnimatedNode","API.updateAnimatedNodeConfig","API.startListeningToAnimatedNodeValue","API.stopListeningToAnimatedNodeValue","API.connectAnimatedNodes","API.disconnectAnimatedNodes","API.stopAnimation","API.setAnimatedNodeValue","API.setAnimatedNodeOffset","API.flattenAnimatedNodeOffset","API.extractAnimatedNodeOffset","API.connectAnimatedNodeToView","API.disconnectAnimatedNodeFromView","API.restoreDefaultValues","API.dropAnimatedNode","API.addAnimatedEventToView","API.removeAnimatedEventFromView","ensureGlobalEventEmitterListeners","RCTDeviceEventEmitter.addListener$argument_1","generateNewNodeTag","generateNewAnimationId","assertNativeAnimatedModule","shouldUseNativeDriver","transformDataType","default.get__nativeEventEmitter"],"mappings":"AAA;AC+D;qCC+B;ODS;qCCK;qBCS,qBD;qBCG,qBD;ODO;CDK;MIU;OJO;MIC;OJE;EKE;GLa;EME;GNW;EOE;GPU;MIG;OJoB;MIC;OJuB;EQE;GRE;ESE;GTE;EUE;GVE;EWE;GXE;EYE;GZE;EaE;GbE;MIG;OJO;MIC;OJO;EcE;GdE;EeE;GfE;EgBE;GhBE;EiBE;GjBE;EkBE;GlBE;EmBE;GnBE;EoBE;GpBE;EqBE;GrBE;EsBE;GtBE;EuBE;GvBM;EwBE;GxBU;AyBG;ICS;KDQ;MCK;ODW;CzBE;A2BE;C3BE;A4BE;C5BE;A6BE;C7BE;A8BI;C9B2B;A+BE;C/BgB;EgCY;GhCU"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","shouldUseTurboAnimatedModule"],"mappings":"AAA;ACa;CDM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","flushValue","findAnimatedStyles","leaves.forEach$argument_0","_executeAsAnimatedBatch","AnimatedValue","constructor","__detach","NativeAnimatedAPI.getValue$argument_1","__getValue","__makeNative","addListener","removeListener","removeAllListeners","<anonymous>","NativeAnimatedHelper.nativeEventEmitter.addListener$argument_1","remove","setValue","_executeAsAnimatedBatch$argument_1","setOffset","flattenOffset","extractOffset","stopAnimation","resetAnimation","__onAnimatedValueUpdateReceived","interpolate","animate","animation.start$argument_1","animation.start$argument_2","stopTracking","track","_updateValue","__getNativeConfig"],"mappings":"AAA;OCqD;ECE;GDO;iBEE,qBF;CDC;AIO;CJI;eKU;ECU;GDe;EEE;wDCE;ODE;GFI;EIE;GJE;EKE;GLK;EME;GNO;EOE;GPM;EQE;GRM;ESE;QCS;SDI;cEI;OFQ;GTE;EYQ;gECU;4EDC;GZG;EcS;GdK;EeQ;GfM;EgBQ;gEHI;0EGC;GhBG;EiBS;GjBW;EkBO;GlBS;EmBE;GnBK;EoBM;GpBI;EqBQ;MCU;ODI;MEC;OFM;GrBI;EwBK;GxBG;EyBK;GzBK;E0BE;G1BU;E2BE;G3BO"}],[{"names":["<global>","InteractionManagerImpl.runAfterInteractions","Promise$argument_0","cancel","InteractionManagerImpl.createInteractionHandle","InteractionManagerImpl.clearInteractionHandle","InteractionManagerImpl.setDeadline","_scheduleUpdate","_processUpdate","_addInteractionSet.forEach$argument_0","_deleteInteractionSet.forEach$argument_0"],"mappings":"AAA;EC0C;gCCS;KDU;cEI;OFE;GDE;EIK;GJM;EKK;GLM;EMgB;GNE;AOc;CPQ;AQK;6BCI,qCD;gCEC,wCF;CRmC"}],[{"names":["<global>","TaskQueue","constructor","enqueue","enqueueTasks","tasks.forEach$argument_0","cancelTasks","_queueStack.map$argument_0","queue.tasks.filter$argument_0","_queueStack.map.filter$argument_0","hasTasksToProcess","processNext","_getCurrentQueue","_genPromise","task.gen.then$argument_0","task.gen.then._catch$argument_0","setTimeout$argument_0"],"mappings":"AAA;AC0C;ECQ;GDG;EEO;GFE;EGE;kBCC,0BD;GHC;EKE;WCG;kCCE,0CD;QDC;cGC,mDH;GLC;ESY;GTE;EUK;GV4B;EWS;GXkB;EYE;YCY;ODQ;aEC;mBCC;SDG;OFC;GZC;CDC"}],[{"names":["<global>","reject","setTimeout$argument_0","runAfterInteractions","Promise$argument_0","setImmediate$argument_0","cancel","createInteractionHandle","clearInteractionHandle","addListener","remove","setDeadline"],"mappings":"AAA;AC6B;aCC;GDE;CDC;EGiE;gCCS;iCCC;ODwB;KDC;MGK;OHE;GHE;EOO;GPE;EQO;GRE;ESK;MCE,WD;GTE;EWS;GXE"}],[{"names":["<global>","createNumericInterpolation","<anonymous>","interpolate","mapStringToNumericComponents","createStringInterpolation","outputRange.every$argument_0","output.components.every$argument_0","outputRange.map$argument_0","output.components.filter$argument_0","numericComponents._.map$argument_0","numericComponents.map$argument_0","interpolations.map$argument_0","outputRange._.components.map$argument_0","findRange","checkValidRanges","checkValidInputRange","checkInfiniteRange","AnimatedInterpolation","constructor","_getInterpolation","__makeNative","__getValue","__attach","__detach","__getNativeConfig"],"mappings":"AAA;AC0C;SCsB;GDiB;CDC;AGE;CHkE;AIK;CJsC;AKU;wBCS,oCD;QCM,yDD;wBCK;UCE;yEDE;SDC;oBGO;mCCK,0BD,CH;kDKE;yCCG,2BD;MLC;WHG;wCUC,qCV;aWG,8CX;KGE;WHE;wCUC;OVK;KGE;CLE;AcE;CdQ;AeE;CfgB;AgBE;ChBO;AiBE;CjBe;ekBE;ECO;GDY;EEE;GFU;EGE;GHG;EIE;GJO;EfE;GeI;EKE;GLG;EME;GNG;EOE;+DjBU;OiBQ;GPc"}],[{"names":["<global>","validateInterpolation","validateStyles","validateTransform","configs.forEach$argument_0"],"mappings":"AAA;OCkB;CDU;OEE;CFQ;OGE;kBCgB;GDM"}],[{"names":["<global>","allowInterpolationParam","allowStyleProp","allowTransformProp","isSupportedColorStyleProp","isSupportedInterpolationParam","isSupportedStyleProp","isSupportedTransformProp"],"mappings":"AAA;OC+F;CDE;OEE;CFE;OGE;CHE;OIE;CJE;OKE;CLE;OME;CNE;OOE"}],[{"names":["<global>","EasingStatic.step0","EasingStatic.step1","EasingStatic.linear","EasingStatic.ease","EasingStatic.quad","EasingStatic.cubic","EasingStatic.poly","<anonymous>","EasingStatic.sin","EasingStatic.circle","EasingStatic.exp","EasingStatic.elastic","EasingStatic.back","EasingStatic.bounce","EasingStatic.bezier","EasingStatic._in","EasingStatic.out","EasingStatic.inOut"],"mappings":"AAA;ECiE;GDE;EEK;GFE;EGQ;GHE;EIQ;GJK;EKQ;GLE;EMQ;GNE;EOQ;WCC,6BD;GPC;ESO;GTE;EUO;GVE;EWO;GXE;EYY;WJE,mEI;GZC;EaQ;WLC,8BK;GbC;EcO;GdiB;EeS;GfG;EgBK;GhBE;EiBK;WTC,sBS;GjBC;EkBO;WVC;KUK;GlBC"}],[{"names":["<global>","A","B","C","calcBezier","getSlope","binarySubdivide","newtonRaphsonIterate","bezier","getTForX","BezierEasing"],"mappings":"AAA;AC6B;CDE;AEC;CFE;AGC;CHE;AIG;CJE;AKG;CLE;AME;CNyB;AOE;CPgB;eQE;ECoB;GDkC;SEE;GFY"}],[{"names":["<global>","AnimatedWithChildren","__makeNative","__addChild","__removeChild","__getChildren","__callListeners"],"mappings":"AAA;eCoB;ECG;GDe;EEE;GFU;EGE;GHa;EIE;GJE;EKE;GLY"}],[{"names":["<global>","_assertNativeAnimatedModule","AnimatedNode","constructor","__attach","__detach","__getValue","__getAnimatedValue","__addChild","__removeChild","__getChildren","__makeNative","addListener","removeListener","removeAllListeners","hasListeners","__onAnimatedValueUpdateReceived","__callListeners","forEach$argument_0","__getNativeTag","__getNativeConfig","__getPlatformConfig","__setPlatformConfig","toJSON","__getDebugID"],"mappings":"AAA;+CCsB;CDK;eEE;ECK;GDU;EEE,mBF;EGC;GHM;EIC,oBJ;EKC;GLE;EMC,kCN;EOC,qCP;EQC;GRE;ESM;GTQ;EUS;GVI;EWQ;GXE;EYO;GZE;EaE;GbE;EcE;GdE;EeE;4BCE;KDE;GfC;EiBE;GjBsB;EkBE;GlBI;EmBE;GnBE;EoBE;GpBE;EqBM;GrBE;EsBI;GtBK"}],[{"names":["<global>","AnimatedValueXY","constructor","setValue","setOffset","flattenOffset","extractOffset","__getValue","resetAnimation","stopAnimation","addListener","jointCallback","removeListener","removeAllListeners","getLayout","getTranslateTransform","__attach","__detach","__makeNative"],"mappings":"AAA;eCiC;ECY;GD0B;EEQ;GFG;EGS;GHG;EIQ;GJG;EKQ;GLG;EME;GNS;EOO;GPM;EQS;GRI;ESW;0BCE;KDE;GTM;EWQ;GXI;EYO;GZI;EaO;GbK;EcO;GdI;EeE;GfI;EgBE;GhBI;EiBE;GjBI"}],[{"names":["<global>","DecayAnimation","constructor","__getNativeAnimationConfig","start","requestAnimationFrame$argument_0","onUpdate","stop"],"mappings":"AAA;eCoC;ECU;GDM;EEE;GFgB;EGE;mDCgB,qBD;GHE;EKE;GLoB;EME;GNM"}],[{"names":["<global>","Animation","constructor","start","stop","__getNativeAnimationConfig","__findAnimatedPropsNodes","__startAnimationIfNative","NativeAnimatedHelper.API.startAnimatingNode$argument_3","__findAnimatedPropsNodes.forEach$argument_0","__notifyAnimationEnd","__getDebugID"],"mappings":"AAA;eC0C;ECW;GDU;EEE;GFiB;EGE;GHc;EIE;GJO;EKE;GLa;EME;QCkB;iECuB;2BDC;SDG;GNW;ESM;GTM;EUE;GVK"}],[{"names":["<global>","createAnimatedProps","AnimatedProps","constructor","__getValue","__getValueWithStaticProps","__getNativeAnimatedEventTuples","__getAnimatedValue","__attach","__detach","update","__makeNative","setNativeView","<anonymous>","__restoreDefaultValues","__getNativeConfig"],"mappings":"AAA;ACkC;CDyD;eEE;ECO;GDY;EEE;GFkB;EGO;GHkC;EIE;GJc;EKE;GLY;EME;GNO;EOE;GPa;EQE;GRE;ESE;GTmB;EUE;GVQ;EWE;GXe;EWE;GXW;EYE;GZQ;EaE;GbkB;CFC;oBaQ,0Cb"}],[{"names":["<global>","isPlainObject","flatAnimatedNodes","mapAnimatedNodes","value.map$argument_0","AnimatedObject","from","constructor","__getValue","mapAnimatedNodes$argument_1","__getValueWithStaticObject","__getAnimatedValue","__attach","__detach","__makeNative","__getNativeConfig"],"mappings":"AAA;OCqB;CDY;AEE;CFuB;AGG;qBCQ,mDD;CHY;eKE;ECQ;GDM;EEK;GFQ;EGE;yCCC;KDE;GHC;EKE;0CDK,iCC;GLC;EME;yCFC;KEE;GNC;EOE;GPO;EQE;GRO;ESE;GTO;EUE;2CNG;OME;GVG"}],[{"names":["<global>","createAnimatedStyle","AnimatedStyle","from","constructor","__getValueForStyle","__getValue","__replaceAnimatedNodeWithValues","__getAnimatedValue","__attach","__detach","__makeNative","__getNativeConfig","<anonymous>"],"mappings":"AAA;AC0B;CDuD;eEE;ECU;GDiB;EEE;gCCc;ODG;GFE;EIE;GJgB;EGK;GHI;EKM;GLkB;EME;GNY;EOE;GPO;EQE;GRO;ESE;GTO;EUE;GVqB;CFC;oBaQ,0Cb"}],[{"names":["<global>","flatAnimatedNodes","AnimatedTransform","from","constructor","__makeNative","__getValue","mapTransforms$argument_1","__getValueWithStaticTransforms","__getAnimatedValue","__attach","__detach","__getNativeConfig","mapTransforms","transforms.map$argument_0","value.map$argument_0"],"mappings":"AAA;AC6B;CDe;eEE;ECW;GDW;EEE;GFQ;EGE;GHO;EIE;2CCC;+BDC;GJE;EME;oCDI;KCE;2CDG,oBC;GNC;EOE;2CFC;uCEC;GPE;EQE;GRO;ESE;GTO;EUE;GVoC;CFC;AaE;wBCI;gCCQ;0EDC;GDiB"}],[{"names":["<global>","SpringAnimation","constructor","__getNativeAnimationConfig","start","getInternalState","onUpdate","stop"],"mappings":"AAA;eCsF;ECsB;GD4D;EEE;GF4B;EGE;GHsC;EIE;GJM;EKuB;GL6F;EME;GNO"}],[{"names":["<global>","processColor","isRgbaValue","isRgbaAnimatedValue","AnimatedColor","constructor","setValue","_withSuspendedCallbacks$argument_0","setOffset","flattenOffset","extractOffset","stopAnimation","resetAnimation","__getValue","__attach","__detach","_withSuspendedCallbacks","__callListeners","__makeNative","__getNativeConfig"],"mappings":"AAA;ACsD;CDoC;AEE;CFQ;AGE;CHQ;eIE;ECS;GDkC;EEM;iCCS;KDoB;GFiB;EIO;GJK;EKM;GLK;EMM;GNK;EOO;GPM;EQK;GRM;ESE;GTM;EUE;GVM;EWE;GXM;EYE;GZI;EaE;GbI;EcE;GdM;EeE;GfU"}],[{"names":["<global>","stiffnessFromOrigamiValue","dampingFromOrigamiValue","fromOrigamiTensionAndFriction","fromBouncinessAndSpeed","normalize","projectNormal","linearInterpolation","quadraticOutInterpolation","b3Friction1","b3Friction2","b3Friction3","b3Nobounce"],"mappings":"AAA;ACkB;CDE;AEE;CFE;OGE;CHQ;OIE;ECI;GDE;EEE;GFE;EGE;GHE;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPO;EQE;GRQ"}],[{"names":["<global>","easeInOut","TimingAnimation","constructor","__getNativeAnimationConfig","start","requestAnimationFrame$argument_0","onUpdate","stop"],"mappings":"AAA;ACkD;CDM;eEE;ECY;GDQ;EEE;GFuB;EGE;uDCwB,qBD;GHS;EKE;GLuB;EME;GNO"}],[{"names":["<global>","createAnimatedComponent","unstable_createAnimatedComponentWithAllowlist","AnimatedComponent","useMemo$argument_0"],"mappings":"AAA;eCkF;CDS;OEE;MCY;MCwB,4CD;GDc"}],[{"names":["<global>","createAnimatedPropsHook","useAnimatedProps","useReducer$argument_0","useAnimatedPropsMemo$argument_0","AnimatedProps$argument_1","useEffect$argument_0","NativeAnimatedHelper.nativeEventEmitter.addListener$argument_1","<anonymous>","refEffect","onUpdateRef.current","setTimeout$argument_0","reduceAnimatedProps","addListenersToPropsValue","propValue.addListener$argument_0","addAnimatedValuesListenersToProps","useAnimatedPropsLifecycleWithPrevNodeRef","useInsertionEffect$argument_0","useAnimatedPropsLifecycleWithCleanupInMicrotask","queueMicrotask$argument_0","getEventTarget","isFabricInstance"],"mappings":"AAA;eC+C;SCQ;wDCG,kBD;MEK,+BC,6BD,YF;cII;YCa;aDE;aEI;OFE;KJC;MOyB;8BCS;wCCgE;WDG;SDC;eDY;SCU;OPC;GDM;CDC;AYE;CZU;AaE;6CCM,QD;CbU;AeE;CfS;AgBS;qBCI;WTE;KSE;GDC;qBCE;WTS;KSO;GDC;ChBC;AkBgB;qBDK;WTI;qBWE;OXO;KSC;GCC;ClBC;AoBE;CpBM;AqBG"}],[{"names":["<global>","isPublicInstance","isLegacyFabricInstance"],"mappings":"AAA;OCkB;CDQ;AEE"}],[{"names":["<global>","useRefEffect","<anonymous>"],"mappings":"AAA;eC4B;ICK;KDQ"}],[{"names":["<global>","createAnimatedPropsMemoHook","useAnimatedPropsMemo","useAnimatedPropsMemo_ref","useMemo$argument_0","useInsertionEffect$argument_0","useAnimatedPropsMemo_state","useState$argument_0","createCompositeKeyForProps","createCompositeKeyForArray","createCompositeKeyForObject","areCompositeKeysEqual","areCompositeKeyComponentsEqual","<anonymous>"],"mappings":"AAA;OC4D;SCG;GDW;EEE;MCK,kDD;uBEkB;KFE;GFG;EKE;MFK,kDE;OCQ;MDI;GLa;CDC;OQiB;CR6C;ASQ;CT2B;AUa;CV+B;OWE;CXqE;AYE;CZ8C;oBaQ,0Cb"}],[{"names":["<global>","useMergeRefs","refEffect","refs.map$argument_0","<anonymous>"],"mappings":"AAA;eCuB;ICI;qECC;gBCS;iBDE;mBCG;aDE;ODG;aEE;OFI;KDC"}],[{"names":["<global>","AnimatedAddition","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;eCqB;ECI;GDQ;EEE;GFI;EGE;GHE;EIE;GJI;EKE;GLI;EME;GNI;EOE;GPM"}],[{"names":["<global>","AnimatedDiffClamp","constructor","__makeNative","interpolate","__getValue","__attach","__detach","__getNativeConfig"],"mappings":"AAA;eCoB;ECO;GDY;EEE;GFG;EGE;GHI;EIE;GJM;EKE;GLG;EME;GNG;EOE;GPQ"}],[{"names":["<global>","AnimatedDivision","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;eCqB;ECK;GDW;EEE;GFI;EGE;GHc;EIE;GJI;EKE;GLI;EME;GNI;EOE;GPM"}],[{"names":["<global>","AnimatedModulo","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;eCoB;ECI;GDI;EEE;GFG;EGE;GHI;EIE;GJI;EKE;GLG;EME;GNG;EOE;GPO"}],[{"names":["<global>","AnimatedMultiplication","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;eCqB;ECI;GDQ;EEE;GFI;EGE;GHE;EIE;GJI;EKC;GLI;EME;GNI;EOE;GPM"}],[{"names":["<global>","AnimatedSubtraction","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;eCqB;ECI;GDQ;EEE;GFI;EGE;GHE;EIE;GJI;EKE;GLI;EME;GNI;EOE;GPM"}],[{"names":["<global>","AnimatedTracking","constructor","__makeNative","__getValue","__attach","__detach","update","__getNativeConfig"],"mappings":"AAA;eCoB;ECQ;GDiB;EEE;GFK;EGE;GHE;EIE;GJY;EKE;GLG;EME;GNQ;EOE;GPe"}],[{"names":["<global>","mockAnimationStart","<anonymous>","emptyAnimation.start","emptyAnimation.stop","emptyAnimation.reset","emptyAnimation._startNativeLoop","emptyAnimation._isUsingNativeDriver","mockCompositeAnimation","mockAnimationStart$argument_0","animations.forEach$argument_0","spring","timing","decay","sequence","parallel","delay","stagger","loop"],"mappings":"AAA;ACsC;SCG;GDmB;CDC;SGY,QH;QIC,QJ;SKC,QL;oBMC,QN;wBOC;GPE;+BQG;4BCI;uBCC,8BD;GDE;ERC;eWE;8BFO;KEG;CXE;eYE;8BHO;KGG;CZE;caE;CbK;iBcE;CdI;iBeG;CfK;cgBE;ChBE;gBiBE;CjBK;akBQ;ClBM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","removeClippedSubviewsOrDefault","numColumnsOrDefault","isArrayLike","FlatList","scrollToEnd","scrollToIndex","scrollToItem","scrollToOffset","recordInteraction","flashScrollIndicators","getScrollResponder","getNativeScrollRef","getScrollableNode","setNativeProps","constructor","props.viewabilityConfigCallbackPairs.map$argument_0","_createOnViewableItemsChanged$argument_0","componentDidUpdate","_captureRef","_checkProps","_getItem","_getItemCount","_keyExtractor","items.map$argument_0","_pushMultiColumnViewable","v.item.forEach$argument_0","_createOnViewableItemsChanged","<anonymous>","info.viewableItems.forEach$argument_0","info.changed.forEach$argument_0","_renderer","render","renderProp","item.map$argument_0"],"mappings":"AAA;ACiK;CDM;AEG;CFE;AGE;CHG;AIiI;ECI;GDI;EEU;GFU;EGQ;GHU;EIO;GJI;EKO;GLI;EMO;GNI;EOK;GPI;EQK;GRQ;ESE;GTI;EUE;GVI;EWE;sDCK;UDK;UEU;WFO;GXI;EcG;GdsB;gBeK;GfE;EgBG;GhB6B;aiBE;GjBkB;kBkBE;GlBa;kBmBE;aCY;4EDC;GnBO;EqBE;mBCG;KDI;GrBC;EuBE;WCQ;qCCU;2DDC;+BEE,8CF;KDM;GvBC;c2BE;mBCU;KDY;uBEE;sBCS;aDU;KFM;G3BK;E4BI;G5BgC;CJC"}],[{"names":["<global>","default.get__VirtualizedList","default.get__VirtualizedSectionList","default.get__VirtualizedListContextResetter","default.get__ViewabilityHelper","default.get__FillRateHelper"],"mappings":"AAA;EC4C;GDE;EEC;GFE;EGC;GHG;EIC;GJE;EKC;GLE"}],[{"names":["<global>","elementsThatOverlapOffsets","newRangeCount","computeWindowedRenderLimits","keyExtractor"],"mappings":"AAA;OCsB;CDoC;OEQ;CFqB;OGQ;CHsJ;OIE"}],[{"names":["<global>","getScrollingThreshold","VirtualizedList","scrollToEnd","scrollToIndex","scrollToItem","scrollToOffset","_scrollToParamsFromOffset","recordInteraction","_nestedChildLists.forEach$argument_0","_viewabilityTuples.forEach$argument_0","flashScrollIndicators","getScrollResponder","getScrollableNode","getScrollRef","setNativeProps","_getCellKey","_getScrollMetrics","hasMore","_getOutermostParentListRef","_registerAsNestedChild","_unregisterAsNestedChild","constructor","props.viewabilityConfigCallbackPairs.map$argument_0","_checkProps","_findItemIndexWithKey","_getItemKey","_createRenderMask","_initialRenderRegion","_ensureClosestStickyHeader","_adjustCellsAroundViewport","_findFirstChildWithMore","_nestedChildLists.anyInCell$argument_1","componentDidMount","componentWillUnmount","getDerivedStateFromProps","_pushCells","CellRenderer.props.ref","_constrainToItemCount","_onUpdateSeparators","keys.forEach$argument_0","_isNestedWithSameOrientation","_getSpacerKey","_keyExtractor","_renderEmptyComponent","cloneElement$argument_1.onLayout","render","ScrollView.Context.Consumer.props.children","componentDidUpdate","_captureScrollRef","_computeBlankness","_defaultRenderScrollComponent","_onCellLayout","_onCellFocusCapture","_onCellUnmount","_triggerRemeasureForChildListsInCell","_nestedChildLists.forEachInCell$argument_1","measureLayoutRelativeToContainingList","_scrollRef.measureLayout$argument_1","_scrollRef.measureLayout$argument_2","_onLayout","_onLayoutEmpty","_getFooterCellKey","_onLayoutFooter","_onLayoutHeader","_renderDebugOverlay","framesInLayout.map$argument_0","_selectLength","_selectOffset","_orientation","_maybeCallOnEdgeReached","_onContentSizeChange","_maybeScrollToInitialScrollIndex","_convertParentScrollMetrics","unstable_onScroll","_onScroll","setState$argument_0","_offsetFromScrollEvent","_scheduleCellsToRenderUpdate","setTimeout$argument_0","_shouldRenderWithPriority","unstable_onScrollBeginDrag","_onScrollBeginDrag","unstable_onScrollEndDrag","_onScrollEndDrag","unstable_onMomentumScrollBegin","_onMomentumScrollBegin","unstable_onMomentumScrollEnd","_onMomentumScrollEnd","_updateCellsToRender","_createViewToken","__getListMetrics","_getNonViewportRenderRegions","_updateViewableItems"],"mappings":"AAA;AC8F;CDE;AE+B;ECO;GDiB;EEG;GFwD;EGI;GHgB;EIY;GJ8B;EKE;GLW;EME;mCCC;KDE;oCEC;KFE;GNE;ESE;GTM;EUO;GVI;EWE;GXM;EYE;GZQ;EaE;GbI;EcE;GdE;sBeG;GfE;EgBE;GhBE;+BiBG;GjBM;2BkBE;GlBQ;6BmBE;GnBE;EoBI;QCQ;UDG;GpBiC;EsBE;GtB8C;EuBE;GvBmB;EwBE;GxBW;EyBE;GzB0C;E0BE;G1BqB;E2BE;G3Bc;E4BE;G5B0E;E6BE;0DCK;6BDC;G7BQ;E+BE;G/BO;EgCE;oCxBK;KwBE;GhCE;EiCE;GjCiE;EkCE;eCqD;WDE;GlCS;EoCE;GpCmB;wBqCE;iBCC;KDG;GrCC;EuCE;GvCM;kBwCE;mCxCC;EyCE;GzCoB;E0CE;gBCY;ODM;G1CI;E4CE;WCyO;WDiB;G5Cc;E8CE;sCtCK;OsCE;G9CuB;sB+C2C;G/CE;EgDE;GhDM;kCiDI;GjDsC;kBkDE;GlDmB;wBmDE;GnDQ;mBoDE;GpDG;EqDE;kDCC;KDE;GrDC;EuDE;QCW;2CjDoB;aiDE;SDE;QEC;SFK;GvDQ;c0DE;G1Da;mB2DE;G3DE;E4DE;G5DE;oB6DE;G7DG;oB8DE;G9DE;E+DG;4BC0B;SDY;G/DuB;EiEE;GjEU;EkEE;GlEE;EmEE;GnEK;EoEE;GpEuF;yBqEE;GrEa;EsEO;GtE0B;gCuEK;GvEkB;EwEE;GxEE;cyEE;mClEC;KkEE;gDCuD;QDE;GzEY;E2EE;G3EY;E4EE;wDCyB;SDG;G5EG;E8EE;G9EqC;E+EE;G/EE;uBgFE;mCzEC;KyEE;oCxEC;KwEE;GhFG;EiFE;GjFE;qBkFE;mC3EC;K2EE;GlFO;EmFE;GnFE;2BoFE;mC7EC;K6EE;GpFE;EqFE;GrFE;yBsFE;mC/EC;K+EE;GtFI;yBuFE;wDbG;KaqB;GvFC;qBwFE;GxFc;EyFE;GzFE;iC0FE;G1F2D;E2FE;oCnFS;KmFU;G3FC;CFC"}],[{"names":["<global>","clamp"],"mappings":"AAA;ACY;CDQ"}],[{"names":["<global>","infoLog"],"mappings":"AAA;ACe;CDE"}],[{"names":["<global>","CellRenderMask","constructor","enumerateRegions","addCells","numCells","equals","_regions.every$argument_0","_findRegion"],"mappings":"AAA;OCkB;ECI;GDmB;EEE;GFE;EGE;GHqE;EIE;GJE;EKE;QCK;wDDG;GLG;EOE;GPkB"}],[{"names":["<global>","ChildListCollection","add","remove","forEach","forEachInCell","anyInCell","size"],"mappings":"AAA;eCY;ECI;GDW;EEE;GFY;EGE;GHM;EIE;GJK;EKE;GLQ;EME;GNE"}],[{"names":["<global>","Info","FillRateHelper","addListener","remove","_listeners.filter$argument_0","setSampleRate","setMinSampleCount","constructor","activate","deactivateAndFlush","_listeners.forEach$argument_0","computeBlankness","enabled","_resetData"],"mappings":"AAA;ACkB;CDW;AEgB;ECQ;cCS;uCCC,iCD;ODC;GDE;EIE;GJE;EKE;GLE;EME;GNI;EOE;GPK;EQE;uBCwC,0BD;GRE;EUE;GVmG;EWE;GXE;EYE;GZK;CFC"}],[{"names":["<global>","ListMetricsAggregator","notifyCellLayout","notifyCellUnmounted","notifyListContentLayout","getAverageCellLength","getHighestMeasuredCellIndex","getCellMetricsApprox","getCellMetrics","getCellOffsetApprox","getContentLength","hasContentLength","flowRelativeOffset","cartesianOffset","_invalidateIfOrientationChanged","_selectLength","_selectOffset"],"mappings":"AAA;eC0D;ECiB;GD0C;EEK;GFK;EGK;GHS;EIK;GJE;EKM;GLE;EMO;GN0C;EOK;GPsB;EQM;GRQ;ESK;GTE;EUK;GVE;EWM;GXmB;EYK;GZY;EaE;Gba;EcE;GdK;EeE;GfE"}],[{"names":["<global>","StateSafePureComponent","constructor","setState","setState$argument_0","_installSetStateHooks","Object.defineProperty$argument_2.get","Object.defineProperty$argument_2.set"],"mappings":"AAA;eCsB;ECM;GDG;EEE;qBCK;ODW;GFI;EIE;MCK;ODM;MEC;OFE;MCG;ODM;MEC;OFE;GJE"}],[{"names":["<global>","ViewabilityHelper","constructor","dispose","computeViewableItems","onUpdate","_viewableIndices.every$argument_0","setTimeout$argument_0","resetViewableIndices","recordInteraction","_onUpdateSync","viewableIndicesToCheck.filter$argument_0","viewableIndicesToCheck.map$argument_0","_isViewable","_getPixelsVisible","_isEntirelyVisible"],"mappings":"AAA;ACiF;ECO;GDI;EEK;GFK;EGK;GHiE;EIM;kCC0C,oCD;2CEQ;OFW;GJa;EOK;GPE;EQK;GRE;ESE;2DCe;wCDC;iCEI;OFG;GTsB;CDC;AaE;CbgB;AcE;CdO;AeE;CfM"}],[{"names":["<global>","CellRenderer","CellRenderer.getDerivedStateFromProps","CellRenderer#_separators.highlight","CellRenderer#_separators.unhighlight","CellRenderer#_separators.updateProps","CellRenderer#updateSeparatorProps","setState$argument_0","CellRenderer#componentWillUnmount","CellRenderer#_onLayout","CellRenderer#_onCellFocusCapture","CellRenderer#_renderElement","CellRenderer#render"],"mappings":"AAA;eC6D;ECW;GDa;eEM;KFK;iBGC;KHK;iBIC;KJS;EKG;kBCC;MDE;GLC;EOE;GPE;cQE;GRM;wBSE;GTE;EUE;GVmC;EWE;GX8D;CDC"}],[{"names":["<global>","VirtualizedListContextResetter","VirtualizedListContextProvider","useMemo$argument_0","VirtualizedListCellContextProvider"],"mappings":"AAA;OC6C;CDU;OEK;ICS;MDO;CFc;OIK;IDU,8DC"}],[{"names":["<global>","horizontalOrDefault","initialNumToRenderOrDefault","maxToRenderPerBatchOrDefault","onStartReachedThresholdOrDefault","onEndReachedThresholdOrDefault","windowSizeOrDefault"],"mappings":"AAA;OC0S;CDE;OEG;CFI;OGG;CHI;OIG;CJI;OKG;CLI;OMG"}],[{"names":["<global>","VirtualizedSectionList","scrollToLocation","getListRef","render","VirtualizedList.props.getItem","VirtualizedList.props.getItemCount","_getItem","_keyExtractor","_subExtractor","_convertViewable","_onViewableItemsChanged","_renderItem","<anonymous>","_updatePropsFor","_updateHighlightFor","_setUpdateHighlightFor","_setUpdatePropsFor","_getSeparatorComponent","_captureRef","ItemWithSeparator","useEffect$argument_0","separators.highlight","separators.unhighlight","separators.updateProps"],"mappings":"AAA;ACmI;ECU;GDuB;EEE;GFE;EGE;iBCsC;oDDC;sBEE,eF;GHS;EME;GN2B;kBOG;GPG;EQE;GRsD;qBSE;GToB;4BUE;GViB;IWG;ICE;KZiD;oBaE;GbK;wBcE;GdK;2BeE;GfU;uBgBE;GhBM;EiBE;GjBsB;gBkBK;GlBE;CDC;AoBgC;YC2C;WRK;KQG;GDC;eEQ;KFM;iBGC;KHM;iBIC;KJc;CpB+B"}],[{"names":["<global>","ponyfill","isEqual","areInputsEqual","memoizeOne","memoized"],"mappings":"AAA;ICG;KDE;AEC;CFQ;AGC;CHU;AIE;ICM;KDa;CJE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","unstable_setImageComponentDecorator","unstable_getImageComponentDecorator","unstable_registerImageAttachedCallback","unstable_unregisterImageAttachedCallback","useWrapRefWithImageAttachedCallbacks","imageAttachedCallbacksRef.current","pendingCleanupCallbacks.current.forEach$argument_0","imageAttachedCallbacks.forEach$argument_0"],"mappings":"AAA;OCyB;CDI;OEE;CFE;OGU;CHI;OIE;CJI;OKE;wCCS;kDCG,UD;uCEI;SFK;KDE"}],[{"names":["<global>","getImageSourcesFromImageProps","srcSetList.forEach$argument_0"],"mappings":"AAA;OCqB;uBCqB;KDe"}],[{"names":["<global>","convertObjectFitToResizeMode"],"mappings":"AAA;OCoB"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;ICuK,4BD"}],[{"names":["<global>","AnimatedScrollViewWithOrWithoutInvertedRefreshControl","AnimatedScrollViewWithInvertedRefreshControl","useMemo$argument_0"],"mappings":"AAA;ICsC;CDoC;EEG;cCY;ODQ;GF0C"}],[{"names":["<global>","RefreshControl","componentDidMount","componentDidUpdate","render","_onRefresh","_setNativeRef"],"mappings":"AAA;AC8H;ECO;GDE;EEE;GFuB;EGE;GHqB;eIE;GJS;kBKE;GLO;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ScrollView","constructor","componentDidMount","componentDidUpdate","componentWillUnmount","getScrollResponder","getScrollableNode","getInnerViewNode","getInnerViewRef","getNativeScrollRef","scrollTo","scrollToEnd","flashScrollIndicators","scrollResponderScrollNativeHandleToKeyboard","scrollResponderZoomTo","_textInputFocusError","_inputMeasureAndScrollToKeyboard","scrollTextInputIntoVisibleRect","setTimeout$argument_0","_getKeyForIndex","_updateAnimatedNodeAttachment","_setStickyHeaderRef","_onStickyHeaderLayout","_handleScroll","_handleLayout","_handleContentOnLayout","createRefForwarder$argument_0","scrollResponderKeyboardWillShow","scrollResponderKeyboardWillHide","scrollResponderKeyboardDidShow","scrollResponderKeyboardDidHide","_handleMomentumScrollBegin","_handleMomentumScrollEnd","_handleScrollBeginDrag","_handleScrollEndDrag","_isAnimating","_handleResponderGrant","_handleResponderReject","_handleResponderRelease","_handleResponderTerminationRequest","_handleScrollShouldSetResponder","_handleStartShouldSetResponder","_handleStartShouldSetResponderCapture","_keyboardIsDismissible","_softKeyboardIsDetached","_keyboardEventsAreUnreliable","_handleTouchEnd","_handleTouchCancel","_handleTouchStart","_handleTouchMove","render","filter$argument_0","children.map$argument_0","StickyHeaderComponent.props.ref","StickyHeaderComponent.props.onLayout","createRefForwarder","memoize$argument_0","<anonymous>","Wrapper"],"mappings":"AAA;ACstB;ECG;GDO;EEoC;GFiC;EGE;GHY;EIE;GJiB;IKS;KLG;wEME;GNE;sEOE;GPE;oEQE;GRE;ISG;KTE;sDUa;GVwB;4DWU;GXQ;IYQ;KZM;Iaa;Kb4B;IcS;KdyB;EeE;GfE;cgBiB;2CCG;KDkB;iBEO;OFE;GhBI;EmBE;GnBO;EoBE;GpBe;EqBE;GrBS;EsBE;GtB4B;kBuBE;GvBG;kBwBE;GxBO;2ByBE;GzBI;M0BI,4D1B;uB0BI;K1B6B;gE2B+B;G3BK;gE4BE;G5BK;+D6BE;G7BK;+D8BE;G9BK;yD+BK;G/BG;uDgCK;GhCI;qDiCS;GjCW;mDkCK;GlCc;gCmCO;GnCQ;8DoCK;GpCM;uCqCY,QrC;gEsCK;GtC8B;sDuCiB;GvCE;mDwCK;GxCM;0EyC2B;GzCiB;I0Cc;K1C+C;0C2CK;G3CmB;2C4CO;G5CE;gD6CE;G7CI;wD8CO;G9C0B;2D+CO;G/CK;0DgDa;GhDK;yDiDa;GjDI;EkDE;QCsB,0CD;8BE0B;mBCU,yCD;wBEI,sDF;OFW;GlDuJ;CDC;AwDgC;8BCI;aCC;ODc;KDC;CxDM;I2DQ;C3DY"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;ICmE,4BD"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;IC0B,4BD"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;ICgL,4BD"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setGlobalOptions","setContext","beginScroll","endScroll"],"mappings":"AAA;oBCkC;GDU;cEM;GFE;EGM;GHE;EIM;GJE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","splitLayoutProps"],"mappings":"AAA;eCY"}],[{"names":["<global>","dismissKeyboard"],"mappings":"AAA;ACiB;CDE"}],[{"names":["<global>","KeyboardImpl","KeyboardImpl#constructor","addListener$argument_1","KeyboardImpl#addListener","KeyboardImpl#removeAllListeners","KeyboardImpl#dismiss","KeyboardImpl#isVisible","KeyboardImpl#metrics","KeyboardImpl#scheduleLayoutAnimation"],"mappings":"AAA;ACyG;ECU;wCCC;KDE;wCCC;KDE;GDC;EG0B;GHM;EIO;GJE;EKK;GLE;EMK;GNE;EOK;GPE;EQM;GRW;CDC"}],[{"names":["<global>","setLayoutAnimationEnabled","configureNext","onAnimationComplete","<anonymous>","createLayoutAnimation","checkConfig"],"mappings":"AAA;AC+C;CDE;AEU;8BCmB;GDO;QEc,cF;6BEW,cF;QEE,cF;CFG;AKE;CLW;EMyE;GNE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","processDecelerationRate"],"mappings":"AAA;ACY;CDe"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ScrollViewStickyHeader","callbackRef","useMemo$argument_0","useState$argument_0","useEffect$argument_0","animatedValueListener","setTimeout$argument_0","<anonymous>","_onLayout"],"mappings":"AAA;ICgD;kCCuB;GDO;IEM;cFgB;IGK;KHY;YIM;GJI;4CKgB;MCY,0BD;GLG;YIE;WGsF;KHO;GJC;oBQa;GRU;CDiC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","SectionList","scrollToLocation","recordInteraction","flashScrollIndicators","getScrollResponder","getScrollableNode","setNativeProps","render","VirtualizedSectionList.props.getItemCount","VirtualizedSectionList.props.getItem","_captureRef"],"mappings":"AAA;eC2K;ECgB;GDI;EEO;GFG;EGO;GHG;EIK;GJK;EKE;GLK;EME;GNK;EOE;sBCiB,qBD;iBEE,8BF;GPG;gBUG;GVE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ImageBackground","setNativeProps","_captureRef","render"],"mappings":"AAA;AC6C;ECC;GDM;gBEI;GFE;EGE;GH4C;CDC"}],[{"names":["<global>","InputAccessoryView"],"mappings":"AAA;yECyF;CDwB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useWindowDimensions","useState$argument_0","useEffect$argument_0","handleChange","<anonymous>"],"mappings":"AAA;eCiB;+CCG,8BD;YEC;ICC;KDa;WEM;KFE;GFC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","KeyboardAvoidingView","constructor","_relativeKeyboardHeight","_onKeyboardChange","_onKeyboardHide","_onLayout","_setBottom","_updateBottomIfNecessary","componentDidUpdate","componentDidMount","componentWillUnmount","_subscriptions.forEach$argument_0","render"],"mappings":"AAA;AC8D;ECW;GDI;EEE;GF+B;sBGE;GHI;oBIE;GJI;cKE;GLkB;eMG;GNM;6BOE;GP0B;EQE;GRQ;ESE;GTuB;EUE;gCCC;KDE;GVC;EYE;GZ0E;CDC"}],[{"names":["<global>","isBoldTextEnabled","Promise$argument_0","isGrayscaleEnabled","isInvertColorsEnabled","isReduceMotionEnabled","isHighTextContrastEnabled","isDarkerSystemColorsEnabled","prefersCrossFadeTransitions","isReduceTransparencyEnabled","isScreenReaderEnabled","isAccessibilityServiceEnabled","addEventListener","remove","setAccessibilityFocus","sendAccessibilityEvent","announceForAccessibility","announceForAccessibilityWithOptions","getRecommendedTimeoutMillis"],"mappings":"AAA;EC0F;yBCI;ODS;GDE;EGU;yBDE;OCM;yBDE;OCS;GHE;EIU;yBFE;OEM;yBFE;OES;GJE;EKU;uBHC;KGiB;GLC;EMQ;uBJC;KIU;GNC;EOQ;uBLC;KKgB;GPC;EQU;uBNC;KMgB;GRC;ESU;yBPI;OOS;GTE;EUU;uBRC;KQiB;GVC;EWY;uBTC;KSa;GXC;EY6C;SCO,iBD;GZG;EcO;GdE;EeK;GfU;EgBO;GhBM;EiBQ;GjBgB;EkBO;yBhBE;OgBS;GlBI"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","LayoutConformance","UnimplementedLayoutConformance"],"mappings":"AAA;AC8B;CDI;AEE;CFa"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;0DCqB;IDK"}],[{"names":["<global>","confirmProps","Modal","constructor","componentDidMount","ModalEventEmitter.addListener$argument_1","setState$argument_1","componentWillUnmount","componentDidUpdate","_shouldShowModal","render","onDismiss","_shouldSetResponder","Wrapper"],"mappings":"AAA;ACqL;CD8B;AEQ;ECW;GDS;EEE;QCK;6CCC;WDI;SDC;GFG;EKE;GLO;EME;GNQ;EOG;GPM;EQE;sBC4B;2CLG;SKI;KDE;GRqC;EUG;GVE;CFC;Aa2B;CbQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getI18nManagerConstants","default.getConstants","default.allowRTL","default.forceRTL","default.swapLeftAndRightInRTL"],"mappings":"AAA;ACgB;CDW;gBEG;GFE;YGE;GHM;YIE;GJM;yBKE;GLM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Pressable","useMemo$argument_0","onPressIn","onPressMove","onPressOut","usePressState"],"mappings":"AAA;ACsK;IC0F;MCgB;ODQ;MEC;OFK;MGC;OHQ;MDC;CDuC;AME;CNG"}],[{"names":["<global>","useAndroidRippleForView","useMemo$argument_0","onPressIn","onPressMove","onPressOut"],"mappings":"AAA;eCuC;iBCa;QCyB;SDU;QEC;SFS;QGC;SHK;GDI"}],[{"names":["<global>","mergePropsStack","propsStack.reduce$argument_0","createStackEntry","StatusBar","setHidden","setBarStyle","setNetworkActivityIndicatorVisible","setBackgroundColor","setTranslucent","pushStackEntry","popStackEntry","replaceStackEntry","componentDidMount","componentWillUnmount","componentDidUpdate","_updatePropsStack","setImmediate$argument_0","render"],"mappings":"AAA;ACyI;ICK;KDO;CDG;AGM;CH6B;AI4C;EC0C;GDQ;EEO;GFQ;EGQ;GHS;EIO;GJqB;EKM;GLO;EMQ;GNK;EOO;GPM;EQQ;GRW;ESI;GTM;EUE;GVM;EWE;GXO;6BYK;8CCG;KDqE;GZC;EcE;GdE;CJC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","NativeStatusBarManager.getConstants","NativeStatusBarManager.setColor","NativeStatusBarManager.setTranslucent","NativeStatusBarManager.setStyle","NativeStatusBarManager.setHidden"],"mappings":"AAA;ECmC;GDQ;EEE;GFE;EGE;GHE;EIO;GJE;EKE;GLE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","NativeStatusBarManager.getConstants","NativeStatusBarManager.getHeight","NativeStatusBarManager.setNetworkActivityIndicatorVisible","NativeStatusBarManager.addListener","NativeStatusBarManager.removeListeners","NativeStatusBarManager.setStyle","NativeStatusBarManager.setHidden"],"mappings":"AAA;EC2C;GDQ;EEG;GFE;EGE;GHE;EIE;GJE;EKE;GLE;EMQ;GNE;EOK;GPE"}],[{"names":["<global>","returnsFalse","returnsTrue","Switch","handleChange","useLayoutEffect$argument_0"],"mappings":"AAA;qBCqH,WD;oBEC,UF;IGkD;uBCgC;GDM;kBEE;GFkB;CHoE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","emptyFunctionThatReturnsTrue","useTextInputStateSynchronization","useLayoutEffect$argument_0","InternalTextInput","<anonymous>","setLocalRef","Object.assign$argument_1.clear","Object.assign$argument_1.isFocused","Object.assign$argument_1.getNativeRef","Object.assign$argument_1.setSelection","_onChange","_onSelectionChange","_onFocus","_onBlur","_onScroll","useMemo$argument_0","onPress","TextInput"],"mappings":"AAA;qCCkK,UD;AEO;kBC8B;GD+B;CFa;AIiH;kBDmD;aEM;OFM;GCE;IEG;UC8B;WDU;UEE;WFE;UGC;WHE;UIC;WJU;KFG;oBOO;GPiB;6BQE;GRa;mBSE;GTK;kBUE;GVK;oBWE;GXE;IY2C;eCE;ODO;MZI;CJyL;IkBqG;ClBwD"}],[{"names":["<global>","extractSingleTouch","TouchableMixinImpl.componentDidMount","TouchableMixinImpl.componentWillUnmount","TouchableMixinImpl.touchableGetInitialState","TouchableMixinImpl.touchableHandleResponderTerminationRequest","TouchableMixinImpl.touchableHandleStartShouldSetResponder","TouchableMixinImpl.touchableLongPressCancelsPress","TouchableMixinImpl.touchableHandleResponderGrant","TouchableMixinImpl.touchableHandleResponderRelease","TouchableMixinImpl.touchableHandleResponderTerminate","TouchableMixinImpl.touchableHandleResponderMove","TouchableMixinImpl.touchableHandleFocus","TouchableMixinImpl.touchableHandleBlur","TouchableMixinImpl._remeasureMetricsOnActivation","TouchableMixinImpl._handleQueryLayout","TouchableMixinImpl._handleDelay","TouchableMixinImpl._handleLongDelay","TouchableMixinImpl._receiveSignal","TouchableMixinImpl._cancelLongPressDelayTimeout","TouchableMixinImpl._isHighlight","TouchableMixinImpl._savePressInLocation","TouchableMixinImpl._getDistanceBetweenPoints","TouchableMixinImpl._performSideEffectsForTransition","TouchableMixinImpl._startHighlight","TouchableMixinImpl._endHighlight","setTimeout$argument_0","TouchableImpl.renderDebugView"],"mappings":"AAA;2BC0B;CDsB;qBEyU;GFI;wBGO;GHI;4BIS;GJS;8CKQ;GLE;0CMO;GNE;kCOK;GPE;iCQS;GRoC;mCSO;GTG;qCUO;GVG;gCWO;GX2E;wBYY;GZE;uBaY;GbE;iCcgF;GdW;sBeI;Gf4B;gBgBI;GhBG;oBiBI;GjBS;kBkBY;GlBqC;gCmBI;GnBG;gBoBE;GpBK;wBqBI;GrBO;6BsBE;GtBS;oCuBe;GvBqE;mBwBI;GxBG;iByBI;+CCM;SDE;GzBK;mB2BwB;G3BY"}],[{"names":["<global>","BoundingDimensions","prototype.destructor","getPooledFromElement"],"mappings":"AAA;ACwB;CDG;0CEI;CFG;0CGM;CHQ"}],[{"names":["<global>","oneArgumentPooler","twoArgumentPooler","threeArgumentPooler","fourArgumentPooler","standardReleaser","addPoolingTo"],"mappings":"AAA;0BCsB;CDS;0BEI;CFS;4BGI;CHS;2BII;CJS;yBKM;CLU;qBMgB;CNoB"}],[{"names":["<global>","Position","prototype.destructor"],"mappings":"AAA;ACyB;CDG;gCEI;CFG"}],[{"names":["<global>","TouchableHighlightImpl","TouchableHighlightImpl#_createPressabilityConfig","onBlur","onFocus","onPress","setTimeout$argument_0","onPressIn","onPressOut","TouchableHighlightImpl#_createExtraStyles","TouchableHighlightImpl#_showUnderlay","TouchableHighlightImpl#_hideUnderlay","TouchableHighlightImpl#_hasPressHandler","TouchableHighlightImpl#render","TouchableHighlightImpl#componentDidMount","TouchableHighlightImpl#componentDidUpdate","TouchableHighlightImpl#componentWillUnmount","TouchableHighlight"],"mappings":"AAA;ACkL;ECa;cCc;ODO;eEC;OFO;eGE;yCCM;WDE;OHK;iBKC;OLS;kBMC;ONO;GDE;EQE;GRU;ESE;GTQ;EUE;GVc;EWE;GXO;EYE;GZqF;EaE;GbG;EcE;GdK;EeE;GfM;CDC;IiBK;6DjBM"}],[{"names":["<global>","TouchableWithoutFeedback","useMemo$argument_0"],"mappings":"AAA;eCmK;ICuB;MDmB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","createVirtualView","VirtualView","handleModeChange","startTransition$argument_0","createHiddenVirtualView"],"mappings":"AAA;AC6D;ECG;6BCa;0BCqB;WDG;0BCI;WDG;KDG;GDuB;CDE;OKI;CLE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","showActionSheetWithOptions","showShareActionSheetWithOptions","dismissActionSheet"],"mappings":"AAA;EC0E;GD2D;EEyB;GFuB;sBGM;GHK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getState","NativeEventEmitter.addListener$argument_1","getColorScheme","setColorScheme","addChangeListener","toColorScheme"],"mappings":"AAA;ACsC;0DCsB;KDK;CDI;OGO;CHe;OIK;CJS;OKK;CLK;AMK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","AppStateImpl","AppStateImpl#constructor","emitter.addListener$argument_1","NativeAppState.getCurrentAppState$argument_0","AppStateImpl#addEventListener"],"mappings":"AAA;AC0D;ECM;+CCsB;ODG;wCEM;OFO;GDE;EIQ;wDFY;SEE;0DFS;SEO;GJG;CDC"}],[{"names":["<global>","logError"],"mappings":"AAA;iBCiB;CDO"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","default.getString","default.setString"],"mappings":"AAA;ECwB;GDE;EEU;GFE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","show"],"mappings":"AAA;ECuB;GDI"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","addMenuItem","reload","onFastRefresh","emitter.addListener$argument_1"],"mappings":"AAA;ECmC,yDD;EEC,gCF;EGC,wBH;ICgB;6DGY;OHI;KDE;IEC;KFM;IGC;KHE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","LinkingImpl","LinkingImpl#constructor","LinkingImpl#addEventListener","LinkingImpl#openURL","LinkingImpl#canOpenURL","LinkingImpl#openSettings","LinkingImpl#getInitialURL","LinkingImpl#sendIntent","Promise$argument_0","LinkingImpl#_validateURL"],"mappings":"AAA;ACuB;ECC;GDE;EEQ;GFK;EGO;GHO;EIO;GJO;EKO;GLM;EMQ;GNI;EOS;yBCW,qDD;GPE;ESE;GTM;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","install","global.RN$registerExceptionListener$argument_0","console.warn","RCTLog.setWarningHandler$argument_0","uninstall","isInstalled","ignoreLogs","ignoreAllLogs","clearAllLogs","addLog","addConsoleLog","addException","isRCTLogAdviceWarning","registerWarning"],"mappings":"AAA;ICiD;UCS;WDK;uBEmB;SFE;+BGS;OHE;KDC;IKE;KLY;IME;KNE;IOK;KPE;IQO;KRE;ISE;KTE;IUE;KVI;IWE;KXwD;EYK;GZI;gCaE;GbI;0BcE;Gd2B;ICG;KDE;IKE;KLE;IME;KNE;IOE;KPE;IQE;KRE;ISE;KTE;IUE;KVE;IWE;KXE;IYE;KZE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","_initializeGestureState","_updateGestureStateOnMove","create","panHandlers.onStartShouldSetResponder","panHandlers.onMoveShouldSetResponder","panHandlers.onStartShouldSetResponderCapture","panHandlers.onMoveShouldSetResponderCapture","panHandlers.onResponderGrant","panHandlers.onResponderReject","panHandlers.onResponderRelease","panHandlers.onResponderStart","panHandlers.onResponderMove","panHandlers.onResponderEnd","panHandlers.onResponderTerminate","panHandlers.onResponderTerminationRequest","getInteractionHandle","clearInteractionHandle"],"mappings":"AAA;ECuS;GDY;EE0B;GFoC;EGkC;MCsB;ODI;MEC;OFI;MGC;OHW;MIE;OJe;MKE;OLgB;MME;ONO;MOE;OPQ;MQE;ORM;MSE;OTgB;MUE;OVS;MWE;OXQ;MYE;OZI;MaI;ObE;GHE;AiBG;CjBa"}],[{"names":["<global>","centroidDimension","currentCentroidXOfTouchesChangedAfter","currentCentroidYOfTouchesChangedAfter","previousCentroidXOfTouchesChangedAfter","previousCentroidYOfTouchesChangedAfter","currentCentroidX","currentCentroidY"],"mappings":"AAA;qBC6B;GDuD;yCEE;GFU;yCGE;GHU;0CIE;GJU;0CKE;GLU;oBME;GNO;oBOE;GPO"}],[{"names":["<global>","PermissionsAndroidImpl","PermissionsAndroidImpl#checkPermission","PermissionsAndroidImpl#check","PermissionsAndroidImpl#requestPermission","PermissionsAndroidImpl#request","Promise$argument_0","NativeDialogManagerAndroid.showAlert$argument_1","NativeDialogManagerAndroid.showAlert$argument_2","PermissionsAndroidImpl#requestMultiple"],"mappings":"AAA;ACoI;ECgB;GDiB;EEQ;GFc;EGgB;GHgB;EIQ;2BCuB;YCU,kDD;YEC;6EFE;SDE;GJK;EQS;GRiB;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","PushNotificationIOS","presentLocalNotification","scheduleLocalNotification","cancelAllLocalNotifications","removeAllDeliveredNotifications","getDeliveredNotifications","removeDeliveredNotifications","setApplicationIconBadgeNumber","getApplicationIconBadgeNumber","cancelLocalNotifications","getScheduledLocalNotifications","addEventListener","PushNotificationEmitter.addListener$argument_1","removeEventListener","requestPermissions","abandonPermissions","checkPermissions","getInitialNotification","NativePushNotificationManagerIOS.getInitialNotification.then$argument_0","getAuthorizationStatus","constructor","Object.keys.forEach$argument_0","finish","getMessage","getSound","getCategory","getAlert","getContentAvailable","getBadgeCount","getData","getThreadID"],"mappings":"AAA;AC+K;EC8B;GDS;EEgB;GFS;EGO;GHM;EIO;GJM;EKQ;GLQ;EMO;GNM;EOO;GPM;EQO;GRM;ESQ;GTM;EUO;GVM;EWQ;QCe;SDE;QCK;SDE;QCK;SDE;QCK;SDE;GXI;EaQ;Gbc;EcS;Gd2B;Eec;GfM;EgBY;GhBS;EiBQ;MCM;ODE;GjBE;EmBM;GnBS;EoBQ;uCCW;ODY;GpBS;EsBS;GtBkB;EuBK;GvBG;EwBQ;GxBE;EyBO;GzBE;E0BQ;G1BE;E2BO;G3BE;E4BO;G5BE;E6BO;G7BE;E8BO;G9BE;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Share","share","NativeShareModule.share.then$argument_0","Promise$argument_0","NativeActionSheetManager.showShareActionSheetWithOptions$argument_1","NativeActionSheetManager.showShareActionSheetWithOptions$argument_2"],"mappings":"AAA;AC2C;ECqC;QCkC;UDG;yBEG;UCwB,sBD;UEC;WFY;OFE;GDI;CDY"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useAnimatedValue"],"mappings":"AAA;eCa"}],[{"names":["<global>","subscribe","<anonymous>","useColorScheme"],"mappings":"AAA;kBCiB;SCE,qCD;CDC;eGE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","vibrateByPattern","setTimeout$argument_0","vibrateScheduler","vibrate","cancel"],"mappings":"AAA;ACwB;aCc,iDD;CDC;AGE;IDoB,0DC;CHG;WIQ;GJwB;UKM;GLM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","expoAssetTransformer"],"mappings":"AAA;mBCM;KDoB"}],[{"names":["<global>","Asset","constructor","loadAsync","moduleIds.map$argument_0","fromModule","fromMetadata","fromURI","downloadAsync","Promise$argument_0","_downloadCallbacks.forEach$argument_0"],"mappings":"AAA;OCkB;IC6C;KD8B;IEa;yCCE,wDD;KFC;IIQ;KJ6C;IKE;KLmB;IME;KNqB;IOkB;8BCK;aDE;4CEkB,0BF;4CEG,yBF;KPQ;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","NativeJSLogger.addListener$argument_1"],"mappings":"AAA;mDC4C;KDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","requireNativeModule","requireOptionalNativeModule"],"mappings":"AAA;OCe;CDO;OES;CFiB"}],[{"names":["<global>","Object.keys.forEach$argument_0","NativeProxy.exportedMethodsKey.moduleName.forEach$argument_0","moduleName.methodInfo.name","moduleName.addListener","moduleName.removeListeners"],"mappings":"AAA;uDC2B;wDCM;wDCC;ODmB;KDC;mDGa;uFHC;uDIC;2FJC;mDGK,QH;uDIC,QJ;GDE"}],[{"names":["<global>","createTurboModuleToExpoProxy","Object.keys.forEach$argument_0","expoModuleProxy.addListener"],"mappings":"AAA;OCG;0DCO;GDE;mCCI;KDE;gCEG;GFM;CDG"}],[{"names":["<global>","ensureNativeModulesAreInstalled"],"mappings":"AAA;OCM;CDe"}],[{"names":["<global>","select"],"mappings":"AAA;MCwB;ODW"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","CodedError","constructor"],"mappings":"AAA;OCK;ECI;GDG;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","uuidv4","uuidv5"],"mappings":"AAA;ACG;CDU;AEE;CFgB"}],[{"names":["<global>","bytesToUuid"],"mappings":"AAA;ACS;CD0B"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","requireNativeComponent","componentRegistryGet$argument_1","requireCachedNativeComponent","requireNativeViewManager","NativeComponent","NativeComponent#componentDidMount","NativeComponent#render"],"mappings":"AAA;ACkD;qDCW;GDe;CDC;AGO;CHa;OIK;ECiB;ICS;KDE;IEE;KFE;GDC;CJmB"}],[{"names":["<global>","registerWebModule"],"mappings":"AAA;OCU;CDoB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","usePermission","getPermission","requestPermission","runMethods","didMount","<anonymous>","createPermissionHook"],"mappings":"AAA;ACiC;oCCQ;GDS;wCEE;GFS;IGG;KHG;YIK;WCE;KDE;GJC;CDG;OOM;SDG;wDCC;CPC"}],[{"names":["<global>","createSnapshotFriendlyRef"],"mappings":"AAA;OCO;CDE"}],[{"names":["<global>","useReleasingSharedObject","useMemo$argument_0","dependencies.every$argument_0","useEffect$argument_0","<anonymous>"],"mappings":"AAA;OCS;yBCY;yBCI,+DD;GDW;UCE;GDE;YGE;WCG;KDK;GHC;CDG"}],[{"names":["<global>","reloadAppAsync"],"mappings":"AAA;OCQ;CDE"}],[{"names":["<global>","UnavailabilityError","constructor"],"mappings":"AAA;OCQ;ECC;GDK;CDC"}],[{"names":["<global>","LegacyEventEmitter","constructor","addListener","subscription.remove","removeAllListeners","removeSubscription","emit"],"mappings":"AAA;OC4B;ECS;GDS;EEE;cCS;ODE;GFG;EIE;GJiB;EKE;0BFiB,QE;GLK;EME;GNE;CDC"}],[{"names":["<global>","selectAssetSource","meta.scales.findIndex$argument_0","resolveUri"],"mappings":"AAA;OCU;wCCI,kBD;CD2C;OGM;CHG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","<anonymous>","isRunningInExpoGo","getLocalAssets","getManifest2"],"mappings":"AAA;4BCI;CDO;AEC;CFE;OGa;CHE;OIC;CJE"}],[{"names":["<global>","Object.defineProperties$argument_1.__unsafeNoWarnManifest.get","Object.defineProperties$argument_1.__unsafeNoWarnManifest2.get","Object.defineProperties$argument_1.manifest.get","Object.defineProperties$argument_1.manifest2.get","Object.defineProperties$argument_1.expoConfig.get","Object.defineProperties$argument_1.expoGoConfig.get","Object.defineProperties$argument_1.easConfig.get","Object.defineProperties$argument_1.__rawManifest_TEST.get","Object.defineProperties$argument_1.__rawManifest_TEST.set","isEmbeddedManifest","isExpoUpdatesManifest","getManifest"],"mappings":"AAA;QC6D;SDM;QEI;SFM;QGI;SHM;QII;SJM;QKI;SLiB;QMI;SNY;QOI;SPY;QQI;SRE;QSC;STE;AUI;CVE;AWC;CXE;AYC;CZiB"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCC;CDM;CCG;CDI;CCO;CDM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getFilename","getBasename","getFileExtension","getManifestBaseUrl"],"mappings":"AAA,OC;CDa;AEC;CFE;OGC;CHK;OIY;CJqB"}],[{"names":["<global>","downloadAsync"],"mappings":"AAA;OCW;CDE"}],[{"names":["<global>","isImageType","getImageInfoAsync","Promise$argument_0","img.onload"],"mappings":"AAA;OCE;CDE;OEC;uBCI;qBCG;SDM;KDE;CFC"}],[{"names":["<global>","getLocalAssetUri"],"mappings":"AAA;OCM;CDc"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useAssets","useEffect$argument_0"],"mappings":"AAA;OCuB;cCG;KDE;CDE"}],[{"names":["<global>","<anonymous>","isRunningInExpoGo","getExpoGoProjectConfig"],"mappings":"AAA;4BC+B;CDM;OEK;CFE;OGM;CHE"}],[{"names":["<global>","AppEntryNotFound"],"mappings":"AAA;OCE;CDW"}],[{"names":["<global>","customizeUnavailableMessage","customizeModuleIsMissingMessage","customizeError","errorHandler","createErrorHandler","<anonymous>","disableErrorHandling"],"mappings":"AAA;ACS;CDE;AEE;CFI;AGE;CHS;AIE;CJK;OKE;SCC;GDO;CLC;OOE;CPE"}],[{"names":["<global>","countTodo","interventions.filter$argument_0","MissionsScreen","MissionsDashboard.props.onOpenDetail","AppNavigatorStack","parseOnboardingPayload","pickString","AppInner","useEffect$argument_0","registerSessionRevokedHandler$argument_0","<anonymous>","registerBillingWallHandler$argument_0","loadInterventions","prefetchTodoWorkflows","snap.items.filter$argument_0","snap.items.filter.map$argument_0","reloadIfLogged","onTap","setTimeout$argument_0","applyEnvironmentFromValue","onSaveEnvironment","onScanPayload","onSelectSavedInstance","onRemoveSavedInstance","onChangeInstance","onPress","onLogin","onLogout","onRefreshInterventions","refreshUser","triggerReconnectSync","handleNetworkChange","handleAppStateChange","bootstrap","instances.find$argument_0","renderHome","renderMissions","renderStats","renderMyInfo","renderSupport","renderBottles","renderPlanning","PlanningScreen.props.onOpenDetail","renderAppNavigator","renderOnboardingScreen","RootStack.Screen.props.children","OnboardingScreen.props.onSaveEnvironment","renderLoginScreen","LoginScreen.props.onLogin","renderRootScreen","App"],"mappings":"AAA;ACwG;8BCC,6BD;CDC;AGkB;sBCyB;SDE;CHK;AKY;CL4C;AMS;qBCO;GDM;CN4B;AQK;YCsC;GDK;YCO;kCCC;KDM;WEC,yCF;GDC;YCQ;+BGC;KHO;WEC,sCF;GDC;4BKE;GLuB;gCMQ;oCCG,6BD,ME,WF;GNW;YCoB;2BQC;KRI;kBSM;KTY;WEI;KFG;GDC;YCK;6BUM;KVI;WEC,yBF;GDC;oCYE;GZuC;4BaE;GbI;wBcE;GdmB;gCeI;GfmC;gCgBE;GhBG;2BiBE;mBCmC;afC;aekB;WDC;GjBI;kBmBE;GnBmG;mBoBE;GpBe;iCqBE;GrBG;sBsBI;GtBO;YCE;iCsBU;KtBiB;gCuBE;kCNiB,mBM;KvBK;iCwBK;KxBS;sByBE;2CCiC,mCD;cvBoB;SuBU;KzBkE;WEI;KFQ;GDC;qB4BM;iBVe,qCU;iBVO,oCU;iBVO,qCU;iBVO,mCU;iBVO,kCU;iBVO,oCU;G5Be;yB6BE;G7BgB;sB8BE;4E9BE;uB+BE;G/BS;wBgCE;GhCU;wBiCE;gDjCE;yBkCE;oBCO;4FDC;GlCG;6BoCE;GpCU;iCqCc;OCE;6BCS;WDE;ODM;GrCE;4BwCE;OFE;mBGc;WHE;OEG;GxCE;2B0CE;G1CQ;CRW;emDI;CnDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","StatusBar","React.useMemo$argument_0","setStatusBarStyle","setStatusBarHidden","setStatusBarBackgroundColor","setStatusBarNetworkActivityIndicatorVisible","setStatusBarTranslucent","styleToBarStyle"],"mappings":"AAA;OCqB;iCCU,yCD;CDkB;OGQ;CHE;OIQ;CJE;OKS;CLE;OMQ;CNE;OOS;CPE;AQE;CRgB"}],[{"names":["<global>","areWeTestingWithJest"],"mappings":"AAA;ACC;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useEvent","listener","useEventListener","useEffect$argument_0","callback","<anonymous>"],"mappings":"AAA;OCkD;mBCa,yDD;CDK;OGwB;YCU;qBCC,gDD;WEM,2BF;GDC;CHC"}],[{"names":["<global>","getDevicePushTokenAsync"],"mappings":"AAA;eCS;CDkB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","warnOfExpoGoPushUsage"],"mappings":"AAA;qCCG;CDW"}],[{"names":["<global>","unregisterForNotificationsAsync"],"mappings":"AAA;eCG;CDK"}],[{"names":["<global>","getExpoPushTokenAsync","fetch._catch$argument_0","parseResponse","getExpoPushToken","getDeviceIdAsync","getDeviceToken","shouldUseDevelopmentNotificationService","getTypeOfToken"],"mappings":"AAA;eC4C;aCgC;KDE;CD4B;AGC;CHY;AIC;CJU;AKE;CLU;AMC;CNK;AOE;CPa;AQE;CRU"}],[{"names":["<global>","getAndroidId","getInstallReferrerAsync","getIosIdForVendorAsync","getIosApplicationReleaseTypeAsync","getIosPushNotificationServiceEnvironmentAsync","getInstallationTimeAsync","getLastUpdateTimeAsync"],"mappings":"AAA;OCgE;CDK;OEc;CFK;OGsB;CHK;OIO;CJK;OKS;CLK;OMmB;CNM;OOc;CPM"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCK;CDO"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","updatePushTokenAsync","setAutoServerRegistrationEnabledAsync","__handlePersistedRegistrationInfoAsync","addPushTokenListener$argument_0","ServerRegistrationModule.getRegistrationInfoAsync.then$argument_1"],"mappings":"AAA;ACO;CDS;OEQ;CFsB;OGE;CHyB;yBII;KJoB;qGKI;KLE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","addPushTokenListener","PushTokenManager.addListener$argument_1"],"mappings":"AAA;OC+B;2DCE,+ED;CDC"}],[{"names":["<global>","getLastRegisteredTokenDataAsync","setLastRegisteredTokenDataAsync","hasDeviceTokenChangedAsync","updateDevicePushTokenAsync","doUpdateDevicePushTokenAsync","retry","Promise$argument_0","getDeviceIdAsync","getTypeOfToken","shouldUseDevelopmentNotificationService"],"mappings":"AAA;ACS;CDe;AEC;CFc;OGK;CHmB;OIC;yCCC;KDuD;kBEE;KFE;8BGe,qDH;CJG;AQE;CRU;ASE;CTU;AUE;CVa"}],[{"names":["<global>","<anonymous>","computeNextBackoffInterval"],"mappings":"AAA;wDCC;CDE;AEG;CFU"}],[{"names":["<global>","_typeof","<anonymous>","_defineProperties","_createClass","_toPropertyKey","_toPrimitive","_classCallCheck","lazyLoadComparison","escapeFn","innerFail","fail","innerOk","ok","equal","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","keys.forEach$argument_0","compareExceptionKey","expectedException","getActual","checkIsPromise","waitForActual","Promise.resolve.then$argument_0","Promise.resolve.then.then$argument_0","Promise.resolve.then.then._catch$argument_0","expectsError","expectsNoError","throws","rejects","waitForActual.then$argument_0","doesNotThrow","doesNotReject","ifError","internalMatch","match","doesNotMatch","strict"],"mappings":"AAA;ACyB,sIC,iCD,GC,qID,eD;AGC,6UH;AIC,6RJ;AKC,6HL;AMC,6XN;AOC,yJP;AQuB;CRI;eSO;CTE;AUgB;CVG;AWC;CXgC;AYK;CZmB;AaI;CbK;ecK;Cdc;kBeI;Cfc;mBgBG;ChBc;sBiBG;CjBc;yBkBG;ClBc;AmBE;CnBc;qBoBC;CpBa;wBqBC;CrBa;2CsBC;eCG;GDQ;CtBC;AwBC;CxByB;AyBC;iBF6B;KEK;CzBW;A0BC;C1BU;A2BC;C3BU;A4BC;gCCC;YCgB;KDE,QE;KFE;GDC;C5BC;AgCC;ChCmC;AiCC;CjCkB;gBkCC;ClCK;iBmCC;uCCI;GDE;CnCC;sBqCC;CrCK;uBsCC;gCFI;GEE;CtCC;iBuCC;CvC2C;AwCI;CxCuB;eyCC;CzCE;sB0CC;C1CE;A2CG;C3CK"}],[{"names":["<global>","_typeof","<anonymous>","_defineProperties","_createClass","_toPropertyKey","_toPrimitive","_classCallCheck","_inherits","_setPrototypeOf","_createSuper","_createSuperInternal","_possibleConstructorReturn","_assertThisInitialized","_isNativeReflectConstruct","Reflect.construct$argument_2","_getPrototypeOf","createErrorType","getMessage","NodeError","oneOf","expected.map$argument_0","startsWith","endsWith","includes","createErrorType$argument_1","args.map$argument_0"],"mappings":"AAA;ACc,sIC,iCD,GC,qID,eD;AGC,6UH;AIC,6RJ;AKC,6HL;AMC,6XN;AOC,yJP;AQC,ocR;ASC,wMT;AUC,qGC,iUD,GV;AYC,gSZ;AaC,sKb;AcC,2QC,cD,gDd;AgBC,oNhB;AiBM;ECI;GDM;+BfC;IiBG;KjBM;GeE;CjBE;AoBG;4BCG;KDE;CpBW;AsBG;CtBE;AuBG;CvBK;AwBG;CxBS;wCyBE;CzBwB;yCyBC;CzBQ;4CyBC;CzBQ;oCyBC;kBCQ;GDE;CzBc"}],[{"names":["<global>","getOwnPropertyDescriptors","exports.format","String.replace$argument_1","exports.deprecate","<anonymous>","deprecated","exports.debuglog","debugs.set","inspect","stylizeWithColor","stylizeNoColor","arrayToHash","array.forEach$argument_0","formatValue","keys.map$argument_0","formatPrimitive","formatError","formatArray","keys.forEach$argument_0","formatProperty","str.split.map$argument_0","reduceToSingleString","output.reduce$argument_0","isArray","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","isPrimitive","objectToString","pad","timestamp","exports.log","exports._extend","hasOwnProperty","promisify","fn","Promise$argument_0","args.push$argument_0","callbackifyOnRejected","callbackify","callbackified","cb","original.apply.then$argument_0","original.apply.then$argument_1"],"mappings":"AAA;ECsB;GDO;iBEG;4CCY;GDe;CFS;oBIM;WCO;KDE;EEI;GFY;CJG;mBOc;oBCK;ODG;oBCE,aD;CPI;ASW;CTuB;AUmC;CVS;AWG;CXE;AYG;gBCG;GDE;CZG;AcG;sBCsG;KDE;CdM;AgBG;ChBgB;AiBG;CjBE;AkBG;eCU;GDK;ClBE;AoBG;oCC0B;WDE;2CCE;WDE;CpBwB;AsBG;6BCE;GDI;CtBY;AwBO;CxBE;AyBG;CzBE;A0BG;C1BE;A2BG;C3BE;A4BG;C5BE;A6BG;C7BE;A8BG;C9BE;A+BG;C/BE;AgCG;ChCE;AiCI;CjCE;AkCG;ClCE;AmCI;CnCG;AoCI;CpCE;AqCG;CrCO;AsCK;CtCE;AuCG;CvCE;AwCO;CxCM;cyCI;CzCE;kB0CkB;C1CU;A2CE;C3CE;oB4CI;ECe;8BCE;KDG;cEM;KFM;GDS;C5CW;AgDI;ChDW;AiDE;ECQ;aCW;KDE;YEI,4DF;YGC,6EH;GDC;CjDM"}],[{"names":["<global>","uncurryThis","checkBoxedPrimitive","isPromise","isArrayBufferView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMapToString","isMap","isSetToString","isSet","isWeakMapToString","isWeakMap","isWeakSetToString","isWeakSet","isArrayBufferToString","isArrayBuffer","isDataViewToString","isDataView","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isBoxedPrimitive","isAnyArrayBuffer","forEach$argument_0","Object.defineProperty$argument_2.value"],"mappings":"AAA;ACU;CDE;AEmB;CFU;AGQ;CHa;AIG;CJS;AKI;CLE;AMG;CNE;AOG;CPE;AQG;CRE;ASG;CTE;AUG;CVE;AWG;CXE;AYG;CZE;AaG;CbE;AcG;CdE;AeG;CfE;AgBG;ChBE;AiBM;CjBQ;AkBG;ClBE;AmBK;CnBQ;AoBG;CpBE;AqBK;CrBQ;AsBG;CtBE;AuBK;CvBE;AwBG;CxBE;AyBK;CzBQ;A0BG;C1BE;A2BM;C3BQ;A4BK;C5BE;A6BC;C7BY;A8BG;C9BE;A+BG;C/BE;AgCG;ChCE;AiCG;CjCE;AkCG;ClCE;AmCG;CnCE;AoCG;CpCE;AqCG;CrCE;AsCG;CtCE;AuCG;CvCE;AwCG;CxCQ;AyCG;CzCK;6D0CG;WCG;KDE;C1CE"}],[{"names":["<global>","isArguments","<anonymous>"],"mappings":"AAA;0BCQ;CDU;wBCG;CDY;iCEE;CFE"}],[{"names":["<global>","hasToStringTagShams"],"mappings":"AAA;iBCK;CDE"}],[{"names":["<global>","hasSymbols"],"mappings":"AAA;iBCI;CDwC"}],[{"names":["<global>","callBoundIntrinsic"],"mappings":"AAA;iBCU;CDQ"}],[{"names":["<global>","getEvalledConstructor","throwTypeError","<anonymous>","doEval","stringToPath","$replace$argument_2","getBaseIntrinsic","GetIntrinsic"],"mappings":"AAA;4BCyB;CDI;qBEK;CFE;IGE;EHa;aI+G;CJuB;mBKoE;8BCS;EDE;CLE;uBOG;CPyB;iBQE;CRiF"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","sign"],"mappings":"AAA;iBCK;CDK"}],[{"names":["<global>","isNaN"],"mappings":"AAA;iCCG;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","hasNativeSymbols"],"mappings":"AAA;iBCM;CDO"}],[{"names":["<global>","getProto"],"mappings":"AAA;GCS;EDG;ICE;GDM;KCE;IDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getDunder"],"mappings":"AAA;mCCyB;GDG"}],[{"names":["<global>","callBindBasic"],"mappings":"AAA;iBCS;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","concatty","slicy","joiny","bind","binder","Empty"],"mappings":"AAA;eCS;CDW;YEE;CFM;YGE;CHS;iBIE;iBCQ;KDgB;oBEW,mBF;CJO"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","isGeneratorFunction"],"mappings":"AAA;iBCc;CDgB"}],[{"names":["<global>","regexTester","test"],"mappings":"AAA;iBCS;QCI;EDE;CDC"}],[{"names":["<global>","throwRegexMarker","isRegex"],"mappings":"AAA;wBCgB;EDE;MEc;EFkB;MEQ;EFO"}],[{"names":["<global>","<anonymous>","module.exports"],"mappings":"AAA;4DCG,eD;iBEG,YF"}],[{"names":["<global>","indexOf","forEach$argument_1","tryAllTypedArrays","tryAllSlices","whichTypedArray"],"mappings":"AAA;6DCkB;CDO;sBEM;EFkB;sBEE;EFY;qBGI;EDK;GCS;CHG;gBIG;mFFI;GEQ;CJG;iBKG;CLgB"}],[{"names":["<global>","forEachArray","forEachString","forEachObject","isArray","forEach"],"mappings":"AAA;mBCQ;CDU;oBEG;CFS;oBGG;CHU;AIG;CJE;iBKG;CLiB"}],[{"names":["<global>","Object.defineProperty$argument_2.get","reflectApply$argument_0","isES6ClassFunction","tryFunctionToStr","isDocumentDotAll","isCallable"],"mappings":"AAA;QCS;IDE;eEI,yBF;mBGW;CHO;wBIE;CJQ;YKY,6CL;UKK;GLe;GMK;ENU;GMC;ENS"}],[{"names":["<global>","availableTypedArrays"],"mappings":"AAA;iBCO;CDS"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","callBind"],"mappings":"AAA;iBCS;CDQ"}],[{"names":["<global>","setFunctionLength"],"mappings":"AAA;iBCW;CD8B"}],[{"names":["<global>","defineDataProperty"],"mappings":"AAA;iBCU;CD6C"}],[{"names":["<global>","hasPropertyDescriptors","hasArrayLengthDefineBug"],"mappings":"AAA;6BCI;CDE;iDEE;CFW"}],[{"names":["<global>","applyBind"],"mappings":"AAA;iBCO;CDE"}],[{"names":["<global>","isTypedArray"],"mappings":"AAA;iBCK;CDE"}],[{"names":["<global>","isBuffer"],"mappings":"AAA,iBC"}],[{"names":["<global>","inherits","TempCtor"],"mappings":"AAA;mBCE;GDY;mBCG;qBCG,cD;GDK"}],[{"names":["<global>","ownKeys","o.filter$argument_0","_objectSpread","ownKeys.forEach$argument_0","_defineProperty","_classCallCheck","_defineProperties","_createClass","_toPropertyKey","_toPrimitive","_inherits","_createSuper","_createSuperInternal","_possibleConstructorReturn","_assertThisInitialized","_wrapNativeSuper","Wrapper","_construct","_isNativeReflectConstruct","Reflect.construct$argument_2","_isNativeFunction","_setPrototypeOf","_getPrototypeOf","_typeof","<anonymous>","endsWith","repeat","copyError","keys.forEach$argument_0","inspectValue","createErrDiff","AssertionError","toString","value"],"mappings":"AAA;ACK,iJC,yED,qCD;AGC,kKC,6CD,oIC,oFD,gBH;AKC,4OL;AMC,yJN;AOC,6UP;AQC,6RR;ASC,6HT;AUC,6XV;AWC,ocX;AYC,qGC,iUD,GZ;AcC,gSd;AeC,sKf;AgBC,4bC,8FD,6NhB;AkBC,yalB;AmBC,2QC,cD,gDnB;AqBC,qGrB;AsBC,wMtB;AuBC,oNvB;AwBC,sIC,iCD,GC,qID,exB;A0BO;C1BK;A2BG;C3BW;A4BsB;eCG;GDE;C5BK;A8BC;C9BsB;A+BC;C/ByM;kCyBC;EOG;GPiH;WQG;KRE;WSG;KTS;CzBG"}],[{"names":["<global>","lacksProperEnumerationOrder","assignHasPendingExceptions","getPolyfill"],"mappings":"AAA;kCCI;CDoB;iCEE;CFe;iBGE;CHW"}],[{"names":["<global>","assign"],"mappings":"AAA;iBCY;CDiC"}],[{"names":["<global>","keys","shimObjectKeys","<anonymous>"],"mappings":"AAA;0BCM,wCD;gBEI;gCCE;GDI;iBDE;ICK;CFM"}],[{"names":["<global>","isArguments"],"mappings":"AAA;iBCI;CDY"}],[{"names":["<global>","isEnumerable.call$argument_0","equalsConstructorPrototype","<anonymous>","equalsConstructorPrototypeIfNotBuggy","keys"],"mappings":"AAA;yCCU,cD;kCEU;EFG;iCG0B;EHiB;4CIC;EJU;YKE;ELwC"}],[{"names":["<global>","getPolyfill"],"mappings":"AAA;iBCI;CDE"}],[{"names":["<global>","numberIsNaN","is"],"mappings":"AAA;kBCE;CDE;iBEE;CFW"}],[{"names":["<global>","callBoundIntrinsic"],"mappings":"AAA;iBCQ;CDM"}],[{"names":["<global>","_slicedToArray","_nonIterableRest","_unsupportedIterableToArray","_arrayLikeToArray","_iterableToArrayLimit","_arrayWithHoles","_typeof","<anonymous>","arrayFromSet","set.forEach$argument_0","arrayFromMap","map.forEach$argument_0","uncurryThis","isNonIndex","getOwnNonIndexProperties","compare","areSimilarRegExps","areSimilarFloatArrays","areSimilarTypedArrays","areEqualArrayBuffers","isEqualBoxedPrimitive","innerDeepEqual","getEnumerables","keys.filter$argument_0","keyCheck","setHasEqualElement","findLooseMatchingPrimitives","setMightHaveLoosePrim","mapMightHaveLoosePrim","setEquiv","mapHasEqualEntry","mapEquiv","objEquiv","isDeepEqual","isDeepStrictEqual"],"mappings":"AAA;ACK,8JD;AEC,iMF;AGC,gaH;AIC,mLJ;AKC,ohBL;AMC,qEN;AOC,sIC,iCD,GC,qID,eP;mBSE;cCE;GDE;CTE;mBWC;cCE;GDE;CXE;gGQE;CRE;AaE;CbE;AcoB;CdQ;AeC;CfE;AgBU;ChBoB;AiBU;CjBE;AkBC;ClBU;AmBC;CnBK;AoBC;CpBE;AqBC;CrBc;AsBqB;CtByG;AuBC;qBCC;GDE;CvBC;AyBC;CzBkF;A0BC;C1BY;A2BM;C3BoB;A4BC;C5BI;A6BC;C7BU;A8BC;C9B+C;A+BC;C/Ba;AgCC;ChC2C;AiCC;CjC8C;AkCC;ClCE;AmCC;CnCE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","isFunction","defineProperty","defineProperties"],"mappings":"AAA;iBCS;CDE;qBEI;CFgB;uBGE;CHS"}],[{"names":["<global>","shimObjectIs","testObjectIs"],"mappings":"AAA;iBCK;MCG;GDE;CDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","isNaN"],"mappings":"AAA;iBCI;CDE"}],[{"names":["<global>","getPolyfill"],"mappings":"AAA;iBCI;CDK"}],[{"names":["<global>","shimNumberIsNaN","testIsNaN"],"mappings":"AAA;iBCO;SCG;GDE;CDG"}],[{"names":["<global>","getPresentedNotificationsAsync","map$argument_0"],"mappings":"AAA;eCS;8ECI,+CD;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","mapNotificationResponse","mapNotification","mapNotificationRequest","mapNotificationContent","Object.defineProperty$argument_2.get"],"mappings":"AAA;uCCU;CDK;+BEU;EFG;sCGU;EHG;sCIU;gBCQ;iBDO;CJS"}],[{"names":["<global>","dismissNotificationAsync"],"mappings":"AAA;eCQ;CDK"}],[{"names":["<global>","dismissAllNotificationsAsync"],"mappings":"AAA;eCO;CDK"}],[{"names":["<global>","getBadgeCountAsync"],"mappings":"AAA;eCQ;CDK"}],[{"names":["<global>","default.setBadgeCountAsync"],"mappings":"AAA;wBCO;KDE"}],[{"names":["<global>","setBadgeCountAsync"],"mappings":"AAA;eCY;CDM"}],[{"names":["<global>","getAllScheduledNotificationsAsync","map$argument_0"],"mappings":"AAA;eCQ;iFCI,4CD;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","scheduleNotificationAsync","parseTrigger","parseCalendarTrigger","parseDateTrigger","toTimestamp","parseDailyTrigger","parseWeeklyTrigger","parseMonthlyTrigger","parseYearlyTrigger","parseTimeIntervalTrigger","validateDateComponentsInTrigger","components.forEach$argument_0","daysInMonth"],"mappings":"AAA;eCgE;CDK;OEC;CFiD;AGC;CHS;AIC;CJwB;AKC;CLK;AMC;CNiB;AOC;CPkB;AQC;CRkB;ASC;CTmB;AUC;CVkB;AWG;uBCE;KD8C;CXC;AaK;CbE"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCK;CDQ;CCM;CDM"}],[{"names":["<global>","hasValidTriggerObject"],"mappings":"AAA,OC;CDG"}],[{"names":["<global>","cancelScheduledNotificationAsync"],"mappings":"AAA;eCsB;CDK"}],[{"names":["<global>","cancelAllScheduledNotificationsAsync"],"mappings":"AAA;eCO;CDK"}],[{"names":["<global>","getNotificationCategoriesAsync"],"mappings":"AAA;eCU;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setNotificationCategoryAsync"],"mappings":"AAA;eCc;CDK"}],[{"names":["<global>","deleteNotificationCategoryAsync"],"mappings":"AAA;eCW;CDK"}],[{"names":["<global>","getNextTriggerDateAsync"],"mappings":"AAA;eC0B;CDK"}],[{"names":["<global>","useLastNotificationResponse","useLayoutEffect$argument_0","setLastNotificationResponse$argument_0","addNotificationResponseReceivedListener$argument_0","addNotificationResponseClearedListener$argument_0","<anonymous>","determineNextResponse"],"mappings":"AAA;eCwC;oBCG;oCCG,+DD;qEEE,0CD,+DC,CF;iFGC;SHE;eIC;SJG;KDC;CDE;qCOI;CPW"}],[{"names":["<global>","addNotificationReceivedListener","emitter.addListener$argument_1","addNotificationsDroppedListener","addNotificationResponseReceivedListener","getLastNotificationResponseAsync","getLastNotificationResponse","clearLastNotificationResponseAsync","clearLastNotificationResponse","addNotificationResponseClearedListener"],"mappings":"AAA;OCmC;gECC;KDG;CDC;OGS;CHE;OI2B;wEFC;KEG;CJC;OKW;CLE;OMQ;CNO;OOY;CPE;OQU;CRO;OSI;CTE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","registerTaskAsync"],"mappings":"AAA;eCwC;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","unregisterTaskAsync"],"mappings":"AAA;eCO;CDK"}],[{"names":["<global>","NotificationTimeoutError","NotificationTimeoutError#constructor","setNotificationHandler","notificationEmitter.addListener$argument_1"],"mappings":"AAA;OCM;ICE;KDG;CDC;OGkC;0FCU;SDkB;wGCC,oHD;CHE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getPermissionsAsync","requestPermissionsAsync"],"mappings":"AAA;OCqB;CDK;OEuB;CFc"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCE;CDK;CCG;CDM;CCG;CDY;CCG;CDgB"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCC;CDI;CCE;CDI;CCE;CDM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","createStaticNavigation","Navigation","React.useMemo$argument_0"],"mappings":"AAA;OCa;ECE;wCCI;KDU;0CCC;KDU;GDU;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getPartialState","state.routes.map$argument_0","BaseNavigationContainer","useSyncState$argument_0","getKey","setKey","useLatestCallback$argument_0","listeners.focus._$argument_0","React.useMemo$argument_0","Object.keys.reduce$argument_0","acc.name","isFocused","getParent","setOptions","React.useImperativeHandle$argument_1","getIsInitial","React.useEffect$argument_0","duplicateRouteNamesResult.map$argument_0"],"mappings":"AAA;wBCgC;6BCc;KDQ;CDE;qEGc;mBCoB,sED;mCEG,6BF;mCGC;GHE;qCIS;yBCI,yCD;GJE;sCIC;2BCO,oCD;GJM;sCIC;yBCK;QDG;GJE;yCIC;GJE;4CIC;GJO;oCIC,gCJ;mCMM;yCCC;kBCC;4CDE;KDE;eGI,UH;eIE,eJ;gBKM;KLE;INC;iCYC,gBZ;6CIC;GJS;4CIE;GJW;uCME;INQ;yCaE,0Bb;gCMC;INQ;kBcG;GdI;kBcE;GdQ;kBcC;+HC8C,wCD;GdkB;qDIC;GJgC;CHyB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","goBack","navigate","navigateDeprecated","reset","setParams","replaceParams","preload"],"mappings":"AAA;OCE;CDI;OEC;CFyB;OGC;CHmB;OIC;CJK;OKC;CLO;OMC;CNO;OOC;CPQ"}],[{"names":["<global>","getStateForAction","state.routes.findIndex$argument_0","state.routes.map$argument_0","nextState.routes.some$argument_0","nextState.routeNames.some$argument_0","nextState.routes.map$argument_0","shouldActionChangeFocus"],"mappings":"AAA;ECQ;+DCK,4BD;qCEM;iBFM;qEGM,+CH;qGII,wCJ;2CKK;eLG;GDQ;EOC;GPE"}],[{"names":["<global>","customAlphabet","<anonymous>","nanoid"],"mappings":"AAA;qBCE;SCC;GDO;CDC;aGC;CHO"}],[{"names":["<global>","DrawerActions.openDrawer","DrawerActions.closeDrawer","DrawerActions.toggleDrawer","DrawerRouter","isDrawerInHistory","state.history.some$argument_0","addDrawerToHistory","removeDrawerFromHistory","state.history.filter$argument_0","openDrawer","closeDrawer","getInitialState","getRehydratedState","getStateForRouteFocus","getStateForAction"],"mappings":"AAA;ECM;GDI;EEC;GFI;EGC;GHI;OIE;4BCK,qCC,0BD,ED;6BGC;GHW;kCIC;oCCM,0BD;GJE;qBMC;GNK;sBOC;GPK;IQI;KRiB;ISC;KTwB;IUC;KVG;IWC;KX6B;CJG"}],[{"names":["<global>","TabActions.jumpTo","getRouteHistory","routes.findIndex$argument_0","changeIndex","history.filter$argument_0","history.findLastIndex$argument_0","TabRouter","router.getInitialState","routeNames.map$argument_0","router.getRehydratedState","state.routes.find$argument_0","routes.map$argument_0","state.history.filter$argument_0","state.preloadedRouteKeys.filter$argument_0","router.getStateForRouteNamesChange","routes.find$argument_0","router.getStateForRouteFocus","state.routes.findIndex$argument_0","router.getStateForAction","state.routes.map$argument_0","updatedState.preloadedRouteKeys.filter$argument_0","state.history.findLastIndex$argument_0","state.routes.findLastIndex$argument_0"],"mappings":"AAA;ECO;GDQ;wBEE;2CCwB,wCD;CFe;oBIC;+BCM,+DD;8DEE,6BF;CJqB;OOC;ICO;oCCK;QDI;KDY;IGC;oCDQ;wCEC,oBF;OCU;mCEE,kBF;4CGC,gCH;6DIS,8BJ;KHE;IQC;oCNK,0BE,yDF;OMI;MFI,yCG,qBH,CE;KRW;IUC;2CCC,kBD;KVK;IYC;iDDS,2CC;uCCM;eDgC;yEEI,mDF;qEGW,qCH;qDIwB,kCJ;kELe,sCK;sDDO,2CC;kELwB,wBK;uCCC,yDD;gFNC,kCM;KZM;CPI"}],[{"names":["<global>","createParamsFromAction"],"mappings":"AAA;OCE;CDY"}],[{"names":["<global>","StackActions.replace","StackActions.push","StackActions.pop","StackActions.popToTop","StackActions.popTo","StackRouter","router.getInitialState","router.getRehydratedState","state.routes.filter$argument_0","state.routes.filter.map$argument_0","state.preloadedRoutes.filter$argument_0","state.preloadedRoutes.filter.map$argument_0","router.getStateForRouteNamesChange","router.getStateForRouteFocus","state.routes.findIndex$argument_0","router.getStateForAction","state.preloadedRoutes.find$argument_0","state.routes.map$argument_0","state.routes.findLast$argument_0","state.routes.findLastIndex$argument_0","state.routes.find$argument_0"],"mappings":"AAA;ECO;GDQ;EEC;GFQ;EGC;GHO;EIC;GJI;EKC;GLY;OME;ICI;KDkB;IEC;yCCQ,wCD,ME;QFO;4DGC,wCH,MI;QJO;KFkB;IOC;yCJK,iFI;KPe;IQC;2CCC,kBD;KRS;IUC;uGDO,4BC;mDCa;cDE;uCES,wCF;4DLC,wBK;4CGe;gBHE;8CGQ,2CH;iDCI;gBDE;6CPiC,wBO;4DLkB,oDK;2CCS;cDE;6CDW;gBCE;iDII,2CJ;uGDsC,4BC;2GIqB,4BJ;6CDe;gBCE;qDCe;gBDE;8DLY,wBK;wCK8C;gBLE;yCEK;iBFW;8DLK;kBKE;KVU;CNI"}],[{"names":["<global>","createRouteFromAction"],"mappings":"AAA;OCI;CDe"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useLatestCallback","latestCallback","useClientLayoutEffect$argument_0"],"mappings":"AAA;ACa;sCCE;KDM;0BEC;KFE;CDE"}],[{"names":["<global>","checkDuplicateRouteNames","getRouteNames","state.routes.forEach$argument_0","route.state.routeNames.forEach$argument_0"],"mappings":"AAA;OCE;wBCE;yBCC;uCCE;ODI;KDI;GDC;CDG"}],[{"names":["<global>","checkSerializableWithoutCircularReference","checkSerializable"],"mappings":"AAA;kDCE;CDuC;OEC;CFE"}],[{"names":["<global>","createNavigationContainerRef","removeListener","listeners.event.filter$argument_0","ref.get__current","ref.set__current","Object.entries.forEach$argument_0","callbacks.forEach$argument_0","ref.isReady","methods.reduce$argument_0","acc.name","<anonymous>"],"mappings":"AAA;OCI;yBCG;iDCE,qBD;GDE;IGG;KHE;IIC;0CCG;4BCC;WDE;SDC;KJE;aOC;KPK;sBQC;kBCC;uBCQ,qCD;ODe;KRE;CDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","EnsureSingleNavigator","React.useMemo$argument_0","register","unregister"],"mappings":"AAA;OCU;8BCI;ICC;KDM;IEC;KFM;IDC;CDK"}],[{"names":["<global>","findFocusedRoute"],"mappings":"AAA;OCE;CDO"}],[{"names":["<global>","React.createContext$argument_0.onDispatchAction","React.createContext$argument_0.onOptionsChange","React.createContext$argument_0.scheduleUpdate","React.createContext$argument_0.flushUpdates"],"mappings":"AAA;oBCO,eD;mBEC,eF;kBGC;GHE;gBIC;GJE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","React.createContext$argument_0.get__getKey","React.createContext$argument_0.get__setKey","React.createContext$argument_0.get__getState","React.createContext$argument_0.get__setState","React.createContext$argument_0.get__getIsInitial"],"mappings":"AAA;ECM;GDE;EEC;GFE;EGC;GHE;EIC;GJE;EKC;GLE"}],[{"names":["<global>","ThemeProvider"],"mappings":"AAA;OCK;CDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useChildListeners","addListener","<anonymous>"],"mappings":"AAA;OCM;wCCO;WCG;KDM;GDC;CDK"}],[{"names":["<global>","useEventEmitter","React.useEffect$argument_0","create","removeListener","addListener","<anonymous>","emit","Object.keys.map$argument_0","concat.filter$argument_0","event.get__type","Object.defineProperty$argument_2.get","Object.defineProperties$argument_1.defaultPrevented.get","Object.defineProperties$argument_1.preventDefault.value","callbacks.forEach$argument_0","React.useMemo$argument_0"],"mappings":"AAA;OCM;kBCE;GDE;mCEE;2BCC;KDS;wBEC;aCK;ODM;KFC;GFK;iCMC;0GCS,aD,UE,2CF;MGE;OHE;QIK;SJE;QIM;SJE;UKQ;WLE;UMI;WNE;uBOK,eP;GNE;uBcC;IdG;CDC"}],[{"names":["<global>","useKeyedChildListeners","addKeyedListener","<anonymous>"],"mappings":"AAA;OCM;6CCO;WCG;KDG;GDC;CDK"}],[{"names":["<global>","useNavigationIndependentTree"],"mappings":"AAA;OCI;CDE"}],[{"names":["<global>","useOptionsGetters","optionsChangeListener","React.useEffect$argument_0","getOptionsFromListener","getCurrentOptions","addOptionsGetter","<anonymous>"],"mappings":"AAA;OCK;kDCa;GDM;kBEC;GFI;mDGC;GHY;8CIC;GJU;kBEC;GFE;6CKC;WCG;KDI;GLC;CDK"}],[{"names":["<global>","createStore","getState","setState","listeners.forEach$argument_0","subscribe","<anonymous>","batchUpdates","useSyncState","useLatestCallback$argument_0","store.batchUpdates$argument_0"],"mappings":"AAA;oBCK;mBCI;GDO;mBEG;wBCI,sBD;GFE;oBIC;WCE;KDK;GJC;uBMC;wBHM,sBG;GNE;CDO;OQC;2CCK;GDE;yCCC;yBCI;ODK;GDE;CRQ"}],[{"names":["<global>","isPlainObject","deepFreeze"],"mappings":"AAA;6BCE;CDK;0BEC;CFwB"}],[{"names":["<global>","createNavigatorFactory","createNavigator","_with","WithComponent","getComponent"],"mappings":"AAA;OCc;ECE;QCU;gCCC;WDI;0BEI,mBF;SDE;QGC;SHE;GDQ;CDE"}],[{"names":["<global>","Group"],"mappings":"AAA;OCK;CDG"}],[{"names":["<global>","Screen"],"mappings":"AAA;OCK;CDG"}],[{"names":["<global>","React.memo$argument_0","getItemsFromScreens","Object.entries.map$argument_0","<anonymous>","_jsx$argument_1.children","createComponentForStaticNavigation","groupItems.map$argument_0","NavigatorComponent","items.map$argument_0","createComponentForStaticNavigationDeprecated","createPathConfigForStaticNavigation","createPathConfigForTree","createPathConfigForScreens","Object.entries.sort$argument_0","Object.entries.sort.map$argument_0","Object.entries.sort.map.filter$argument_0","Object.entries.forEach$argument_0"],"mappings":"AAA;+CC8B;CDQ;4BEE;qCCC;WC+B;kBCQ,aD;KDE;GDC;CFC;OMS;+CHwB;eCK;0CGE,cH;SDU;OGC;6BEM;+BCC,cD;kHJC;MIG;wHJI;MIG;GFW;CNG;OUO;CVG;OWoB;kCCG;uCCC;YCI;ODQ,ME;OF4C,SG,8CH;KDC;gDKU;SLE;GDO;CXM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","typeOf","exports.isContextConsumer","exports.isContextProvider","exports.isElement","exports.isForwardRef","exports.isFragment","exports.isLazy","exports.isMemo","exports.isPortal","exports.isProfiler","exports.isStrictMode","exports.isSuspense","exports.isSuspenseList","exports.isValidElementType"],"mappings":"AAA;ACyB;CD8B;4BEa;CFE;4BGC;CHE;oBIC;CJM;uBKC;CLE;qBMC;CNE;iBOC;CPE;iBQC;CRE;mBSC;CTE;qBUC;CVE;uBWC;CXE;qBYC;CZE;yBaC;CbE;6BcC;CdmB"}],[{"names":["<global>","useRoute"],"mappings":"AAA;OCS;CDM"}],[{"names":["<global>","NavigationProvider"],"mappings":"AAA;OCe;CDsB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useIsFocused","subscribe","<anonymous>"],"mappings":"AAA;OCW;sCCI;aCI,QD;WCI;KDG;GDC;CDM"}],[{"names":["<global>","useNavigation"],"mappings":"AAA;OCU;CDS"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getActionFromState","createNormalizedConfigItem","createNormalizedConfigs","Object.entries.reduce$argument_0"],"mappings":"AAA;OCE;CD+F;mCEC;MFG;gCGC,0CC;CDG,KH"}],[{"names":["<global>","getFocusedRouteNameFromRoute"],"mappings":"AAA;OCG;CDa"}],[{"names":["<global>","useRouteCache","React.useMemo$argument_0","routes.reduce$argument_0"],"mappings":"AAA;OCe;8BCE;IDE;gCEC;GFkC;CDE"}],[{"names":["<global>","isRecordEqual","aKeys.every$argument_0"],"mappings":"AAA;OCK;qBCS,gCD;CDC"}],[{"names":["<global>","getActiveRoute","getNormalizedConfigs","getPathFromState","Object.entries.map$argument_0","options.parts.find$argument_0","Object.entries.map.filter$argument_0","parts.forEach$argument_0","parts.map$argument_0","Array.from.map$argument_0","createConfigItem","createNormalizedConfigs"],"mappings":"AAA;uBCK;CDM;6BEE;CFO;OG+B;kFC2B;mDCG,0BD;SDU,SG,sBH;oBIY;WJU;yBKuB;+CCsB,sFD;OLG;iFCK,sCD;CHoC;yBUC;CV0B;gCWC,mEP;COG,EX"}],[{"names":["<global>","isNullOrUndefined","encoderForArrayFormat","<anonymous>","parserForArrayFormat","value.split.map$argument_0","validateArrayFormatSeparator","encode","decode","keysSorter","keysSorter.sort$argument_0","keysSorter.sort.map$argument_0","removeHash","getHash","extract","parseValue","parse","reduce$argument_0","exports.stringify","shouldFilter","keys.map$argument_0","keys.map.filter$argument_0","exports.parseUrl","exports.stringifyUrl","exports.pick","exports.exclude"],"mappings":"AAA;0BCM,8CD;AEI;UCG;IDmB;UCG;IDc;UCG;IDc;UCS;IDiB;UCI;IDc;CFE;AIE;UDK;ICe;UDG;ICe;UDG;ICe;UDI;+FEI,6BF;ICE;UDG;mDEW,6BF;ICQ;UDG;ICO;CJE;AME;CNI;AOE;CPM;AQE;CRM;ASE;SCO,+BD;QEC,iBF;CTI;AYE;CZO;AaE;CbQ;AcE;CdQ;AeE;CfQ;AgBE;uGCuD;EDU;ChBC;oBkBK;sBCc;EDG;iBEkB;EFsB,SG,iBH;ClBC;mBsBE;CtBc;uBuBE;CvBuB;ewBE;CxBY;kByBE;iDtBC,4BsB,GtB,mCsB;CzBG"}],[{"names":["<global>","module.exports","encodeURIComponent.replace$argument_1"],"mappings":"AAA;iBCC,mDC,qDD,CD"}],[{"names":["<global>","decodeComponents","decode","customDecodeURIComponent","module.exports"],"mappings":"AAA;ACK;CDmB;AEE;CFc;AGE;CHmC;iBIE;CJc"}],[{"names":["<global>","module.exports"],"mappings":"AAA;iBCE;CDmB"}],[{"names":["<global>","module.exports"],"mappings":"AAA;iBCC;CDe"}],[{"names":["<global>","getPatternParts","parts.map$argument_0"],"mappings":"AAA;OCK;2BCuF,kBD;CDO"}],[{"names":["<global>","formatToList","Object.entries.map$argument_0","validatePathConfig","Object.keys.map$argument_0","Object.entries.forEach$argument_0"],"mappings":"AAA;qBCE,mCC,uCD,YD;OGC;sECe;GDkB;2CEQ;KFI;CHE"}],[{"names":["<global>","getStateFromPath","remaining.split.filter.map$argument_0","configs.find$argument_0","match.routeNames.map$argument_0","getConfigResources","prepareConfigResources","getInitialRoutes","getSortedNormalizedConfigs","Object.keys.map$argument_0","concat.sort$argument_0","checkForDuplicatedConfigs","configs.reduce$argument_0","b.every$argument_0","a.every$argument_0","getConfigsWithRegexes","configs.map$argument_0","matchAgainstConfigs","config.routeNames.map$argument_0","Object.entries.map$argument_0","routeConfig.params.find$argument_0","Object.entries.map.filter$argument_0","Object.entries.map.filter.map$argument_0","createNormalizedConfigs","Object.keys.forEach$argument_0","createConfigItem","getPatternParts.map$argument_0","parts.map$argument_0","parts.map.filter$argument_0","findParseConfigForRoute","findInitialRoute","createStateObject","createNestedStateObject","parseQueryParams"],"mappings":"AAA;OC8B;4DC4B;KDK;+BES,0CF;gEGE;QHE;CDuB;AKM;CLO;AMC;CNa;AOC;CPS;AQC;+CCE,uED,QE;GF2E;CRC;AWC;iBCE;uDCQ,sBD,YE,sBF;GDQ;CXC;AeC;qBCC;IDI;CfC;4BiBC;qCCa;yCfC;SeG;yGCC;gDCE,wBD;SDK,SG,gBH,MI;SJO;ODU;CjBS;gCuBC;0CCgE;ODG;CvBK;yByBC;4CCQ;MDG;yDEE;GFM;6BEC,gBF;2BEC;UFI,SG,gBH;CzBS;gC6BC;C7BO;yB8BG;C9BgB;0B+BI;C/BsC;gCgCC;ChC4B;yBiCC;gCTI;KSI;CjCG"}],[{"names":["<global>","module.exports"],"mappings":"AAA;iBCE;CDU"}],[{"names":["<global>","arrayStartsWith","start.every$argument_0"],"mappings":"AAA;OCK;qBCI,kCD;CDC"}],[{"names":["<global>","isArrayEqual","a.every$argument_0"],"mappings":"AAA;OCM;iBCO,sCD;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","NavigationIndependentTree"],"mappings":"AAA;OCY;CDoB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","transformPreventedRoutes","preventedRoutesToTransform.reduce$argument_0","PreventRemoveProvider","React.useState$argument_0","useLatestCallback$argument_0","navigation.getState.routes.every$argument_0","setPreventedRoutesMap$argument_0","some$argument_0","React.useEffect$argument_0","<anonymous>","React.useMemo$argument_0"],"mappings":"AAA;iCCY;4DCE;GDQ;CDE;OGK;oCCG,cD;qECC,eD;6CEM;oFCC,+BD;0BEG;KFe;GFC;4DKC;qBLE;kBMC;aCK;ODE;GNG;8BQC;IRG;CHK"}],[{"names":["<global>","useTheme"],"mappings":"AAA;OCI;CDM"}],[{"names":["<global>","PrivateValueStore"],"mappings":"AAA;OCE,0BD"}],[{"names":["<global>","useFocusEffect","React.useEffect$argument_0","callback","navigation.addListener$argument_1","<anonymous>"],"mappings":"AAA;OCW;kBCQ;qBCG;KDgB;6DEO;KFW;2DEC;KFM;WGC;KHM;GDC;CDC"}],[{"names":["<global>","isScreen","isGroup","isValidKey","getRouteConfigsFromChildren","React.Children.toArray.reduce$argument_0","configs.forEach$argument_0","getStateFromParams","useNavigationBuilder","useLazyValue$argument_0","routeConfigs.every$argument_0","routeConfigs.reduce$argument_0","routeConfigs.map$argument_0","routeNames.reduce$argument_0","screens.curr.keys.map$argument_0","isStateValid","isStateInitialized","doesStateHaveOnlyInvalidRoutes","state.routes.every$argument_0","useLatestCallback$argument_0","React.useMemo$argument_0","React.useEffect$argument_0","unhandledState.routes.every$argument_0","Object.keys.filter$argument_0","useScheduleUpdate$argument_0","<anonymous>","useClientLayoutEffect$argument_0","useEventEmitter$argument_0","state.routes.find$argument_0","routeNames.map$argument_0","map$argument_0","Object.keys.filter.map$argument_0","concat.filter$argument_0","listeners.forEach$argument_0","useComponent$argument_0"],"mappings":"AAA;iBC2C;CDE;gBEC;CFE;mBGC,iEH;oCIO;0DCC;GDsC;oBEE;KFuC;CJG;2BOC;CPa;OQS;8BCe;4DCC,qDD;GDY;sCGC;GHM;sCIC,2BJ;yCKC;uCCC,gBD;GLE;2CKC;GLM;2CKC;ILE;yCOI,+DP;+CQC,4ER;2DSC,4BC,iCD,CT;qCWW;GXW;+HYC;oDPY;KOU;GZoC;kBaE;GbE;mCcsB,gCd,yBU,iCV;wDea,yFf;kBagD;GbI;oBgBE;GhBQ;kBaQ;GbE;kBaE;WIc;KJM;GbE;wBkBS;GlBE;qCWC;GXG;kCmBC;gCCI,+BD;qDJM,4BI;2CEQ;KFK,OG;2CPK,uBO,MC,mBD;KHC;YKG,iDL;sBMC,yBN;GnBC;kBaK;GbO;8CW8B;GXY;yC0B0C;G1BsB;CRQ"}],[{"names":["<global>","equal"],"mappings":"AAA;iBCM;CDuC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","NavigationContent","useComponent","React.useEffect$argument_0","React.useRef$argument_0"],"mappings":"AAA;0BCI;CDK;OEC;kBCO;GDE;sBEC;GFW;CFC"}],[{"names":["<global>","useCurrentRender"],"mappings":"AAA;OCQ;CDS"}],[{"names":["<global>","useDescriptors","React.useMemo$argument_0","getOptions","optionsList.reduce$argument_0","render","clearOptions","setOptions$argument_0","routes.reduce$argument_0","acc.route.key.render","describe"],"mappings":"AAA;OCkB;gCCwB;IDW;qBEa;8BCY;ODM;GFC;iBIC;yBCG,iBC;KDU,CD;GJoC;oCOC;MCQ;ODE;GPI;mBSS;MLa;OKE;GTG;CDK"}],[{"names":["<global>","SceneView","getKey","setKey","getCurrentState","state.routes.find$argument_0","setCurrentState","state.routes.map$argument_0","React.useEffect$argument_0","getIsInitial","React.useMemo$argument_0","isConsumed","setConsumed","setConsumedParams$argument_0","addState"],"mappings":"AAA;OCe;mCCW,6BD;mCEQ;GFE;4CGC;2CCE,wBD;GHE;4CKC;oCCE;KDQ;GLO;kBOE;GPE;kBOG;GPG;yCQC,0BR;8CSG;gBCC;KDK;iBEC;wBCC;ODO;KFC;ITC;0CSC;qBIW;KJW;GTE;gCSC;ITQ;CD0B"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","StaticContainer","React.memo$argument_1"],"mappings":"AAA;uDCO;CDE,EE;CFe"}],[{"names":["<global>","useNavigationCache","React.useMemo$argument_0","dispatch","Object.keys.reduce$argument_0","addListener","<anonymous>","removeListener","getParent","setOptions","isFocused","state.routes.reduce$argument_0","withStack","acc.name","withStack$argument_0","acc.route.key.dispatch","acc.route.key.getParent","acc.route.key.setOptions","setOptions$argument_0","acc.route.key.isFocused"],"mappings":"AAA;OCU;6BCW;qBCU;KDE;gDEC;KFG;mBGI;eCG;SDE;OHC;sBKC;OLE;iBME;ONK;kBOC;OPE;iBQC,WR;GDE;8BCK;IDE;sCUG;uBRM;OQQ;wBCC;ODc;kDPK;oBSC,uBC;wCDE,CT;OOE;kBIM,mBD,qBC,CJ;mBKC;SLO;oBMC;qBCC;YDM;SNC;mBQC;SRS;GVI;CDK"}],[{"names":["<global>","useFocusedListenersChildrenAdapter","listener","React.useEffect$argument_0"],"mappings":"AAA;OCO;qCCO;GDwB;kBEC,sCF;CDC"}],[{"names":["<global>","useFocusEvents","React.useEffect$argument_0","navigation.addListener$argument_1"],"mappings":"AAA;OCO;kBCU,uCC;GDM,CD;kBCC,sCC;GDM,CD;kBCC;GD8B;CDC"}],[{"names":["<global>","useLazyValue"],"mappings":"AAA;OCG;CDM"}],[{"names":["<global>","useNavigationHelpers","React.useMemo$argument_0","dispatch","Object.keys.reduce$argument_0","acc.name","<anonymous>","navigationHelpers.canGoBack","navigationHelpers.getId","navigationHelpers.getParent","navigationHelpers.getState"],"mappings":"AAA;OCa;uBCU;qBCC;KDM;gDEK;kBCE,6CD;KFE;+EIM,UJ;iBKC;OLO;aMC,iBN;iBOC;OPS;gBQC;ORU;GDG;CDC"}],[{"names":["<global>","useNavigationState","NavigationStateListenerProvider","useLatestCallback$argument_0","<anonymous>","listeners.current.filter$argument_0","React.useLayoutEffect$argument_0","listeners.current.forEach$argument_0","React.useMemo$argument_0"],"mappings":"AAA;OCW;CDS;OEC;qCCM,sBD;sCCC;WCE;mDCC,qBD;KDC;GDC;wBIC;8BCE,sBD;GJC;gCMC;ING;CFK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","is","exports.useSyncExternalStoreWithSelector","useMemo$argument_0","memoizedSelector","<anonymous>","useEffect$argument_0"],"mappings":"AAA;ACY;CDE;2CEO;ICa;MCC;ODmB;QEO;SFE;YEG;aFE;KDE;IIK;KJG;CFK"}],[{"names":["<global>","useOnAction","React.useEffect$argument_0","onAction"],"mappings":"AAA;OCe;kBCkB;GDE;qCEC;GFsD;kBCM,6CD;CDE"}],[{"names":["<global>","shouldPreventRemove","nextRoutes.map$argument_0","currentRoutes.filter$argument_0","useOnPreventRemove","React.useEffect$argument_0","addKeyedListener$argument_2"],"mappings":"AAA;mCCM;uCCC,kBD;6CEG,2CF;CDiC;OIC;kBCU;0DCE;ODG;GDE;CJC"}],[{"names":["<global>","useOnGetState","getRehydratedState","state.routes.map$argument_0","React.useEffect$argument_0"],"mappings":"AAA;OCM;+CCS;oCCI;KDS;GDQ;kBGC;GHE;CDC"}],[{"names":["<global>","useOnRouteFocus","<anonymous>"],"mappings":"AAA;OCS;2BCS;GDS;CDC"}],[{"names":["<global>","useRegisterNavigator","React.useState$argument_0","React.useEffect$argument_0","<anonymous>"],"mappings":"AAA;OCU;+BCC,cD;kBEK;WCM,qBD;GFC;CDE"}],[{"names":["<global>","useScheduleUpdate"],"mappings":"AAA;OCa;CDU"}],[{"names":["<global>","useNavigationContainerRef"],"mappings":"AAA;OCI;CDM"}],[{"names":["<global>","usePreventRemove","React.useState$argument_0","React.useEffect$argument_0","<anonymous>","useLatestCallback$argument_0"],"mappings":"AAA;OCe;8BCC,cD;kBEQ;WCE;KDE;GFC;iDIC;GJQ;kBEC,mEF;CDC"}],[{"names":["<global>","usePreventRemoveContext"],"mappings":"AAA;OCI;CDM"}],[{"names":["<global>","useStateForPath"],"mappings":"AAA;OCW;CDG"}],[{"names":["<global>","NavigationContainerInner","React.useMemo$argument_0","useLatestCallback$argument_0","setLastUnhandledLink$argument_0","React.useEffect$argument_0","REACT_NAVIGATION_DEVTOOLS.set$argument_1.get__linking","React.useImperativeHandle$argument_1"],"mappings":"AAA;ACgB;uCCyB;IDE;gDCC;IDG;sDEC;yBCG;KDK;GFE;4DEC;yBCG;KDK;GFE;kBIG;QCG;SDS;GJG;iCMK,0BN;CD4B"}],[{"names":["<global>","React.createContext$argument_0.get__options"],"mappings":"AAA;ECK;GDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","React.createContext$argument_0.get__lastUnhandledLink","React.createContext$argument_0.get__setLastUnhandledLink"],"mappings":"AAA;ECK;GDE;EEC;GFE"}],[{"names":["<global>","useBackButton","React.useEffect$argument_0","BackHandler.addEventListener$argument_1","<anonymous>"],"mappings":"AAA;OCI;kBCC;2ECC;KDU;WEC,2BF;GDC;CDC"}],[{"names":["<global>","useDocumentTitle"],"mappings":"AAA;OCE;CDE"}],[{"names":["<global>","useLinking","<anonymous>","Promise$argument_0","callback","React.useEffect$argument_0","getStateFromURL","getInitialState","url.then$argument_0","thenable.then","thenable._catch","listener"],"mappings":"AAA;OCO;kBCK,yDC;GDI,GD;cCC;qBEC;uBFE;GDc;kBIK;WHc;KGK;GJC;kBIY;GJQ;4CKC;GLM;4CMC;0BCM;WDO;MEQ;OFE;MGC;OHE;GNG;kBIC;qBMC;KNsB;GJE;CDI"}],[{"names":["<global>","extractPathFromURL","host.split.map$argument_0"],"mappings":"AAA;OCG;8FCM,mDD;CDQ"}],[{"names":["<global>","_toArray"],"mappings":"AAA;ACI;CDE"}],[{"names":["_iterableToArray","<global>"],"mappings":"AAA;CCE"}],[{"names":["<global>","useThenable","promise.then$argument_0","React.useEffect$argument_0","resolve","<anonymous>"],"mappings":"AAA;OCG;eCM;GDE;kBEG;oBCE;KDS;WEI;KFE;GFC;CDE"}],[{"names":["<global>","Link","onPress"],"mappings":"AAA;OCgB;kBCmB;GDS;CDgB"}],[{"names":["<global>","getStateFromParams","useLinkProps","onPress"],"mappings":"AAA;2BCM;CDe;OEU;kBCW;GDiC;CFgB"}],[{"names":["<global>","ServerContainer","React.useEffect$argument_0","value.getCurrentOptions"],"mappings":"AAA;6DCa;kBCI;GDE;MEM;OFE;CD0B"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useBuildHref","buildHref","navigation.getState.routes.some$argument_0","constructState","useBuildAction","buildAction","useLinkBuilder"],"mappings":"AAA;OCQ;sCCQ;iKCU,wBD;2BEO;KFyB;GDI;CDE;8BKK;wCCM;GDW;CLE;OOO;CPO"}],[{"names":["<global>","useLinkTo","linkTo"],"mappings":"AAA;OCW;mCCG;GDM;CDE"}],[{"names":["<global>","useLocale"],"mappings":"AAA;OCQ;CDQ"}],[{"names":["<global>","useRoutePath","React.useMemo$argument_0"],"mappings":"AAA;OCW;6BCS;GDM;CDE"}],[{"names":["<global>","getScrollableNode","useScrollToTop","React.useEffect$argument_0","tabNavigations.map$argument_0","tab.addListener$argument_1","requestAnimationFrame$argument_0","<anonymous>","unsubscribers.forEach$argument_0"],"mappings":"AAA;ACI;CDoB;OEC;kBCM;6CCc;kBCK;8BCU;SDsB;ODC;KDC;WIC;4BCC,4BD;KJC;GDC;CFC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","NativeStackNavigator","React.useEffect$argument_0","navigation.addListener$argument_1","requestAnimationFrame$argument_0","createNativeStackNavigator"],"mappings":"AAA;ACM;kBC8B;iDCQ;4BCK;ODS;KDC;GDC;CDU;OKC;CLE"}],[{"names":["<global>","isFabric","SceneView","useFrameSize$argument_0","React.useMemo$argument_0","Animated.event$argument_1.listener","_jsx$argument_1.onLayout","NativeStackView","state.preloadedRoutes.reduce$argument_0","state.routes.concat.map$argument_0","_jsx$argument_1.onWillDisappear","_jsx$argument_1.onWillAppear","_jsx$argument_1.onAppear","_jsx$argument_1.onDisappear","_jsx$argument_1.onDismissed","_jsx$argument_1.onHeaderBackButtonClicked","_jsx$argument_1.onNativeDismissCancelled","_jsx$argument_1.onGestureCancel","_jsx$argument_1.onSheetDetentChanged"],"mappings":"AAA;ACgB;CDE;kBEE;mCC2G,mCD;2CCE;IDM;6CEuB,yEF;mCEW;GFS;cG0B;KH2B;sBI0F;aJI;CFmB;OOC;4DCW;GDG;+DEI;2BCwB;WDQ;wBEC;WFQ;oBGC;WHQ;uBIC;WJQ;uBKC;WLO;qCMC;WNM;oCOC;WPM;2BQC;WRK;gCSC;WTS;OFE;CPG"}],[{"names":["<global>"],"mappings":"AAA"}],null,null,null,null,null,[{"names":["<global>","Background"],"mappings":"AAA;OCM;CDc"}],[{"names":["<global>","Badge","React.useState$argument_0","React.useEffect$argument_0","Animated.timing.start$argument_0","<anonymous>"],"mappings":"AAA;OCQ;mCCO,yCD;kBEM;aCQ;KDM;WEC,6BF;GFC;CDuC"}],[{"names":["<global>","Color","Color.prototype.toString","Color.prototype.toJSON","Color.prototype.string","Color.prototype.percentString","Color.prototype.array","Color.prototype.object","Color.prototype.unitArray","Color.prototype.unitObject","Color.prototype.round","Color.prototype.alpha","getset$argument_2","Color.prototype.keyword","Color.prototype.hex","Color.prototype.hexa","Color.prototype.rgbNumber","Color.prototype.luminosity","Color.prototype.contrast","Color.prototype.level","Color.prototype.isDark","Color.prototype.isLight","Color.prototype.negate","Color.prototype.lighten","Color.prototype.darken","Color.prototype.saturate","Color.prototype.desaturate","Color.prototype.whiten","Color.prototype.blacken","Color.prototype.grayscale","Color.prototype.fade","Color.prototype.opaquer","Color.prototype.rotate","Color.prototype.mix","Color.prototype.model","Color.model","roundTo","roundToPlace","<anonymous>","getset","maxfn","assertArray","zeroArray"],"mappings":"AAA;ACqB;CD0F;CEG;EFE;CGE;EHE;CIE;EJK;CKE;ELI;CME;ENE;COE;EPc;CQE;ERW;CSE;ETW;CUE;EVG;CWE;EXM;qDYO,oCZ;Ca2B;EbM;CcE;EdM;CeE;Efa;CgBE;EhBG;CiBE;EjBW;CkBE;ElBU;CmBE;EnBQ;CoBE;EpBK;CqBE;ErBE;CsBE;EtBO;CuBE;EvBI;CwBE;ExBI;CyBE;EzBI;C0BE;E1BI;C2BE;E3BI;C4BE;E5BI;C6BE;E7BK;C8BE;E9BE;C+BE;E/BE;CgCE;EhCO;CiCE;EjCsB;0BkCY;ElCU;gBmCG;EnCO;AoCG;CpCE;AqCE;QCC;EDE;CrCC;AuCE;QDS;ECmB;CvCC;AwCE;QFC;EEE;CxCC;AyCE;CzCE;A0CE;C1CQ"}],[{"names":["<global>","cs.get","cs.get.rgb","cs.get.hsl","cs.get.hwb","cs.to.hex","cs.to.rgb","cs.to.rgb.percent","cs.to.hsl","cs.to.hwb","cs.to.keyword","clamp","hexDouble"],"mappings":"AAA;SCmB;CDwB;aEE;CFuF;aGE;CHmB;aIE;CJkB;YKE;CLY;YME;CNM;oBOE;CPU;YQE;CRK;YSI;CTS;gBUE;CVE;AWG;CXE;AYE;CZG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","swizzle","swizzle.wrap","<anonymous>"],"mappings":"AAA;+BCO;CDe;eEE;QCC;EDE;CFC"}],[{"names":["<global>","isArrayish"],"mappings":"AAA,iBC;CDQ"}],[{"names":["<global>","wrapRaw","wrappedFn","wrapRounded","models.forEach$argument_0","routeModels.forEach$argument_0"],"mappings":"AAA;ACO;mBCC;EDW;CDQ;AGE;mBDC;ECuB;CHQ;eIE;qBCS;EDK;CJC"}],[{"names":["<global>","convert.rgb.hsl","convert.rgb.hsv","diffc","convert.rgb.hwb","convert.rgb.cmyk","comparativeDistance","convert.rgb.keyword","convert.keyword.rgb","convert.rgb.xyz","convert.rgb.lab","convert.hsl.rgb","convert.hsl.hsv","convert.hsv.rgb","convert.hsv.hsl","convert.hwb.rgb","convert.cmyk.rgb","convert.xyz.rgb","convert.xyz.lab","convert.lab.xyz","convert.lab.lch","convert.lch.lab","convert.rgb.ansi16","convert.hsv.ansi16","convert.rgb.ansi256","convert.ansi16.rgb","convert.ansi256.rgb","convert.rgb.hex","convert.hex.rgb","colorString.split.map$argument_0","convert.rgb.hcg","convert.hsl.hcg","convert.hsv.hcg","convert.hcg.rgb","convert.hcg.hsv","convert.hcg.hsl","convert.hcg.hwb","convert.hwb.hcg","convert.apple.rgb","convert.rgb.apple","convert.gray.rgb","convert.gray.hsl","convert.gray.hwb","convert.gray.cmyk","convert.gray.lab","convert.gray.hex","convert.rgb.gray"],"mappings":"AAA;kBCsD;CDqC;kBEE;eCY;EDE;CF+B;kBIE;CJU;mBKE;CLW;AME;CNS;sBOE;CPuB;sBQE;CRE;kBSE;CTe;kBUE;CVmB;kBWE;CX8C;kBYE;CZc;kBaE;Cb0B;kBcE;CdgB;kBeG;CfwC;mBgBE;ChBW;kBiBE;CjB8B;kBkBE;ClBkB;kBmBE;CnBwB;kBoBE;CpBgB;kBqBE;CrBU;qBsBE;CtBoB;qBuBE;CvBI;sBwBE;CxByB;qByBE;CzBoB;sB0BE;C1Be;kB2BE;C3BO;kB4BE;0CCS;GDE;C5BS;kB8BE;C9BgC;kB+BE;C/BY;kBgCE;ChCY;kBiCE;CjCuC;kBkCE;ClCY;kBmCE;CnCe;kBoCE;CpCK;kBqCE;CrCY;oBsCE;CtCE;oBuCE;CvCE;mBwCE;CxCE;mByCE;CzCE;mB0CI;C1CE;oB2CE;C3CE;mB4CE;C5CE;mB6CE;C7CM;mB8CE;C9CG"}],[{"names":["<global>","buildGraph","deriveBFS","link","<anonymous>","wrapConversion","module.exports"],"mappings":"AAA;ACa;CDe;AEG;CFuB;AGE;QCC;EDE;CHC;AKE;CLa;iBME;CNkB"}],[{"names":["<global>","Button","ButtonLink","ButtonBase"],"mappings":"AAA;OCU;CDW;AEC;CFkB;AGC;CHkD"}],[{"names":["<global>","PlatformPressableInternal","React.useState$argument_0","animateTo","handlePress","handlePressIn","handlePressOut","HoverEffect"],"mappings":"AAA;ACc;mCCgB,2BD;oBEC;GFU;sBGC;GHmB;wBIC;GJG;yBKC;GLG;CDwB;oBO2B;CPuB"}],[{"names":["<global>","Text"],"mappings":"AAA;OCM;CDc"}],[{"names":["<global>","getDefaultSidebarWidth"],"mappings":"AAA;sCCI;CDY"}],[{"names":["<global>","getDefaultHeaderHeight"],"mappings":"AAA;OCG;CD6B"}],[{"names":["<global>","getHeaderTitle"],"mappings":"AAA;OCE;CDE"}],[{"names":["<global>","warnIfHeaderStylesDefined","Object.keys.forEach$argument_0","Header","useFrameSize$argument_0","onTitleLayout","setTitleLayout$argument_0","<anonymous>","_jsx$argument_1.onPress","_jsx$argument_1.onClose"],"mappings":"AAA;kCCqB;8BCC;GDO;CDC;OGC;6BCE,YD;wBEQ;mBCK;KDQ;GFC;wBIQ;MJE;0DIiL;IJE;qBK8D;aLG;iBMU;SNG;CHY"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","SafeAreaProvider","onInsetsChange","setFrame$argument_0","setInsets$argument_0","SafeAreaListener","NativeSafeAreaProvider.props.onInsetsChange","useParentSafeAreaInsets","useParentSafeAreaFrame","useSafeAreaInsets","useSafeAreaFrame","withSafeAreaInsets","React.forwardRef$argument_0","useSafeArea"],"mappings":"AAA;OCiC;2CCsB;aCK;KDa;cEE;KFY;GDC;CDiB;OKM;sBCU;ODK;CLK;AOM;CPE;AQE;CRE;OSK;CTM;OUE;CVM;OWM;sCCO;GDG;CXC;OaK;CbE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","React.forwardRef$argument_0","useMemo$argument_0","edges.reduce$argument_0"],"mappings":"AAA;ECuB;8BCC;iCCM;SDG;GDa;CDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useFrameSize","FrameSizeProvider","useLatestCallback$argument_0","<anonymous>","throttledListener","setTimeout$argument_0","React.useMemo$argument_0","listeners.current.forEach$argument_0","React.useEffect$argument_0","viewRef.current.measure$argument_0","onLayout","FrameSizeListenerWeb","ResizeObserver$argument_0"],"mappings":"AAA;OCQ;CDO;OEC;uCCS,sBD;sCCC;WCE;KDE;GDC;+CCC;8BEM;2BCK;SDK;mBCG;SDE;KFM;WCE;KDG;GDC;gCKC;ILI;qCCC;8BKQ,sBL;GDC;kBOE;6BCK;KDK;GPC;mBSC;GTS;CFU;AYI;kBHI;wCIS;KJY;WLE;KKE;GGC;CZa"}],[{"names":["<global>","HeaderBackButton","renderBackImage","renderLabel","_jsx$argument_1.onLayout","handlePress","requestAnimationFrame$argument_0"],"mappings":"AAA;OCW;0BC6B;GDY;sBEC;kBCmB,8CD;kBCK,uDD;GFmC;sBIC;4BCE,eD;GJE;CDc"}],[{"names":["<global>","MaskedView"],"mappings":"AAA;OCiB;CDW"}],[{"names":["<global>","HeaderButtonInternal"],"mappings":"AAA;ACM;CDiC"}],[{"names":["<global>","HeaderIcon"],"mappings":"AAA;OCK;CDmB"}],[{"names":["<global>","HeaderBackground"],"mappings":"AAA;OCM;CDkB"}],[{"names":["<global>","HeaderSearchBarInternal","React.useState$argument_0","React.useEffect$argument_0","Animated.timing.start$argument_0","<anonymous>","clearText","onClear","cancelSearch","React.useImperativeHandle$argument_1","focus","blur","setText","_jsx$argument_1.onPress"],"mappings":"AAA;ACqB;uCCsB,yCD;4CCC,2BD;kBEI;aCS;KDO;WEC;KFE;GFC;kBEE;aCQ;KDM;GFC;sCKC;GLI;oCMC;GNS;yCOC;GPG;kBEC,mDF;iCQC;WCC;KDE;UEC;KFE;aGC;KHK;IRG;eYwD;OZM;CDiB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getNamedContext"],"mappings":"AAA;OCM;CDS"}],[{"names":["<global>","HeaderTitle"],"mappings":"AAA;OCK;CDqB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useHeaderHeight"],"mappings":"AAA;OCI;CDM"}],[{"names":["<global>","getLabel"],"mappings":"AAA;OCE;CDE"}],[{"names":["<global>","Label"],"mappings":"AAA;OCK;CDY"}],[{"names":["<global>","Lazy","React.useEffect$argument_0","requestIdleCallback$argument_0","<anonymous>"],"mappings":"AAA;OCgB;kBCO;mCCI;KDE;WEC,4BF;GDC;CDS"}],[{"names":["<global>","MissingIcon"],"mappings":"AAA;OCK;CDY"}],[{"names":["<global>","ResourceSavingView"],"mappings":"AAA;OCO;CDmC"}],[{"names":["<global>","SafeAreaProviderCompat","_jsx$argument_1.render"],"mappings":"AAA;OC6B;YCO;KDwB;CDE"}],[{"names":["<global>","Screen","useFrameSize$argument_0","React.useLayoutEffect$argument_0","headerRef.current.measure$argument_0","_jsx$argument_1.onLayout"],"mappings":"AAA;OCY;2CCgB,kED;wBEG;+BCC;KDE;GFC;kBIc;SJK;CDe"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","enableScreens","enableFreeze","screensEnabled","freezeEnabled"],"mappings":"AAA;OCW;CDY;OEI;CFM;OGE;CHE;OIE;CJE"}],[{"names":["<global>","InnerScreen","React.useImperativeHandle$argument_1","setRef","handleRef","<anonymous>","React.forwardRef$argument_0"],"mappings":"AAA;EC4D;mCCE,uBD;mBEG;KFG;wBGiG;OHgB;eIqB;eJE;GD+E;mDMO;CNS"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","DelayedFreeze","React.useEffect$argument_0","setTimeout$argument_0","<anonymous>"],"mappings":"AAA;ACU;kBCI;0BCC;KDE;WEC;KFE;GDC;CDG"}],[{"names":["<global>","infiniteThenable.then","Suspender","Freeze"],"mappings":"AAA;2BCE,SD;AEE;CFW;OGQ;CHM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","usePrevious","useEffect$argument_0"],"mappings":"AAA;OCE;YCG;GDE;CDG"}],[{"names":["<global>","transformEdgeToEdgeProps"],"mappings":"AAA;OCQ;CDoB"}],[{"names":["<global>","assertDetentsArrayIsSorted","resolveSheetAllowedDetents","resolveSheetLargestUndimmedDetent","resolveSheetInitialDetentIndex","isIndexInClosedRange"],"mappings":"AAA;OCU;CDQ;OEI;CF4B;OGE;CH2B;OIE;CJoB;AKE;CLM"}],[{"names":["<global>","React.forwardRef$argument_0","ScreenStackHeaderBackButtonImage","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderSearchBarView"],"mappings":"AAA;EC0B;CDQ;gDEI;CFM;0CGE;CHU;yCIE;CJU;2CKE;CLU;8CME;CNQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","SearchBar","React.useImperativeHandle$argument_1","blur","_callMethodWithRef$argument_0","focus","toggleCancelButton","clearText","setText","cancelSearch","_callMethodWithRef"],"mappings":"AAA;ACqC;0CCM;UCC;yBCC,wCD;KDC;WGC;yBDC,yCC;KHC;wBIC;yBFC;6DEC;KJE;eKC;yBHC,6CG;KLC;aMC;yBJC,iDI;KNC;kBOC;yBLC,gDK;KPC;IDC;ISG;KTS;CD0B"}],[{"names":["<global>","executeNativeBackPress"],"mappings":"AAA;OCO;CDI"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ScreenContainer"],"mappings":"AAA;ACW;CDc"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","assertGHProvider","assertCustomScreenTransitionsProps","ScreenStack","React.useRef$argument_0.stackUseEffectCallback","React.useEffect$argument_0"],"mappings":"AAA;yBCkB;CDa;2CEE;CFc;AGE;4BCkB;KDE;kBEG;GFE;CHmC"}],[{"names":["<global>","React.createContext$argument_0"],"mappings":"AAA;ECI,yED"}],[{"names":["<global>","warnOnce"],"mappings":"AAA;ACI;CDW"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ScreenStackItem","React.useImperativeHandle$argument_1","React.useEffect$argument_0","Screen.props.ref"],"mappings":"AAA;AC2B;iCCoB,+BD;kBES;GFS;WGmD;OHkB;CD4B"}],[{"names":["<global>","DebugContainer"],"mappings":"AAA;0DCkB;CDE;mBCG;GDiB"}],[{"names":["<global>","ScreenContentWrapper"],"mappings":"AAA;ACI;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ScreenFooter","FooterComponent"],"mappings":"AAA;ACO;CDE;OEM;CFE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","FullWindowOverlay"],"mappings":"AAA;AC0B;CDe"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","featureFlags.experiment.get__controlledBottomTabs","featureFlags.experiment.set__controlledBottomTabs"],"mappings":"AAA;ICiD;KDE;IEC;KFW"}],[{"names":["<global>","useTransitionProgress"],"mappings":"AAA;eCI;CDU"}],[{"names":["<global>","BottomTabs","React.useEffect$argument_0","onNativeFocusChangeCallback"],"mappings":"AAA;ACqB;kBCc;GDO;IEG;KFO;CDe"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","bottomTabsDebugLog","internalEnableDetailedBottomTabsLogging"],"mappings":"AAA;OCE;CDM;OEE;CFE"}],[{"names":["<global>","BottomTabsScreen","React.useEffect$argument_0","onWillAppearCallback","onDidAppearCallback","onWillDisappearCallback","onDidDisappearCallback","mapAppearanceToNativeProp","mapItemAppearanceToNativeProp","mapItemStateAppearanceToNativeProp","shouldFreezeScreen","parseIconToNativeProps","parseIconsToNativeProps"],"mappings":"AAA;ACkC;kBCI;GDO;IE0B;KFM;IGK;KHK;IIK;KJK;IKK;KLM;CD+C;AOE;CPqB;AQE;CRc;ASE;CTwB;AUE;CVmB;AWE;CXgC;AYE;CZsC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ScreenStackHost"],"mappings":"AAA;ACiB;CDM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","StackScreen","handleOnDidDisappear"],"mappings":"AAA;AC0B;ICc;KDG;CDkB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","isValidDisplayModeForSplitBehavior","SplitViewHost","React.useEffect$argument_0"],"mappings":"AAA;2CCuB;CDW;AEK;kBCG;GDiB;CFO"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Column","Inspector"],"mappings":"AAA;ACQ;CDS;AEK;CFS"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","debounce","<anonymous>","setTimeout$argument_0"],"mappings":"AAA;OCE;SCE;yBCE;KDE;GDC;CDC"}],[{"names":["<global>","getModalRouteKeys","routes.reduce$argument_0"],"mappings":"AAA;iCCE,uCC;CDQ,KD"}],[{"names":["<global>","useAnimatedHeaderHeight"],"mappings":"AAA;OCI;CDM"}],[{"names":["<global>","useDismissedRouteError","state.routes.find$argument_0","React.useEffect$argument_0"],"mappings":"AAA;OCG;kECE,uCD;kBEC;GFK;CDI"}],[{"names":["<global>","useInvalidPreventRemoveError","React.useEffect$argument_0"],"mappings":"AAA;OCI;kBCQ;GDK;CDC"}],[{"names":["<global>","processBarButtonItems","items.map$argument_0","items.map.filter$argument_0","transformIcon","getMenuItem","useHeaderConfigProps","leftItems.map$argument_0","rightItems.map$argument_0"],"mappings":"AAA;8BCS;oBCC;GDwE,SE,oBF;CDC;sBIC;CJW;oBKC;CLiC;OMC;2CCyI;ODU;oEEuC;KFU;CN0C"}],[{"names":["<global>","processFonts"],"mappings":"AAA;OCI;CDM"}],[{"names":["<global>","saveSession","readSession","clearSession"],"mappings":"AAA;OCO;CDU;OEE;CFqB;OGE;CHM"}],[{"names":["<global>","isAvailableAsync","deleteItemAsync","getItemAsync","setItemAsync","setItem","getItem","canUseBiometricAuthentication","ensureValidKey","isValidKey","isValidValue"],"mappings":"AAA;OCuD;CDE;OEU;CFG;OGe;CHG;OIW;CJM;OKU;CLM;OMW;CNG;OOO;CPE;AQC;CRI;ASC;CTE;AUC;CVQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","byteCountOverLimit"],"mappings":"AAA;OCG;CDwB"}],[{"names":["<global>","buildDevicePayload","postWithEndpointFallback","getWithEndpointFallback","login","me","refresh","logout"],"mappings":"AAA;ACI;CDM;AEE;CFoB;AGE;CHc;OII;CJwB;OKE;CLW;OME;CNkB;OOE;CPW"}],[{"names":["<global>","ApiClientError","ApiClientError#constructor","registerSessionRevokedHandler","buildDevicePayload","normalizeHeaders","getHeader","Object.keys.find$argument_0","setHeader","deleteHeader","buildUrl","Object.entries.forEach$argument_0","createTimeoutSignal","setTimeout$argument_0","clear","hydrateTokensFromStorage","refreshAccessToken","applyRequestHeaders","executeFetch","parseJsonSafely","handle401Retry","refreshAccessToken._finally$argument_0","extractResponseCode","buildErrorMessage","buildErrorFromResponse","request","get","post","isApiClientError","initializeApiClientAuth","setApiAuthTokens","clearApiAuthTokens","getApiAccessToken","buildApiUrl"],"mappings":"AAA;OC2B;ECM;GDK;CDC;OGiB;CHE;AIE;CJM;AKE;CLE;AME;6CCE,iDD;CNE;AQE;CRI;ASE;6CFE,iDE;CTK;AUE;iCCS;GDI;CVQ;AYM;2BCE,wBD;6CEC,yBF;CZC;AeE;CfQ;AgBE;ChB4D;AiBE;CjByB;AkBE;ClBqB;AmBE;CnBM;AoBE;kDCW;GDE;CpBU;AsBE;CtBM;AuBE;CvBQ;AwBE;CxBS;AyBE;CzBiD;E0BG;G1BE;E2BC;G3BE;O4BG;C5BE;O6BE;C7BE;O8BE;C9BO;O+BE;C/BI;OgCM;ChCG;OiCK;CjCE"}],[{"names":["<global>","normalizeUrl","getRequestTimeoutMs","setEnvironmentBaseUrl","getEnvironmentBaseUrl","requireEnvironmentBaseUrl","clearEnvironmentConfig","saveInviteToken","getInviteToken"],"mappings":"AAA;ACM;CDyC;OEE;CFE;OGE;CHI;OIE;CJW;OKE;CLM;OME;CNK;OOE;CPM;OQE;CRG"}],[{"names":["<global>","isValidHexColor","stripTrailingSlashes","sanitizeMobileConfig","saveMobileConfig","getMobileConfig","getMobileConfigForBaseUrl","clearMobileConfig"],"mappings":"AAA;ACO;CDE;AEE;CFM;AGE;CHuB;OIE;CJa;OKE;CL2B;OME;CNS;OOE;CPG"}],[{"names":["<global>","getMyInterventions","getInterventionById","fetchAndStoreInterventionSteps","prefetchWorkflows","uploadWorkflowStepPhoto","enqueueWorkflowStepPhoto","saveStepToServer","uploadMachinePhoto","completeMobileWorkflow","errs.slice.map$argument_0","getInterventionPrecheck","postPrecheckOrEnqueue","saveInterventionPrecheck","startIntervention"],"mappings":"AAA;OCyB;CDyC;OEE;CFoC;OGU;CHyB;OIuB;CJc;OKW;CL6C;OMkB;CN0B;OOY;CP+B;OQkB;CRa;OSE;aCmC;SDI;CTO;OWE;CXe;AYE;CZsB;OaE;CbS;OcE;CdS"}],[{"names":["<global>","getDb","getTableColumns","rows.map$argument_0","upsertLocalMeta","safeIso","ensureStepsSchema","initializeLocalDatabase","clearLocalDatabase","saveOrUpdateStep","applyServerStepsDelta","db.withTransactionAsync$argument_0","saveInterventionsSnapshot","mergeInterventionsSnapshot","keepIds.map$argument_0","getInterventionsSnapshot","saveInterventionDetail","getInterventionDetailById","deleteInterventionLocally","enqueueSyncAction","getPendingQueueItems","markQueueItemDone","markQueueItemFailed","markQueueItemDead","markQueueItemWalled","getLocalDbOwnerId","setLocalDbOwnerId","getLastSyncTimestamp","setLastSyncTimestamp","draftKey","saveWorkflowDraft","loadWorkflowDraft","clearWorkflowDraft","getStepsByInterventionId","<anonymous>","updateStepValueLocally"],"mappings":"AAA;ACiB;CDG;AEE;0BCG,iBD;CFC;AIE;CJQ;AKE;CLG;AME;CN4E;OOE;CPwE;OQE;CRU;OSE;CTgE;OUE;gCCI;GDiD;CVG;OYE;gCDI;GCY;CZC;OaiB;gCFO;yCGY,SH;GEc;CbC;OeE;CfwB;OgBE;ChBU;OiBE;CjBqB;OkBS;gCPE;GOI;ClBC;OmBE;CnBwB;OoBE;CpBuC;OqBE;CrBG;OsBW;CtBY;OuBO;CvBY;OwBW;CxBU;OyBQ;CzBQ;O0BE;C1BE;O2BE;C3BM;O4BE;C5BE;A6BoB;C7BE;O8BE;C9BS;O+BE;C/BgB;OgCE;ChCG;OiCE;kB9B+B;S+BS;S/BM;S+BI;S/BM;S+BG;S/BM;S+BG;S/BM;S+BG;S/BM;I8BQ;CjCC;OmCE;CnC6B"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","SQLiteDatabase","constructor","isInTransactionAsync","closeAsync","execAsync","serializeAsync","prepareAsync","createSessionAsync","loadExtensionAsync","withTransactionAsync","withExclusiveTransactionAsync","isInTransactionSync","closeSync","execSync","serializeSync","prepareSync","createSessionSync","loadExtensionSync","withTransactionSync","runAsync","getFirstAsync","getEachAsync","getAllAsync","runSync","getFirstSync","getEachSync","getAllSync","syncLibSQL","openDatabaseAsync","openDatabaseSync","deserializeDatabaseAsync","deserializeDatabaseSync","deleteDatabaseAsync","deleteDatabaseSync","backupDatabaseAsync","backupDatabaseSync","addDatabaseChangeListener","Transaction","Transaction.createAsync"],"mappings":"AAA;OCS;ICI;KDI;IEI;KFE;IGI;KHE;IIO;KJE;IKM;KLE;IMM;KNI;IOM;KPI;IQqB;KRE;ISyB;KTU;IUyB;KVqB;IWI;KXE;IYI;KZE;IaU;KbE;IcQ;KdE;IeQ;KfI;IgBS;KhBI;IiBsB;KjBE;IkBQ;KlBU;ImBC;KnBU;IoBC;KpBW;IqBC;KrBW;IsBC;KtBW;IuBC;KvBU;IwBC;KxBW;IyBC;KzBW;I0BC;K1BW;I2BK;K3BK;CDC;O6BgB;C7BO;O8BU;C9BO;O+BO;C/BK;OgCS;ChCK;OiCO;CjCG;OkCS;ClCG;OmCY;CnCE;OoCc;CpCE;OqCQ;CrCE;AsCK;ICC;KDK;CtCC"}],[{"names":["<global>","_awaitAsyncGenerator"],"mappings":"AAA;ACC;CDE"}],[{"names":["_OverloadYield","<global>"],"mappings":"AAA;CCE"}],[{"names":["<global>","_wrapAsyncGenerator","<anonymous>","AsyncGenerator","resume","Promise.resolve.then$argument_0","Promise.resolve.then$argument_1","settle","_invoke","Promise$argument_0","AsyncGenerator.prototype.next","AsyncGenerator.prototype._throw","AsyncGenerator.prototype._return"],"mappings":"AAA;ACC;SCC;GDE;CDC;AGC;ECE;wCCK;ODO,EE;OFE;GDI;EIC;GJkB;iBKC;uBCC;KDS;GLC;CHC;qGEC;CFE,kCU;CVE,sCW;CXE,uCY;CZE"}],[{"names":["_asyncIterator","<global>","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","Promise.resolve.then$argument_0","next","_return","_throw"],"mappings":"AAA;CCW;ACC;ECC;yCCG;KDK;GDC;UGM;KHE;cIC;KJM;aKC;KLG;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","flattenOpenOptions"],"mappings":"AAA;OCG;CDa"}],[{"names":["<global>","SQLiteSession","constructor","attachAsync","enableAsync","closeAsync","createChangesetAsync","createInvertedChangesetAsync","applyChangesetAsync","invertChangesetAsync","attachSync","enableSync","closeSync","createChangesetSync","createInvertedChangesetSync","applyChangesetSync","invertChangesetSync"],"mappings":"AAA;OCI;ICG;KDG;IEO;KFE;IGM;KHE;IIK;KJE;IKK;KLE;IMK;KNE;IOM;KPE;IQM;KRE;ISW;KTE;IUS;KVE;IWQ;KXE;IYQ;KZE;IaO;KbE;IcS;KdE;IeS;KfE;CDC"}],[{"names":["<global>","SQLiteStatement","constructor","executeAsync","executeForRawResultAsync","getColumnNamesAsync","finalizeAsync","executeSync","executeForRawResultSync","getColumnNamesSync","finalizeSync","createSQLiteExecuteAsyncResult","createSQLiteExecuteSyncResult","SQLiteExecuteAsyncResultImpl","SQLiteExecuteAsyncResultImpl#constructor","SQLiteExecuteAsyncResultImpl#getFirstAsync","SQLiteExecuteAsyncResultImpl#getAllAsync","SQLiteExecuteAsyncResultImpl#generatorAsync","SQLiteExecuteAsyncResultImpl#resetAsync","SQLiteExecuteAsyncResultImpl#popFirstRowValues","SQLiteExecuteAsyncResultImpl#getColumnNamesAsync","SQLiteExecuteSyncResultImpl","SQLiteExecuteSyncResultImpl#constructor","SQLiteExecuteSyncResultImpl#getFirstSync","SQLiteExecuteSyncResultImpl#getAllSync","SQLiteExecuteSyncResultImpl#generatorSync","SQLiteExecuteSyncResultImpl#resetSync","SQLiteExecuteSyncResultImpl#popFirstRowValues","SQLiteExecuteSyncResultImpl#getColumnNamesSync","composeRowIfNeeded","composeRowsIfNeeded"],"mappings":"AAA;OCI;ICG;KDG;IEC;KFO;IGC;KHO;III;KJE;IKS;KLE;IMC;KNO;IOC;KPO;IQI;KRE;ISU;KTE;CDC;AWO;CX+B;AYI;CZ+B;AaC;ICO;KDK;IEC;KFc;IGC;KHmB;IIC;KJc;IKC;KLI;IMC;KNO;IOC;KPK;CbC;AqBC;ICO;KDK;IEC;KFa;IGC;KHkB;IIC;KJa;IKC;KLI;IMC;KNO;IOC;KPK;CrBC;A6BC;C7BI;A8BC;C9BI"}],[{"names":["<global>","normalizeParams","bindParams.reduce$argument_0","composeRow","composeRows","normalizeStorageIndex"],"mappings":"AAA;OCK;uCCY;SDG;CDc;OGK;CHU;OIK;CJkB;OKM;CLc"}],[{"names":["<global>","resolveDbDirectory","createDatabasePath","removeTrailingSlash","removeLeadingSlash"],"mappings":"AAA;ACM;CDM;OES;ICI;KDE;IEC;KFE;CFE"}],[{"names":["<global>","SQLiteProvider","memo$argument_1","useSQLiteContext","SQLiteProviderSuspense","SQLiteProviderNonSuspense","useEffect$argument_0","setup","teardown","<anonymous>","getDatabaseAsync","databaseInstance.promise.then$argument_0","databaseInstance.promise.then.then$argument_0","openDatabaseWithInitAsync","importDatabaseFromAssetAsync","deepEqual","Object.keys.every$argument_0","use","suspensePromise.then$argument_0","suspensePromise.then$argument_1","isReactUsePromise"],"mappings":"AAA;mCCa;CDU,EE;mDFM;OGsB;CHM;AIE;CJU;AKC;cCI;QCC;SDe;QEC;SFO;eGE;SHK;KDC;aIG;aJE;CLO;AUC;kBCW;SDE;kBEC;SFQ;CVa;AaC;CbS;OcO;CdO;OeI;6BCW,kCD;CfC;AiBK;yBCkB;KDG,EE;KFG;CjBE;AoBC;CpBE"}],[{"names":["<global>","isMultipartQueuePayload","payload.upload_files.every$argument_0","postMultipartFromQueue","Object.entries.forEach$argument_0","payload.upload_files.forEach$argument_0","registerBillingWallHandler","classifySyncError","pickItems","toPrimitiveParams","isNetworkOnline","subscribeNetworkChanges","Network.addNetworkStateListener$argument_0","<anonymous>","enqueueOfflineAction","dispatchQueueItem","isOfflineSaveStep","fetchCurrentWorkflowVersion","postSaveStepWithVersion","dispatchOfflineSaveStep","processSyncQueue","pullSyncDelta","payload.intervention_ids.map$argument_0","payload.intervention_ids.map.filter$argument_0","syncOnReconnect"],"mappings":"AAA;AC8C;oCCS;GDW;CDC;AGE;kCCc;GDoB;+BEE;GFM;CHkC;OMe;CNE;AOc;CPc;AQE;CRI;ASE;gCLE;GKQ;CTE;OUE;CVO;OWE;uDCC;GDE;SEE;GFE;CXC;OcE;CdQ;AeE;CfU;AgBU;ChBI;AiBI;CjBU;AkBM;ClBQ;AmBQ;CnB0B;OoBE;CpB2D;OqBE;aCkB,kBD;gBEC,2BF;CrBsB;OwBU;CxBiC"}],[{"names":["<global>","getNetworkStateAsync","getIpAddressAsync","isAirplaneModeEnabledAsync","addNetworkStateListener","useNetworkState","useEffect$argument_0","addNetworkStateListener$argument_0","<anonymous>"],"mappings":"AAA;OCyB;CDK;OEgB;CFK;OGc;CHK;OIgB;CJE;OKc;cCE;iDCE,+CD;eEC,uBF;KDC;CLE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCK;CDgD"}],[{"names":["<global>","setCrashContext","ensureDir","truncate","readEntriesSafe","crashFile.textSync.split.map$argument_0","crashFile.textSync...filter.map$argument_0","crashFile.textSync...map.filter$argument_0","recordCrash","next.map$argument_0","readCrashLogs","clearCrashLogs","postCrashReports","flushCrashReports","sendTestCrashReport"],"mappings":"AAA;OCqD;CDE;AEE;CFI;AGE;CHK;AII;WCQ,qBD;WEE;OFM;cGC,8CH;CJI;OQI;gCCgB,8BD;CRI;OUE;CVE;OWQ;CXQ;AYQ;CZa;OaO;CbY;OcS;CdQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Paths","Paths.get__cache","Paths.get__bundle","Paths.get__document","Paths.get__appleSharedContainers","Paths.get__totalDiskSpace","Paths.get__availableDiskSpace","Paths.info","File","File#constructor","File#get__parentDirectory","File#get__extension","File#get__name","File#readableStream","File#writableStream","File#arrayBuffer","File#stream","File#slice","downloadFileAsync","File.pickFileAsync","Directory","Directory#constructor","Directory#get__parentDirectory","Directory#list","listAsRecords.map$argument_0","Directory#get__name","Directory#createFile","Directory#createDirectory","Directory.pickDirectoryAsync"],"mappings":"AAA;OCK;ECI;GDE;EEK;GFE;EGK;GHE;EIC;GJS;EKK;GLE;EMK;GNE;EOK;GPE;CDC;OSa;ECW;GDG;EEK;GFE;EGM;GHE;EIK;GJE;EKE;GLE;EME;GNE;EOE;GPG;EQE;GRE;ESE;GTE;CTC;yBmBG;CnBO;qBoBE;CpBG;OqBa;ECW;GDG;EEK;GFE;EGO;WCI,4ED;GHC;EKK;GLE;EME;GNG;EOE;GPE;CrBC;+B6BE;C7BG"}],[{"names":["<global>","ExpoFileSystemModule"],"mappings":"AAA;ACI;CDe"}],[{"names":["<global>","uriObjectToString","PathUtilities","PathUtilities.join","PathUtilities.relative","PathUtilities.isAbsolute","PathUtilities.normalize","PathUtilities.dirname","PathUtilities.basename","PathUtilities.extname","PathUtilities.parse"],"mappings":"AAA;ACI;CDE;OEE;ECM;GDQ;EEQ;GFa;EGO;GHM;EIO;GJQ;EKO;GLQ;EMQ;GNO;EOO;GPO;EQO;GRa;CFC"}],[{"names":["<global>","isPathSeparator","normalizeString","formatExt","format","resolve","normalize","isAbsolute","join","relative","toNamespacedPath","dirname","basename","extname","parse"],"mappings":"AAA;ACqB;CDE;AEG;CF2D;AGE;CHE;OIE;CJgB;OKE;CL0B;OME;CNgB;OOC;CPE;OQC;CRc;OSC;CT6D;OUC;CVG;OWC;CXoB;OYC;CZiE;OaC;Cb+C;OcC;CdwE"}],[{"names":["<global>","encodePathChars","encodeURLChars","isUrl","asUrl"],"mappings":"AAA;ACgC;CDS;OEE;CFgB;OGE;CHM;OIE;CJQ"}],[{"names":["<global>","FileSystemReadableStreamSource","FileSystemReadableStreamSource#constructor","FileSystemReadableStreamSource#cancel","FileSystemReadableStreamSource#pull","FileSystemWritableSink","FileSystemWritableSink#constructor","FileSystemWritableSink#abort","FileSystemWritableSink#close","FileSystemWritableSink#write"],"mappings":"AAA;OCE;ECK;GDE;EEE;GFE;EGE;GH4B;CDC;OKE;ECG;GDE;EEE;GFE;EGE;GHE;EIE;GJE;CLC"}],[{"names":["<global>","errorOnLegacyMethodUse","getInfoAsync","readAsStringAsync","getContentUriAsync","writeAsStringAsync","deleteAsync","deleteLegacyDocumentDirectoryAndroid","moveAsync","copyAsync","makeDirectoryAsync","readDirectoryAsync","getFreeDiskStorageAsync","getTotalDiskCapacityAsync","downloadAsync","uploadAsync","createDownloadResumable","createUploadTask"],"mappings":"AAA;ACiB;CDI;OEK;CFE;OGK;CHK;OIK;CJE;OKK;CLM;OMK;CNE;OOK;CPE;OQK;CRE;OSK;CTE;OUK;CVK;OWK;CXE;OYK;CZE;OaK;CbE;OcK;CdM;OeK;CfM;OgBK;ChBQ;OiBK;CjBO"}],[{"names":["<global>","buildKey","readIndex","parsed.filter$argument_0","writeIndex","Array.from.filter$argument_0","savePrecheckDraft","getPrecheckDraft","clearPrecheckDraft","ids.filter$argument_0","clearAllPrecheckDrafts","ids.map$argument_0"],"mappings":"AAA;ACU;CDE;AEE;sBCS,+CD;CFK;AIE;iDCC,+CD;CJO;OME;CNc;OOE;CPoB;OQE;8BCI,mCD;CRC;OUE;4BCE,iDD;CVE"}],[{"names":["<global>","randomSaltHex","Array.from.map$argument_0","hashPassword","timingSafeEqual","normalizeEmail","saveOfflineCredential","verifyOfflineCredential","clearOfflineCredential"],"mappings":"AAA;ACgD;SCG,sCD;CDE;AGE;CHG;AII;CJS;AKE;CLE;OMQ;CNiB;OOO;CPwC;OQE;CRE"}],[{"names":["<global>","CryptoError","CryptoError#constructor","getRandomBytes","getRandomBytesAsync","assertByteCount","assertAlgorithm","assertData","assertEncoding","digestStringAsync","getRandomValues","randomUUID","digest","Promise$argument_0"],"mappings":"AAA;ACK;ICE;KDE;CDC;OGS;CHyB;OIQ;CJe;AKC;CLO;AMC;CNI;AOC;CPI;AQC;CRI;OSsB;CTQ;OUc;CVG;OWY;CXE;OY0B;uBCC;KDc;CZC"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCK;CDiC;CCG;CDM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","loadTaskManager","loadNotifications","asRecord","extractSyncFromData","runBackgroundInterventionSync","defineBackgroundNotificationTask","TaskManager.defineTask$argument_1","registerBackgroundNotificationTask"],"mappings":"AAA;ACa;CDM;AEE;CFM;AGkC;CHE;OIU;CJgC;OKQ;CLmB;OMM;yDCc;KDK;CNK;OQM;CRU"}],[{"names":["<global>","_validate","defineTask","isTaskDefined","isTaskRegisteredAsync","getTaskOptionsAsync","getRegisteredTasksAsync","unregisterTaskAsync","unregisterAllTasksAsync","eventEmitter.addListener$argument_1","isAvailableAsync"],"mappings":"AAA;ACG;CDI;OEY;CFU;OGO;CHE;OIS;CJM;OKU;CLM;OM2B;CNK;OOU;CPM;OQO;CRK;yDSG;KTyB;OUU;CVE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","listInstances","upsertInstance","list.find$argument_0","list.filter$argument_0","removeInstance","configFromInstance"],"mappings":"AAA;OCoB;CDW;OEI;6BCI,oCD;2BEY,oCF;CFI;OKE;2BDE,6BC;CLG;OMI;CNS"}],[{"names":["<global>","buildFallbackConfig","stripTrailingSlashes","buildMobileConfigUrls","isServerReachable","tryFetch","fetchMobileConfig"],"mappings":"AAA;ACK;CDS;AEE;CFM;AGE;CHM;AIG;CJW;AKE;CLO;OME;CN6C"}],[{"names":["<global>","configureNotificationHandler","Notifications.setNotificationHandler$argument_0.handleNotification","ensureAndroidChannel","getOrCreateDeviceId","resolveProjectId","ensurePermissionGranted","registerForPushNotificationsAsync","registerPushToken","syncPushRegistration"],"mappings":"AAA;OCkB;wBCE;MDK;CDE;AGE;CHU;OIQ;CJQ;AKE;CLQ;AME;CNO;OOQ;CPqB;OQM;CRgB;OSM;CTO"}],[{"names":["<global>","getDeviceTypeAsync","getUptimeAsync","getMaxMemoryAsync","isRootedExperimentalAsync","isSideLoadingEnabledAsync","getPlatformFeaturesAsync","hasPlatformFeatureAsync"],"mappings":"AAA;OCkN;CDK;OEY;CFK;OGW;CHS;OIiB;CJK;OKa;CLK;OMmB;CNK;OOc;CPK"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCI;CDqB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","InterventionCard","Pressable.props.onPress","ConnectivityBadge","TabsRow","InterventionsList","FlatList.props.keyExtractor","MissionsDashboard","switchTab","useMemo$argument_0","interventions.filter$argument_0","renderIntervention"],"mappings":"AAA;ACkC;iBCuD,mCD;CDM;AGE;CHY;AIE;iBFoB,sBE;iBFW,sBE;CJQ;AKE;oBC+B,yBD;CLM;eOE;oBCoB;GDM;IEG,2BC,6BD,CF;IEI,2BC,6BD,CF;6BIK;GJM;CPuC"}],[{"names":["<global>","normalizeStatut","isTodoStatus","isDoneStatus","formatInterventionDate","detailValue","getTypeLabel","getFluideLabel","getStatusStyle"],"mappings":"AAA;ACsB;CDE;OEI;CFE;OGG;CHE;OIoD;CJW;OKE;CLU;OME;CNM;OOE;CPU;OQE"}],[{"names":["<global>","MissionDetailScreen","fetchDetail","useEffect$argument_0","useFocusEffect$argument_0","<anonymous>","useMemo$argument_0","completedSteps.filter$argument_0","goToWorkflow","openPrecheck","confirmStart","saveInterventionDetail._catch$argument_0","Pressable.props.onPress","InfoItem","InterventionHeader","TextSection","TechnicienSection","CompletedStepsSection","phases.map$argument_0","phase.steps.map$argument_0","InterventionBody","formatStepDisplayValue","ReadOnlyStepRow","files.map$argument_0","ReadOnlyPhotoThumb"],"mappings":"AAA;eCsC;kCCc;GDW;YEE;GFE;gBGM;KHE;YEgB;KEM;KFU;WEC;KFE;GFC;kCKQ;+CCC,6BD;GLE;uBOe;MPK;uBQE;GRsB;uBSE;yDCwB,QD;GTU;sDWmC,yBX;qBWa,yBX;+CIW,4BJ;6BWiE,4BX;6BWO,yBX;CDiB;AaE;CbO;AcE;Cde;AeE;CfQ;AgBE;ChBa;AiBE;kBCW;2BCK;WDE;ODE;CjBG;AoBE;CpBiD;AqBW;CrBa;AsBE;qBCiB;WDE;CtBQ;AwBQ;YrBI;KEE;KFU;WEC;KFE;GqBC;CxBa"}],[{"names":["<global>","loadStepsLocally","validateMeasurement","validateText","validatePhoto","validateSignature","validateStepValue","allRequiredStepsDone","steps.filter$argument_0","steps.filter.every$argument_0","completeStepLocally"],"mappings":"AAA;OCS;CDE;AEE;CFY;AGE;CHM;AIE;CJK;AKE;CLM;OME;CNa;OOE;YCE,iBD;WEC,0BF;CPC;OUsB;CVc"}],[{"names":["<global>","getStepMetadata","uuidv4","safeToString","normalizeText","isProblemValue","keywords.some$argument_0","evaluateVisibilityRule","allowed.some$argument_0","getStepRules","isGateStep","buildPhases","filter$argument_0","filter.sort$argument_0","computeVisibleStepIds","readValue","getBlockingStepIds","isEmptyStepValue","isAutoCalc","isCerfaLike","isDisplayOnly","resolveDevisStepText","devis.filter$argument_0","pending.map$argument_0","isDevisListStep","getCommentRequirement"],"mappings":"AAA;OCiC;CDE;OEQ;CFS;AGM;CHK;OIE;CJM;OKM;uBCM,oBD;CLC;OOkB;wBCwB,gCD;CPG;ASO;CTG;OUM;CVO;OWY;YCE,qBD;UEC,uCF;CXmB;OcmB;oBCO,iED;CdqD;OgBO;ChB2B;OiBE;CjBc;OkBQ;ClBsC;OmBO;CnBG;OoBM;CpBU;OqByB;iCCM,wCD;WEK,oEF;CrBW;OwBM;CxBG;OyBU;CzB6B"}],[{"names":["<global>","getInitialValueForStep","isPhotoArrayValue","isSignatureValue","getStepInputKind","shouldSkipStepForSave","collectBlockingRequiredErrors","validateStepForPhase","collectConstraintErrors","buildSaveStepOfflinePayload","CommentInput","TextInput.props.onChangeText","StepCard","StepInput.props.onChange","hydrateInitialValues","hydrateInitialComments","useWorkflowDraftPersistence","useEffect$argument_0","setTimeout$argument_0","<anonymous>","MachinePhotoOverlay","renderBody","WorkflowInterventionScreen","useMemo$argument_0","loadSteps","setInputValues$argument_0","setCommentValues$argument_0","applyDraftHydration","persistSingleStep","applyLocalStepUpdate","setSteps$argument_0","prev.map$argument_0","savePhaseSteps","autoSaveGateSteps","refreshStepsFromServer","savePhaseAndAdvance","setValidationErrors$argument_0","handleNextPhase","setCurrentPhaseIdx$argument_0","handlePrevPhase","openMachineCamera","takeMachinePhoto","handleSkipMachinePhoto","handleFinishWithSignatures","currentPhase.steps.filter$argument_0","handleSignatureDraftChange","handleSignatureCardCancel","visibleSteps.map$argument_0","StepCard.props.onChangeValue","StepCard.props.onChangeComment","Pressable.props.onPress","DisplayBox","normalizeBooleanValue","ChoicePill","DisplayStepInput","AutoCalcStepInput","NumberStepInput","TextStepInput","CerfaStepInput","BooleanStepInput","ChoicePill.props.onPress","ChoiceStepInput","options.map$argument_0","getWorkflowStepId","PhotoStepInput","CameraCapture.props.onCaptured","photos.map$argument_0","photos.filter$argument_0","SignatureStepInput","SignatureCapture.props.onCaptured","UnsupportedStepInput","isDisplayKind","isPhotoKind","isTextKind","StepInput"],"mappings":"AAA;AC+E;CDc;AEE;CFE;AGE;CHE;AIE;CJG;AKE;CLI;AME;CNW;AOE;CPsB;AQE;CRiB;ASE;CTuB;AUE;sBCwB,gCD;CVQ;AYE;oBCoD,gCD;CZiB;AcE;CdW;AeE;CfY;AgBE;YCa;6BCE;KDW;WEC,yBF;GDC;ChBW;AoBE;qBCiB;GDwD;CpBiB;esBE;yBC4C,wBD;iCCM;GDK;gCCe,iCD;YLC;KEK;KFoB;WEC;KFE;GKC;gCEE;mBCa,2CD;qBEC,6CF;GFE;YLE;GKE;0CKS;qBFI,4EE;uBDG,+CC;GLS;YLE;KEI;KFM;GKC;IMqB;KNuB;IOK;eCE;iBCC;SDI,CD;KPE;IUK;KVuB;IWK;KXqB;6CYI;GZS;0CaE;0BCO,0CD;0BCY,4CD;0BCQ,gED;GbiB;sCeY;uBCiB,6CD;GfC;sCiBE;uBDM,6BC;GjBC;wCkBG;GlBS;uCmBE;GnBkD;6CoBE;GpBI;IqBU;KrBwC;gCsBK,+BtB;qCuBK;GvBQ;oCwBC;GxBG;gCyB6D;iCCU;mCvBC,oCuB,CD;mCEE;qCvBC,uCuB,CF;ezBG;mB4BmB;W5BE;CtBW;AmDU;CnDqB;AoDE;CpDK;AqDE;CrD2B;AsDE;CtDgB;AuDE;CvDW;AwDE;CxDoB;AyDE;CzDc;A0DE;iBRmB,wEQ;wB/Ca;gF+CC;C1DQ;A2DE;iBCY,mBD;iBCM,mBD;C3DI;A6DE;mBCkB;mBFM,mBE;ODE;C7DG;A+DE;C/DG;AgEE;oBCS;SDS;kBEE;qBhBW,6BiB,8BjB,EgB;OFK;ChEG;AoEE;oBCQ;YDO;+DlBM,oBkB;CpEO;AsEE;CtEM;AuEE;CvEO;AwEE;CxEE;AyEE;CzEE;A0EE;C1EmB"}],[{"names":["<global>","getDevisForMachine"],"mappings":"AAA;OCwB;CDa"}],[{"names":["<global>","SignatureFinishCard","handleTechNext","useEffect$argument_0","handleClientPresenceNext","handleClientSigConfirm","handleBack","renderStep","SignatureCanvas.props.onOK","SignatureCanvas.props.onEmpty","Pressable.props.onPress","renderActions"],"mappings":"AAA;eCyD;yBCkD;GDI;YEK;GFa;YEI;GFE;mCGE;GHY;iCIO;GJI;qBKE;GLS;qBME;oBCiB;eDG;uBEC;eFQ;uBG6B,4BH;uBGc,6BH;kBCyB;aDG;qBEC;aFM;GNc;wBUE;GVgE;CDyB"}],[{"names":["<global>","getParamForInjection","forwardRef$argument_0","<anonymous>","useEffect$argument_0","useMemo$argument_0","isJson","getSignature","executeWebViewMethod","useImperativeHandle$argument_1","readSignature","clearSignature","undo","redo","draw","erase","changePenColor","changePenSize","getData","fromData","setDataURL","reinitialize","setWebViewKey$argument_0","renderError","setTimeout$argument_0","setRetryCount$argument_0","handleContentProcessDidTerminate","handleLoadEnd","handleLoadStart","handleLoadProgress"],"mappings":"AAA;6BCgD;CDS;EEG;aCoB,SD;gBCC,SD;gBCC,SD;eCC,SD;eCC,SD;eCC,SD;gBCC,SD;kBCC,SD;yBCC,SD;wBCC,SD;gBCC,SD;cCC,SD;kBCC,SD;gBCC,SD;cE2B;KFE;mCGI;KHe;2BGE;KHgB;cEK;KFuB;mBIE;KJO;qCKG;KLoD;6CMG;KNc;MOI;uBCC,2CD;wBEC,4CF;cGC,kCH;cIC,kCJ;cKC,kCL;eMC,mCN;wBOC;SPM;uBQC;SRM;iBSC,qCT;kBUC;SVM;oBWE;SXwB;sBYE;wBCG,gBD;SZC;QPC;oCqBI;mBCa;0BCE,gBD;SDM;KrBE;yDwBI;oBJK,gBI;KxBC;sCyBE;KzBU;wC0BG;K1BE;2C2BE;K3BK;GF2D"}],[{"names":["<global>","default"],"mappings":"AAA,eC;QD8K"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","extractOrigin","originWhitelistToRegex","passesWhitelist","compiledWhitelist.some$argument_0","compileWhitelist","createOnShouldStartLoadWithRequest","<anonymous>","Linking.canOpenURL.then$argument_0","Linking.canOpenURL.then._catch$argument_0","defaultRenderLoading","defaultRenderError","useWebViewLogic","updateNavigationState","onLoadingStart","onLoadingError","onHttpError","onRenderProcessGone","onContentProcessDidTerminate","onLoadingFinish","onMessage","onLoadingProgress","setViewState$argument_0","useMemo$argument_0","onOpenWindow"],"mappings":"AAA;sBCqB;CDG;+BEE;kEFC;wBGE;gCCE,iCD;CHC;yBKE;yELG;2CME;SCS;cCM;SDM;eEC;SFE;GDO;CNC;6BUE;CVI;2BWC;CXW;+BYS;IC8C;KDE;IEK;KFO;IGK;KHa;IIK;KJE;IKM;KLE;IMO;KNE;IOM;KPY;IQK;KRE;ISK;qBCM;8DDC;KTK;IWK;OXK;IYS;KZE;CZmB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getCameraPermissionsAsync","requestCameraPermissionsAsync","getMicrophonePermissionsAsync","requestMicrophonePermissionsAsync","scanFromURLAsync"],"mappings":"AAA;ACQ;CDE;AEO;CFE;AGoB;CHE;AIO;CJE;OKyB;CLE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ensurePictureOptions","ensureRecordingOptions","_onPictureSaved","CameraView","isAvailableAsync","getAvailableVideoCodecsAsync","getAvailablePictureSizesAsync","getAvailableLensesAsync","getSupportedFeatures","resumePreview","pausePreview","takePictureAsync","launchScanner","dismissScanner","onModernBarcodeScanned","recordAsync","toggleRecordingAsync","stopRecording","_onCameraReady","_onAvailableLensesChanged","_onMountError","_onResponsiveOrientationChanged","_onObjectDetected","<anonymous>","_setReference","render"],"mappings":"AAA;ACS;CDiB;AEC;CFQ;AGC;CHO;eIC;ICW;KDK;IEO;KFK;IGM;KHE;IIO;KJE;IKI;KLK;IMI;KNE;IOI;KPE;IQc;KRM;ISO;KTO;IUM;KVI;IWU;KXE;IYU;KZG;Iae;KbE;IcM;KdE;qBeC;KfI;gCgBC;KhBI;oBiBC;KjBI;sCkBC;KlBI;wBmBC,cC;KpBa;oBqBC;KrBO;IsBC;KtBW;CJC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","convertNativeProps","ensureNativeProps"],"mappings":"AAA;OCO;CDgB;OEC;CFU"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","CameraCapture","openCamera","takePicture","Modal.props.onRequestClose","Pressable.props.onPress"],"mappings":"AAA;eC0B;qBCQ;GDQ;sBEE;GFkE;qEGS,uBH;+DII,uBJ;uBIK;eJE;CDc"}],[{"names":["<global>","sanitizeStepId","ensureMediaDir","savePhotoToPermanentFile","saveSignatureBase64ToPermanentFile"],"mappings":"AAA;ACI;CDE;AEE;CFI;OGE;CHY;OIE;CJe"}],[{"names":["<global>","stripDataUrlPrefix","SignatureCapture","handleOk","Pressable.props.onPress","Modal.props.onRequestClose","SignatureCanvas.props.onOK","SignatureCanvas.props.onEmpty"],"mappings":"AAA;ACa;CDO;eEE;mBCM;GDU;mFEI,sBF;qEGI,uBH;oBIK;eJE;uBKC,QL;+DEY,uBF;uBEK,2CF;CFc"}],[{"names":["<global>","HomeHub","cards.map$argument_0"],"mappings":"AAA;eCiC;qBC4D;WDW;CDK"}],[{"names":["<global>","FeatureCard","Pressable.props.style"],"mappings":"AAA;eCe;aCiB;ODI;CDqB"}],[{"names":["<global>","isRenderableImageUrl","BrandLogo","Image.props.onError"],"mappings":"AAA;ACyB;CDE;eEQ;mBCqB,qBD;CFgB"}],[{"names":["<global>","parseDate","StatTile","StatsScreen","useMemo$argument_0"],"mappings":"AAA;ACW;CDM;AEE;CFW;eGO;wBCG;GD+C;CH8B"}],[{"names":["<global>","parseDate","dayKey","keyOf","timeLabel","PlanningScreen","useMemo$argument_0","list.sort$argument_0","changeMonth","Pressable.props.onPress","WEEKDAYS.map$argument_0","weeks.map$argument_0","week.map$argument_0","<anonymous>","selectedEntries.map$argument_0"],"mappings":"AAA;ACqB;CDM;AEE;CFE;AGE;CHE;AIE;CJE;eKI;sBCE,gBD;gCCK;GDM;wBCO;gBCkB,6CD;GDG;wBCG;GDoB;sBGE;GHI;6BCG;GDQ;kDIU,qBJ;kDIW,oBJ;sBKO;SLI;mBMK;sBCE;2BHY,yBG;aD8B;SNE;UQK;SRI;4BSM;+DLG,yBK;STkB;CLI"}],[{"names":["<global>","formatCalibration","InfoItem","CalibrationItem","MyInfoScreen","savePhone","closePwd","submitPwd","Pressable.props.onPress"],"mappings":"AAA;AC+B;CDW;AEE;CFO;AGE;CHW;eIE;oBCqB;GDW;mBEU;GFO;oBGE;GHmB;yBIoB;iBJG;2BImB,4BJ;uBI+C,sBJ;yBI+D,sBJ;CJe"}],[{"names":["<global>","updateTelephone","changePassword"],"mappings":"AAA;OCK;CDQ;OEK;CFW"}],[{"names":["<global>","buildDiagnostic","openUrl","composeSupportEmail","SupportScreen","onTestCrash","onPress","sendTestCrashReport.then$argument_0","sendTestCrashReport.then._finally$argument_0","onEmail","onCall","<anonymous>","setDiagnosticVisible$argument_0","Pressable.props.style"],"mappings":"AAA;AC6B;CDW;AEQ;CFM;AGW;CHW;eIM;sBCkB;mBCY;oBCG;eDY;uBEC,gCF;WDC;GDI;kBKE;GLa;iBME;GNS;8BOmB,2BC,qBD,CP;mBS4B;aTM;iBSwB;WTI;iBSe;WTI;CJiB"}],[{"names":["<global>","getClients","composeAsync","isAvailableAsync"],"mappings":"AAA;OCO;CDE;OES;CFE;OGU;CHE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCE;CDK"}],[{"names":["<global>","statutStyle","BottleCard","actions.map$argument_0","Pressable.props.onPress","BottlesScreen","load","useEffect$argument_0","performSimpleAction","closeExchange","runAction","onPress","submitExchange","state.bottles.map$argument_0","EXCHANGE_TYPES.map$argument_0"],"mappings":"AAA;ACwG;CDS;AEE;wBC4C;yBCS,kCD;aDW;CFM;eKY;2BCa;GDoB;YEE;GFE;IGK;KHY;oCII;GJO;IKG;sCCY,4DD;KLE;qCOI;GP6B;8BQuD;aRQ;gCSkC;2BVW,8BU;aTQ;uBDyB,2BC;CLe"}],[{"names":["<global>","getMyBottles","postBottleAction"],"mappings":"AAA;OCa;CD0B;OEmB;CFa"}],[{"names":["<global>","OnboardingScreen","confirmRemove","onPress","openScanner","onBarcodeScanned","savedInstances.map$argument_0","Pressable.props.onPress"],"mappings":"AAA;eC8B;wBCgB;0DCM,sCD;GDG;sBGM;GHS;2BIE;GJM;8BKa;yBCI,6BD;6DCS,0BD;WLI;qBMqD;aNG;CDQ"}],[{"names":["<global>","LoginScreen","Pressable.props.onPress","setShowPassword$argument_0"],"mappings":"AAA;eCqB;mBCgE,sBC,eD,CD;CD4B"}],[{"names":["<global>","navigateToPlanning"],"mappings":"AAA;OCgB;CDgB"}],[{"names":["<global>","ErrorBoundary","getDerivedStateFromError","componentDidCatch","handleRetry","render","Pressable.props.style"],"mappings":"AAA;eCiB;ECG;GDE;EEE;GFO;iCGE;GHE;EIE;iBCc,iED;GJM;CDC"}],[{"names":["<global>","UpdateGate","useState$argument_0","useEffect$argument_0","waitMinVisible","Promise$argument_0","run","setTimeout$argument_0","<anonymous>","UpdateSplash"],"mappings":"AAA;eC8B;4CCG;wDDC;YEG;2BCW;0BCI,2CD;KDE;gBGE;KH+B;wBIE;KJI;WKI;KLG;GFE;CDO;ASE;YNK;WKU,iBL;GMC;CTgC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","resolveImageSource","resolveReloadScreenOptions","reloadAsync","checkForUpdateAsync","getExtraParamsAsync","setExtraParamAsync","readLogEntriesAsync","clearLogEntriesAsync","fetchUpdateAsync","setUpdateURLAndRequestHeadersOverride","setUpdateRequestHeadersOverride","showReloadScreen","hideReloadScreen"],"mappings":"AAA;AC8G;CDoB;AEC;CFS;OG2B;CHU;OIgB;CJc;OKM;CLE;OMQ;CNE;OOU;CPE;OQY;CRE;OSe;CTc;OUS;CVE;OWQ;CXE;OYuC;CZM;OaM;CbE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCC;CDwB;CCK;CDY;CCK;CDO;CCQ;CDiB"}],[{"names":["<global>","_handleNativeStateChangeEvent","_updatesStateChangeListeners.forEach$argument_0","addUpdatesStateChangeListener","remove","emitTestStateChangeEvent","resetLatestContext","transformNativeStateMachineContext"],"mappings":"AAA;ACK;yCCS,iCD;CDC;6CGK;QCG;SDE;CHE;wCKK;CLE;kCMK;CNE;AOC;CPmB"}],[{"names":["<global>","useUpdates","useEffect$argument_0","addUpdatesStateChangeListener$argument_0","<anonymous>"],"mappings":"AAA;0BCmD;cCG;2DCC;SDE;eEC,2BF;KDC;CDM"}],[{"names":["<global>","updateFromManifest","updateFromRollback","updatesStateFromContext"],"mappings":"AAA;kCCe;CDW;kCEC;EFK;uCGE;CH0B"}],[{"names":["<global>","<anonymous>"],"mappings":"AAA;CCO;CDS"}],null,[{"names":["<global>","toError","installGlobalErrorHandler","errorUtils.setGlobalHandler$argument_0","installRejectionTracking","tracking.enable$argument_0.onUnhandled","tracking.enable$argument_0.onHandled","installCrashHandlers","__resetCrashHandlersForTests"],"mappings":"AAA;ACe;CDE;AEE;8BCQ;GDI;CFC;AIE;mBCe;ODG;iBEC,QF;CJK;OOE;CPO;OQG;CRE"}],[{"names":["<global>","disable","enable","Promise._B","Promise._C","onUnhandled","onHandled","logError","errStr.split.forEach$argument_0","matchWhitelist","list.some$argument_0"],"mappings":"AAA;ACY;CDI;AEG;eCO;GDY;eEC;GFmB;EGC;GHuB;EIC;GJc;CFC;AOE;6BCG;GDE;CPC;ASE;mBCC;GDE"}],[{"names":["<global>","get__Version","get__constants","get__isTesting","get__isDisableAnimations","get__isTV","get__isVision","select"],"mappings":"AAA;ECkB;GDG;EEE;GF0B;EGE;GHM;EIE;GJG;EKE;GLG;EME;GNE;UOC;sBPQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","PlatformColor","normalizeColorObject","processColorObject"],"mappings":"AAA;6BCkB;CDI;oCEE;CFS;kCGE;CHI"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","legacySendAccessibilityEvent"],"mappings":"AAA;ACiB;CDgB"}],[{"names":["<global>","convertHeadersMapToArray","generateRequestId","addListener","sendRequest","body.formData.map$argument_0","abortRequest","clearCookies"],"mappings":"AAA;AC0B;CDM;AEG;CFE;EGa;GHO;EIE;wCCc;QDG;GJe;EME;GNE;EOE;GPE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","emptyCallback","alertWithArgs"],"mappings":"AAA;ACc,2BD;OEE"}],[{"names":["<global>","RCTDeviceEventEmitter.addListener$argument_1","exitApp","addEventListener","remove"],"mappings":"AAA;qDCoB;CDQ;WEoC;GFM;oBGO;cCQ;ODK;GHE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ProgressBarAndroid"],"mappings":"AAA;IC8C;CDsB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","generateRequestId","getSize","promise.then$argument_0","<anonymous>","getSizeWithHeaders","prefetchWithMetadata","prefetch","abortPrefetch","queryCache","BaseImage","ImageAnalyticsTagContext.Consumer.props.children","TextAncestorContext.Consumer.props.children"],"mappings":"AAA;ACmC;CDE;AEO;UCU,2CD;QEG;SFE;CFE;AKQ;UFW,2CE;QDG;SCE;CLE;AME;CNQ;AOE;CPO;AQE;CRE;ASO;CTI;sCUS;OCqF;aCU;aDqB;ODG;CVG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","NativeComponentRegistry.get$argument_1"],"mappings":"AAA;IC6C,4BD"}],[{"names":["<global>","DrawerLayoutAndroid","get__positions","render","_onDrawerSlide","_onDrawerOpen","_onDrawerClose","_onDrawerStateChanged","openDrawer","closeDrawer","blur","focus","measure","measureInWindow","measureLayout","setNativeProps"],"mappings":"AAA;ACiE;ECI;GDM;EEU;GF6D;mBGI;GHQ;kBIE;GJO;mBKE;GLO;0BMI;GNM;EOK;GPE;EQK;GRE;ESyC;GTE;EUE;GVE;EWE;GXE;EYE;GZE;EaE;GbU;EcE;GdE;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","DynamicColorIOS"],"mappings":"AAA;+BCyB;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Settings.get","Settings.set","Settings.watchKeys","Settings.clearWatch"],"mappings":"AAA;ECa;GDG;EEE;GFE;EGE;GHG;EIE;GJE"}],[{"names":["<global>","show","showWithGravity","showWithGravityAndOffset"],"mappings":"AAA;QC4C;GDE;mBEE;GFM;4BGE;GHc"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getNotificationChannelsAsync"],"mappings":"AAA;eCE;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getNotificationChannelAsync"],"mappings":"AAA;eCE;CDK"}],[{"names":["<global>","setNotificationChannelAsync"],"mappings":"AAA;eCG;CDU"}],[{"names":["<global>","deleteNotificationChannelAsync"],"mappings":"AAA;eCE;CDK"}],[{"names":["<global>","getNotificationChannelGroupsAsync"],"mappings":"AAA;eCE;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getNotificationChannelGroupAsync"],"mappings":"AAA;eCE;CDK"}],[{"names":["<global>","setNotificationChannelGroupAsync"],"mappings":"AAA;eCE;CDK"}],[{"names":["<global>","deleteNotificationChannelAsync"],"mappings":"AAA;eCE;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","isEdgeToEdge","controlEdgeToEdgeValues","Object.entries.filter$argument_0","entries.reduce$argument_0"],"mappings":"AAA;mBCI;CDG;8BEC;MCG,2CD;MEU,gGF;CFO"}],[{"names":["<global>","registerCallableModule$argument_1.onShouldStartLoadWithRequest","registerCallableModule$argument_1.onMessage","forwardRef$argument_0","onShouldStartLoadWithRequestCallback","useImperativeHandle$argument_1","goForward","goBack","reload","stopLoading","postMessage","injectJavaScript","requestFocus","clearFormData","clearCache","clearHistory","useEffect$argument_0","directEventEmitter.addListener$argument_1","<anonymous>","Object.entries.reduce$argument_0","Object.entries.map$argument_0"],"mappings":"AAA;gCC6C;GDI;aEC;GFI;EGS;MC+C;ODS;MEoC;mBCC;sEDC;gBEC,+DF;gBGC;SHK;qBIC;wEJC;qBKC;8ELC;0BMC;6DNE;sBOC;yEPC;uBQC;0ERC;oBSC;mETE;sBUC;yEVC;QFC;caI;UCI;WDU;QCK;SDM;aEG;OFG;KbC;YgByC;oDCO;uBDK;ahBG;GHoD"}]],"x_hermes_function_offsets":{"0":[0,33003,33349,33386,33493,33596,33735,33931,34039,34120,34152,34200,34266,34580,34636,34670,34704,34767,35395,35411,35633,35663,35726,35735,35864,36336,36400,36465,36518,36565,36587,36742,36780,36831,36899,36967,37026,37075,37079,37277,37334,37339,37367,37387,38259,38300,38589,38638,38807,38892,39524,39537,39550,39709,39807,39830,39846,39857,39873,39889,39900,39939,39964,40003,40060,40076,40109,40146,40205,40487,40520,40524,40559,40695,40700,40714,40723,40754,40785,40888,40951,40966,41053,41172,41237,41295,41353,41420,41471,41592,41676,41717,41845,46830,46834,46870,46923,46955,46985,47004,47023,47053,47091,47114,47138,47165,47190,47276,47336,47446,47475,47629,47678,47714,47743,47775,47836,47876,47964,48040,48140,48214,48288,48308,48322,48546,48626,48658,48690,48750,48772,48810,48888,48990,49060,49085,49143,49157,49241,49335,49436,49504,49526,49825,49878,49928,50115,50197,50289,50347,50422,50486,50621,50669,50686,50764,50842,51046,51098,51127,51176,51290,51343,51401,51464,51547,51614,51905,51931,52004,52055,52169,52564,52584,52603,52792,53335,53406,53519,53691,53746,53957,54308,54497,54530,54559,54617,54675,54770,54802,54834,54856,54894,54972,55055,55570,55640,55665,55723,55800,55820,55825,55948,55982,56013,56054,56094,56135,56168,56209,56249,56290,56337,56417,56449,56549,56627,56644,56888,56946,57140,57175,57229,57334,57553,57578,57617,57660,57690,57765,57833,57911,57936,57992,58075,58131,58522,58552,58597,58675,58899,58932,58973,59004,59025,59164,59253,59372,59457,59539,59656,59743,59787,59812,59850,59908,59966,60024,60073,60109,60148,60180,60251,60301,60347,60376,60408,60436,60507,60557,60675,61013,61048,61083,61139,61254,61297,61327,61351,61468,61498,61603,61750,61814,61878,61923,61934,61996,62027,62089,62120,62167,62257,62288,62324,62430,62453,62516,62576,62594,62672,62756,62808,62837,62940,62965,63038,63201,63263,63318,63354,63505,63538,63567,63625,63691,63735,63797,63911,63966,64026,64093,64207,64323,64379,64420,64460,64501,64541,64582,64622,64717,64904,65025,65188,65193,65287,65324,65402,65419,65626,65644,65748,65765,65848,65906,65982,66040,66118,66176,66254,66295,66335,66376,66416,66457,66504,66545,66585,66663,66707,66766,66799,66864,66884,66962,66987,67155,67201,67234,67292,67331,67392,67450,67532,67559,67706,67793,67804,67912,68004,68185,68212,68246,68297,68421,68572,68624,68747,68885,68906,68937,68965,68984,69082,69154,69169,69205,69210,69260,69271,69287,69411,69470,69535,69554,69626,69650,69775,69796,69839,69874,69934,69987,70136,70157,70218,70283,70288,70297,70398,70457,70500,70689,70908,71127,71186,71232,71278,71441,71771,71848,71899,72102,72201,72325,72527,72579,72702,73430,73451,73482,73513,73532,73630,73754,74260,74428,74451,74455,74483,74499,74518,74534,74557,74573,74619,74763,74931,74977,75170,75459,75511,75632,75684,75813,75957,76013,76136,76286,76345,76388,76481,76577,76610,76629,76739,76845,76924,77120,77179,77225,77317,77440,77517,77559,77696,77700,77947,78532,78719,78742,78746,78770,78786,78809,78825,78968,78991,78995,79019,79035,79058,79074,79120,79264,79439,79847,80197,80255,80306,80482,80519,80606,80719,80749,80983,81179,81192,81355,81385,81655,81866,81879,81983,82085,82089,82103,82189,82275,82423,82523,82553,82656,82754,82767,82771,82785,82871,82957,83029,83212,83231,83250,83260,83338,83415,83458,83499,83504,83582,83659,83702,83743,83821,84482,84620,84629,84795,84800,84827,84904,84963,84986,85102,85131,85222,85270,85297,85421,85450,85546,85594,85626,85653,85781,85810,85920,85982,85996,86160,86188,86245,86269,86285,86308,86324,86367,86410,86534,86593,86656,86733,86816,86921,86986,87014,87134,87181,87190,87199,87407,87428,87681,87714,87747,87780,87813,87846,87879,87911,87981,88094,88290,88539,88671,88926,89114,89283,89445,89654,89663,89729,89738,89810,89819,89892,89984,90102,90143,90217,90399,90451,90757,90785,90807,90965,91138,91173,91222,91231,91360,91445,91464,91506,91596,91688,91718,91752,91777,91809,91869,91948,92495,92647,93048,93092,93111,93122,93483,93596,93645,93696,93775,93896,93980,94071,94118,94175,94295,94303,94366,94441,94590,94876,94904,94913,94922,95046,95170,95250,95313,95330,95347,95364,95442,95560,95755,95835,95852,95954,96055,96112,96225,96258,96311,96442,96446,96461,96552,96650,96699,96744,96814,96981,97038,97155,97169,97299,97418,97627,97672,97721,97791,97877,98018,98226,98457,98472,98487,98644,98648,98696,98924,98972,99199,99334,99446,99592,99749,99794,99798,100018,100338,100782,101018,101103,101184,101296,101377,101458,101539,101651,101732,101844,101925,102037,102117,102229,102310,102422,102503,102615,102696,102808,102889,103001,103100,103141,103222,103334,103975,104041,104151,104291,104329,104352,104393,104407,104673,105060,105128,105158,105163,105167,105178,105258,105266,105462,105539,105647,105771,106164,106238,106307,106386,106459,106591,106668,106757,107309,107345,107382,107486,107507,107528,107553,107578,107674,107704,107823,108244,108523,108551,108702,108730,108754,108811,108827,108888,108904,108965,109079,109146,109201,109268,109325,109424,109504,109586,109649,109798,109809,109875,109991,110002,111096,111130,111177,111210,111265,111314,111401,111470,111510,111550,111572,111597,111625,111641,111718,111740,111776,111812,111848,111899,112155,112547,112643,113510,113663,113903,114010,114176,114255,114275,114309,114343,114428,114460,114518,114547,114967,115062,115417,115492,115609,116368,116627,116727,116780,117556,117765,117865,117923,118341,118894,119194,119744,119966,120257,120468,121288,121556,122049,122233,122425,122509,122613,122717,122737,122801,124800,124917,124922,125042,125141,125657,125761,125872,125921,126067,126156,126254,126530,126748,126830,126865,127261,127638,127667,128131,128522,128569,128736,128790,128828,128866,128920,128995,129866,130000,130091,130175,130261,130380,130486,130652,130752,130851,130950,131065,131727,131790,131895,131929,132007,132082,132091,132126,132162,132189,132216,132235,132254,132299,132589,132712,133087,133184,133302,133462,133531,133624,133734,134162,134198,134227,134256,134827,134889,135031,135147,135267,135315,135385,135455,135572,135689,135861,136037,136125,136225,136325,136439,136553,136631,136709,136787,136865,137028,137202,137276,137371,137466,137601,137736,137961,138191,138290,138389,138488,138623,138786,138815,138844,138873,138902,139346,139962,140186,140296,140350,140380,140881,140973,141116,141409,141440,141798,142450,142711,142755,142805,142918,143124,143169,143244,143291,143438,143973,144617,144644,144705,144732,144779,144844,144866,144911,144942,145007,145178,145291,145344,145403,145632,145925,146143,146467,146500,146618,146677,146726,146756,146805,147361,147431,147634,147683,147756,147805,147839,148179,148396,148531,148643,148789,148879,149036,149081,149085,149305,149639,149947,150629,150888,151104,151320,151552,151768,152026,152111,152195,152287,152379,152471,152791,152887,152947,152965,153015,153025,153296,153712,153780,153831,153941,154018,154105,154169,154350,154399,154421,154453,154482,154602,154611,154632,154728,154848,155014,155023,155122,155142,155287,155359,155448,155468,155477,155513,155667,155760,155779,155854,155874,156068,156095,156411,156699,156844,156877,156947,156998,157127,157195,157214,157253,157551,157579,157611,157620,157719,157752,157911,157920,158178,158206,158215,158671,158924,158982,159018,159069,159100,159196,159217,159249,159283,159292,159326,159362,159391,159453,159592,159903,159907,159923,159988,160030,160113,160605,160786,160872,161051,161196,161260,161264,161327,161368,161452,161521,161597,161684,161689,161698,161850,161993,162574,162816,162825,162918,162974,162983,163074,163083,163170,163288,163329,163403,163412,163549,163623,163655,163859,163895,163921,164886,164941,165040,165253,165639,165708,165758,165805,167113,167231,167312,167424,167471,167508,167538,167547,167657,167686,167744,167848,167864,167915,167991,168038,168085,168222,168252,168305,168314,168365,168426,168538,168612,168711,168726,168811,168857,169110,169329,169357,169366,169416,169542,169782,169810,169906,170100,170156,170236,170303,170460,170474,170551,170601,170695,170745,170885,172208,172240,172272,172304,172336,172368,172400,172432,172464,172496,172528,172560,172610,172642,172692,172724,172756,172788,172820,172852,172884,172916,172948,172980,173012,173044,173076,173108,173140,173172,173204,173236,173268,173300,173332,173359,173392,173424,173456,173506,173538,173570,173602,173634,173666,173698,173730,173763,173795,173828,173860,173892,173924,173956,173988,174020,174052,174084,174116,174148,174180,174212,174244,174276,174308,174341,174391,174423,174455,174487,174520,174552,174584,174616,174643,174675,174702,174734,174767,174799,174831,174863,174895,174927,174960,175268,175296,175305,175631,175701,175857,175906,176000,176104,176113,176381,176409,176418,176556,176561,176648,176682,176691,176782,176911,176920,177673,177745,177834,177854,177882,177891,182076,182085,182094,182103,182112,182121,182130,182139,182148,182157,182166,182175,182184,182193,182202,182211,182220,182229,182238,182247,182256,182265,182274,182283,182292,182301,182310,182319,182328,182337,182346,182355,182364,182373,182382,182391,182400,182409,182418,182427,182436,182445,182454,182463,182472,182481,182490,182499,182508,182517,182526,182535,182544,182553,182562,182571,182580,182589,182598,182607,182616,182625,182634,182643,182652,182661,182670,182679,182688,182697,182706,182715,182724,182733,182742,182751,182760,182769,182778,182787,183026,183049,183090,183129,183196,183255,183319,183328,183485,183588,183711,183783,183872,183892,183901,184005,184194,184208,184244,184253,184566,185375,185758,185961,188078,188279,188900,189155,189327,189389,189568,189577,189715,189841,189850,189989,190092,190101,190238,191484,191615,191818,192099,192191,192283,192425,192517,192974,193015,193057,193120,193164,196400,196549,197182,197726,197740,197753,197883,197892,198067,198095,198686,199058,199427,199700,199830,199839,199926,199984,199993,200123,200283,200292,200734,200884,200912,201418,201427,201528,201597,201606,201770,201798,201807,201962,201994,202023,202071,202114,202161,202165,202474,202502,202511,202620,202652,202701,202932,202988,203012,203312,203340,203349,203427,203479,203668,203699,203785,203884,203911,203993,204130,204225,204295,204393,204601,204629,204682,204691,204820,204909,205046,205071,205273,205353,205409,205458,205521,205576,205618,205779,205793,205892,205912,206057,206129,206218,206238,206247,206283,206547,206575,206647,206736,206756,208209,208218,208329,208338,208368,209478,209545,209599,209603,209657,209713,209750,209794,209853,209869,209940,209944,210086,210133,210180,211008,211013,211086,211128,211244,211309,211374,211378,211382,211386,211390,211394,211482,211515,211785,211823,211855,211892,211910,211944,211949,211990,212018,212034,212063,212401,212468,212768,212778,212801,212851,212892,213085,213109,213137,213173,213204,213231,213235,213267,213333,213357,213393,213425,213457,213488,213520,213556,213583,213610,213646,213670,213900,213972,214061,214081,214090,214099,214111,214364,214392,214464,214553,214573,214595,214637,214989,215103,215107,215170,215225,215639,216052,216183,216331,216440,216700,216709,216967,217016,217097,217195,217235,217257,217281,217453,217462,217756,217784,217897,217984,218010,218019,218286,218345,218402,218455,218563,218755,218867,218903,218988,219040,219096,219192,219310,219410,219424,219449,219570,219722,219891,220019,220064,220109,220131,220154,220298,220329,220388,220397,220506,220609,220618,220705,221020,221029,221130,221199,221208,221494,221512,221521,221662,221803,221948,222082,222111,222280,222404,222467,222543,222593,222613,222681,222751,223368,223396,223480,223489,223510,223563,223584,223637,223657,223677,223697,223717,223737,223757,223777,223797,223817,223837,223857,223902,223945,223949,224164,224308,224333,224374,224516,224641,224677,224867,224924,224954,225001,225044,225133,225236,225715,225743,225787,226090,226187,226261,226298,226378,226429,226438,226479,226494,226513,226538,226585,226633,226732,226831,226997,227006,227105,227125,227249,227321,227410,227430,227439,227529,227538,227800,227932,228046,228273,228282,228291,228403,228475,228564,228584,228740,228850,228969,229313,229357,229462,229584,229642,229769,229778,229899,229921,229925,229968,230082,230116,230145,230254,230263,230360,230459,230479,230700,230930,230976,231022,231134,231184,231230,231280,231299,231349,231395,231441,231487,231630,231773,231819,231865,231906,232272,232300,232314,232384,232957,233095,233458,233491,233604,233613,233622,233672,233812,233949,234172,234300,234354,234363,234522,234535,234993,235224,235233,235464,235506,235589,235855,235965,236208,236318,236428,236594,236603,236702,236722,236913,236985,237074,237094,237103,237136,237169,237203,237316,237474,237483,237844,237875,237907,237939,237971,237998,238030,238062,238094,238126,238158,238190,238222,238254,238286,238318,238351,238384,238417,238450,238483,238516,238549,238687,238696,238725,238837,238846,238911,238985,238994,239057,239367,239376,239396,239424,239452,239456,239460,239566,239637,239676,239715,239752,239761,240632,240704,240793,240813,240822,240831,240840,240849,241142,241214,241303,241323,241351,241360,241369,241378,241387,242135,242144,242246,242260,242766,242775,242917,242926,243102,243263,243277,243376,243396,243519,243591,243680,243700,243709,243856,243865,244073,244101,244110,244188,244275,244286,244728,244756,244765,245124,245504,245515,245526,245537,245562,245573,245598,245623,245648,245659,245670,245704,245801,245841,245869,246016,246032,246048,246057,246150,246811,246827,246848,246864,246885,246901,246922,246938,246959,246975,246996,247012,247033,247049,247070,247086,247107,247116,247125,247134,247143,247152,247161,247170,247179,247393,247421,247475,247798,248011,248295,248405,249341,249644,249672,249698,249724,249906,249978,250067,250087,250132,250182,250232,250282,250332,250446,250487,250498,250575,250606,250928,250956,251073,251125,251134,251396,251480,251485,251524,251535,251546,251557,251563,251583,251587,251591,251840,251868,251900,251909,252047,252210,252243,252297,252301,252326,252400,252409,252473,252482,252542,252551,252627,252805,252833,252862,252873,252889,252900,252916,252932,252961,253077,253149,253238,253258,253263,253268,253306,253339,253661,253689,253712,253784,253793,253797,254105,254195,254253,254333,254415,254495,254553,254583,254613,254668,254723,254848,254933,255020,255024,255033,255258,255303,255319,255340,255364,255385,255484,255592,255665,255703,256064,256092,256134,256150,256306,256315,256324,256940,256992,257016,257050,257112,257174,257235,257296,257334,257448,257498,257528,257539,257559,257563,257567,257597,257659,257720,257782,257843,257900,257957,257986,258045,258100,258155,258399,258427,258436,258647,258699,258714,258735,258750,258771,258786,258807,258822,258843,258920,258972,259270,259298,259323,259332,259788,260008,260041,260074,260107,260140,260204,260268,260332,260396,260475,260508,260541,260574,260607,260652,260697,260742,260787,260864,260916,260997,261197,261610,261638,261730,261755,261876,261926,261935,262363,262433,262467,262505,262560,262610,262685,262719,262753,262787,262812,262847,262927,262993,263027,263124,263174,263205,263235,263484,263512,263544,263553,263760,263919,263952,264006,264031,264156,264181,264206,264231,264626,264698,264787,264807,264816,264825,264868,264907,264946,264985,265024,265067,265106,265145,265184,265223,265262,265305,265348,265391,265430,265484,265527,265570,265620,265716,266037,266065,266074,266078,266276,266335,266365,266395,266445,266495,266629,266774,266854,267083,267111,267120,267221,267273,267279,267299,267560,267588,267597,267813,267865,267895,267925,267982,267997,268007,268017,268201,275258,275475,276406,276754,276770,276786,276790,277001,277081,277148,277681,277758,277860,277864,277868,278081,278188,278270,278310,278323,278336,278356,278394,278677,278805,278933,279051,279181,279243,279303,279339,279467,279569,279652,279770,279839,279892,280386,280451,280553,280636,280812,280867,280985,281038,281354,281754,281862,281970,282851,283138,283153,283217,283390,283472,283755,283842,283895,284324,284638,284687,285087,285133,285179,285210,285265,285603,285729,285834,285891,286014,286057,286594,286678,286689,286752,286795,286913,286991,287030,287111,287200,287257,287316,287356,287395,287522,287971,288421,288491,288526,288551,288597,288724,288798,288860,288887,288984,289407,289423,289582,290064,290292,290335,290390,290448,290481,290588,290612,290720,290786,290810,290888,290961,290991,291057,291104,291311,291340,291344,291639,291686,291733,291777,291824,292038,292198,292241,292282,292567,292664,292714,292793,292814,292967,293052,293278,293304,294230,294286,294360,294413,294454,294497,294518,294620,294764,294917,295095,295216,295279,295374,295433,295688,295700,295829,295948,296215,296229,296258,296293,297141,297325,297645,297781,297835,297868,297909,297958,298000,298139,298193,298402,298432,298683,298779,298812,298845,298943,299024,299071,299076,299295,299330,299596,299612,299707,299834,299850,299871,299963,300137,300170,300203,300233,300266,300344,300391,300410,300500,300504,300593,300737,300831,300987,301357,301361,301382,301403,301424,301561,301688,301728,302031,302159,302203,302268,302337,302396,302431,302584,302608,302768,302844,302891,302985,303025,303142,303192,303275,303506,303643,303729,304144,304593,305105,305802,305829,306617,306644,307811,308002,308100,308209,308251,308303,308572,308656,308781,308922,309030,309423,309575,309594,309665,309674,309775,309784,309855,309884,309913,310041,310061,310095,310262,311767,311848,312064,312379,312562,313141,313277,313414,313553,313703,315290,315520,315550,315598,317406,317461,317512,317595,317669,317775,318464,318536,318811,318873,319445,321633,321746,322143,322570,322677,322790,322988,323215,326155,326640,326867,327025,327243,327320,327409,327578,327772,327825,328209,329171,329276,329324,329778,329949,329997,330075,330220,331273,331350,331420,331690,332264,332418,332500,332580,333485,333992,334164,334222,334473,334524,334679,334969,335254,335570,335688,335772,336056,336993,337105,337439,337608,337717,338013,338222,338260,338289,338438,338865,338904,339719,339796,339859,339923,340165,340578,340708,340859,341383,341402,341617,341829,342397,342462,342506,342882,342967,343242,343476,343732,343823,343863,344004,344027,344188,344230,344258,344571,344805,345483,345520,345556,345655,345929,346018,346176,346322,346343,346364,346432,346603,346665,346753,346845,346950,347032,347106,347126,347224,347228,347259,347397,347401,347431,347435,347449,347777,347786,349527,349547,349790,349847,349871,349911,349922,350015,350019,350068,350158,350191,350221,350325,350512,350543,350614,350648,350726,350967,351054,351147,351191,351213,351255,351333,351368,351390,351465,351543,351624,351736,351857,351969,352239,352305,352326,352347,352363,352411,352461,352583,352718,352778,352899,352977,353137,353167,353265,353304,353325,353771,353881,353941,353987,354008,354029,354157,354264,354482,354491,354613,354735,355039,355071,355103,355135,355167,355199,355231,355263,355295,355327,355359,355391,355400,355500,355642,355670,355919,355947,355979,355988,356103,356266,356299,356353,356378,356522,356550,356554,356558,356595,357001,357029,357038,357057,357301,357379,357572,357754,357926,358001,358543,358622,358717,358879,359058,359107,359156,359603,359631,359640,359741,360006,360039,360072,360114,360534,360562,360767,360780,360789,360798,360945,361257,361290,361323,361356,361504,361702,361734,361754,361778,361806,361834,361862,361886,361911,362007,362037,362313,362341,362350,362502,362754,362787,362820,362853,362886,362995,363118,363190,363279,363299,363308,363522,364175,364334,364505,364514,364821,364849,364858,364867,364917,364969,365070,365122,365131,365206,365595,365623,365632,365871,366347,366380,366413,366446,366479,366512,366545,366578,366838,367169,367197,367206,367215,367293,367485,367518,367596,367759,367792,368050,368078,368087,368193,368413,368446,368479,368512,368824,368852,368861,369036,369429,369462,369495,369528,369561,369594,369627,369736,369768,369907,369916,370152,370205,370224,370244,370414,370519,370798,370817,370922,370955,371009,371122,371460,371487,371514,371562,371605,371624,371667,371721,371767,371788,371831,371948,371982,372055,372101,372279,372283,372308,372344,372387,372540,372595,372699,372902,372940,373159,373391,373457,373590,373652,373733,373777,373821,373936,373988,374023,374079,374088,374144,374153,374417,374455,374488,374521,374559,374597,374628,374671,374703,374741,374779,374903,374975,375064,375084,375093,375200,375450,375522,375546,375670,375742,375831,375851,375860,376424,376459,376518,376854,376918,377009,377059,377147,377211,377264,377317,377326,377487,377513,377674,377700,377834,377860,377919,378053,378116,378251,378372,378391,378410,378472,378491,378663,378668,378847,378883,378892,378954,378990,378999,379044,379210,379219,379318,379338,379461,379533,379622,379642,379651,379738,379898,379932,379941,379950,380051,380116,380229,380238,380253,380289,380356,380408,380466,380578,381427,381478,381615,381672,381676,381680,381684,381720,381759,381786,381847,382054,382089,382124,382157,382190,382250,382286,382320,382361,382860,383252,383344,383383,383449,383570,383704,383720,383742,383757,383762,383829,383935,383947,383952,384077,384113,384118,384124,384212,384297,384489,384546,384934,385018,385257,385404,385512,385648,385721,385968,386000,386032,386065,386098,386131,386164,386196,386228,386260,386292,386325,386358,386391,386424,386984,387012,387021,387300,387352,387382,387416,387446,387480,387510,387544,387574,387608,387638,387672,387702,387736,387766,387800,388723,388964,389078,389089,389306,389433,389881,389976,390084,390280,390374,390561,390669,390959,391006,391025,391359,391414,391443,391481,391576,391590,391604,391798,392430,392474,392518,392562,392606,392650,392694,392836,392914,392946,393283,393372,393402,393432,393466,393496,393530,393560,393594,393624,393658,393688,393722,393752,393786,393816,393850,393880,393914,393934,393954,394054,394070,394091,394147,394404,394768,394796,394880,394884,395402,395452,395955,395987,396024,396040,396061,396070,396234,396266,396856,396919,397167,397313,397317,397340,397525,397569,397578,397587,397795,397823,397832,397956,398132,398143,398154,398165,398429,398457,398495,398563,398604,398613,398814,398846,399030,399162,399246,399381,399469,399519,399573,399627,399690,399856,399865,399964,399984,400198,400270,400359,400379,400388,400424,400445,400470,400495,400524,400553,400578,400729,400757,400766,400927,401055,401109,401125,401353,401418,401433,401455,401664,401673,401682,401691,401763,401835,401862,401993,402002,402219,402247,402276,402285,402294,402318,402769,402841,402938,403100,403131,403223,403238,403253,403264,403275,403286,403297,403321,403332,403336,403454,403482,403537,403650,403803,403958,404096,404105,404213,404410,404419,404592,404620,404669,404678,404784,404826,404867,404917,404962,404997,405025,405284,405533,405542,405551,405560,405569,405699,406700,406735,406859,406893,406957,406991,407000,407131,407156,407246,407279,407367,407411,407460,407489,407517,407575,407677,407806,407910,408020,408684,408919,409137,409297,409328,409365,409410,410260,410337,410482,410593,410641,410771,411065,411116,411787,411808,412070,412124,412151,412199,412226,412274,412301,412358,412435,412488,412517,412571,412637,412707,412738,412784,412821,412864,412952,412996,413020,413064,413088,413132,413171,413222,413330,413397,413512,413561,414068,414096,414105,414458,414907,414918,415098,415171,415467,415553,415693,415733,415747,415890,416075,416183,416326,416515,416545,416579,416609,416643,416673,416707,416737,416771,416979,417007,417016,417140,417310,417321,417332,417343,417551,417579,417588,417712,417900,417911,417922,417933,418130,418158,418167,418296,418455,418536,418598,418737,418827,418855,419021,419030,419129,419149,419273,419345,419434,419454,419463,419687,419715,419724,419825,419936,419986,420007,420307,420335,420344,420798,420889,420918,421165,421278,421373,421424,421537,421588,421639,421790,421841,421892,421963,421974,421985,421996,422026,422060,422090,422124,422154,422188,422218,422252,422282,422316,422346,422380,422546,422555,422654,422674,422798,422870,422959,422979,422988,423339,423367,423396,423411,423420,423830,424308,424378,424491,424539,424553,424601,424649,424709,424757,424813,424883,424946,424960,425048,425096,425207,425211,425375,425403,425412,425780,426012,426110,426159,426219,426279,426295,426380,426406,426441,426475,426499,426537,426557,426582,426591,426690,426715,426724,426864,426981,427068,427131,427288,427357,427433,427551,428201,428229,428298,428370,428459,428468,428477,428486,428564,428643,428739,428822,428877,428896,428924,429955,430008,430164,430371,430412,430448,430487,430519,430570,430799,430831,430945,431009,431034,431061,431088,431116,431141,431203,431244,431320,431577,431639,431757,431781,432017,432026,432035,432044,432074,432099,432124,432169,432173,432178,432183,432188,432213,432279,432351,432395,432439,432467,432492,432536,432561,432586,432611,432681,432709,432745,432749,433054,433262,433778,433821,433874,434049,434077,434086,434172,434204,434491,434695,434718,434788,434865,434871,435080,435107,435139,435171,435203,435235,435267,435299,435465,435474,435679,435872,435886,436013,436022,436156,436165,436169,436195,436199,436203,436207,436241,436305,436390,436556,436565,436664,436684,436808,436880,436969,436989,436998,437213,437285,437374,437394,437403,437412,437416,437931,437959,437973,437987,438011,438125,438200,438333,438352,438378,438405,438432,438450,438466,438506,438520,438722,438904,438929,438960,438969,438973,439079,439232,439278,439378,439418,439508,439519,439651,439660,439695,439714,439723,439762,439794,439810,439934,440004,440013,440232,440260,440269,440319,440371,440537,440546,440645,440665,440788,440860,440949,440969,440978,441293,441321,441393,441482,441502,442011,442020,442188,442213,442222,442338,442347,442558,442586,442595,442794,442914,442919,442928,442958,443036,443177,443311,443367,443377,443386,443416,444260,444341,444363,444560,444604,444725,444843,445220,445235,445244,445290,445303,445837,445875,445902,445923,445941,445967,445987,446011,446034,446133,446142,453136,453353,454284,454632,454648,454664,454668,454879,454959,455026,455559,455636,455738,455742,455746,455959,456066,456148,456188,456201,456214,456234,456272,456555,456683,456811,456929,457059,457121,457181,457217,457345,457447,457530,457648,457717,457770,458264,458329,458431,458514,458690,458745,458863,458890,458905,458978,459151,459233,459451,459574,459616,460150,460233,460286,460602,461002,461110,461218,462099,462122,462195,462282,462335,462764,463078,463127,463527,463573,463619,463650,463705,464043,464169,464274,464331,464352,464373,464417,464525,464606,464630,464678,464689,464752,464795,464913,464996,465035,465196,465285,465342,465401,465441,465480,465607,466056,466506,466576,466611,466636,466682,466809,466883,466945,466972,467079,467502,467661,468143,468371,468414,468447,468554,468578,468686,468752,468776,468854,468927,468957,469023,469070,469277,469306,469310,469605,469652,469699,469743,469790,470004,470164,470207,470248,470533,470630,470680,470759,470780,470933,471017,471243,471269,472195,472251,472325,472378,472419,472462,472483,472585,472729,472882,473060,473181,473244,473339,473398,473653,473665,473794,473913,474180,474194,474223,474258,475106,475290,475610,475746,475800,475833,475874,475923,475965,476104,476158,476367,476397,476648,476744,476777,476810,476908,476989,477036,477041,477260,477295,477561,477577,477672,477799,477815,477836,477928,478102,478135,478168,478198,478231,478309,478356,478375,478465,478469,478558,478702,478796,478952,479322,479326,479347,479368,479389,479526,479653,479693,479996,480124,480168,480233,480301,480360,480395,480548,480572,480732,480808,480855,480949,480989,481106,481156,481239,481470,481607,481693,482108,482557,483069,483766,483793,484581,484608,485775,485966,486064,486173,486215,486267,486536,486620,486745,486886,486994,487387,487539,487558,487629,487638,487739,487748,487819,487848,487877,488005,488025,488059,488226,489731,489812,490028,490343,490526,491105,491241,491378,491517,491667,493254,493484,493514,493562,495370,495425,495476,495559,495633,495739,496428,496500,496775,496837,497409,499597,499710,499908,500135,503069,503554,503781,503939,504157,504234,504323,504492,504686,504733,505028,505233,505829,506213,507140,507245,507293,508133,508304,508352,508430,508711,510857,511232,511302,511572,512108,512262,512344,512424,513329,513836,514008,514066,514317,514368,514523,514813,515098,515414,515532,515616,515900,516837,516949,517283,517452,517561,517857,518066,518104,518133,518282,518709,518748,519563,519640,519703,519767,520009,520422,520552,520703,521227,521246,521461,521673,522241,522306,522350,522726,522811,523086,523320,523576,523667,523707,523848,523871,524032,524074,524102,524415,524649,525327,525364,525400,525499,525773,525862,526018,526164,526256,526361,526417,526445,526527,526601,526621,526719,526723,526754,526892,526896,526926,526930,526944,527272,527281,529022,529042,529285,529312,529626,529658,529743,529819,529899,529946,529977,530008,530058,530108,530214,530299,530320,530341,530398,530422,530462,530473,530566,530570,530619,530709,530742,530772,530876,531063,531094,531165,531199,531277,531518,531605,531698,531742,531764,531806,531884,531919,531941,532016,532094,532175,532287,532408,532520,532790,532856,532991,533051,533172,533250,533410,533431,533839,533949,533990,534136,534164,534397,534406,534540,534549,534580,534603,534723,534732,534755,535155,535183,535192,535935,536317,536345,536417,536506,536526,536858,536915,537055,537101,537147,537193,537239,537264,537273,538903,539046,539189,539343,539371,539375,539379,539383,539450,539473,539506,539653,539824,539868,539894,539915,539924,540439,540467,540562,540638,540647,540671,540695,540730,540754,541187,541318,541401,541417,541501,541540,541806,541844,541882,541912,542155,542189,542218,542499,542529,542559,542587,542733,542875,542910,543068,543103,543329,543365,543702,543799,543995,544015,544116,544493,544547,544593,544639,544685,544731,544777,544791,544862,545000,545009,545047,545208,545222,545321,545341,545464,545536,545625,545645,545654,545758,545767,545771,545775,545850,545859,546022,546050,546059,546165,546207,546233,546290,546352,546371,546694,546722,546731,546740,546766,546792,547262,547290,547362,547451,547471,547480,547696,547878,548145,548220,548245,548309,548389,548499,549850,549889,549928,549956,549976,549996,550089,550093,550143,550554,550582,550654,550743,550763,550772,551034,551266,551517,551610,551703,551793,551858,551969,552018,552050,552116,553315,553474,553513,553562,553633,553737,553746,554025,554053,554062,554094,554126,554158,554190,554222,554254,554985,555013,555074,555166,555210,555219,555259,555299,555339,555379,555419,555462,555508,555612,556023,556127,556295,556324,556345,556366,556412,556432,556536,556704,556754,556775,556796,556842,556862,556966,557046,557075,557096,557117,557163,557183,557251,557342,557475,557521,557555,557586,557620,557624,557730,557812,557872,557984,558012,558059,558087,558126,558160,558164,558231,558274,558328,558474,558581,558742,558769,558802,558836,558855,558916,559174,559202,559356,559592,559641,559679,559734,559743,559895,560076,560174,560208,560234,560277,560293,560361,560420,560452,560596,560786,560817,561601,561629,561701,561790,561810,561930,561979,562143,562181,562426,562464,562502,562595,562641,562766,562785,562804,562834,562943,563064,563073,563115,563144,563228,563298,563403,563501,563645,563674,563709,563734,563759,563788,563817,563867,563903,563928,563957,563986,564011,564036,564065,564094,564125,564150,564183,564216,564267,564433,564442,564541,564561,564733,564805,564894,564914,564923,565053,565125,565214,565234,565260,565269,565435,565444,565543,565563,565735,565807,565896,565916,565925,566357,566385,566455,566525,566540,566587,566743,566792,566904,566913,567405,567710,567818,567848,567869,567983,568106,568273,568399,568518,568559,568611,568683,568772,568808,568918,568993,569032,569072,569207,569235,569310,569350,569401,569493,569543,570040,570112,570201,570221,570294,570565,570587,570609,570618,570701,570822,570851,570891,570957,570971,571130,571158,571167,571365,571444,571474,571505,571528,571586,571635,571667,571699,571725,571971,572078,572205,572255,572289,572349,572527,572561,572570,572579,572654,572692,573056,573080,573088,573118,573133,573137,573141,573550,573578,573739,573848,574055,574456,574606,574649,574665,574734,574750,574836,574855,574896,574994,575075,575142,575151,575367,575441,575540,575615,575685,575720,575788,575856,576044,576112,576207,576308,576401,576425,576508,577002,577074,577163,577183,577203,577223,577243,577265,577287,577309,577331,577340,577612,577621,577638,577658,577663,577731,577740,577753,577769,577800,577854,577893,577934,578002,578108,578165,578204,578416,578465,578470,578486,578516,578532,578614,578848,578878,578904,578916,578981,579060,579182,579279,579515,579752,579836,579845,580122,580150,580159,580329,580469,580624,580739,580898,580909,581037,581291,581319,581328,581360,581857,581996,582000,582080,582084,582098,582102,582106,582112,582155,582229,582275,582318,582362,582390,582453,582472,582621,582655,582666,582682,582696,582700,582975,583003,583012,583412,583703,583755,583807,583844,583881,583924,583983,584042,584147,584184,584266,584311,584336,584377,584460,584543,584633,584869,584897,584906,585053,585164,585238,585407,585426,585661,585765,586072,586100,586172,586261,586281,586290,586488,586745,586863,587080,587114,587243,587569,587719,587734,587804,587808,588437,588465,588802,588942,589035,589044,589352,589760,589936,590263,590420,590517,590627,590847,590884,591096,591245,591298,591444,591470,591829,591857,591947,592197,592413,592452,592461,592705,592831,592864,592878,592941,592977,593010,593025,593135,593245,593362,593424,593445,593512,594041,594069,594141,594230,594250,594533,594542,594809,595058,595212,595217,595449,595546,595656,595766,595883,596029,596151,596177,596534,596562,596677,596706,596961,597002,597011,597255,597381,597498,597531,597545,597600,597633,597651,597684,597699,597809,597919,598172,598267,598574,598602,598674,598763,598783,598792,598962,599677,599829,600092,600135,600175,601060,601183,601547,601575,601782,601870,601978,601987,602341,602726,602945,603130,603232,603303,603374,603467,603560,603683,603802,603921,603965,604037,604163,604284,604365,604398,604424,604467,604685,604707,604730,604760,604871,604972,605083,605360,605388,605452,605461,605608,605756,605931,606085,606226,606245,606515,606638,606899,606927,606949,607036,607256,607289,607298,607649,607677,607749,607838,607858,607916,608159,608171,608226,608255,608370,608391,608417,608601,608904,608931,609086,609125,609288,609292,609344,609454,609478,609497,609573,609622,609687,609725,609764,609811,609871,610020,610029,610090,610134,610199,610307,610369,610439,610448,610772,610800,610872,610961,610981,611015,611167,611198,611219,611394,611425,611467,611516,611882,612084,612317,612567,612901,612927,613074,613199,613241,613319,613337,613356,613403,613412,613683,613711,613720,613913,614078,614169,614207,614247,614331,614415,614490,614740,614768,614777,614970,615082,615156,615196,615301,615368,615435,615503,615795,615823,615832,616025,616255,616346,616439,616479,616563,616647,616722,616972,617000,617009,617202,617279,617353,617402,617442,617509,617576,617635,617906,617934,617943,618136,618301,618392,618430,618470,618554,618638,618713,618984,619012,619021,619214,619379,619470,619508,619548,619632,619716,619791,620041,620069,620078,620271,620411,620511,620531,620631,620699,620804,620970,621578,621606,621622,621658,621757,621766,621770,621774,621778,621782,621786,621838,621891,621905,621964,622021,622080,622137,622146,622165,622184,622193,622212,622257,622410,622438,622447,622957,622985,623057,623146,623166,623210,623224,623260,623269,623669,623953,623973,624080,624181,624333,624372,624455,624530,624698,624808,624855,624938,624974,625010,625046,625082,625114,625146,625180,625214,625248,625284,625460,625617,625712,625837,625860,626003,626034,626065,626325,626520,626529,626561,626593,626626,626658,626690,626853,626925,627014,627034,627330,627446,628297,628391,629170,629198,629270,629359,629379,629398,629407,630640,631583,631597,631640,631706,631741,631772,631826,631842,631862,632207,632356,632422,632462,632598,632644,632707,632749,632885,632968,633638,633663,633688,633792,633817,633840,633969,633994,634069,634094,634192,634217,634274,634421,634490,634888,634949,635115,635573,635678,635861,635971,636050,636067,636090,636129,636178,636251,636304,636340,636374,636385,636627,637072,637149,637164,637222,637322,637345,637575,637975,638006,638073,638182,638243,640198,640315,640338,640385,640420,640437,640549,640783,640800,640826,640849,641360,641487,641540,641579,641641,642057,642276,642297,642409,642600,642629,642937,642958,642979,643000,643021,643031,643100,643179,643291,643336,643697,643855,643948,644308,644443,644559,644646,644669,644678,644765,644814,644823,645008,645036,645045,645197,645316,645327,645840,645851,645935,646038,646240,646404,646432,646441,646616,646714,646862,647000,647086,647159,647244,647260,647466,647494,647503,647594,647820,647966,648022,648180,648199,649169,649180,649240,649311,649343,649359,649373,649387,649567,649595,649604,649986,650094,650382,650419,650469,650480,650491,650706,650894,651008,651027,651044,651161,651240,651340,651375,651410,651666,651694,651766,651855,651875,651884,651985,652062,652211,652280,652397,652443,652457,652503,652517,652736,652764,652842,652912,652943,652952,653127,653281,653312,653746,654050,654073,654133,654150,654165,654546,654574,654618,654971,654999,655071,655160,655180,655189,655364,655597,655667,655737,655811,655878,655926,655958,655999,656033,656183,656656,656725,656889,656940,657073,657144,657259,657306,657315,657439,657452,657466,657480,657494,657508,657522,657877,657905,657977,658066,658086,658768,658814,658847,658898,658949,659126,659135,659328,659579,659631,659833,659979,659995,660470,660510,660550,660602,660654,660674,660932,660943,661387,661420,661429,661553,661940,662081,662144,662195,662282,662336,662453,662476,662629,662657,662666,662777,662786,662972,662986,662995,663019,663043,663133,663233,663244,663291,663395,663423,663802,664025,664091,664118,664602,664674,664763,664783,664792,664801,664810,664819,665209,665237,665246,665428,665726,665824,666146,666174,666246,666335,666355,666364,666488,666654,666724,666744,666768,666907,667020,667181,667195,667294,667314,667731,667740,667749,667758,667767,667803,667969,667978,668077,668097,668501,668510,668519,668528,668537,668573,669421,669449,669521,669610,669630,669685,669701,669805,669814,670076,670876,670885,670924,670965,670986,671007,671166,671242,671296,671497,671652,671766,671932,671947,672003,672108,672178,672183,672326,672386,672442,672502,672558,672634,672729,672837,672958,673029,673105,673109,673352,673370,673410,673518,673712,673805,673850,673877,674076,674132,674188,674236,674558,674658,674792,674818,674841,674987,675032,675237,676660,676911,676942,676978,677091,677314,677342,677351,677360,677736,677808,677897,677917,677926,677935,677944,678139,678211,678300,678320,678329,678338,678347,678880,678952,679041,679061,679070,679079,679088,679277,679286,679295,679304,679510,679538,679547,679556,679740,679749,679840,679876,679908,679940,680106,680115,680214,680234,680357,680429,680518,680538,680547,680634,680997,681006,681119,681155,681164,681419,681447,681456,681631,681746,681766,681785,681813,681840,681860,681877,681905,682012,682506,682578,682667,682687,682702,682946,683001,683005,683009,683013,683071,683080,683106,683267,683281,683380,683400,683523,683595,683684,683704,683713,683817,683862,683871,684030,684039,684280,684289,684298,684307,684638,684666,684738,684827,684847,684856,685673,685730,685900,685999,686038,686167,686190,686645,686720,686862,686996,687005,687158,687186,687195,687502,687530,687602,687691,687711,687720,687936,688083,688103,688142,688187,688232,688279,688326,688375,688508,688518,688530,688683,688711,688720,688873,688901,688910,689257,689285,689357,689446,689466,689475,689576,689731,689751,689781,690052,690309,690337,690409,690498,690518,690527,690576,690727,690736,690891,690919,691014,691042,691124,691226,691246,691255,691416,691430,691529,691549,691760,691769,691778,691787,692188,692216,692288,692377,692397,692406,692580,692788,692818,692847,692884,692893,693074,693104,693171,693180,693455,693492,693522,693531,693713,693783,693910,693940,693956,694531,695014,695042,695051,695073,695110,695180,695217,695287,695324,695381,695418,695488,695525,695547,695584,695606,695628,695665,695722,695759,695835,695904,695908,695937,695966,696002,696038,696082,696160,696321,696335,696434,696454,696577,696649,696738,696758,696767,696998,697026,697087,697097,697106,697235,697307,697396,697416,697425,697449,698064,698092,698164,698253,698273,698344,698353,698546,698650,698654,698685,698742,698764,699310,699314,699318,699484,699493,699592,699612,699735,699807,699896,699916,699925,700091,700100,700199,700219,700517,700526,700535,700544,700809,700818,700827,700873,700919,700965,701131,701140,701239,701259,701382,701454,701543,701563,701572,701893,701921,703105,703277,703351,703401,703475,703550,703559,703754,703782,703892,704089,704198,704283,704332,704341,704785,704813,704885,704974,704994,705030,705081,705260,705269,705605,705743,705779,705822,705877,705881,705936,705991,706017,706186,706235,706287,706366,706449,706503,706853,707014,707028,707127,707147,707332,707404,707493,707513,707522,707558,707587,707612,707637,707662,707823,707837,707936,707956,708160,708232,708321,708341,708350,708386,708411,708436,708460,708485,708514,708543,708860,708888,708897,708901,708905,709437,709514,709627,709788,709802,709901,709921,710408,710417,710426,710435,710444,710480,710641,710655,710754,710774,711282,711291,711300,711309,711318,711354,712006,712034,712106,712195,712215,712500,712831,714472,714530,714617,714706,714766,714806,714820,714880,715004,715097,715167,715237,715275,715327,715396,715405,715687,717058,717086,717095,717172,717199,717296,717321,717340,717358,717362,717720,717763,717806,718346,718386,718426,718520,718766,718809,718897,719279,719324,719363,719466,719519,719977,720018,720119,720145,720163,720349,720374,720383,720404,720440,720631,720640,720713,720793,720891,720998,721081,721146,721317,721342,721351,721372,721770,721798,721870,721959,721979,721988,722250,722474,722730,722819,722908,723077,723098,723204,723283,723371,723464,723592,723667,724753,724800,724839,724908,724979,725213,725241,725313,725402,725422,726400,726582,726591,726724,726733,726866,726875,727157,727185,727216,727487,727781,727821,727858,727877,727886,727895,728145,728154,728163,728172,728387,728415,728424,728791,728955,729026,729192,729201,729300,729320,729443,729515,729604,729624,729633,729806,729834,730026,730100,730186,730267,730306,730363,730490,730499,730622,730694,730783,730803,730812,731050,731078,731087,731147,731355,731387,731459,731658,731683,731743,731830,731839,732014,732180,732189,732288,732308,732432,732504,732593,732613,732622,732770,732779,732803,732833,732994,733008,733107,733127,733251,733323,733412,733432,733441,733568,733577,733705,733714,733718,733842,733914,734003,734023,734032,734202,734230,734239,734243,734247,734251,734417,734426,734525,734545,734669,734741,734830,734850,734859,735179,735207,735216,735432,735488,735510,735568,735626,735666,735706,735754,735813,735979,735988,736087,736107,736230,736302,736391,736411,736420,736586,736595,736694,736714,736837,736909,736998,737018,737027,737267,737295,737367,737456,737476,737485,737489,737493,737497,737501,737505,737509,737513,737517,737521,737687,737696,737795,737815,737938,738010,738099,738119,738128,738357,738425,738434,738503,738718,738919,738968,739017,739135,739230,739415,739456,739515,739579,739674,739738,739797,739846,739861,740030,740039,740412,740444,740476,740508,740540,740571,740602,740928,740956,740965,741125,741177,741253,741307,741344,741374,741383,741468,741505,741535,741544,741716,741787,741835,741881,741935,742101,742110,742209,742229,742352,742424,742513,742533,742542,742833,742861,742870,743510,743708,743826,743929,743940,743951,743962,743973,743984,743995,744006,744017,744071,744125,744175,744225,744279,744333,744387,744441,744495,744549,744777,744823,744869,744894,744913,745025,745148,745198,745278,745345,745386,745440,745606,745615,745714,745734,745857,745929,746018,746038,746047,746298,746326,746335,746398,746430,746714,746735,746901,746910,747009,747029,747152,747224,747313,747333,747342,747489,747573,747582,747715,747752,747761,747797,747815,747934,747943,748137,748270,748313,748322,748511,748537,748703,748712,748811,748831,748955,749027,749116,749136,749145,749301,749400,749420,749519,749539,749652,749841,750222,750250,750322,750411,750431,750440,750449,750610,750878,750915,750945,750954,751234,751278,751294,751319,751393,751426,751920,752068,752289,753342,753370,753385,753400,753415,753430,753444,753458,753473,753488,753502,753517,753531,753630,753650,753749,753769,753868,753888,753987,754007,754106,754126,754225,754245,754344,754364,754463,754483,754565,754679,754688,754847,754924,755131,755399,755408,755573,755618,755927,756055,756183,756187,756191,756243,756385,756411,756437,756463,756536,756644,756850,756859,756940,757147,757156,757165,757174,757183,757402,757430,757439,757489,757557,757561,757688,757697,757824,757833,757960,757969,758096,758105,758276,758344,758530,758539,758684,759027,759036,759160,759169,759443,759471,759630,759747,759832,760056,760157,760315,760357,760418,760491,760720,760724,760838,760847,761009,761037,761376,761385,761528,761537,761680,761728,761752,761771,761787,761814,761887,761908,761981,762149,762292,762320,762339,762363,762413,762518,762548,762601,762610,762710,762926,762954,762963,763013,763116,763296,763324,763333,763462,763561,763679,763705,763872,763994,763998,764134,764289,765025,765041,765112,765278,765287,765386,765406,765759,765791,765811,765820,765829,766755,766783,766805,766818,767089,767098,767113,767128,767143,767180,767217,767251,767285,767395,767479,767563,767572,767586,767846,767855,767864,767873,767987,767996,768083,768146,768184,768242,768425,768561,768591,768644,768653,768695,768779,768808,768922,769000,769071,769154,769249,769415,769424,769523,769543,769671,769811,769875,769879,769984,769999,770031,770185,770343,770454,770480,770522,770628,770676,770692,770744,770757,771780,771808,771880,771969,771989,772016,772047,772315,772360,772975,773345,773408,775280,775348,775382,775448,775472,775506,775568,775592,775629,775638,775934,775964,776001,776010,776201,776232,776242,776272,776336,776368,776502,776535,776610,776657,776681,776718,776727,777332,777362,777399,777408,777494,777524,777561,777570,777760,777790,777827,777836,778358,778388,778425,778434,778495,778525,778562,778571,778809,778841,778850,779161,779191,779228,779237,780555,780585,780622,780631,780815,780845,780882,780891,780966,780996,781033,781042,781105,781135,781210,781247,781256,781470,781500,781633,781651,781688,781697,781805,781835,781872,781881,783064,783086,783095,783212,783242,783292,783591,783615,783639,783663,783687,783711,783735,783906,783959,784030,784176,784220,784334,784385,784479,784532,784678,784693,784746,784919,784934,785022,785031,785442,785457,785472,785487,785502,785517,785532,785547,785562,785577,785789,785817,786040,786068,786112,786147,786182,786213,786244,786420,786424,788614,788642,788656,788670,788684,788698,788712,788726,788740,788754,788768,788782,788796,788810,788824,788838,788852,788866,788880,788894,788908,788922,788936,788950,788964,788978,788992,789007,789021,789035,789134,789154,789253,789273,789372,789392,789491,789511,789610,789630,789729,789749,789848,789868,789967,789987,790086,790106,790822,790837,790851,790866,790881,790896,790911,790926,790941,790956,790971,790986,791001,791016,791031,791046,791173,791281,791300,791386,791426,791473,791491,791677,791705,791735,791788,791797,791977,791986,792100,792109,792225,792234,792238,792402,792430,792460,792513,792522,792614,792623,792960,792988,793060,793149,793169,793199,793252,793261,794191,794260,794290,794343,794352,794590,794765,794795,794848,794857,795033,795084,795114,795167,795176,795191,795234,795243,795816,795844,795864,795894,795947,795956,796061,796091,796144,796153,796258,796288,796341,796350,796455,796485,796538,796547,796652,796682,796735,796744,796883,796913,796966,796975,797114,797123,797132,797141,797150,797165,797350,797359,797473,797482,797837,797865,797895,797948,797957,798106,798136,798189,798198,798475,798505,798558,798567,798747,798784,798793,798947,798977,799007,799155,799227,799316,799336,799450,799459,799591,799650,799689,800008,800036,800108,800197,800217,800247,800300,800309,800449,800479,800532,800541,800729,800759,800812,800821,801086,801116,801169,801178,801459,801496,801505,802044,802074,802087,802115,802145,802198,802207,802383,802426,802456,802509,802518,802533,802634,802965,802993,803779,803852,803860,803923,803980,804126,804177,804224,804286,804593,804716,804829,804966,805216,805648,805769,805848,805938,805981,806205,806214,806223,806228,806773,806992,807327,807440,807552,807664,807801,807938,808075,808196,808317,808379,808515,808656,808777,808835,808976,809097,809155,809526,809560,809594,809910,809983,809991,810054,810172,810209,810266,810412,810463,810630,810700,810714,810747,810847,810945,810990,811149,811153,811219,811252,811316,811364,811417,811492,811787,811807,811839,811898,811965,812304,812492,812638,812970,812990,814023,814281,814380,814385,814413,814433,815385,815426,815715,815764,815933,816018,816647,816660,816673,816832,816930,816953,816969,816980,816991,817007,817023,817039,817050,817089,817114,817153,817210,817226,817307,817340,817382,817554,817591,817653,817783,817943,817971,818017,818070,818150,818419,818613,818698,818841,818893,818998,819065,819069,819134,819221,819508,819650,819671,819711,820876,820896,820943,821044,821127,821154,821181,821208,821235,821262,821289,821316,821343,821370,821397,821424,821451,821517,821544,821610,821637,821704,821731,821750,821777,821843,821870,821937,821964,822083,822110,822137,822164,822191,822218,822242,822266,822290,822321,822352,822419,822474,822531,822576,822676,822748,822898,822918,822959,822996,823016,823496,823579,823662,826431,826479,826508,826571,826763,826915,826982,827201,827973,827994,828015,828036,828057,828078,828099,828120,828141,828168,828195,828221,828247,828273,828299,828340,828386,828422,828431,828495,828521,828594,828666,828772,828870,828889,828964,828983,829034,829075,829360,829399,829488,829579,829633,829717,829813,829867,829946,830246,830353,830357,830388,830468,830499,830553,830628,830778,830897,830979,831042,831075,831271,831280,831387,831440,831474,831483,831498,831507,831789,831846,832029,832110,832155,832231,832276,832337,832466,832585,832615,832717,832812,832915,833057,833530,833539,833544,833586,833637,833641,833803,833940,834103,834175,834265,834286,834400,834471,834589,834890,834979,835611,835663,835678,835739,835812,835842,835883,835908,835928,836010,836067,836138,836212,836216,836577,836678,836714,836925,836961,837016,837090,837141,837262,837325,837382,837528,837695,837728,837828,837926,837971,838047,838266,838312,838394,838496,838655,838659,838711,838781,838795,838861,838894,838967,838975,839038,839097,839260,839374,839400,839456,841827,841930,843330,843395,843449,843508,843652,843765,843839,843969,844301,844426,844445,844546,844591,844643,844685,844816,845224,845228,845253,845325,845808,845849,845895,845924,845933,846011,846086,846161,846893,846957,846991,847205,847288,847844,847874,847947,847955,848018,848038,848169,848267,848388,848500,848573,848706,848812,849256,850319,850348,850375,851050,851152,851247,851306,851437,851829,851969,852525,852945,852973,853001,853031,853053,853083,853120,853126,853245,853443,853487,853594,853743,853800,853857,853883,854002,854022,854031,854072,854158,854215,854272,854298,854478,854506,854536,854589,854598,854720,854745,854754,854868,854877,855108,855117,855126,855135,855144,855190,855236,855282,855431,855478,855642,855670,855700,855753,855762,855871,855880,856044,856072,856102,856155,856164,856269,856278,856442,856470,856500,856553,856562,856667,856676,856863,856872,856909,856918,856965,856995,857159,857187,857217,857270,857279,857409,857418,857598,857626,857656,857709,857718,857840,857865,857874,857988,857997,858341,858369,858399,858452,858461,858630,858920,859045,859268,859300,859454,859627,859800,859992,860144,860175,860846,860958,860967,861272,861287,861296,861305,861357,861410,861574,861602,861632,861685,861694,861803,861812,861976,862004,862034,862087,862096,862201,862210,862374,862402,862432,862485,862494,862599,862608,862722,862731,862895,862923,862953,863006,863015,863132,863141,863305,863333,863363,863416,863425,863534,863543,863723,863751,863781,863834,863843,863969,863978,864187,864270,864367,864394,864424,864451,864469,864502,864511,864520,864583,864934,864962,865000,865037,865064,865102,865139,865169,865222,865231,865257,865361,865391,865444,865453,865479,865585,865612,865621,865735,865744,865908,865936,865966,866019,866028,866137,866146,866260,866269,866433,866461,866491,866544,866553,866662,866671,867009,867037,867170,867207,867216,867513,867543,867636,867645,867695,867805,867919,867928,868077,868105,868135,868188,868197,868302,868332,868385,868394,868538,868652,868661,868665,869358,869367,869376,869385,869394,869732,869741,869750,869759,869763,870702,870717,870732,870747,870762,870777,870792,870807,870822,870837,870852,870867,870882,870897,870912,870927,871026,871046,871145,871165,871347,871419,871508,871528,871576,871926,872110,872218,874185,874200,874215,874230,874245,874260,874275,874290,874305,874320,874335,874350,874365,874380,874395,874410,874425,874440,874455,874470,874485,874500,874515,874530,874545,874560,874575,874590,874605,874620,874635,874650,874665,874680,874695,874710,874809,874829,874928,874948,875457,875485,875557,875646,875666,875675,875771,875827,877089,877127,877141,877161,877256,877278,877354,877369,877511,877579,877614,877655,877682,877919,877942,878015,878019,878023,878057,878066,878131,878202,878271,878285,878353,878400,878487,878590,878594,879077,879149,879238,879258,879273,879288,879303,879318,879333,879348,879363,879372,879471,879491,879609,879621,879895,880069,880088,880113,880138,880170,880295,880304,880617,880643,880757,880792,880822,880914,880948,881081,881090,881099,881157,881266,881373,881611,881821,881876,881894,882000,882068,882086,882130,882174,882324,882520,882558,882832,882841,882853,882865,882877,883053,883210,883397,883474,883836,884054,884075,884085,884112,884134,884348,884462,884511,884561,884587,884673,884694,885856,885887,886374,886413,886439,886460,886494,886525,886546,886569,886595,886604,886636,886896,886917,887206,887247,887265,887317,887386,887597,887730,887940,888274,888301,888462,888489,888650,888921,888973,889084,889105,892518,892544,892619,892642,892668,892743,892774,892849,892875,892917,892992,893067,893098,893124,893150,893225,893300,893326,893401,893499,893574,893583,893615,893647,893707,893719,893821,893910,894021,894025,894152,894161,894271,894343,894407,894428,894480,894516,894552,894686,894783,894844,894897,895375,895532,895801,895858,895874,895883,895946,896008,896040,896073,896096,896355,896383,896392,896513,896585,896674,896694,896703,896861,896933,897022,897042,897135,897161,897235,897272,897281,897333,897491,897652,897724,897813,897833,897842,897846,897850,897884,897918,898037,898109,898198,898218,898227,898348,898420,898509,898529,898538,898739,898811,898900,898920,898929,898963,898997,899031,899065,899099,899200,899260,899385,899457,899546,899566,899575,899694,899766,899855,899875,899884,899967,900039,900128,900148,900236,900286,900372,900455,900527,900616,900636,900813,900834,900870,900965,901099,901142,901550,901566,901592,901601,901610,901619,901628,901641,901660,901683,901766,901838,901927,901947,902069,902110,902140,902239,902311,902400,902420,902449,902564,902636,902725,902745,903100,903200,903261,903350,903416,903452,903497,903532,903679,903751,903840,903860,904048,904077,904140,904181,904255,904311,904377,904388,904421,904478,904536,904547,904680,904689,904698,904758,904763,904894,904966,905055,905075,905119,905288,905371,905413,905422,905431,905483,905487,905539,905543,905818,905846,905918,906007,906027,906381,906492,906605,906616,906871,906882,907007,907132,907169,907241,907498,907593,907678,908244,908308,908422,908475,908522,908845,908943,908952,908982,909559,909721,909748,909775,909819,909846,909873,909900,909927,909954,909981,910008,910035,910062,910256,910355,910427,910516,910536,910605,910838,910910,910999,911019,911227,911236,911245,911364,911436,911525,911545,911554,911755,911827,911916,911936,912059,912130,912134,912157,912166,912175,912290,912362,912451,912471,912577,912696,912768,912857,912877,912886,913000,913902,913979,914023,914080,914153,914302,914504,914576,914665,914685,914805,914841,914984,914993,915045,915139,915182,915402,915474,915563,915583,915923,916451,916918,917103,917125,917136,917170,917321,917371,917437,917529,917629,917953,918017,918087,918386,918510,918526,918811,918827,919077,919093,919343,919359,919577,919593,919813,919918,920039,920172,920305,920516,920543,920737,920764,920814,920878,920937,920970,921088,921126,921142,921187,921230,921296,921459,922193,922282,922302,922576,922654,922870,922886,923077,923366,923490,923560,923585,923611,923631,923683,923746,923870,924036,924193,924462,924601,924621,924773,924793,924915,925011,926176,926187,926296,926810,927001,927065,927119,927189,927555,927583,927655,927744,927764,928255,928281,928314,928325,928393,928496,928554,928683,928724,929300,929328,929555,929578,929601,929623,929707,929813,929927,930125,930189,930356,930377,930388,930523,931555,931674,931915,932003,932033,932191,932202,932249,932260,932341,932526,932698,933067,933190,933275,933295,933403,933455,933503,933526,933578,933634,933672,933791,933863,933952,933972,933981,934130,934307,934426,934498,934587,934607,934616,934735,934807,934896,934916,934925,935144,935172,935244,935333,935353,935763,935784,935814,935975,935996,936171,936182,936258,936291,936330,936379,936437,936536,936608,936697,936717,936786,936935,936963,936972,937001,937100,937172,937261,937281,937382,937494,937526,937576,937609,937648,938419,938447,938519,938608,938628,941129,941294,941325,941429,941444,941503,941518,941552,941608,941648,941689,941717,941747,941792,942423,942630,942651,942678,942708,942747,942832,942877,942898,942992,943048,943067,943116,943452,943478,943510,943537,943644,943665,943692,943724,943754,943799,944113,944402,944429,944478,944517,944590,945712,945837,945861,946373,946492,946564,946653,946673,946682,946854,946926,947015,947035,947044,947152,947224,947313,947333,947410,947429,947526,947549,947648,947720,947809,947829,947929,948192,948220,948292,948381,948401,948896,948991,949136,949218,949496,949519,949605,949735,949744,949920,949929,950179,950251,950340,950360,951265,951279,951299,951345,951371,951472,951541,951560,951569,951583,951609,951642,951672,951750,951837,951927,951995,952114,952186,952275,952295,952304,952435,952507,952596,952616,952625,952635,952774,952940,953012,953101,953121,953350,953577,953611,953630,953639,953643,953647,953706,953740,953744,953754,954022,954112,954130,954153,954240,954304,954334,954357,954429,954459,954525,954605,954704,954776,954865,954885,955017,955156,955192,955291,955363,955452,955472,955676,955718,955767,955809,955858,956027,956110,956182,956271,956291,956339,956472,956544,956633,956653,956820,957058,957127,957150,957214,957218,957337,957346,957435,957476,957655,957727,957816,957836,957934,958141,958155,958193,958232,958248,958295,958306,958330,958360,958488,958547,958733,958805,958974,959001,959025,959058,959189,959261,959350,959370,959723,959744,960182,960218,960398,960470,960559,960579,960742,960795,960843,960852,961188,961198,961228,961359,961431,961520,961540,961717,961804,961872,961913,962012,962084,962173,962193,962319,962395,962549,962621,962710,962730,962884,962905,962948,962971,963086,963158,963247,963267,963333,963432,963504,963593,963613,963670,963864,963892,963964,964053,964073,964303,964324,964361,964389,964440,964479,964578,964650,964739,964759,964828,964927,964999,965088,965108,965137,965560,965588,965660,965749,965769,966596,966611,966636,966719,966739,966826,966846,966914,967118,967132,967141,967283,967355,967444,967464,967473,967507,967636,967708,967797,967817,967826,967960,967969,968130,968139,968296,968368,968457,968477,968486,968520,968554,968653,968725,968814,968834,968878,968925,968978,968996,969048,969052,969183,969255,969344,969364,969839,969928,969952,970061,970085,970152,970156,970261,970363,970503,970565,970610,970619,970642,970902,971027,971055,971581,971617,971735,971789,971838,971914,972044,972072,972144,972233,972253,972441,972467,972507,972544,972553,972705,972735,972748,972930,973002,973091,973111,973347,973415,973551,973623,973712,973732,973922,974071,974188,974365,974437,974526,974546,974555,974735,974761,974775,974894,974966,975055,975075,975084,975216,975225,975229,975405,975477,975566,975586,975828,976083,976109,976209,976244,976253,976411,976617,976732,976804,976893,976913,977000,977075,977174,977246,977335,977355,977431,977546,977618,977707,977727,977929,977997,978105,978177,978266,978286,978439,978580,978689,978716,978834,979025,979053,979064,979269,979284,979299,979314,979505,979577,979666,979686,980046,980140,980192,980301,980335,980763,980835,980924,980944,980961,981216,981262,981701,981761,981821,981881,981941,982061,982152,982258,982305,982391,984643,984662,984678,984714,984745,984905,984955,986557,986585,986600,986615,986630,986645,986660,986675,986690,986705,986720,986735,986750,986765,986780,986795,986810,986825,986840,986855,986870,986885,986900,986915,986930,986944,986959,986968,987067,987087,987165,987243,987321,987399,987477,987645,987777,988039,988067,988139,988228,988248,988834,988892,988993,989032,989051,990120,991203,991237,991253,991280,991446,991555,991571,991621,991661,991709,991723,991741,991891,992019,992092,992199,992290,992389,992515,992640,992663,992741,992833,993009,993084,993336,993413,993469,993562,993579,993629,993679,993729,993779,993829,993879,993929,994036,994074,994112,994174,994507,994590,994866,995007,995348,995395,995464,995611,996367,996577,996787,996922,997194,997423,997600,997743,997775,999714,999812,999922,999938,999970,999990,1000145,1000254,1000293,1000402,1000441,1000606,1000766,1000835,1002365,1002440,1002701,1002952,1002997,1003168,1003330,1003458,1003474,1003891,1004192,1004470,1004627,1004910,1005039,1005316,1005491,1006021,1006299,1006547,1006678,1006793,1007028,1007084,1007295,1007483,1007642,1007798,1007977,1007986,1008222,1008340,1008422,1008729,1008811,1008939,1009019,1009105,1009179,1009253,1009318,1009341,1009364,1009387,1009414,1009527,1009589,1009666,1009734,1009937,1009960,1009988,1010159,1010256,1010547,1010575,1010676,1010798,1011341,1011713,1011741,1011813,1011902,1011922,1012383,1012426,1012549,1012576,1012617,1012658,1012667,1012691,1012847,1012982,1013069,1013078,1013111,1013180,1013209,1013261,1013310,1013808,1013836,1013908,1013997,1014017,1016518,1016523,1016578,1016638,1016682,1016726,1016768,1016810,1017048,1017147,1017167,1017266,1017286,1017385,1017405,1017504,1017524,1018035,1018063,1018135,1018224,1018244,1018719,1018784,1018877,1018969,1019108,1019161,1019184,1019207,1019270,1019333,1019367,1019437,1019452,1019461,1019470,1019479,1019488,1019610,1019624,1019866,1019875,1019884,1019893,1020111,1020139,1020211,1020300,1020320,1020329,1020455,1020607,1020623,1020815,1020824,1020833,1020842,1021075,1021084,1021093,1021212,1021221,1021225,1021416,1021488,1021577,1021597,1021714,1022064,1022078,1022116,1022149,1022198,1022301,1022331,1022344,1022376,1022410,1022526,1022537,1022577,1022609,1022659,1023092,1023120,1023192,1023281,1023301,1023943,1024516,1024551,1024586,1024622,1024637,1024860,1024950,1025220,1025292,1025381,1025401,1025597,1025606,1025899,1026089,1026098,1026107,1026323,1026485,1027035,1027063,1027135,1027224,1027244,1028653,1028711,1028753,1028864,1028908,1028929,1029037,1029070,1029138,1029184,1029207,1029246,1029303,1029335,1029367,1029418,1029454,1029463,1029576,1029585,1029732,1029804,1029893,1029913,1030000,1030190,1030360,1030471,1030480,1030591,1030600,1030699,1030771,1030860,1030880,1030949,1031001,1031041,1031228,1031360,1031482,1031554,1031643,1031663,1031821,1031871,1031889,1031913,1032050,1032149,1032362,1032556,1032855,1032927,1033016,1033036,1033146,1033298,1033633,1033705,1033794,1033814,1034478,1034516,1034556,1034575,1034610,1034614,1036336,1036364,1036379,1036394,1036409,1036424,1036438,1036453,1036468,1036483,1036498,1036513,1036528,1036543,1036558,1036573,1036587,1036601,1036615,1036629,1036643,1036657,1036671,1036686,1036701,1036716,1036731,1036745,1036759,1036773,1036787,1036801,1036816,1036830,1036844,1036943,1036963,1037082,1037091,1037329,1037428,1037448,1037547,1037567,1037666,1037686,1037785,1037805,1037809,1037813,1037817,1037821,1037978,1038072,1038113,1038122,1038131,1038140,1038677,1038705,1038714,1038723,1038732,1040128,1040142,1040183,1040415,1040419,1040531,1040650,1040722,1040811,1040831,1040840,1041011,1041039,1041197,1041233,1041253,1041277,1041286,1041399,1041460,1041562,1041566,1042024,1042033,1042042,1042051,1042509,1042518,1042527,1042536,1042609,1042666,1042687,1042858,1042911,1042920,1043274,1043364,1043495,1043612,1043665,1043709,1043718,1043727,1043736,1043745,1043754,1044379,1044407,1044416,1044425,1044434,1044443,1044452,1044461,1044470,1044590,1044685,1044791,1044897,1045003,1045073,1045526,1045535,1045544,1045553,1045741,1045750,1045759,1045768,1045986,1046014,1046273,1046339,1046362,1046385,1046408,1046431,1046461,1046492,1046515,1046538,1046568,1046599,1046622,1046645,1046698,1046707,1046843,1046870,1046879,1047495,1047504,1047513,1047522,1047531,1047560,1047589,1047618,1047654,1047690,1047719,1047947,1047975,1048168,1048177,1048361,1048370,1048379,1048388,1048572,1048581,1048590,1048599,1048842,1048870,1049275,1049279,1049310,1049319,1049373,1049428,1049644,1049653,1049662,1049704,1049745,1049749,1049991,1050000,1050009,1050018,1050391,1050419,1050491,1050580,1050600,1051270,1051284,1051346,1051439,1051448,1051640,1051668,1051677,1051720,1051879,1051929,1051938,1052122,1052131,1052140,1052149,1052323,1052366,1052413,1052422,1052606,1052615,1052624,1052633,1052809,1052898,1052907,1053096,1053105,1053114,1053123,1053358,1053367,1053376,1053385,1053406,1053496,1053653,1053725,1053814,1053834,1053902,1053911,1054188,1054216,1054501,1054590,1054701,1054710,1055184,1055193,1055202,1055211,1055280,1055341,1055354,1055733,1055761,1056514,1056603,1056693,1056772,1056851,1056941,1057094,1057206,1057359,1057438,1057587,1057765,1057774,1058276,1058285,1058294,1058303,1058505,1058563,1058572,1058756,1058765,1058774,1058783,1059005,1059033,1059224,1059270,1059279,1059288,1059586,1059595,1059604,1059613,1059874,1059902,1060039,1060204,1060213,1060254,1060552,1060561,1060570,1060579,1060771,1060864,1060957,1060966,1061261,1061270,1061279,1061288,1061340,1061363,1061483,1061516,1061603,1061612,1061647,1061781,1061915,1061987,1062076,1062096,1062159,1062168,1062290,1062362,1062451,1062471,1062616,1062637,1062714,1062813,1062885,1062974,1062994,1063162,1063266,1063550,1063578,1065422,1065484,1066355,1066366,1066454,1066716,1066812,1066874,1067077,1067105,1067177,1067266,1067286,1067316,1067369,1067378,1067532,1067562,1067615,1067624,1067839,1067869,1067922,1067931,1068054,1068667,1068695,1068725,1068778,1068787,1068824,1068854,1068907,1068916,1069008,1069038,1069091,1069100,1069192,1069222,1069275,1069284,1069429,1069547,1069615,1069639,1069695,1069738,1069847,1069856,1069865,1069874,1069883,1069892,1069901,1069910,1070024,1070033,1070132,1070378,1070387,1070621,1070649,1070693,1070723,1070776,1070785,1071049,1071079,1071132,1071141,1071369,1071399,1071452,1071461,1071674,1071704,1071757,1071766,1071925,1071955,1072008,1072017,1072192,1072222,1072275,1072284,1072354,1073098,1073126,1073140,1073184,1073212,1073301,1073335,1073375,1073455,1073489,1073519,1073572,1073581,1073848,1073931,1074016,1074035,1074059,1074089,1074142,1074151,1074232,1074262,1074315,1074324,1075035,1075065,1075118,1075127,1075442,1075472,1075525,1075534,1075818,1075848,1075901,1075910,1075959,1075989,1076042,1076051,1076320,1076333,1076394,1076448,1076601,1076631,1076684,1076693,1077208,1077224,1077254,1077307,1077316,1077355,1077382,1077405,1077435,1077488,1077497,1077540,1077570,1077623,1077632,1077662,1077671,1077680,1077730,1077817,1077844,1077872,1078153,1078225,1078314,1078334,1078718,1078727,1078757,1078810,1078819,1078882,1078912,1078965,1078974,1079053,1079083,1079136,1079145,1079221,1079251,1079304,1079313,1079413,1079443,1079496,1079505,1079628,1079658,1079711,1079720,1079795,1080031,1080103,1080192,1080212,1080241,1080309,1080636,1080666,1080719,1080728,1080880,1080910,1080963,1080972,1081206,1081236,1081289,1081298,1081372,1081402,1081455,1081464,1081520,1081943,1081971,1082001,1082054,1082063,1082628,1082658,1082711,1082720,1083052,1083082,1083135,1083144,1083437,1083467,1083520,1083529,1083622,1083652,1083705,1083714,1084252,1084282,1084335,1084344,1084521,1084551,1084604,1084613,1084931,1084961,1085014,1085023,1085131,1085161,1085214,1085223,1085640,1085747,1085777,1085830,1085839,1086017,1086047,1086100,1086109,1086385,1086415,1086468,1086477,1086518,1086548,1086601,1086610,1086651,1087430,1087458,1087530,1087619,1087639,1087669,1087722,1087731,1087784,1087814,1087867,1087876,1088015,1088025,1088055,1088108,1088117,1088210,1088312,1088342,1088395,1088404,1088847,1088877,1088930,1088939,1089027,1089057,1089110,1089119,1089186,1089216,1089269,1089278,1089732,1089762,1089815,1089824,1089937,1089946,1090472,1090502,1090555,1090564,1090712,1090721,1090973,1091003,1091056,1091065,1091220,1091229,1091652,1091658,1091688,1091741,1091750,1091979,1092009,1092062,1092071,1092220,1092250,1092303,1092312,1092454,1092484,1092537,1092546,1092645,1092654,1092810,1092840,1092893,1092902,1093093,1093123,1093176,1093185,1093470,1093500,1093553,1093562,1093641,1093671,1093724,1093733,1093891,1093921,1093974,1093983,1094133,1094163,1094216,1094225,1094375,1094405,1094458,1094467,1094620,1094650,1094703,1094712,1094810,1094840,1094893,1094902,1094990,1095020,1095073,1095082,1095169,1095196,1095226,1095279,1095288,1095399,1095429,1095482,1095491,1095637,1095667,1095720,1095729,1095817,1095847,1095900,1095909,1096009,1096440,1096470,1096523,1096532,1096721,1096730,1096968,1097067,1097087,1097186,1097206,1097305,1097325,1097424,1097444,1098054,1098082,1098112,1098165,1098174,1098370,1098526,1098556,1098609,1098618,1098766,1098884,1098914,1098967,1098976,1099049,1099098,1099192,1099286,1099318,1099327,1099336,1099345,1100008,1100067,1100087,1100107,1100131,1100190,1100227,1100257,1100266,1100391,1100428,1100458,1100467,1100630,1100658,1100695,1100725,1100734,1100860,1100897,1100927,1100936,1101293,1101313,1101333,1101357,1101416,1101517,1101653,1101683,1101749,1101786,1101816,1101825,1102122,1102159,1102189,1102198,1102544,1102675,1102684,1103933,1103970,1104000,1104009,1104355,1104551,1104757,1104766,1105031,1105237,1105313,1105398,1105450,1105487,1105517,1105526,1105696,1105766,1105800,1105849,1105873,1106054,1106070,1106126,1106194,1106336,1106467,1106491,1106654,1106705,1106805,1106809,1106832,1106855,1106878,1106936,1107140,1107236,1107360,1107382,1107408,1107453,1107542,1107620,1107734,1107743,1107851,1107951,1108094,1108122,1108131,1108490,1108540,1108571,1108602,1108629,1108656,1108683,1108714,1108745,1108778,1108811,1108840,1108867,1108894,1108927,1108958,1109251,1109279,1109309,1109362,1109371,1109626,1109867,1109905,1109943,1109952,1110185,1110235,1110272,1110302,1110311,1110497,1110534,1110564,1110573,1110759,1110780,1110817,1110847,1110856,1110909,1111068,1111227,1111248,1111277,1111464,1111548,1111585,1111615,1111624,1111838,1111875,1111905,1111914,1112168,1112207,1112216,1112452,1112488,1112538,1112575,1112605,1112614,1112683,1112858,1112942,1113104,1113305,1113314,1113465,1113501,1113551,1113596,1113681,1113966,1113981,1114109,1114342,1114443,1114548,1114615,1114725,1115148,1115176,1115241,1115363,1115657,1115704,1115734,1115790,1115799,1115929,1115959,1116015,1116024,1116097,1116144,1116149,1116471,1116488,1116553,1116583,1116636,1116645,1116785,1116815,1116868,1116877,1117096,1117244,1117283,1117475,1117509,1117543,1117579,1117588,1117771,1117929,1118442,1118470,1118542,1118631,1118651,1118727,1118812,1118842,1118895,1118904,1119513,1119714,1119782,1119796,1119932,1120009,1120055,1120134,1120164,1120217,1120226,1120320,1120363,1120416,1120436,1120466,1120519,1120528,1120577,1120607,1120660,1120669,1120872,1120940,1120970,1121023,1121032,1121220,1121250,1121303,1121312,1121491,1121521,1121574,1121583,1121922,1121952,1122005,1122014,1122660,1122690,1122743,1122752,1123192,1123212,1123236,1123266,1123319,1123328,1123528,1123825,1123853,1123883,1123936,1123945,1124050,1124080,1124133,1124142,1124247,1124277,1124330,1124339,1124444,1124476,1124560,1124617,1124636,1124654,1124669,1124783,1124792,1124966,1124975,1125481,1125509,1125543,1125587,1125635,1125760,1125774,1125803,1125814,1125844,1125897,1125906,1126279,1126302,1126332,1126385,1126394,1126420,1126450,1126503,1126512,1126560,1126590,1126643,1126652,1126885,1126915,1126968,1126977,1127085,1127115,1127168,1127177,1127307,1127316,1127460,1127559,1127579,1127678,1127698,1128150,1128178,1128187,1128196,1128205,1128424,1128476,1128520,1128564,1128608,1128702,1128722,1128742,1128841,1129084,1129192,1129244,1129272,1129300,1129406,1129512,1129549,1129579,1129588,1129632,1129647,1129730,1129767,1129797,1129806,1129893,1129930,1129939,1130024,1130054,1130224,1130332,1130391,1130456,1130537,1130565,1130656,1130739,1130776,1130785,1130866,1130896,1131010,1131019,1131255,1131283,1131355,1131444,1131464,1131488,1131497,1131721,1131753,1132029,1132150,1132206,1132335,1132453,1132535,1132613,1132690,1132977,1132990,1133594,1133645,1133795,1134050,1134201,1134239,1134374,1134795,1134800,1134956,1135410,1135708,1136167,1136176,1136185,1136433,1136717,1136907,1136955,1137007,1137200,1137228,1137237,1137246,1137329,1137392,1137415,1137712,1137818,1137859,1137876,1137899,1137926,1138322,1138399,1138429,1138482,1138491,1138545,1138575,1138628,1138637,1138691,1138721,1138774,1138783,1138813,1138843,1138896,1138905,1138959,1138989,1139042,1139051,1139105,1139135,1139188,1139197,1139227,1139257,1139310,1139319,1139349,1139379,1139432,1139441,1139471,1139501,1139554,1139563,1139617,1139647,1139700,1139709,1139739,1139769,1139822,1139831,1139861,1139891,1139944,1139953,1139983,1140013,1140066,1140075,1140129,1140159,1140212,1140221,1140275,1140295,1140315,1140567,1140639,1140728,1140748,1140783,1140813,1140866,1140875,1141018,1141051,1141081,1141134,1141143,1141328,1141361,1141391,1141444,1141453,1141692,1141722,1141775,1141784,1141930,1141960,1142013,1142022,1142144,1142160,1142190,1142243,1142252,1142372,1142406,1142696,1142724,1142796,1142885,1142905,1142935,1142988,1142997,1143093,1143130,1143160,1143213,1143222,1143285,1143384,1143407,1143437,1143490,1143499,1143686,1143716,1143769,1143778,1144070,1144100,1144153,1144162,1144212,1144779,1144807,1145010,1145040,1145093,1145102,1145333,1145480,1145618,1145669,1145807,1145837,1145890,1145899,1146103,1146131,1146155,1146206,1146387,1146486,1146506,1146556,1146647,1146864,1146873,1146882,1146996,1147005,1147122,1147131,1147398,1147436,1147474,1147500,1147849,1147879,1147932,1147941,1148110,1148192,1148229,1148238,1148297,1148327,1148357,1148410,1148419,1148491,1148500,1148860,1148888,1148943,1149051,1149073,1149103,1149156,1149165,1149272,1149302,1149355,1149364,1149471,1149501,1149554,1149563,1149655,1149685,1149738,1149747,1149867,1149897,1149950,1149959,1150066,1150096,1150149,1150158,1150193,1150230,1150239,1150726,1150756,1150870,1150879,1151073,1151145,1151234,1151254,1151284,1151337,1151346,1151469,1151499,1151552,1151561,1152048,1152076,1152104,1152134,1152187,1152196,1152310,1152332,1152419,1152587,1152599,1152667,1152809,1152839,1152892,1152901,1153010,1153040,1153093,1153102,1153159,1153189,1153242,1153251,1153596,1153975,1154003,1154075,1154164,1154184,1154224,1154261,1154270,1154293,1154323,1154353,1154406,1154415,1154519,1154549,1154602,1154611,1154729,1154859,1154889,1154942,1154951,1155041,1155071,1155124,1155133,1155298,1155328,1155381,1155390,1155562,1155592,1155645,1155654,1155723,1157179,1157207,1157237,1157290,1157299,1157404,1157434,1157487,1157496,1157601,1157631,1157684,1157693,1157828,1157858,1157911,1157920,1158025,1158055,1158108,1158117,1158222,1158252,1158305,1158314,1158387,1158417,1158470,1158479,1158554,1158569,1158578,1158587,1158596,1158605,1158614,1158623,1158632,1158641,1158650,1158659,1158668,1158677,1158686,1158695,1158704,1158713,1158722,1158731,1158899,1158908,1159022,1159031,1159727,1161328,1161353,1161534,1161990,1162010,1162030,1162389,1162414,1163050,1163089,1163115,1163146,1163172,1163203,1163264,1163273,1163660,1163699,1163732,1163765,1163867,1163977,1164008,1164107,1164160,1164169,1164178,1165351,1165379,1168802,1168811,1168975,1168990,1169005,1169075,1169084,1169203,1169216,1169279,1169296,1169386,1169423,1169432,1169777,1169807,1169844,1169853,1170251,1170255,1170285,1170304,1170321,1170339,1170357,1170374,1170538,1170858,1171029,1171308,1171497,1171671,1171713,1172920,1173036,1173489,1173531,1173819,1173862,1173871,1174039,1174052,1174061,1174260,1174290,1174343,1174352,1174388,1174585,1174699,1174756,1174818,1174933,1174971,1174982,1175000,1175030,1175083,1175092,1175287,1175621,1175693,1175782,1175802,1175818,1175883,1175968,1176050,1176111,1176133,1176380,1176421,1176453,1176546,1176804,1176826,1176850,1177341,1177373,1177576,1177699,1177969,1178044,1178133,1178361,1178395,1178463,1178529,1178691,1180571,1180599,1180656,1180679,1180749,1180793,1180871,1180945,1181156,1181283,1181414,1181778,1181802,1182728,1182757,1182852,1182990,1183122,1183179,1183335,1183359,1184476,1187858,1187887,1187958,1187991,1188048,1188057,1188245,1188258,1188267,1188446,1188473,1188500,1188515,1188741,1188775,1188809,1188858,1188867,1188944,1188981,1188990,1189196,1189226,1189263,1189272,1189371,1189393,1189471,1189501,1189538,1189547,1189939,1189969,1190006,1190015,1190232,1190262,1190271,1190386,1190395,1190824,1190852,1190880,1190921,1190930,1191055,1191102,1191162,1191195,1191204,1191303,1191312,1191841,1191881,1191918,1191927,1192332,1192362,1192389,1192480,1192509,1192679,1192716,1192746,1192783,1192813,1192828,1193179,1193274,1193584,1193763,1193897,1194198,1194305,1194859,1194898,1194931,1195126,1195146,1195166,1195373,1195448,1195471,1195512,1195719,1195888,1196331,1196368,1196394,1196812,1196876,1196894,1196993,1197054,1197082,1197138,1197646,1197655,1197768,1197796,1197826,1197879,1197888,1198038,1198597,1198625,1200565,1200619,1200739,1200792,1200861,1200915,1200987,1202541,1202571,1202627,1202645,1202663,1202693,1202749,1202758,1203088,1203116,1203125,1203194,1205164,1205168,1205172,1205176,1205180,1205184,1205188,1205192,1205196,1205200,1205204,1205208,1205212,1205216,1205220,1205241,1205667,1206095,1206239,1206270,1206792,1207078,1207204,1207224,1207244,1207264,1207284,1207304,1207324,1207393,1207476,1207496,1207563,1207722,1207767,1207779,1208052,1208134,1208146,1208213,1208225,1208298,1208316,1208357,1208444,1208453,1208485,1208571,1208580,1208666,1208675,1208843,1208852,1208866,1209501,1209510,1209519,1209528,1209537,1209566,1209595,1209624,1209653,1209689,1209718,1209754,1209790,1209819,1209855,1209884,1210004,1210013,1210444,1210472,1210481,1210490,1210499,1210508,1210517,1210562,1210637,1210681,1210731,1210781,1210811,1210957,1211045,1211075,1211150,1211449,1212079,1212111,1212167,1212294,1212321,1212348,1212375,1212464,1212491,1212557,1212577,1212610,1212637,1212872,1212881,1213414,1213442,1213472,1213525,1213534,1213569,1213599,1213652,1213661,1213696,1213726,1213779,1213788,1213823,1213853,1213906,1213915,1213950,1213980,1214033,1214042,1214118,1214132,1214141,1214150,1214159,1214258,1214278,1214377,1214397,1214511,1214520,1214927,1214955,1215084,1215164,1215215,1215224,1215673,1215911,1215955,1216008,1216061,1216114,1216130,1216394,1216398,1216435,1216465,1216474,1216546,1216583,1216613,1216622,1216694,1216737,1216774,1216804,1216813,1216861,1216898,1216928,1216937,1216985,1217022,1217052,1217061,1217125,1217162,1217192,1217201,1217265,1217302,1217332,1217341,1217389,1217423,1217667,1217704,1217734,1217743,1217835,1217872,1217902,1217911,1218003,1218040,1218070,1218079,1218166,1218203,1218233,1218242,1218308,1218340,1218454,1218463,1218664,1218692,1218888,1219026,1219035,1219134,1219149,1219282,1219291,1219746,1219774,1220817,1220854,1220863,1220949,1220979,1221016,1221025,1221714,1221744,1221762,1221780,1221795,1221804,1222018,1222053,1222083,1222136,1222145,1222200,1222230,1222283,1222292,1222485,1222515,1222568,1222577,1222772,1223198,1223226,1223276,1224216,1224253,1224262,1224402,1224432,1224450,1224468,1224487,1224491,1224509,1224544,1224553,1225010,1225038,1226038,1226153,1226162,1226523,1227094,1227177,1227186,1227425,1227457,1227951,1227969,1227978,1228353,1228446,1228633,1229450,1229951,1229960,1230682,1230775,1230879,1230930,1231038,1232513,1232543,1232616,1232899,1232943,1233216,1233307,1233499,1233521,1233540,1233595,1233696,1234226,1234249,1234847,1234875,1234884,1235567,1235595,1235849,1236012,1236220,1239631,1239668,1239677,1239891,1239921,1239990,1240027,1240036,1240273,1240303,1240359,1240377,1240395,1240412,1240421,1240554,1240582,1240612,1240665,1240674,1240827,1240857,1240910,1240919,1241080,1241697,1241725,1241797,1241886,1241906,1242127,1242157,1242210,1242219,1242313,1242343,1242396,1242405,1242626,1244252,1244362,1244452,1244514,1244576,1244585,1244780,1244808,1244832,1244862,1244915,1244924,1244976,1245006,1245059,1245068,1245116,1245215,1245235,1245349,1245358,1245482,1245491,1246617,1246645,1246690,1247633,1247845,1247873,1251080,1251089,1251316,1251331,1251368,1251377,1251593,1251623,1251692,1251888,1251928,1251937,1252239,1252319,1252528,1252556,1252573,1252582,1252719,1252747,1252777,1252830,1252839,1253286,1253316,1253369,1253378,1253576,1254173,1254201,1255744,1255870,1255899,1255936,1255945,1256042,1256072,1256109,1256118,1256187,1256217,1256690,1256713,1256736,1256763,1256772,1257314,1257342,1258732,1258755,1258763,1258772,1258892,1259032,1259041,1259418,1259446,1259455,1259584,1259745,1259775,1259851,1260117,1260166,1260177,1260602,1260630,1260702,1260791,1260811,1260985,1261011,1261108,1261145,1261154,1261268,1261296,1261326,1261363,1261372,1261640,1261670,1261702,1261732,1262457,1262583,1262602,1262611,1262943,1263042,1263062,1263161,1263181,1263280,1263300,1263399,1263419,1263518,1263538,1263637,1263657,1265094,1265122,1265245,1265307,1265337,1265390,1265399,1265603,1265633,1265686,1265695,1265899,1265929,1265982,1265991,1266039,1266069,1266122,1266131,1266195,1266225,1266278,1266287,1266376,1266406,1266459,1266468,1266518,1266548,1266601,1266610,1266814,1266844,1266874,1266904,1266957,1266966,1267064,1267094,1267147,1267156,1267191,1267200,1267209,1267218,1267227,1267236,1267245,1267254,1267263,1267272,1267281,1267290,1267299,1267308,1267422,1267431,1267904,1267913,1267922,1267931,1267940,1268288,1268415,1268434,1268634,1268643,1268652,1268661,1268670,1268709,1268737,1268756,1268791,1268970,1268979,1269105,1269143,1269185,1269203,1269605,1269677,1269766,1269786,1269795,1269804,1269813,1269822,1269971,1270052,1270346,1270450,1270459,1270463,1270541,1270673,1270735,1270815,1270905,1270985,1271048,1271052,1271092,1271105,1271225,1271260,1271372,1271590,1271792,1271923,1272076,1272174,1272207,1272237,1272253,1272489,1272498,1272515,1272565,1272569,1272598,1272623,1272627,1272675,1272841,1272850,1272949,1272969,1273093,1273165,1273254,1273274,1273283,1273462,1273471,1273480,1273489,1273558,1273578,1273583,1275512,1275584,1275673,1275693,1275702,1275841,1275869,1276035,1276044,1276301,1276329,1276389,1276408,1276417,1276447,1276610,1276655,1276685,1276715,1276881,1276890,1276989,1277009,1277133,1277205,1277294,1277314,1277323,1277428,1277432,1277494,1277683,1277711,1277720,1277801,1277843,1277906,1277963,1278129,1278138,1278237,1278257,1278380,1278452,1278541,1278561,1278570,1278749,1278777,1278786,1278924,1279085,1279099,1279198,1279218,1279439,1279448,1279457,1279466,1280030,1280058,1280077,1280170,1280200,1280237,1280334,1280364,1280401,1280424,1280474,1280504,1280534,1280587,1280596,1280635,1280644,1281684,1281784,1281937,1282103,1282112,1282211,1282231,1282355,1282427,1282516,1282536,1282545,1282777,1282849,1282938,1282958,1282967,1282976,1282985,1283509,1283537,1283609,1283698,1283718,1283727,1284017,1284232,1284321,1284389,1284457,1284527,1285234,1285290,1285346,1285391,1285436,1285485,1285534,1285591,1285640,1285674,1285835,1285849,1285948,1285968,1286429,1286438,1286447,1286456,1286465,1286494,1286523,1286610,1286619,1286653,1286769,1286778,1286900,1286909,1286935,1286961,1286991,1287017,1287244,1287253,1287287,1287325,1287369,1287530,1287544,1287643,1287663,1287787,1287859,1287948,1287968,1287977,1288141,1288169,1288199,1288252,1288261,1288379,1288388,1288502,1288511,1288675,1288703,1288733,1288786,1288795,1288904,1288913,1289093,1289121,1289151,1289204,1289213,1289425,1289434,1289598,1289626,1289656,1289709,1289718,1289827,1289836,1290000,1290028,1290058,1290111,1290120,1290225,1290234,1290348,1290357,1290521,1290549,1290579,1290632,1290641,1290750,1290759,1290923,1290951,1290981,1291034,1291043,1291156,1291165,1291329,1291357,1291387,1291440,1291449,1291558,1291567,1291666,1291681,1291883,1291892,1291901,1292008,1292012,1292550,1292578,1292587,1292616,1292645,1294181,1294275,1294381,1294431,1294481,1294546,1294596,1294650,1294704,1294754,1294804,1294858,1294908,1294972,1295035,1295098,1295131,1295255]},"x_google_ignoreList":[0,1,2,3,4,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,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,903,904,905,912,913,914,915,916,917,918,919,920,921,922,923,924,926,927,928,930,931,932,933,934,935,936,937,940,941,942,943,945,946,950,951,952,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,988,989,990,998,999,1000,1001,1002,1003,1004,1005,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050],"debugId":"1c39c993-90da-4729-bd9b-caed4501dd5d"}