From 7c7511abb39ef1ca3287df469f47db170319593c Mon Sep 17 00:00:00 2001 From: war-in Date: Fri, 16 Jan 2026 12:40:17 +0100 Subject: [PATCH 01/56] chore: migrate RN patches --- patches/react-native/details.md | 55 +- ...native+0.81.4+014+fixScrollViewState.patch | 13 - ...0+fix-surface-stopped-before-started.patch | 15 - ...81.4+025+restore-interaction-manager.patch | 17 - ... => react-native+0.83.1+001+initial.patch} | 0 ...ct-native+0.83.1+002+fixMVCPAndroid.patch} | 41 +- ....83.1+003+disableTextInputRecycling.patch} | 0 ...native+0.83.1+004+iOSFontResolution.patch} | 25 +- ...+0.83.1+005+resetAutoresizingOnView.patch} | 0 ...+006+disableNonTranslucentStatusBar.patch} | 0 ...> react-native+0.83.1+007+TextInput.patch} | 0 ...008+iOSCoreAnimationBorderRendering.patch} | 0 ...-native+0.83.1+009+copyStateOnClone.patch} | 0 ...+0.83.1+010+textinput-clear-command.patch} | 48 +- ...0.83.1+011+Add-onPaste-to-TextInput.patch} | 71 +-- ...react-native+0.83.1+012+alert-style.patch} | 0 ...+0.83.1+013+fixNavigationAnimations.patch} | 30 +- ...native+0.83.1+014+fixScrollViewState.patch | 13 + ...+015+android-keyboard-avoiding-view.patch} | 0 ...1+016+fix-mask-persisting-recycling.patch} | 0 ....1+017+fix-text-selecting-on-change.patch} | 0 ...-dropping-mutations-in-transactions.patch} | 12 +- ...019+fix-crash-when-deleting-expense.patch} | 0 ...ct-native+0.83.1+020+publish-gradle.patch} | 0 ...display-contents-not-updating-nodes.patch} | 0 ...ut-prevent-focus-on-first-responder.patch} | 40 +- ...ix-modal-transparent-navigation-bar.patch} | 0 ...83.1+024+restore-interaction-manager.patch | 518 ++++++++++++++++++ 28 files changed, 692 insertions(+), 206 deletions(-) delete mode 100644 patches/react-native/react-native+0.81.4+014+fixScrollViewState.patch delete mode 100644 patches/react-native/react-native+0.81.4+020+fix-surface-stopped-before-started.patch delete mode 100644 patches/react-native/react-native+0.81.4+025+restore-interaction-manager.patch rename patches/react-native/{react-native+0.81.4+001+initial.patch => react-native+0.83.1+001+initial.patch} (100%) rename patches/react-native/{react-native+0.81.4+002+fixMVCPAndroid.patch => react-native+0.83.1+002+fixMVCPAndroid.patch} (87%) rename patches/react-native/{react-native+0.81.4+003+disableTextInputRecycling.patch => react-native+0.83.1+003+disableTextInputRecycling.patch} (100%) rename patches/react-native/{react-native+0.81.4+004+iOSFontResolution.patch => react-native+0.83.1+004+iOSFontResolution.patch} (72%) rename patches/react-native/{react-native+0.81.4+005+resetAutoresizingOnView.patch => react-native+0.83.1+005+resetAutoresizingOnView.patch} (100%) rename patches/react-native/{react-native+0.81.4+006+disableNonTranslucentStatusBar.patch => react-native+0.83.1+006+disableNonTranslucentStatusBar.patch} (100%) rename patches/react-native/{react-native+0.81.4+007+TextInput.patch => react-native+0.83.1+007+TextInput.patch} (100%) rename patches/react-native/{react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch => react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch} (100%) rename patches/react-native/{react-native+0.81.4+009+copyStateOnClone.patch => react-native+0.83.1+009+copyStateOnClone.patch} (100%) rename patches/react-native/{react-native+0.81.4+010+textinput-clear-command.patch => react-native+0.83.1+010+textinput-clear-command.patch} (91%) rename patches/react-native/{react-native+0.81.4+011+Add-onPaste-to-TextInput.patch => react-native+0.83.1+011+Add-onPaste-to-TextInput.patch} (93%) rename patches/react-native/{react-native+0.81.4+012+alert-style.patch => react-native+0.83.1+012+alert-style.patch} (100%) rename patches/react-native/{react-native+0.81.4+013+fixNavigationAnimations.patch => react-native+0.83.1+013+fixNavigationAnimations.patch} (67%) create mode 100644 patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch rename patches/react-native/{react-native+0.81.4+015+android-keyboard-avoiding-view.patch => react-native+0.83.1+015+android-keyboard-avoiding-view.patch} (100%) rename patches/react-native/{react-native+0.81.4+016+fix-mask-persisting-recycling.patch => react-native+0.83.1+016+fix-mask-persisting-recycling.patch} (100%) rename patches/react-native/{react-native+0.81.4+017+fix-text-selecting-on-change.patch => react-native+0.83.1+017+fix-text-selecting-on-change.patch} (100%) rename patches/react-native/{react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch => react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch} (90%) rename patches/react-native/{react-native+0.81.4+019+fix-crash-when-deleting-expense.patch => react-native+0.83.1+019+fix-crash-when-deleting-expense.patch} (100%) rename patches/react-native/{react-native+0.81.4+021+publish-gradle.patch => react-native+0.83.1+020+publish-gradle.patch} (100%) rename patches/react-native/{react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch => react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch} (100%) rename patches/react-native/{react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch => react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch} (91%) rename patches/react-native/{react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch => react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch} (100%) create mode 100644 patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch diff --git a/patches/react-native/details.md b/patches/react-native/details.md index 728052b2c2696..4c855d1ac8d0a 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -1,13 +1,13 @@ # `react-native` patches -### [react-native+0.81.4+001+initial.patch](react-native+0.81.4+001+initial.patch) +### [react-native+0.83.1+001+initial.patch](react-native+0.83.1+001+initial.patch) - Reason: Fixes keyboard flickering issue when opening/closing modals. When an input is blurred and a modal is opened, the `rootView` becomes the `firstResponder`, causing the system to retain an incorrect keyboard state. This leads to keyboard flickering when the modal is closed. The patch adds code to resign the `rootView`'s `firstResponder` status before presenting the modal to prevent this issue. - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/23994 -### [react-native+0.81.4+002+fixMVCPAndroid.patch](react-native+0.81.4+002+fixMVCPAndroid.patch) +### [react-native+0.83.1+002+fixMVCPAndroid.patch](react-native+0.83.1+002+fixMVCPAndroid.patch) - Reason: Fixes content jumping issues with `MaintainVisibleContentPosition` on Android, particularly in bidirectional pagination scenarios. The patch makes two key improvements: 1. Changes when the first visible view is calculated - now happens on scroll events instead of during Fabric's willMountItems lifecycle, which was causing incorrect updates @@ -16,63 +16,63 @@ - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/46315 (introduced), https://github.com/Expensify/App/pull/45289 (refactored) -### [react-native+0.81.4+003+disableTextInputRecycling.patch](react-native+0.81.4+003+disableTextInputRecycling.patch) +### [react-native+0.83.1+003+disableTextInputRecycling.patch](react-native+0.83.1+003+disableTextInputRecycling.patch) - Reason: Disables text input recycling to prevent issues with state of recycled component - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/13767 -### [react-native+0.81.4+004+iOSFontResolution.patch](react-native+0.81.4+004+iOSFontResolution.patch) +### [react-native+0.83.1+004+iOSFontResolution.patch](react-native+0.83.1+004+iOSFontResolution.patch) - Reason: Fixes font resolution issues on iOS by properly preserving font properties when loading fonts by name. When a font is loaded by its name, the patch now correctly extracts and uses its actual weight and style properties instead of ignoring them. - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/13767 -### [react-native+0.81.4+005+resetAutoresizingOnView.patch](react-native+0.81.4+005+resetAutoresizingOnView.patch) +### [react-native+0.83.1+005+resetAutoresizingOnView.patch](react-native+0.83.1+005+resetAutoresizingOnView.patch) - Reason: This is a workaround fix for an issue with `UIPageViewController` and Fabric's view recycling system. The problem occurs because pager-view was incorrectly using a Fabric-provided view as its content-view. This is problematic because `UIPageViewController` modifies its content view, and when Fabric later recycles this modified view, it can lead to unexpected layout issues. The patch addresses this by resetting the autoresizing mask on the view to prevent layout corruption when views are recycled. The root cause should be addressed in react-native-pager-view: https://github.com/callstack/react-native-pager-view/issues/819 - Upstream PR/issue: https://github.com/facebook/react-native/issues/42732 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/13767 -### [react-native+0.81.4+006+disableNonTranslucentStatusBar.patch](react-native+0.81.4+006+disableNonTranslucentStatusBar.patch) +### [react-native+0.83.1+006+disableNonTranslucentStatusBar.patch](react-native+0.83.1+006+disableNonTranslucentStatusBar.patch) - Reason: Disables non-translucent status bar to fix UI issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+007+TextInput.patch](react-native+0.81.4+007+TextInput.patch) +### [react-native+0.83.1+007+TextInput.patch](react-native+0.83.1+007+TextInput.patch) - Reason: Fixes TextInput component issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch](react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch) +### [react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch](react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch) - Reason: Fixes border rendering issues with Core Animation on iOS - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+009+copyStateOnClone.patch](react-native+0.81.4+009+copyStateOnClone.patch) +### [react-native+0.83.1+009+copyStateOnClone.patch](react-native+0.83.1+009+copyStateOnClone.patch) - Reason: Ensures state is properly copied when cloning components - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+010+textinput-clear-command.patch](react-native+0.81.4+010+textinput-clear-command.patch) +### [react-native+0.83.1+010+textinput-clear-command.patch](react-native+0.83.1+010+textinput-clear-command.patch) - Reason: Adds clear command functionality to TextInput - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+011+Add-onPaste-to-TextInput.patch](react-native+0.81.4+011+Add-onPaste-to-TextInput.patch) +### [react-native+0.83.1+011+Add-onPaste-to-TextInput.patch](react-native+0.83.1+011+Add-onPaste-to-TextInput.patch) - Reasons: - Adds `onPaste` callback to `TextInput` to support image pasting on native @@ -88,84 +88,77 @@ - https://github.com/Expensify/App/issues/75991 - PR Introducing Patch: [#47203](https://github.com/Expensify/App/pull/47203) -### [react-native+0.81.4+012+alert-style.patch](react-native+0.81.4+012+alert-style.patch) +### [react-native+0.83.1+012+alert-style.patch](react-native+0.83.1+012+alert-style.patch) - Reason: Fixes alert styling issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+013+fixNavigationAnimations.patch](react-native+0.81.4+013+fixNavigationAnimations.patch) +### [react-native+0.83.1+013+fixNavigationAnimations.patch](react-native+0.83.1+013+fixNavigationAnimations.patch) - Reason: Fixes navigation animation issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+014+fixScrollViewState.patch](react-native+0.81.4+014+fixScrollViewState.patch) +### [react-native+0.83.1+014+fixScrollViewState.patch](react-native+0.83.1+014+fixScrollViewState.patch) - Reason: Fixes ScrollView state management issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+015+android-keyboard-avoiding-view.patch](react-native+0.81.4+015+android-keyboard-avoiding-view.patch) +### [react-native+0.83.1+015+android-keyboard-avoiding-view.patch](react-native+0.83.1+015+android-keyboard-avoiding-view.patch) - Reason: Fixes keyboard avoiding view behavior on Android - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+016+fix-mask-persisting-recycling.patch](react-native+0.81.4+016+fix-mask-persisting-recycling.patch) +### [react-native+0.83.1+016+fix-mask-persisting-recycling.patch](react-native+0.83.1+016+fix-mask-persisting-recycling.patch) - Reason: Fixes mask persisting and recycling issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+017+fix-text-selecting-on-change.patch](react-native+0.81.4+017+fix-text-selecting-on-change.patch) +### [react-native+0.83.1+017+fix-text-selecting-on-change.patch](react-native+0.83.1+017+fix-text-selecting-on-change.patch) - Reason: Fixes text selection issues during onChange events - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch](react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch) +### [react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch](react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch) - Reason: Fixes issues with dropping mutations in transactions - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+019+fix-crash-when-deleting-expense.patch](react-native+0.81.4+019+fix-crash-when-deleting-expense.patch) +### [react-native+0.83.1+019+fix-crash-when-deleting-expense.patch](react-native+0.83.1+019+fix-crash-when-deleting-expense.patch) - Reason: Fixes crash when deleting expenses - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+020+fix-surface-stopped-before-started.patch](react-native+0.81.4+020+fix-surface-stopped-before-started.patch) - -- Reason: Fixes surface lifecycle issues where surface is stopped before being started -- Upstream PR/issue: 🛑 -- E/App issue: 🛑 -- PR Introducing Patch: 🛑 - -### [react-native+0.81.4+021+publish-gradle.patch](react-native+0.81.4+021+publish-gradle.patch) +### [react-native+0.83.1+020+publish-gradle.patch](react-native+0.83.1+020+publish-gradle.patch) - Reason: This patch customizes the Gradle publishing script to allow publishing our custom React Native artifacts to GitHub Packages. - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/59738 -### [react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch](react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch) +### [react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch](react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch) - Reason: This patch updates Yoga to correctly update the subtrees of `display: contents` nodes so that they are in sync with their React Native counterparts. - Upstream PR/issue: https://github.com/facebook/react-native/pull/52530 - E/App issue: https://github.com/Expensify/App/issues/65268 - PR introducing patch: [#65925](https://github.com/Expensify/App/pull/65925) -### [react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch](react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch) +### [react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch](react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch) - Reason: On iOS, a text input automatically becomes the "first responder" in UIKit's "UIResponder" chain. Once a text input becomes the first responder, it will be automatically focused. (This also causes the keyboard to open) - This is not handled by React or React Native, but is rather a native iOS/UIKit behaviour. This patch adds an additional `TextInput` prop (`preventFocusOnFirstResponder`) and a ref method (`preventFocusOnFirstResponderOnce`) to bypass the focus on first responder. @@ -174,14 +167,14 @@ - E/App issue: [#54813](https://github.com/Expensify/App/issues/54813) - PR Introducing Patch: [#61492](https://github.com/Expensify/App/pull/61492) -### [react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch](react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch) +### [react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch](react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch) - Reason: This patch fixes an issue where it is not possible to enable a transparent navigation bar on Android - Upstream PR/issue: 🛑 - E/App issue: [#69005](https://github.com/Expensify/App/issues/69005) - PR introducing patch: [#69004](https://github.com/Expensify/App/pull/69004) -### [react-native+0.81.4+025+restore-interaction-manager.patch](react-native+0.81.4+025+restore-interaction-manager.patch) +### [react-native+0.83.1+024+restore-interaction-manager.patch](react-native+0.83.1+024+restore-interaction-manager.patch) - Reason: diff --git a/patches/react-native/react-native+0.81.4+014+fixScrollViewState.patch b/patches/react-native/react-native+0.81.4+014+fixScrollViewState.patch deleted file mode 100644 index 8f96c909630f6..0000000000000 --- a/patches/react-native/react-native+0.81.4+014+fixScrollViewState.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt -index 55e4d53..bd4ad5c 100644 ---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt -+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt -@@ -564,7 +564,7 @@ public object ReactScrollViewHelper { - /** Get the padding on the top for nav bar */ - public var scrollAwayPaddingTop: Int = 0 - /** Get the Fabric state of last scroll position */ -- public val lastStateUpdateScroll: Point = Point(-1, -1) -+ public val lastStateUpdateScroll: Point = Point(0, 0) - /** Get true if the previous animation was canceled */ - public var isCanceled: Boolean = false - /** Get true if previous animation was finished */ diff --git a/patches/react-native/react-native+0.81.4+020+fix-surface-stopped-before-started.patch b/patches/react-native/react-native+0.81.4+020+fix-surface-stopped-before-started.patch deleted file mode 100644 index ed59645c62a84..0000000000000 --- a/patches/react-native/react-native+0.81.4+020+fix-surface-stopped-before-started.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/node_modules/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm b/node_modules/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm -index b796713..5142307 100644 ---- a/node_modules/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm -+++ b/node_modules/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm -@@ -254,7 +254,9 @@ class RCTHostHostTargetDelegate : public facebook::react::jsinspector_modern::Ho - surface.surfaceHandler.setDisplayMode(displayMode); - [self _attachSurface:surface]; - -- [_instance callFunctionOnBufferedRuntimeExecutor:[surface](facebook::jsi::Runtime &_) { [surface start]; }]; -+ __weak RCTFabricSurface *weakSurface = surface; -+ // Use the BufferedRuntimeExecutor to start the surface after the main JS bundle was fully executed. -+ [_instance callFunctionOnBufferedRuntimeExecutor:[weakSurface](facebook::jsi::Runtime &_) { [weakSurface start]; }]; - return surface; - } - diff --git a/patches/react-native/react-native+0.81.4+025+restore-interaction-manager.patch b/patches/react-native/react-native+0.81.4+025+restore-interaction-manager.patch deleted file mode 100644 index 2a43803e94906..0000000000000 --- a/patches/react-native/react-native+0.81.4+025+restore-interaction-manager.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/node_modules/react-native/Libraries/Interaction/InteractionManager.js b/node_modules/react-native/Libraries/Interaction/InteractionManager.js -index 70fc3d7..016ba4e 100644 ---- a/node_modules/react-native/Libraries/Interaction/InteractionManager.js -+++ b/node_modules/react-native/Libraries/Interaction/InteractionManager.js -@@ -227,11 +227,6 @@ function _processUpdate() { - * - * @deprecated - */ --const InteractionManager = ( -- ReactNativeFeatureFlags.disableInteractionManager() -- ? // $FlowFixMe[incompatible-variance] -- require('./InteractionManagerStub').default -- : InteractionManagerImpl --) as typeof InteractionManagerImpl; -+const InteractionManager = InteractionManagerImpl; - - export default InteractionManager; diff --git a/patches/react-native/react-native+0.81.4+001+initial.patch b/patches/react-native/react-native+0.83.1+001+initial.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+001+initial.patch rename to patches/react-native/react-native+0.83.1+001+initial.patch diff --git a/patches/react-native/react-native+0.81.4+002+fixMVCPAndroid.patch b/patches/react-native/react-native+0.83.1+002+fixMVCPAndroid.patch similarity index 87% rename from patches/react-native/react-native+0.81.4+002+fixMVCPAndroid.patch rename to patches/react-native/react-native+0.83.1+002+fixMVCPAndroid.patch index 35ee843c9cbec..834bffe499e57 100644 --- a/patches/react-native/react-native+0.81.4+002+fixMVCPAndroid.patch +++ b/patches/react-native/react-native+0.83.1+002+fixMVCPAndroid.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt -index 6813434..2dde13e 100644 +index 20e998d..55893fd 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt -@@ -78,6 +78,7 @@ internal class MaintainVisibleScrollPositionHelper( +@@ -80,6 +80,7 @@ internal class MaintainVisibleScrollPositionHelper( return } isListening = false @@ -10,7 +10,7 @@ index 6813434..2dde13e 100644 uIManager.removeUIManagerEventListener(this) } -@@ -85,15 +86,14 @@ internal class MaintainVisibleScrollPositionHelper( +@@ -87,15 +88,14 @@ internal class MaintainVisibleScrollPositionHelper( * Update the scroll position of the managed ScrollView. This should be called after layout has * been updated. */ @@ -30,7 +30,7 @@ index 6813434..2dde13e 100644 val config = config ?: return val firstVisibleViewRef = firstVisibleViewRef ?: return val prevFirstVisibleFrame = prevFirstVisibleFrame ?: return -@@ -126,12 +126,18 @@ internal class MaintainVisibleScrollPositionHelper( +@@ -128,12 +128,18 @@ internal class MaintainVisibleScrollPositionHelper( } } @@ -50,7 +50,7 @@ index 6813434..2dde13e 100644 for (i in config.minIndexForVisible until contentView.childCount) { val child = contentView.getChildAt(i) -@@ -139,27 +145,49 @@ internal class MaintainVisibleScrollPositionHelper( +@@ -141,27 +147,49 @@ internal class MaintainVisibleScrollPositionHelper( val position = if (horizontal) child.x + child.width else child.y + child.height // If the child is partially visible or this is the last child, select it as the anchor. @@ -64,8 +64,8 @@ index 6813434..2dde13e 100644 + (firstVisibleView == null && i == contentView.getChildCount() - 1)) { + firstVisibleView = child + firstVisibleViewPosition = position -+ } -+ } + } + } + firstVisibleViewRef = WeakReference(firstVisibleView) + } + @@ -81,8 +81,8 @@ index 6813434..2dde13e 100644 + // There are cases where it is possible for this to still be null so just bail out. + if (firstVisibleView == null) { + return - } - } ++ } ++ } + val frame = Rect() + firstVisibleView.getHitRect(frame) + if (frame.width() > 0 || frame.height() > 0) { @@ -110,20 +110,21 @@ index 6813434..2dde13e 100644 override fun didDispatchMountItems(uiManager: UIManager) { diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java -index 2a462c4..f7424db 100644 +index f4896af..c88c77a 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java -@@ -544,6 +544,9 @@ public class ReactHorizontalScrollView extends HorizontalScrollView - mOnScrollDispatchHelper.getXFlingVelocity(), - mOnScrollDispatchHelper.getYFlingVelocity()); +@@ -634,7 +634,9 @@ public class ReactHorizontalScrollView extends HorizontalScrollView + mVirtualViewContainerState.updateState(); + } } +- + if (mMaintainVisibleContentPositionHelper != null) { -+ mMaintainVisibleContentPositionHelper.onScroll(); ++ mMaintainVisibleContentPositionHelper.onScroll(); + } } finally { Systrace.endSection(Systrace.TRACE_TAG_REACT); } -@@ -1500,7 +1503,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView +@@ -1623,7 +1625,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView if (v.getLayoutDirection() == LAYOUT_DIRECTION_RTL) { adjustPositionForContentChangeRTL(left, right, oldLeft, oldRight); } else if (mMaintainVisibleContentPositionHelper != null) { @@ -133,12 +134,12 @@ index 2a462c4..f7424db 100644 ReactScrollViewHelper.emitLayoutChangeEvent(this); } diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java -index f708543..04bd30b 100644 +index b0f6203..35cd66c 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java -@@ -476,6 +476,9 @@ public class ReactScrollView extends ScrollView - mOnScrollDispatchHelper.getXFlingVelocity(), - mOnScrollDispatchHelper.getYFlingVelocity()); +@@ -584,6 +584,9 @@ public class ReactScrollView extends ScrollView + mVirtualViewContainerState.updateState(); + } } + if (mMaintainVisibleContentPositionHelper != null) { + mMaintainVisibleContentPositionHelper.onScroll(); @@ -146,7 +147,7 @@ index f708543..04bd30b 100644 } finally { Systrace.endSection(Systrace.TRACE_TAG_REACT); } -@@ -1287,7 +1290,7 @@ public class ReactScrollView extends ScrollView +@@ -1422,7 +1425,7 @@ public class ReactScrollView extends ScrollView } if (mMaintainVisibleContentPositionHelper != null) { diff --git a/patches/react-native/react-native+0.81.4+003+disableTextInputRecycling.patch b/patches/react-native/react-native+0.83.1+003+disableTextInputRecycling.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+003+disableTextInputRecycling.patch rename to patches/react-native/react-native+0.83.1+003+disableTextInputRecycling.patch diff --git a/patches/react-native/react-native+0.81.4+004+iOSFontResolution.patch b/patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch similarity index 72% rename from patches/react-native/react-native+0.81.4+004+iOSFontResolution.patch rename to patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch index 20296b89b40bf..0b7cc618e00db 100644 --- a/patches/react-native/react-native+0.81.4+004+iOSFontResolution.patch +++ b/patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch @@ -1,10 +1,10 @@ diff --git a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm -index 39093ef..36cb558 100644 +index 9b04cad..de84d2f 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +++ b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm -@@ -38,9 +38,6 @@ static RCTFontProperties RCTResolveFontProperties( +@@ -40,9 +40,6 @@ static RCTFontProperties RCTResolveFontProperties( { - fontProperties.family = fontProperties.family.length ? fontProperties.family : baseFontProperties.family; + fontProperties.family = (fontProperties.family.length != 0u) ? fontProperties.family : baseFontProperties.family; fontProperties.size = !isnan(fontProperties.size) ? fontProperties.size : baseFontProperties.size; - fontProperties.weight = !isnan(fontProperties.weight) ? fontProperties.weight : baseFontProperties.weight; - fontProperties.style = @@ -12,7 +12,17 @@ index 39093ef..36cb558 100644 fontProperties.variant = fontProperties.variant != RCTFontVariantUndefined ? fontProperties.variant : baseFontProperties.variant; return fontProperties; -@@ -319,10 +316,14 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) +@@ -288,6 +285,9 @@ static UIFont *RCTDefaultFontWithFontProperties(const RCTFontProperties &fontPro + if (font == nil) { + font = [UIFont systemFontOfSize:effectiveFontSize weight:fontProperties.weight]; + } ++ fontNames = [UIFont fontNamesForFamilyName:font.familyName]; ++ fontWeight = isnan(fontWeight) ? RCTGetFontWeight(font) : fontWeight; ++ fontStyle = fontStyle == RCTFontStyleUndefined ? RCTGetFontStyle(font) : fontStyle; + + BOOL isItalicFont = fontProperties.style == RCTFontStyleItalic; + BOOL isCondensedFont = [fontProperties.family isEqualToString:@"SystemCondensed"]; +@@ -350,10 +350,14 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) } else if ([fontProperties.family isEqualToString:defaultFontProperties.family]) { // Handle system font as special case. This ensures that we preserve // the specific metrics of the standard system font as closely as possible. @@ -27,13 +37,8 @@ index 39093ef..36cb558 100644 if (fontNames.count == 0) { // Gracefully handle being given a font name rather than font family, for -@@ -335,15 +336,18 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) - // Failback to system font. - font = [UIFont systemFontOfSize:effectiveFontSize weight:fontProperties.weight]; +@@ -368,13 +372,13 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) } -+ fontNames = [UIFont fontNamesForFamilyName:font.familyName]; -+ fontWeight = isnan(fontWeight) ? RCTGetFontWeight(font) : fontWeight; -+ fontStyle = fontStyle == RCTFontStyleUndefined ? RCTGetFontStyle(font) : fontStyle; } - if (fontNames.count > 0) { diff --git a/patches/react-native/react-native+0.81.4+005+resetAutoresizingOnView.patch b/patches/react-native/react-native+0.83.1+005+resetAutoresizingOnView.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+005+resetAutoresizingOnView.patch rename to patches/react-native/react-native+0.83.1+005+resetAutoresizingOnView.patch diff --git a/patches/react-native/react-native+0.81.4+006+disableNonTranslucentStatusBar.patch b/patches/react-native/react-native+0.83.1+006+disableNonTranslucentStatusBar.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+006+disableNonTranslucentStatusBar.patch rename to patches/react-native/react-native+0.83.1+006+disableNonTranslucentStatusBar.patch diff --git a/patches/react-native/react-native+0.81.4+007+TextInput.patch b/patches/react-native/react-native+0.83.1+007+TextInput.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+007+TextInput.patch rename to patches/react-native/react-native+0.83.1+007+TextInput.patch diff --git a/patches/react-native/react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch b/patches/react-native/react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch rename to patches/react-native/react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch diff --git a/patches/react-native/react-native+0.81.4+009+copyStateOnClone.patch b/patches/react-native/react-native+0.83.1+009+copyStateOnClone.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+009+copyStateOnClone.patch rename to patches/react-native/react-native+0.83.1+009+copyStateOnClone.patch diff --git a/patches/react-native/react-native+0.81.4+010+textinput-clear-command.patch b/patches/react-native/react-native+0.83.1+010+textinput-clear-command.patch similarity index 91% rename from patches/react-native/react-native+0.81.4+010+textinput-clear-command.patch rename to patches/react-native/react-native+0.83.1+010+textinput-clear-command.patch index a929a62177a02..16571dce620a4 100644 --- a/patches/react-native/react-native+0.81.4+010+textinput-clear-command.patch +++ b/patches/react-native/react-native+0.83.1+010+textinput-clear-command.patch @@ -57,10 +57,10 @@ index 05bddcb..27752b7 100644 onSelectionChange: true, onContentSizeChange: true, diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -index b3ca156..f441831 100644 +index 25c8142..87cb310 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -@@ -818,6 +818,13 @@ export interface TextInputProps +@@ -815,6 +815,13 @@ export interface TextInputProps */ onBlur?: ((e: BlurEvent) => void) | undefined; @@ -75,10 +75,10 @@ index b3ca156..f441831 100644 * Callback that is called when the text input's text changes. */ diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -index 8bd86cc..2fc2715 100644 +index 5cebe10..5d05624 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -@@ -524,6 +524,11 @@ function InternalTextInput(props: TextInputProps): React.Node { +@@ -530,6 +530,11 @@ function InternalTextInput(props: TextInputProps): React.Node { }); }; @@ -90,7 +90,7 @@ index 8bd86cc..2fc2715 100644 const _onFocus = (event: FocusEvent) => { TextInputState.focusInput(inputRef.current); if (props.onFocus) { -@@ -691,6 +696,7 @@ function InternalTextInput(props: TextInputProps): React.Node { +@@ -705,6 +710,7 @@ function InternalTextInput(props: TextInputProps): React.Node { nativeID={id ?? props.nativeID} numberOfLines={props.rows ?? props.numberOfLines} onBlur={_onBlur} @@ -98,7 +98,7 @@ index 8bd86cc..2fc2715 100644 onChange={_onChange} onContentSizeChange={props.onContentSizeChange} onFocus={_onFocus} -@@ -758,6 +764,7 @@ function InternalTextInput(props: TextInputProps): React.Node { +@@ -778,6 +784,7 @@ function InternalTextInput(props: TextInputProps): React.Node { nativeID={id ?? props.nativeID} numberOfLines={props.rows ?? props.numberOfLines} onBlur={_onBlur} @@ -107,10 +107,10 @@ index 8bd86cc..2fc2715 100644 onFocus={_onFocus} /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -index 47adc53..407d46e 100644 +index 3503ccf..5d3a675 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -@@ -67,6 +67,7 @@ RCT_EXPORT_VIEW_PROPERTY(acceptDragAndDropTypes, NSArray) +@@ -69,6 +69,7 @@ RCT_EXPORT_VIEW_PROPERTY(acceptDragAndDropTypes, NSArray) RCT_EXPORT_VIEW_PROPERTY(onChange, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onKeyPressSync, RCTDirectEventBlock) @@ -119,10 +119,10 @@ index 47adc53..407d46e 100644 RCT_EXPORT_VIEW_PROPERTY(onSelectionChange, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onScroll, RCTDirectEventBlock) diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index b5d7242..3f6c980 100644 +index 32d8ed4..92ce922 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -@@ -555,6 +555,19 @@ static NSSet *returnKeyTypesSet; +@@ -564,6 +564,19 @@ static NSSet *returnKeyTypesSet; [_backedTextInputView resignFirstResponder]; } @@ -233,10 +233,10 @@ index 0000000..0c142a0 + } +} diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt -index 42c13a1..35cd70f 100644 +index 21244cd..dda54f7 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt -@@ -13,6 +13,7 @@ import android.graphics.BlendModeColorFilter +@@ -15,6 +15,7 @@ import android.graphics.BlendModeColorFilter import android.graphics.Paint import android.graphics.PorterDuff import android.os.Build @@ -244,7 +244,7 @@ index 42c13a1..35cd70f 100644 import android.text.InputFilter import android.text.InputFilter.LengthFilter import android.text.InputType -@@ -48,6 +49,8 @@ import com.facebook.react.uimanager.ReactStylesDiffMap +@@ -50,6 +51,8 @@ import com.facebook.react.uimanager.ReactStylesDiffMap import com.facebook.react.uimanager.StateWrapper import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.UIManagerHelper @@ -253,16 +253,16 @@ index 42c13a1..35cd70f 100644 import com.facebook.react.uimanager.ViewDefaults import com.facebook.react.uimanager.ViewProps import com.facebook.react.uimanager.annotations.ReactProp -@@ -133,6 +136,8 @@ public open class ReactTextInputManager public constructor() : - val eventTypeConstants = baseEventTypeConstants ?: mutableMapOf() +@@ -144,6 +147,8 @@ public open class ReactTextInputManager public constructor() : eventTypeConstants.putAll( - mapOf(getJSEventName(ScrollEventType.SCROLL) to mapOf("registrationName" to "onScroll"))) + mapOf(getJSEventName(ScrollEventType.SCROLL) to mapOf("registrationName" to "onScroll")) + ) + eventTypeConstants.putAll( + mapOf(ReactTextClearEvent.EVENT_NAME to mapOf("registrationName" to "onClear"))) return eventTypeConstants } -@@ -175,6 +180,26 @@ public open class ReactTextInputManager public constructor() : +@@ -186,6 +191,26 @@ public open class ReactTextInputManager public constructor() : } reactEditText.maybeSetSelection(mostRecentEventCount, start, end) } @@ -305,14 +305,14 @@ index a9bc219..42c445b 100644 dispatchTextInputEvent("change", textInputMetrics); } diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h -index dbce575..968c93c 100644 +index a3f2e01..f88919c 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h @@ -37,6 +37,7 @@ class TextInputEventEmitter : public ViewEventEmitter { - void onFocus(const Metrics& textInputMetrics) const; - void onBlur(const Metrics& textInputMetrics) const; -+ void onClear(const Metrics& textInputMetrics) const; - void onChange(const Metrics& textInputMetrics) const; - void onContentSizeChange(const Metrics& textInputMetrics) const; - void onSelectionChange(const Metrics& textInputMetrics) const; + void onFocus(const Metrics &textInputMetrics) const; + void onBlur(const Metrics &textInputMetrics) const; ++ void onClear(const Metrics &textInputMetrics) const; + void onChange(const Metrics &textInputMetrics) const; + void onContentSizeChange(const Metrics &textInputMetrics) const; + void onSelectionChange(const Metrics &textInputMetrics) const; diff --git a/patches/react-native/react-native+0.81.4+011+Add-onPaste-to-TextInput.patch b/patches/react-native/react-native+0.83.1+011+Add-onPaste-to-TextInput.patch similarity index 93% rename from patches/react-native/react-native+0.81.4+011+Add-onPaste-to-TextInput.patch rename to patches/react-native/react-native+0.83.1+011+Add-onPaste-to-TextInput.patch index 6138c636d0da0..2144d6aa53b51 100644 --- a/patches/react-native/react-native+0.81.4+011+Add-onPaste-to-TextInput.patch +++ b/patches/react-native/react-native+0.83.1+011+Add-onPaste-to-TextInput.patch @@ -65,10 +65,10 @@ index 27752b7..9143695 100644 onKeyPressSync: true, }), diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -index f441831..3ea6d67 100644 +index 87cb310..03262de 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -@@ -565,6 +565,16 @@ export interface TextInputSubmitEditingEventData { +@@ -562,6 +562,16 @@ export interface TextInputSubmitEditingEventData { export type TextInputSubmitEditingEvent = NativeSyntheticEvent; @@ -85,7 +85,7 @@ index f441831..3ea6d67 100644 /** * @see https://reactnative.dev/docs/textinput#props */ -@@ -903,6 +913,14 @@ export interface TextInputProps +@@ -900,6 +910,14 @@ export interface TextInputProps */ onKeyPress?: ((e: TextInputKeyPressEvent) => void) | undefined; @@ -101,10 +101,10 @@ index f441831..3ea6d67 100644 * The string that will be rendered before text input has been entered */ diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js -index 5fa8811..ad2bf61 100644 +index c78ce40..ede5607 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js -@@ -137,6 +137,18 @@ export type TextInputSubmitEditingEvent = +@@ -138,6 +138,18 @@ export type TextInputSubmitEditingEvent = export type TextInputEditingEvent = NativeSyntheticEvent; @@ -123,7 +123,7 @@ index 5fa8811..ad2bf61 100644 type DataDetectorTypesType = | 'phoneNumber' | 'link' -@@ -884,6 +896,11 @@ type TextInputBaseProps = $ReadOnly<{ +@@ -885,6 +897,11 @@ type TextInputBaseProps = $ReadOnly<{ */ onScroll?: ?(e: ScrollEvent) => mixed, @@ -136,7 +136,7 @@ index 5fa8811..ad2bf61 100644 * The string that will be rendered before text input has been entered. */ diff --git a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm -index 6e9c384..2c509eb 100644 +index 6e9c384..9c94442 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm @@ -13,6 +13,10 @@ @@ -256,10 +256,10 @@ index 82d9a79..8cc48ec 100644 - (void)textViewProbablyDidChangeSelection diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h -index 4804624..90b7081 100644 +index 228d9ca..b807146 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h -@@ -37,6 +37,7 @@ NS_ASSUME_NONNULL_BEGIN +@@ -40,6 +40,7 @@ __attribute__((deprecated("This API will be removed along with the legacy archit @property (nonatomic, copy, nullable) RCTDirectEventBlock onChange; @property (nonatomic, copy, nullable) RCTDirectEventBlock onChangeSync; @property (nonatomic, copy, nullable) RCTDirectEventBlock onScroll; @@ -268,10 +268,10 @@ index 4804624..90b7081 100644 @property (nonatomic, assign) NSInteger mostRecentEventCount; @property (nonatomic, assign, readonly) NSInteger nativeEventCount; diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm -index 6a2d4f8..b6e6060 100644 +index c916ce8..f4e19f9 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm -@@ -599,6 +599,26 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame) +@@ -601,6 +601,26 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame) }); } @@ -299,10 +299,10 @@ index 6a2d4f8..b6e6060 100644 { [self enforceTextAttributesIfNeeded]; diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -index 407d46e..0a5b412 100644 +index 5d3a675..a92904d 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -@@ -71,6 +71,7 @@ RCT_EXPORT_VIEW_PROPERTY(onClear, RCTDirectEventBlock) +@@ -73,6 +73,7 @@ RCT_EXPORT_VIEW_PROPERTY(onClear, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onChangeSync, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onSelectionChange, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onScroll, RCTDirectEventBlock) @@ -311,7 +311,7 @@ index 407d46e..0a5b412 100644 RCT_EXPORT_SHADOW_PROPERTY(text, NSString) RCT_EXPORT_SHADOW_PROPERTY(placeholder, NSString) diff --git a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm -index 377f41e..b8f48e6 100644 +index 377f41e..b54adeb 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm @@ -12,6 +12,10 @@ @@ -370,10 +370,10 @@ index 377f41e..b8f48e6 100644 #pragma mark - Layout diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index 44c8737..0efbbe7 100644 +index 92ce922..d30983f 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -@@ -520,6 +520,13 @@ static NSSet *returnKeyTypesSet; +@@ -524,6 +524,13 @@ static NSSet *returnKeyTypesSet; } } @@ -389,7 +389,7 @@ index 44c8737..0efbbe7 100644 - (void)scrollViewDidScroll:(UIScrollView *)scrollView diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/PasteWatcher.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/PasteWatcher.java new file mode 100644 -index 0000000..bfb5819 +index 0000000..a0cc12d --- /dev/null +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/PasteWatcher.java @@ -0,0 +1,17 @@ @@ -411,7 +411,7 @@ index 0000000..bfb5819 + public void onPaste(String type, String data); +} diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt -index 42f6e03..ffba031 100644 +index fb8f4b1..b2bfdaa 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt @@ -8,6 +8,10 @@ @@ -434,7 +434,7 @@ index 42f6e03..ffba031 100644 import android.os.Build import android.os.Bundle import android.text.Editable -@@ -128,6 +133,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat +@@ -127,6 +133,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat private var selectionWatcher: SelectionWatcher? = null private var contentSizeWatcher: ContentSizeWatcher? = null private var scrollWatcher: ScrollWatcher? @@ -442,7 +442,7 @@ index 42f6e03..ffba031 100644 private var keyListener: InternalKeyListener? = null private var detectScrollMovement = false private var onKeyPress = false -@@ -212,6 +219,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat +@@ -211,6 +218,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat keyListener = InternalKeyListener() } scrollWatcher = null @@ -450,13 +450,14 @@ index 42f6e03..ffba031 100644 textAttributes = TextAttributes() applyTextAttributes() -@@ -356,9 +364,50 @@ public open class ReactEditText public constructor(context: Context) : AppCompat +@@ -367,10 +375,50 @@ public open class ReactEditText public constructor(context: Context) : AppCompat * Called when a context menu option for the text view is selected. * React Native replaces copy (as rich text) with copy as plain text. */ - override fun onTextContextMenuItem(id: Int): Boolean = - super.onTextContextMenuItem( -- if (id == android.R.id.paste) android.R.id.pasteAsPlainText else id) +- if (id == android.R.id.paste) android.R.id.pasteAsPlainText else id +- ) + override fun onTextContextMenuItem(id: Int): Boolean { + val modifiedId = if (id == android.R.id.paste || id == android.R.id.pasteAsPlainText) { + android.R.id.pasteAsPlainText @@ -504,7 +505,7 @@ index 42f6e03..ffba031 100644 internal fun clearFocusAndMaybeRefocus() { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P || !isInTouchMode) { -@@ -421,6 +470,10 @@ public open class ReactEditText public constructor(context: Context) : AppCompat +@@ -433,6 +481,10 @@ public open class ReactEditText public constructor(context: Context) : AppCompat this.scrollWatcher = scrollWatcher } @@ -516,19 +517,19 @@ index 42f6e03..ffba031 100644 * Attempt to set a selection or fail silently. Intentionally meant to handle bad inputs. * EventCounter is the same one used as with text. diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt -index f47c87a..3588df6 100644 +index dda54f7..bf7a1c1 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt -@@ -135,6 +135,8 @@ public open class ReactTextInputManager public constructor() : - mapOf(getJSEventName(ScrollEventType.SCROLL) to mapOf("registrationName" to "onScroll"))) +@@ -149,6 +149,8 @@ public open class ReactTextInputManager public constructor() : + ) eventTypeConstants.putAll( mapOf(ReactTextClearEvent.EVENT_NAME to mapOf("registrationName" to "onClear"))) + eventTypeConstants.putAll( -+ mapOf("topPaste" to mapOf("registrationName" to "onPaste"))) ++ mapOf("topPaste" to mapOf("registrationName" to "onPaste"))) return eventTypeConstants } -@@ -349,6 +351,15 @@ public open class ReactTextInputManager public constructor() : +@@ -376,6 +378,15 @@ public open class ReactTextInputManager public constructor() : } } @@ -544,7 +545,7 @@ index f47c87a..3588df6 100644 @ReactProp(name = "onKeyPress", defaultBoolean = false) public fun setOnKeyPress(view: ReactEditText, onKeyPress: Boolean) { view.setOnKeyPress(onKeyPress) -@@ -966,6 +977,24 @@ public open class ReactTextInputManager public constructor() : +@@ -1011,6 +1022,24 @@ public open class ReactTextInputManager public constructor() : } } @@ -571,7 +572,7 @@ index f47c87a..3588df6 100644 "AutoCapitalizationType" to diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputPasteEvent.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputPasteEvent.kt new file mode 100644 -index 0000000..98bb63f +index 0000000..6f5b10b --- /dev/null +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputPasteEvent.kt @@ -0,0 +1,61 @@ @@ -661,14 +662,14 @@ index 42c445b..22ff2d9 100644 const std::string& name, const Metrics& textInputMetrics, diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h -index 968c93c..4396346 100644 +index f88919c..c1118e3 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h @@ -45,6 +45,7 @@ class TextInputEventEmitter : public ViewEventEmitter { - void onSubmitEditing(const Metrics& textInputMetrics) const; - void onKeyPress(const KeyPressMetrics& keyPressMetrics) const; - void onScroll(const Metrics& textInputMetrics) const; -+ void onPaste(const std::string& type, const std::string& data) const; + void onSubmitEditing(const Metrics &textInputMetrics) const; + void onKeyPress(const KeyPressMetrics &keyPressMetrics) const; + void onScroll(const Metrics &textInputMetrics) const; ++ void onPaste(const std::string &type, const std::string &data) const; private: void dispatchTextInputEvent( diff --git a/patches/react-native/react-native+0.81.4+012+alert-style.patch b/patches/react-native/react-native+0.83.1+012+alert-style.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+012+alert-style.patch rename to patches/react-native/react-native+0.83.1+012+alert-style.patch diff --git a/patches/react-native/react-native+0.81.4+013+fixNavigationAnimations.patch b/patches/react-native/react-native+0.83.1+013+fixNavigationAnimations.patch similarity index 67% rename from patches/react-native/react-native+0.81.4+013+fixNavigationAnimations.patch rename to patches/react-native/react-native+0.83.1+013+fixNavigationAnimations.patch index a3d53a186b6d4..36d0ef38e3b25 100644 --- a/patches/react-native/react-native+0.81.4+013+fixNavigationAnimations.patch +++ b/patches/react-native/react-native+0.83.1+013+fixNavigationAnimations.patch @@ -1,29 +1,29 @@ diff --git a/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js b/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js -index 750569f..d458d7a 100644 +index af89f0d..aed96ca 100644 --- a/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js +++ b/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js @@ -97,6 +97,7 @@ export default class AnimatedProps extends AnimatedNode { - #nodes: $ReadOnlyArray; - #props: {[string]: mixed}; - #target: ?TargetView = null; -+ #connectedToView: boolean; + _nodes: $ReadOnlyArray; + _props: {[string]: mixed}; + _target: ?TargetView = null; ++ _connectedToView: boolean; constructor( inputProps: {[string]: mixed}, @@ -110,6 +111,7 @@ export default class AnimatedProps extends AnimatedNode { - this.#nodes = nodes; - this.#props = props; - this.#callback = callback; -+ this.#connectedToView = false; + this._nodes = nodes; + this._props = props; + this._callback = callback; ++ this._connectedToView = false; } __getValue(): Object { @@ -248,6 +250,8 @@ export default class AnimatedProps extends AnimatedNode { - if (this.#target != null) { - this.#connectAnimatedView(this.#target); -+ } else if (!this.#connectedToView && this._animatedView) { -+ this.#connectAnimatedView(this.#target); + if (this._target != null) { + this.#connectAnimatedView(this._target); ++ } else if (!this._connectedToView && this._animatedView) { ++ this.#connectAnimatedView(this._target); } } } @@ -31,7 +31,7 @@ index 750569f..d458d7a 100644 throw new Error('Unable to locate attached view in the native tree'); } } -+ this.#connectedToView = true; ++ this._connectedToView = true; NativeAnimatedHelper.API.connectAnimatedNodeToView( this.__getNativeTag(), viewTag, @@ -39,7 +39,7 @@ index 750569f..d458d7a 100644 if (viewTag == null) { return; } -+ this.#connectedToView = false; ++ this._connectedToView = false; NativeAnimatedHelper.API.disconnectAnimatedNodeFromView( this.__getNativeTag(), viewTag, diff --git a/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch b/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch new file mode 100644 index 0000000000000..04da19a0cbdeb --- /dev/null +++ b/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +index 7e86543..595acb9 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +@@ -630,7 +630,7 @@ public object ReactScrollViewHelper { + /** Get the padding on the top for nav bar */ + var scrollAwayPaddingTop: Int = 0, + /** Get the Fabric state of last scroll position */ +- val lastStateUpdateScroll: Point = Point(-1, -1), ++ val lastStateUpdateScroll: Point = Point(0, 0) + /** Get true if the previous animation was canceled */ + var isCanceled: Boolean = false, + /** Get true if previous animation was finished */ diff --git a/patches/react-native/react-native+0.81.4+015+android-keyboard-avoiding-view.patch b/patches/react-native/react-native+0.83.1+015+android-keyboard-avoiding-view.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+015+android-keyboard-avoiding-view.patch rename to patches/react-native/react-native+0.83.1+015+android-keyboard-avoiding-view.patch diff --git a/patches/react-native/react-native+0.81.4+016+fix-mask-persisting-recycling.patch b/patches/react-native/react-native+0.83.1+016+fix-mask-persisting-recycling.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+016+fix-mask-persisting-recycling.patch rename to patches/react-native/react-native+0.83.1+016+fix-mask-persisting-recycling.patch diff --git a/patches/react-native/react-native+0.81.4+017+fix-text-selecting-on-change.patch b/patches/react-native/react-native+0.83.1+017+fix-text-selecting-on-change.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+017+fix-text-selecting-on-change.patch rename to patches/react-native/react-native+0.83.1+017+fix-text-selecting-on-change.patch diff --git a/patches/react-native/react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch b/patches/react-native/react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch similarity index 90% rename from patches/react-native/react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch rename to patches/react-native/react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch index cf53e6ab29dbc..d8ac4fdb1826b 100644 --- a/patches/react-native/react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch +++ b/patches/react-native/react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp b/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp -index 3ccff28..3cc20c3 100644 +index 801c8f1..005a00f 100644 --- a/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +++ b/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp -@@ -611,7 +611,7 @@ void FabricUIManagerBinding::schedulerDidFinishTransaction( +@@ -615,7 +615,7 @@ void FabricUIManagerBinding::schedulerDidFinishTransaction( mountingTransaction->getSurfaceId(); }); @@ -47,12 +47,12 @@ index d7dd1bc..d95d779 100644 + } // namespace facebook::react diff --git a/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.h b/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.h -index 277e9f4..38629db 100644 +index 7841b5a..4e91679 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.h +++ b/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.h -@@ -85,6 +85,14 @@ class MountingTransaction final { +@@ -83,6 +83,14 @@ class MountingTransaction final { */ - void mergeWith(MountingTransaction&& transaction); + void mergeWith(MountingTransaction &&transaction); + /* + * Checks whether the two transactions can be safely merged. Due to @@ -60,7 +60,7 @@ index 277e9f4..38629db 100644 + * REMOVE -> DELETE | CREATE -> INSERT (2 transactions) may get changed to + * INSERT -> REMOVE -> DELETE and the state will diverge from there. + */ -+ bool canMergeWith(MountingTransaction& transaction); ++ bool canMergeWith(MountingTransaction &transaction); + private: SurfaceId surfaceId_; diff --git a/patches/react-native/react-native+0.81.4+019+fix-crash-when-deleting-expense.patch b/patches/react-native/react-native+0.83.1+019+fix-crash-when-deleting-expense.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+019+fix-crash-when-deleting-expense.patch rename to patches/react-native/react-native+0.83.1+019+fix-crash-when-deleting-expense.patch diff --git a/patches/react-native/react-native+0.81.4+021+publish-gradle.patch b/patches/react-native/react-native+0.83.1+020+publish-gradle.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+021+publish-gradle.patch rename to patches/react-native/react-native+0.83.1+020+publish-gradle.patch diff --git a/patches/react-native/react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch b/patches/react-native/react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch rename to patches/react-native/react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch diff --git a/patches/react-native/react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch b/patches/react-native/react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch similarity index 91% rename from patches/react-native/react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch rename to patches/react-native/react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch index b7ed06816bab2..17a9f8a965a6c 100644 --- a/patches/react-native/react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch +++ b/patches/react-native/react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch @@ -37,10 +37,10 @@ index 9143695..046b753 100644 onClear: true, onChange: true, diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -index 3ea6d67..61309ef 100644 +index 03262de..3b7f6fb 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -@@ -820,6 +820,11 @@ export interface TextInputProps +@@ -817,6 +817,11 @@ export interface TextInputProps */ multiline?: boolean | undefined; @@ -52,7 +52,7 @@ index 3ea6d67..61309ef 100644 /** * Callback that is called when the text input is blurred * -@@ -1077,4 +1082,9 @@ export class TextInput extends TextInputBase { +@@ -1074,4 +1079,9 @@ export class TextInput extends TextInputBase { * Sets the start and end positions of text selection. */ setSelection: (start: number, end: number) => void; @@ -63,22 +63,22 @@ index 3ea6d67..61309ef 100644 + preventFocusOnFirstResponderOnce: () => void; } diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js -index ad2bf61..2ca6e97 100644 +index ede5607..6d1e2a4 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js -@@ -1059,6 +1059,7 @@ export interface TextInputInstance extends HostInstance { - +isFocused: () => boolean; - +getNativeRef: () => ?HostInstance; - +setSelection: (start: number, end: number) => void; -+ +preventFocusOnFirstResponderOnce: () => void; +@@ -1064,6 +1064,7 @@ declare class _TextInputInstance extends ReactNativeElement { + isFocused(): boolean; + getNativeRef(): ?ReactNativeElement; + setSelection(start: number, end: number): void; ++ preventFocusOnFirstResponderOnce(): void; } - /** + export type TextInputInstance = _TextInputInstance; diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -index fb29328..90fc6f2 100644 +index 5d05624..bbb6465 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -@@ -481,6 +481,11 @@ function InternalTextInput(props: TextInputProps): React.Node { +@@ -487,6 +487,11 @@ function InternalTextInput(props: TextInputProps): React.Node { ); } }, @@ -106,7 +106,7 @@ index 9da8899..bf87ffd 100644 export default supportedCommands; diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index 9f4863a..18980d7 100644 +index d30983f..eb57eb8 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm @@ -76,6 +76,16 @@ static NSSet *returnKeyTypesSet; @@ -137,7 +137,7 @@ index 9f4863a..18980d7 100644 if (newTextInputProps.acceptDragAndDropTypes != oldTextInputProps.acceptDragAndDropTypes) { if (!newTextInputProps.acceptDragAndDropTypes.has_value()) { _backedTextInputView.acceptDragAndDropTypes = nil; -@@ -390,6 +404,15 @@ static NSSet *returnKeyTypesSet; +@@ -393,6 +407,15 @@ static NSSet *returnKeyTypesSet; - (BOOL)textInputShouldBeginEditing { @@ -153,7 +153,7 @@ index 9f4863a..18980d7 100644 return YES; } -@@ -613,6 +636,16 @@ static NSSet *returnKeyTypesSet; +@@ -616,6 +639,16 @@ static NSSet *returnKeyTypesSet; _comingFromJS = NO; } @@ -203,10 +203,10 @@ index f674d98..6ad10ec 100644 RCTLogError(@"%@ received command %@, which is not a supported command.", @"TextInput", commandName); #endif diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp -index 6273740..211be13 100644 +index ac3adc4..5a84c01 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp -@@ -127,6 +127,12 @@ BaseTextInputProps::BaseTextInputProps( +@@ -123,6 +123,12 @@ BaseTextInputProps::BaseTextInputProps( "multiline", sourceProps.multiline, {false})), @@ -219,7 +219,7 @@ index 6273740..211be13 100644 disableKeyboardShortcuts(convertRawProp( context, rawProps, -@@ -228,6 +234,7 @@ void BaseTextInputProps::setProp( +@@ -224,6 +230,7 @@ void BaseTextInputProps::setProp( RAW_SET_PROP_SWITCH_CASE_BASIC(multiline); RAW_SET_PROP_SWITCH_CASE_BASIC(disableKeyboardShortcuts); RAW_SET_PROP_SWITCH_CASE_BASIC(acceptDragAndDropTypes); @@ -228,10 +228,10 @@ index 6273740..211be13 100644 } diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h -index 5802350..b3f34cc 100644 +index 8994a42..332b3d1 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h -@@ -80,6 +80,8 @@ class BaseTextInputProps : public ViewProps, public BaseTextProps { +@@ -77,6 +77,8 @@ class BaseTextInputProps : public ViewProps, public BaseTextProps { bool multiline{false}; diff --git a/patches/react-native/react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch b/patches/react-native/react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch rename to patches/react-native/react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch diff --git a/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch b/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch new file mode 100644 index 0000000000000..c4c5779c85bb4 --- /dev/null +++ b/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch @@ -0,0 +1,518 @@ +diff --git a/node_modules/react-native/Libraries/Interaction/InteractionManager.js b/node_modules/react-native/Libraries/Interaction/InteractionManager.js +index 410dfe3..d36fb18 100644 +--- a/node_modules/react-native/Libraries/Interaction/InteractionManager.js ++++ b/node_modules/react-native/Libraries/Interaction/InteractionManager.js +@@ -10,28 +10,45 @@ + + import type {EventSubscription} from '../vendor/emitter/EventEmitter'; + +-const invariant = require('invariant'); +- + export type SimpleTask = { +- name: string, +- run: () => void, ++ name: string, ++ run: () => void, + }; + export type PromiseTask = { +- name: string, +- gen: () => Promise, ++ name: string, ++ gen: () => Promise, + }; +-export type Task = SimpleTask | PromiseTask | (() => void); + + export type Handle = number; + + // NOTE: The original implementation of `InteractionManager` never rejected + // the returned promise. This preserves that behavior in the stub. + function reject(error: Error): void { +- setTimeout(() => { +- throw error; +- }, 0); ++ setTimeout(() => { ++ throw error; ++ }, 0); + } + ++import type {Task} from './TaskQueue'; ++ ++import EventEmitter from '../vendor/emitter/EventEmitter'; ++ ++const BatchedBridge = require('../BatchedBridge/BatchedBridge').default; ++const TaskQueue = require('./TaskQueue').default; ++const invariant = require('invariant'); ++ ++export type {Task, SimpleTask, PromiseTask} from './TaskQueue'; ++ ++export type Handle = number; ++ ++const _emitter = new EventEmitter<{ ++ interactionComplete: [], ++ interactionStart: [], ++}>(); ++ ++const DEBUG_DELAY: 0 = 0; ++const DEBUG: false = false; ++ + /** + * InteractionManager allows long-running work to be scheduled after any + * interactions/animations have completed. In particular, this allows JavaScript +@@ -83,106 +100,154 @@ function reject(error: Error): void { + * + * @deprecated + */ +-const InteractionManagerStub = { +- Events: { +- interactionStart: 'interactionStart', +- interactionComplete: 'interactionComplete', +- }, +- +- /** +- * Schedule a function to run after all interactions have completed. Returns a cancellable +- * "promise". +- * +- * @deprecated +- */ +- runAfterInteractions(task: ?Task): { +- then: ( +- onFulfill?: ?(void) => ?(Promise | U), +- onReject?: ?(error: mixed) => ?(Promise | U), +- ) => Promise, +- cancel: () => void, +- ... +- } { +- let immediateID: ?$FlowFixMe; +- const promise = new Promise(resolve => { +- immediateID = setImmediate(() => { +- if (typeof task === 'object' && task !== null) { +- if (typeof task.gen === 'function') { +- task.gen().then(resolve, reject); +- } else if (typeof task.run === 'function') { +- try { +- task.run(); +- resolve(); +- } catch (error) { +- reject(error); ++const InteractionManagerImpl = { ++ Events: { ++ interactionStart: 'interactionStart', ++ interactionComplete: 'interactionComplete', ++ }, ++ ++ /** ++ * Schedule a function to run after all interactions have completed. Returns a cancellable ++ * "promise". ++ */ ++ runAfterInteractions(task: ?Task): { ++ then: ( ++ onFulfill?: ?(void) => ?(Promise | U), ++ onReject?: ?(error: mixed) => ?(Promise | U), ++ ) => Promise, ++ cancel: () => void, ++ ... ++ } { ++ const tasks: Array = []; ++ const promise = new Promise((resolve: () => void) => { ++ _scheduleUpdate(); ++ if (task) { ++ tasks.push(task); + } +- } else { +- reject(new TypeError(`Task "${task.name}" missing gen or run.`)); +- } +- } else if (typeof task === 'function') { +- try { +- task(); +- resolve(); +- } catch (error) { +- reject(error); +- } ++ tasks.push({ ++ run: resolve, ++ name: 'resolve ' + ((task && task.name) || '?'), ++ }); ++ _taskQueue.enqueueTasks(tasks); ++ }); ++ return { ++ // $FlowFixMe[method-unbinding] added when improving typing for this parameters ++ then: promise.then.bind(promise), ++ cancel: function () { ++ _taskQueue.cancelTasks(tasks); ++ }, ++ }; ++ }, ++ ++ /** ++ * Notify manager that an interaction has started. ++ */ ++ createInteractionHandle(): Handle { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('InteractionManager: create interaction handle'); ++ _scheduleUpdate(); ++ const handle = ++_inc; ++ _addInteractionSet.add(handle); ++ return handle; ++ }, ++ ++ /** ++ * Notify manager that an interaction has completed. ++ */ ++ clearInteractionHandle(handle: Handle) { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('InteractionManager: clear interaction handle'); ++ invariant(!!handle, 'InteractionManager: Must provide a handle to clear.'); ++ _scheduleUpdate(); ++ _addInteractionSet.delete(handle); ++ _deleteInteractionSet.add(handle); ++ }, ++ ++ // $FlowFixMe[unclear-type] unclear type of _emitter ++ // $FlowFixMe[method-unbinding] added when improving typing for this parameters ++ addListener: _emitter.addListener.bind(_emitter) as ( ++ eventType: string, ++ // $FlowFixMe[unclear-type] unclear type of arguments ++ listener: (...args: any) => mixed, ++ context: mixed, ++ ) => EventSubscription, ++ ++ /** ++ * A positive number will use setTimeout to schedule any tasks after the ++ * eventLoopRunningTime hits the deadline value, otherwise all tasks will be ++ * executed in one setImmediate batch (default). ++ */ ++ setDeadline(deadline: number) { ++ _deadline = deadline; ++ }, ++}; ++ ++const _interactionSet = new Set(); ++const _addInteractionSet = new Set(); ++const _deleteInteractionSet = new Set(); ++const _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate}); ++let _nextUpdateHandle: $FlowFixMe | TimeoutID = 0; ++let _inc = 0; ++let _deadline = -1; ++ ++/** ++ * Schedule an asynchronous update to the interaction state. ++ */ ++function _scheduleUpdate() { ++ if (!_nextUpdateHandle) { ++ if (_deadline > 0) { ++ _nextUpdateHandle = setTimeout(_processUpdate, 0 + DEBUG_DELAY); + } else { +- reject(new TypeError('Invalid task of type: ' + typeof task)); ++ _nextUpdateHandle = setImmediate(_processUpdate); + } +- }); +- }); +- +- return { +- // $FlowFixMe[method-unbinding] added when improving typing for this parameters +- then: promise.then.bind(promise), +- cancel() { +- clearImmediate(immediateID); +- }, +- }; +- }, +- +- /** +- * Notify manager that an interaction has started. +- * +- * @deprecated +- */ +- createInteractionHandle(): Handle { +- return -1; +- }, +- +- /** +- * Notify manager that an interaction has completed. +- * +- * @deprecated +- */ +- clearInteractionHandle(handle: Handle) { +- invariant(!!handle, 'InteractionManager: Must provide a handle to clear.'); +- }, +- +- /** +- * @deprecated +- */ +- addListener( +- eventType: string, +- // $FlowFixMe[unclear-type] +- listener: (...args: any) => mixed, +- context: mixed, +- ): EventSubscription { +- return { +- remove() {}, +- }; +- }, +- +- /** +- * A positive number will use setTimeout to schedule any tasks after the +- * eventLoopRunningTime hits the deadline value, otherwise all tasks will be +- * executed in one setImmediate batch (default). +- * +- * @deprecated +- */ +- setDeadline(deadline: number) { +- // Do nothing. +- }, +-}; ++ } ++} ++ ++/** ++ * Notify listeners, process queue, etc ++ */ ++function _processUpdate() { ++ _nextUpdateHandle = 0; ++ ++ const interactionCount = _interactionSet.size; ++ _addInteractionSet.forEach(handle => _interactionSet.add(handle)); ++ _deleteInteractionSet.forEach(handle => _interactionSet.delete(handle)); ++ const nextInteractionCount = _interactionSet.size; ++ ++ if (interactionCount !== 0 && nextInteractionCount === 0) { ++ // transition from 1+ --> 0 interactions ++ /* $FlowFixMe[prop-missing] Natural Inference rollout. See ++ * https://fburl.com/workplace/6291gfvu */ ++ /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See ++ * https://fburl.com/workplace/6291gfvu */ ++ _emitter.emit(InteractionManager.Events.interactionComplete); ++ } else if (interactionCount === 0 && nextInteractionCount !== 0) { ++ // transition from 0 --> 1+ interactions ++ /* $FlowFixMe[prop-missing] Natural Inference rollout. See ++ * https://fburl.com/workplace/6291gfvu */ ++ /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See ++ * https://fburl.com/workplace/6291gfvu */ ++ _emitter.emit(InteractionManager.Events.interactionStart); ++ } ++ ++ // process the queue regardless of a transition ++ if (nextInteractionCount === 0) { ++ while (_taskQueue.hasTasksToProcess()) { ++ _taskQueue.processNext(); ++ if ( ++ _deadline > 0 && ++ BatchedBridge.getEventLoopRunningTime() >= _deadline ++ ) { ++ // Hit deadline before processing all tasks, so process more later. ++ _scheduleUpdate(); ++ break; ++ } ++ } ++ } ++ _addInteractionSet.clear(); ++ _deleteInteractionSet.clear(); ++} + +-export default InteractionManagerStub; ++export default InteractionManagerImpl; +diff --git a/node_modules/react-native/Libraries/Interaction/TaskQueue.js b/node_modules/react-native/Libraries/Interaction/TaskQueue.js +new file mode 100644 +index 0000000..70e6314 +--- /dev/null ++++ b/node_modules/react-native/Libraries/Interaction/TaskQueue.js +@@ -0,0 +1,198 @@ ++/** ++ * Copyright (c) Meta Platforms, Inc. and affiliates. ++ * ++ * This source code is licensed under the MIT license found in the ++ * LICENSE file in the root directory of this source tree. ++ * ++ * @flow strict ++ * @format ++ */ ++ ++'use strict'; ++ ++const invariant = require('invariant'); ++ ++export type SimpleTask = { ++ name: string, ++ run: () => void, ++}; ++export type PromiseTask = { ++ name: string, ++ gen: () => Promise, ++}; ++export type Task = SimpleTask | PromiseTask | (() => void); ++ ++const DEBUG: false = false; ++ ++/** ++ * TaskQueue - A system for queueing and executing a mix of simple callbacks and ++ * trees of dependent tasks based on Promises. No tasks are executed unless ++ * `processNext` is called. ++ * ++ * `enqueue` takes a Task object with either a simple `run` callback, or a ++ * `gen` function that returns a `Promise` and puts it in the queue. If a gen ++ * function is supplied, then the promise it returns will block execution of ++ * tasks already in the queue until it resolves. This can be used to make sure ++ * the first task is fully resolved (including asynchronous dependencies that ++ * also schedule more tasks via `enqueue`) before starting on the next task. ++ * The `onMoreTasks` constructor argument is used to inform the owner that an ++ * async task has resolved and that the queue should be processed again. ++ * ++ * Note: Tasks are only actually executed with explicit calls to `processNext`. ++ */ ++class TaskQueue { ++ /** ++ * TaskQueue instances are self contained and independent, so multiple tasks ++ * of varying semantics and priority can operate together. ++ * ++ * `onMoreTasks` is invoked when `PromiseTask`s resolve if there are more ++ * tasks to process. ++ */ ++ constructor({ onMoreTasks }: { onMoreTasks: () => void, ... }) { ++ this._onMoreTasks = onMoreTasks; ++ this._queueStack = [{ tasks: [], popable: false }]; ++ } ++ ++ /** ++ * Add a task to the queue. It is recommended to name your tasks for easier ++ * async debugging. Tasks will not be executed until `processNext` is called ++ * explicitly. ++ */ ++ enqueue(task: Task): void { ++ this._getCurrentQueue().push(task); ++ } ++ ++ enqueueTasks(tasks: Array): void { ++ tasks.forEach(task => this.enqueue(task)); ++ } ++ ++ cancelTasks(tasksToCancel: Array): void { ++ // search through all tasks and remove them. ++ this._queueStack = this._queueStack ++ .map(queue => ({ ++ ...queue, ++ tasks: queue.tasks.filter(task => tasksToCancel.indexOf(task) === -1), ++ })) ++ .filter((queue, idx) => queue.tasks.length > 0 || idx === 0); ++ } ++ ++ /** ++ * Check to see if `processNext` should be called. ++ * ++ * @returns {boolean} Returns true if there are tasks that are ready to be ++ * processed with `processNext`, or returns false if there are no more tasks ++ * to be processed right now, although there may be tasks in the queue that ++ * are blocked by earlier `PromiseTask`s that haven't resolved yet. ++ * `onMoreTasks` will be called after each `PromiseTask` resolves if there are ++ * tasks ready to run at that point. ++ */ ++ hasTasksToProcess(): boolean { ++ return this._getCurrentQueue().length > 0; ++ } ++ ++ /** ++ * Executes the next task in the queue. ++ */ ++ processNext(): void { ++ const queue = this._getCurrentQueue(); ++ if (queue.length) { ++ const task = queue.shift(); ++ try { ++ if (typeof task === 'object' && task.gen) { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: genPromise for task ' + task.name); ++ this._genPromise(task); ++ } else if (typeof task === 'object' && task.run) { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: run task ' + task.name); ++ task.run(); ++ } else { ++ invariant( ++ typeof task === 'function', ++ 'Expected Function, SimpleTask, or PromiseTask, but got:\n' + ++ JSON.stringify(task, null, 2), ++ ); ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: run anonymous task'); ++ task(); ++ } ++ } catch (e) { ++ e.message = ++ // $FlowFixMe[incompatible-type] ++ // $FlowFixMe[incompatible-use] ++ 'TaskQueue: Error with task ' + (task.name || '') + ': ' + e.message; ++ throw e; ++ } ++ } ++ } ++ ++ _queueStack: Array<{ ++ tasks: Array, ++ popable: boolean, ++ ... ++ }>; ++ _onMoreTasks: () => void; ++ ++ _getCurrentQueue(): Array { ++ const stackIdx = this._queueStack.length - 1; ++ const queue = this._queueStack[stackIdx]; ++ if ( ++ queue.popable && ++ queue.tasks.length === 0 && ++ this._queueStack.length > 1 ++ ) { ++ this._queueStack.pop(); ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && ++ console.log('TaskQueue: popped queue: ', { ++ stackIdx, ++ queueStackSize: this._queueStack.length, ++ }); ++ return this._getCurrentQueue(); ++ } else { ++ return queue.tasks; ++ } ++ } ++ ++ _genPromise(task: PromiseTask) { ++ // Each async task pushes it's own queue onto the queue stack. This ++ // effectively defers execution of previously queued tasks until the promise ++ // resolves, at which point we allow the new queue to be popped, which ++ // happens once it is fully processed. ++ this._queueStack.push({ tasks: [], popable: false }); ++ const stackIdx = this._queueStack.length - 1; ++ const stackItem = this._queueStack[stackIdx]; ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: push new queue: ', { stackIdx }); ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: exec gen task ' + task.name); ++ task ++ .gen() ++ .then(() => { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && ++ console.log('TaskQueue: onThen for gen task ' + task.name, { ++ stackIdx, ++ queueStackSize: this._queueStack.length, ++ }); ++ stackItem.popable = true; ++ this.hasTasksToProcess() && this._onMoreTasks(); ++ }) ++ .catch(ex => { ++ setTimeout(() => { ++ ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`; ++ throw ex; ++ }, 0); ++ }); ++ } ++} ++ ++export default TaskQueue; ++ From f9204b28a677e063817a47e55c067b8db3605015 Mon Sep 17 00:00:00 2001 From: war-in Date: Fri, 16 Jan 2026 17:58:45 +0100 Subject: [PATCH 02/56] chore: update more libraries --- .../com/expensify/chat/MainApplication.kt | 39 +- android/gradle/wrapper/gradle-wrapper.jar | Bin 43764 -> 45457 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- gradleUtils/PatchedArtifactsSettings.gradle | 1 + modules/group-ib-fp/android/build.gradle | 1 - .../android/gradle/wrapper/gradle-wrapper.jar | Bin 59536 -> 45457 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- package-lock.json | 1209 +++++++---------- package.json | 28 +- ...ed-lists+0.83.1+001+osr-improvement.patch} | 0 patches/react-native-reanimated/details.md | 9 - ...1.5+001+catch-all-exceptions-on-stoi.patch | 13 - 12 files changed, 513 insertions(+), 791 deletions(-) rename patches/@react-native/virtualized-lists/{@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch => @react-native+virtualized-lists+0.83.1+001+osr-improvement.patch} (100%) delete mode 100644 patches/react-native-reanimated/details.md delete mode 100644 patches/react-native-reanimated/react-native-reanimated+4.1.5+001+catch-all-exceptions-on-stoi.patch diff --git a/android/app/src/main/java/com/expensify/chat/MainApplication.kt b/android/app/src/main/java/com/expensify/chat/MainApplication.kt index d8bb98d5dc2ba..081ea924771c9 100644 --- a/android/app/src/main/java/com/expensify/chat/MainApplication.kt +++ b/android/app/src/main/java/com/expensify/chat/MainApplication.kt @@ -28,30 +28,21 @@ import expo.modules.ReactNativeHostWrapper import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative class MainApplication : MultiDexApplication(), ReactApplication { - override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(this, object : DefaultReactNativeHost(this) { - override fun getUseDeveloperSupport() = BuildConfig.DEBUG - - override fun getPackages(): List = - PackageList(this).packages.apply { - // Packages that cannot be autolinked yet can be added manually here, for example: - // add(MyReactNativePackage()); - add(ShortcutManagerPackage()) - add(BootSplashPackage()) - add(ExpensifyAppPackage()) - add(RNTextInputResetPackage()) - add(NavBarManagerPackage()) - } - - override fun getJSMainModuleName() = ".expo/.virtual-metro-entry" - - override val isNewArchEnabled: Boolean - get() = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED - override val isHermesEnabled: Boolean - get() = BuildConfig.IS_HERMES_ENABLED - }) - - override val reactHost: ReactHost - get() = getDefaultReactHost(applicationContext, reactNativeHost) + override val reactHost: ReactHost by lazy { + getDefaultReactHost( + context = applicationContext, + packageList = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + add(ShortcutManagerPackage()) + add(BootSplashPackage()) + add(ExpensifyAppPackage()) + add(RNTextInputResetPackage()) + add(NavBarManagerPackage()) + }, + ) + } override fun onCreate() { super.onCreate() diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index 1b33c55baabb587c669f562ae36f953de2481846..8bdaf60c75ab801e22807dde59e12a8735a34077 100644 GIT binary patch delta 37256 zcmXVXV`E)y({>tT2aRppNn_h+Y}>|ev}4@T^BTF zt*UbFk22?fVj8UBV<>NN?oj)e%q3;ANZn%w$&6vqe{^I;QY|jWDMG5ZEZRBH(B?s8 z#P8OsAZjB^hSJcmj0htMiurSj*&pTVc4Q?J8pM$O*6ZGZT*uaKX|LW}Zf>VRnC5;1 zSCWN+wVs*KP6h)5YXeKX;l)oxK^6fH2%+TI+348tQ+wXDQZ>noe$eDa5Q{7FH|_d$ zq!-(Ga2avI1+K!}Fz~?<`hpS3Wc|u#W4`{F+&Nx(g8|DLU<^u~GRNe<35m05WFc~C zJM?2zO{8IPPG0XVWI?@BD!7)~mw6VdR;u4HGN~g^lH|h}=DgO$ec8G3#Dt?Lfc6k3v*{%viJm3wtS3c`aA;J< z(RqusS%t%}c#2l@(X#MCoIQR?Y3d#=zx#Htg_B4Z`ziM-Yui|#6&+YD^=T?@ZJ=Q! z7X;7vYNp%yy01j=nt5jfk%Ab9gFk=quaas)6_6)er_Ks2Qh&>!>f&1U`fyq-TmJot z_`m-)A=X+#_6-coG4Yz0AhDL2FcBpe18AnYp@620t{2)2unUz%5Wf!O*0+?E{bOwx z&NPT1{oMo(@?he0(ujvS+seFH%;Zq;9>!Ol43(Wl;Emujm}x&JU>#L|x_ffl=Az*- z-2mA00ap9V4D*kZ+!4FEEERo9KUG6hZNzZpu`xR zCT(HG$m%9BO;66C-({?7Y(ECD43@i3C=ZbhpaT+{3$R>6ZHlQ&i3pzF>(4O}8@gYB&wID6mkHHFf2O_edpaHIMV3E)&;(0bLUyGf(6&=B*)37Tubx zHB;CkwoF#&_%LCS1Z*Zb3L|n5dIIY!N;GMpEC7OFUVdYiJc=!tt2vh+nB)X?L(Oa@nCM zl-Bb`R~({aYF$Ra(UKd97mfin1l~*Gb=WWk^92POcsy+`D=Z~3OIqqKV5^))b_q;? zWBLW8oTQ)h>o_oRyIm3jvoS(7PH0%~HTbc)qm&v@^@;bii|1$&9ivbs@f*{wQd-OVj> zEX>{AAD?oGdcgR^a`qPH<|g)G3i_)cNbF38YRiWMjiCIe9y|}B=kFnO;`HDYua)9l zVnd68O;nXZwU?p8GRZ!9n#|TQr*|2roF-~1si~E3v9J{pCGXZ-ccUnmPA=iiB0SaT zB5m^|Hln3*&hcHX&xUoD>-k2$_~0h9EkW(|gP=1wXf`E4^2MK3TArmO)3vjy^OzgoV}n6JNYQbgAZF~MYA}XYKgLN~(fx3`trMC7 z+h#$&mI0I*fticKJhCd$0Y_X>DN2^G?;zz|qMwk-1^JIZuqo?{{I++YVr5He2{?S3 zGd9eykq!l0w+LGaCofT%nhOc8bxls9V&CfZCm?V-6R}2dDY3$wk@te znGy2pS$=3|wz!fmujPu+FRUD+c7r}#duG$YH>n$rKZ|}O1#y=(+3kdF`bP3J{+iAM zmK@PKt=WU}a%@pgV3y3-#+%I@(1sQDOqF5K#L+mDe_JDc*p<%i$FU_c#BG;9B9v-8 zhtRMK^5##f*yb&Vr6Lon$;53^+*QMDjeeQZ8pLE1vwa~J7|gv7pY$w#Gn3*JhNzn% z*x_dM@O4QdmT*3#qMUd!iJI=2%H92&`g0n;3NE4S=ci5UHpw4eEw&d{mKZ0CPu`>L zEGO4nq=X#uG3`AVlsAO`HQvhWL9gz=#%qTB?{&c=p-5E3qynmL{6yi$(uItGt%;M& zq?CXHG>1Tt$Mjj@64xL>@;LQJoyxJT+z$Pm9UvQu_ zOgARy33XHSDAhd8-{CQHxxFO#)$ND8OWSSc`FXxJ&_81xa)#GmUEWaMU2U$uRfh{2 z^Bbt+m?(qq*8>{CU&3iux+pH3iR@fwq?AloyDXq-H7PI9Z_h^cN>b$JE|ye(Utu_3 zui=tU1gn{DlJ-V-pQ;UUMC_0_DR$&vkG$?5ycZL$h>(9sRbYm0J7m|>+vJezi}Tpj zu0Fagr*Uq#I>f}E*mrje=kpuUQ*0f$Gv0Cvzwq`i(*jym$x1Qn#y06$L3$rIw{D2Y z2t0)ZBY}{5>^%oGuosKCxx|fkm~97o#vC2!bNu7J_b>5x?mw3YD!97su~EaDW+jm9 zv5U5ts0LRP4NcW@Hs2>X+-8kkXjdP?lra!W44a5rQy42ENhP|AR9IrceE`Z5hZ=A# zdB{w_f`EXrRy*=6lM|=@uFjWSQYrvM{6VopTHD)Zh2U;L8Jq!Y z<4W)hb34~;^0;c=TT-!TT;PP%cx!N;$wAaD@g7}7L}qcr!|HZzHUn=zKXh}kA!LED zDGexnb?~xbXC?grP;wvpPPTsM$VD?sydh3d2xJK>phZ6;=?-{oR#4l?ief)`Hx;ns zJzma8sr}#;{F|TLPXpQxGK+IeHY!a{G?nc#PY5zy#28x)OU*bD^UuApH^4mcoDZwz zUh+GFec2(}foDhw)Iv9#+=U+4{jN_s$7LpWkeL{jGo*;_8M7z;4p{TJkD*f>e9M*T z1QMGNw&0*5uwPs8%w=>7!(4o?fo$lYV%E3U#@GYFzFOu;-{Ts0`Sp1g0PPI_ec$xF zd1BpP!DZUBUJ$p^&pEyINuKZXQmexrV0hww?-0%NVpB80R5sMiec)m>^oV{S4E%us zn(z>anDpcWVNO~3& zrdL}9J$`}x4{=FZ?eJ<4U|@+b{~>MyM-FJCgKvS;ZJ>#*Su9OLHJZ0(t5AC`;$kWD z%_N}MZXBG2xYf#*_Z(>=crE*4l0JBua>;s8J9dfo#&%&)w8|=EC`0ywO7L0l>zDo~ zSk1&)d1%BFZwCV2s?_zwB=5`{-;9solZ)pu^4H6Q!#8|Mh26hJvKG8K$T2oIH2lD9 zSa;|Hv_3~>`yy6QSsN%hrm!+tp{**j{pe&fYcWg8S0z^Q$66BFdDg6)Br*)!n3T+f z7~s_8eK4HtrT|%K<&t_`(NsPW+(IQ1f3GA*0oO{eCE7J%-fGL;6Y~#&-N-r*DV!hA zvj}4FFW~Cd9z#EaR@nx`bW z48Tg|k5nzV-I*vIoC0a)@?_;DtZk(JY;n_LrA^uee{j#$h3}fNY*15` zl2wj>M{PmUHB3KRXBP2GWW|B7RZW({nuZJGN2O-u=#BA(@vG^ow3n$e7u=+dSJo%+ zF)UA%K8xA+r94&p-?FYx+LqfW)RrjSnFBj{B;6(5co4rV6V#XI75BFVh*?at%%o6j$5)u2|TE&BCB`euH0!jNz z5(Lf$;>D3VQP||uintqX8WPrn*?+)6mD`K=Txz+5gD>2GE zk!IdlA{A#%`Ll-BJj08U>fA!r6S02S^dX(izeGM4LcY>~g^U$)vw% zdV@b2g#?}*)+*iDWmOHR`-VCd(rD_1PSCs(b~8Qr69bhp8>?*1qdrRZCA|m@3{+tW zQyre2^zuuMI6PZ0R9!Ql_Aws+fjw68TGiR%jK(IzwVTEvUZ`9~SQ_RVJiVHHcO_mgr5 z9H|@8GY4tUvG3DNTjSb~kv-P$F03=Cz+u6nW_AlsxpZ4xg~w3!#g}`r_j0 z13GpvKRIs?B&h=op~7Uj?qKy19pd+{>E+8^0+v2g1$NZ-xTn zJ4$dp9pdQ7%qaPC?N<1@tQC+7uL#of)%e3l>Yx4D5#Cl6XQNp9h0XZDULW-sj`9-D z3CtoYO*jY0X-GVdAz1}9N%DcyYnA(fSSQO zK{a}k4~XXsiA^I#~52amxe4@gMu*wKLS>TvYXUagd*_35z z>6%E?8_dAs2hN;s-nHDRO?Cgg5)aebjwl7r`)r{!~?JECl!xiYr+P}B4Zwr zdOmbCd<-2k`nIs9F#}u;+-FE0a&2T;YbUu)1S^!r3)DNr(+8fvzuzy2oJlVtLnEdF zE8NQJ0W#O+F<$|RG3pNI1V1a*r_M&b`pi2HLJ)v|s;GTci%_ItdssFmUAmPi<9zLCJR60QB!W zv+(O(NpSnRy_Uh2#;ko|eWNWMk1Dhm7xV7q!=uPIT+hO2+2KU*-#)1itWE(L6tH&A zGhHP!cUcQA(;qKqZ^&S>%-90>_??#B3+tPkX!G+a94?X-R>fCt_^FaHOo%frkS`E> z@PzQMtrMaHn;1v>s}CYTJFn1=yizNIjcd;lN8@Psf;vOSZ3^4j^E;3BYS|daR6GP% z^m+F}lmIfj+sjDeLd`>m>78^3+?3Uo?btw;L#_{d!w9MvI&55j!1ZJGwz+UsAo^BQo?GdP^G*6=p&BL-`U1i#!DO>F=UztubL7A~l6wQKufoz!z|qq>)y!yvC?!cww9 zsN?(kvGVUGnGzaPX0c`^uk05P+fog+pTv9A0&jevIjlNrP}1MQHo{^-N^cJB22-tk z`5~#kg~Buvol0Nfve2_7ZDcNiqKt+#S);@IaC1w69Z4GR0lxxV6?~3BgH2>aAxTI|0-FcbzV01b9Ppiur#_!#Y zjY<41$oTWx?dbfsvix`{xE$*OVqrf=%ay$&4J}yK2<{S|6|=SC6bhJk)j_eLZgIEi zEH1*&%$`YPSzHsJoq@YFLK#k{s`2@fVD^0%vz1duXAirWESQ}jXjYU&FGAeY+S8Z2 z=+9u@YuUFbl143hX}wNPhCXJ!B#HSrK8x@|`}DD*d^;Da78#i{-F6YAN`mJfC4!D# z;kMqJXz_P<{=fWLnk0$BMypYBtXR*ZyGH|R5=mbzCY+&I@jo67#GS_jm?fkPa)JpGZ5&uc^>dPC^oW@oY zaxVTa-6P{GoTQU{yamt!qNk953k|$?n6XRjQ6J&~NxR62I1#X^`ouJ1I{CTcZLs2} z?+0J0*2mIcjoF!5`WU{kg?Z|={u^D|O4Rnl^q;H@6oUF3dJc>LjF~{sh;N`rA6WPt zHb_rKj|w)MHU2!G#dPNUu#jtTQ4h8b)$l;b5G|b@ZLNuO^Ld9#*1 zv{4vY`NUnYD>ZP)h&*VP*}32*8Gs(e!j9dqQ{O79-YjXdQcoX5&Kxj?GR!jcTiwo` zM^Tv$=7?5`1+bky_D01RwT5CYM5WdtrjeaD#APPq{&SQerwMYaizh?qH}rQPY`}7u zU`a4!?`Ti>a%$t5CQ2}!kkk?-}8_CjS|b3n7IoVIft*o$!U~yM&_@FToop( zr8!`nZ>CgUP{J8yVGll;5+l_$*8dv5a3(%}`Cr4!K>asPsi-7@@``vYC3 zS*?}cQYaIc>-n%KsKg|+;=iPZ0y0;4*RVUclP{uaNuEhQu(D_$dXZ0JMWRG$y+t4T zX708p?)DY%(m?5y?7zo;uYWGL zS&B^c=(JH19VlFfZg9~ADPAaCEpdKY8HSpVawMnVSdZ-f-tsvuzIq3D|JjG#RrNdhlof{loQVHL~Nt5_OJhCO6z)h z%}+h1yoKLmTolWBVht(^hv^z?fj|NiHL z`z6MU5+ow>A^*=^Ody9&G@-!;I-m-p^FzR*W6{h;G+VprFeqWF2;$D;64~ynHc7}K zcBdKPq}V;tH6Snzehvmlssi z8y{UmbEFNwe-Qg4C3P-ITAE>sRRpVrlLcJbJA83gcg020 zEylMTgg5^SQl#5eZsc$;s3=9ob<{>x$?FDG4P2FUi@L}k+=1)5MVe3Tb-CBoOax?` z+xlo{I%+m}4sRR$Mbz=`tvwPXe>JVe=-lMi1lE(hmAmWO>(;Ny&V9Jhda;wVi!GoC zr9%LJhlho2y$YF8WT0UvrCVb%#9jyNBHaHhHL~UyeILeAWAw^}i8$ltMr2Yp6{lvV zK9^=_@Plr%z5x2-QX1Anic_;-*AT8u%f@;5Q|x_-kS9$kbl9T;Fw3Wq_32zfcdGQ5 zsqsFFE{(;u!m_6vYVP3QUCZ>KRV8wyg@_%Ds`oA$S%wPo65gLLYhLnyP zhK{0!Ha52RV4CQ^+&a3%%Ob};CA+=XzwNEcPnc3ZouzDBxHb#WSWog z6vF+G-6b?>jfUO8f%*V2oSPN_!R6?kzr8|c+Fo*tt-C&MyzV zT>M65Pa)4#)7ao^6Jj_{`^jb;T@hb{neRGTuMwj~SD9U}q;=niF!g78n!Y0jEXRlT zrSw;qZiU2rtnnEMvN);}=q2Ww&2bA5PV9^W|0f30Zk7Ust-%Q#F!V~jy33y^($hsQ zh@n}s$T7sZUzn69tccDf-a;lg4UWYYI|2?*Lms2$ZW)GI-yaymOBZq!&aOm4 zg4iuvQM|}-y=U>fOaLFvu(`K}T5BANqjBpqrY+RxviWLz<wNld3Q zOBi{x%;Dka>Yc!KK(3mP@37jmo@Mz0cH(Rqg|+z2!Th&@QRP$Zlhz@#qUVwNe+&<| z*r@@F%Q4dEBnm;=G#@xvANE`CUE53}ZBNBrRuqYi#x%afta6su7&}a?a=G)rKmkK) zfjZ$n!{l&|aa2~)$69+Gbq!LA1^Pti_X2wMfoZ6VO{Rm1AT#$uuVZ(BazVh&l@OW- zT&hmX+Zb!T-c3!_KhLAl`Sd4aJnvwWL)ATcbxTo)LJ8GZ-c{m0EPu+zW~Ir!S2p^R z)7utF6qj3+BpAq8RU~RXZ#vwr6fQzM@c$4CPixQ3Z%q~(Alx$As{Y5{Cbp0;11^${C_}W!KX=~W!zReTO z?aa+Pn73jCR%p?&9s643`gJ$-OuXOBFgbk78U`PTq*5GyBOEGeW2FOdY!hji?{7H` zRjP4h^JZ8T0%?nBNA2PC9Cc=m(>G{}=##WMe%2j)u<5pldvt2csC#l0wc#&V%;cyk zWRp}bwR8iEi_c7JC-~eFiuoiUu+mE;l12%pk|UO09_2 z>eE1B&MK95QzvySEAf?itp=4n5RZtQ$!2{B1<9x*@cLWsfmJqMk*oh}fD%5O4^GCN z37Y83rWzv~4>w0jdKxzV49lPdpX1creItd8F$w=Lfu!az*ai2r-M*`MZH*OY?sCX@ z?U*kR}2ccC4KCV_h!awS%0cY($fD>sPlU`(3S4OKo!ffovsG`JkUc7-2 z+}NOCASI}n03S7Dz*1Nh^82}i7z7eqFyri!Um!##*VNy`%3$mPBlXn`ip9zHJE%}z zjt$;Rdq|?+3{hmT35bHJV`Xj#uR;re^f zVF>~hbu#vv>)49SP@HCVD>4wm#-7fGzH~Z-9-*WcYooVzz{or zHO^zLrYU#h5{)1kv@V6piPMn0s+=lG*1O{VbBXjx5ulO4{>LN16ph1ywnupD^sa3h z{9pWV8PrlGDV-}pwGz5rxpW)Z(q30FkGDvx1W6VP!)@%IFF_mSnV1O`ZQ$AS zV)FekW4=%FoffthfbITk2Cog9DeIOG7_#t?iBD)|IpeTaI7hjKs;ifz&LZkngi5Wr zq)SCWvFU4}GhS1suQ|iWl!Y^~AE{Q=B1LN-Yso3?Mq1awyiJKEQNP)DY_us6|1NE7 z@F1QJFadv}7N2~GY3Sm`2%flyD#nF-`4clNI)PeTwqS{Fc$tuL_Pdys03a zLfHbhkh#b2K=}JRhlBUBrTb(i5Ms{M31^PWk_L(CKf4i|xOFA=L1 z2SGxSA@2%mUXb(@mx-R_4nKMaa&=-!aEDk2@CjeWjUNVuFxPho4@zMH-fnRE*kiq| z7W?IE;$LX@ZJBKX5xaxurB-HUadHl%5+u|?J5D^3F-7gEyPIBZuNqHJhp&W_b9eBC zJ#)RQwBB6^@slM1%ggGG#<9WBa0k7#8Q-rdGsMQE@7z%_x3TZ;k?!c2MQ7u^jDu4ZI;T9Fnv^rB~;`xB+I-fZa&&=T>N@GuNZd-jiU%R`> zdg41iOzr9Z`rfOKj-A8r=gst5Bv@tY-j?$)^TPH6IGW1>FRrd?y9AsafFhfac5sfS z!z_v2h`^Y(y_>97r`7yy%gWc{J7hW2&B`p#p}HXCVi*^HJvp2-WzYKK^I4;72ymXKPRH?=UE&U!VZMv+EHmXG9J91O ztTxu>>##+KkI0EuT}Sq zm1AnDS6&3GWLaQSXKe1bcPXaJ;Cpn1(2ZpSgh-+t8pu7ACtHW-w z<%tjAl1TPw3()A?%a1aRDEusI&LO}cTlZJv#_Wah0tMU9+=ab6I>onMsi!pR?C8Qi5hBK zz~WZrR}JHGK$y_~ryEaJGbP-M9fs{8KKm|Oo5bMEcgeL%l-iZiSFYCuq@`3!w!#Yr zyuV`jA#slqYf5hz*}vq-Jjk;>@MVJEG$gD>268u)mQ?UX5_cq>+I9Gg=_XKP8SSI# zm9^(40#wZfS(o{m6fCDHa@iWB9K#B^&xd3Yd%)Z;i8n9=i54mA7VAyT<~E*Q{aT*% z>qGD?#Y6ot;FivJ6HSn$Px^aWo!iJ*j@fA8l#tVL{}|ZWe)`UXEmhPU<5(Wmr}hqO z5x8Si8g(bqEp+Rc$fq(aPVy$*?HhLEd5uAd1MD6Ghg$&DI5kDBsqMpF5gO+JmIpY3 z#vKA2w~URZy?*7nOwW>Fa^-6H1BJ1%*}Y?Wm4yL%!Ls>9fr5L9%(BKIDLKy%@Q+J- zK+!+kCvuSEn$lGSdns&>@c#nqJf7k*gglAyXSUIASL-C4oMoCYoJ4-@)SNK9mW)SsFda!>q`@Vq;j9o6kQcuH( z41;6DW{~4lbk1Ug=5gfQLld^uo+$*@YA}!bN}ekTEtA3B=6-ztZ9^KDzT#S7BUr#& zYXGhILp+T`lKFHBX7me|SCAm+5~iY87Hb=_z8oEE5o+W=4-*xQBPrada%)U72lD)Fm8Xpm0}{*^f>JwiSpjvoLD#q#n@nTuW!I4?JUPJ1AjXgc!au&1fu zo+XX`WjA*dTfSjj)_M5wrVFz?6r2)$`Hr){4FK{m7Eh1Mm<=PBV3=*yl_^UNfO z6)R`HRf7)be9|yAPbcC5(Q*gZm#o zt7hlICpCLq(o&n`0gy2Qnt->2DdUH$g*Zcp^05HspJd7idiX14g>j&@ROzf%K=6EGx<> z%L$cau&Jb&x^VE1z}9jo{_lJ$L1I59^a$x#uI>l4``?WWR>Z$t(*p+*j0#c^W}pw`7oI1R9MI?&A37S03`}wlOp_CBmD~javahP%)DcMTJMSDph`RPAvUaWgQo-L;&Ag)hZsl zl;s>Lq?@9lJI=cSo(K)Y^Z7{cQAo0GXA+zc0iwhzC07UV^X_0(CRx|h96VB!R3e+B z0g(jHwBdryOVB5jtt>yrYsRdLU-%G_vUv1JU>Z)CKUNy&7lyb#bDn&t{_KJx+H*i)ia<4j*Tru1+K zHg8V11BJ*|KFH>(B&-T&fc>~VYEE#1>W<%1amEqb;Cx7lTKzpD1Ltn_;l1=%z>2OyrQ=%ByoQnP`;Y zP?U`ye<0gnxlJ~8ulNd&7IC%B6y_+)3TZi+BD2+0PjA0V7J<>wYjxO#bM8kp!qfOy zZ|e$u8^hUt8J6Z7f`)!#Ad7Cn6ZiPSNC`GYMq>`S-JwwZ4Yn1-9@020LZ#Ya>i-!O zG4rl1X#e(NTK_Ll@f1`9D$6UP3#0f=U9z6nlhIReA4B4S;HWbZvC%~D$yp-$TofHH zY#aEAPIK0T!roE7epx6;AmQ^r7c6GL4F~y^UV2|GRmeQd{M!r#%Q-0PP0h?iJ~$&z zu~t|k=Z0ToUqw{Q!CW6zIo3)$LNne>AUO>iOLxu7h|lPtb?ci0s^Lm@2*(GP(TnK$ z3>M6F^KhG15qwqU{v2lBHD}#CPO2BP5c_EXSAb9-s^2dhkwi&j!H)bBF#=VWwXksQH>v4%Bsp=NgY>HV9E&8kcoFGVNHb7LbeNdKxm7L zkFWH_GKiz)r$?X%_ROX;8o)O;drZG+3b()@^9Kmi))@1!v=uxh7tia$+1mBk$+;48 z1V`@<9-9K>&np9#xsaOg` z>wl~mcXr=877@BzV*93nP^h^U0@UwC@K8%jIAe_IctQCA3zYNWWSLTET@9=gqXH{! z4ek8YxI1;`Wb)i>s(eY1M;?EaBqS)E?#sJmf#Y6jsG2G!^E73>AAgVPgi4f^yXsza zwq3<{qW`cY#YMU|8*oCt3z{IC1(Z?o%w3iV6}=*V=nx5*Po(u_^{%DqCLXU_6htol z={XfRa_S~F;4Zsw;6RSl-A(OGkDu48`uD*3(noV(L0!J@%sPptPL%FO^cKplLC;iq zTaTB<+O+D&*~2DrK6^u%XT})Jrc7>+Hj@xOlJlVxz4fy*1?b@Oi^8FG!bqlBH8o!n z>~F#%7}Poj%beNU1S&5x!B+k`Ca=z5lnsMj@seyz#H( zBmYWn0(6TaaS}moWyC)pJxlfy`-$oV7Oskdn!-)Yc;V#3KYe*_ZGMhVdQ0L9fyF4c z-wSiCOl=1PDWzMyw4}bo!6xYM|Aw?nLrCr0-s!v16Bb%Hvl_Espc#9hP&tv$`U6UJ zy^vaxzV#q$tN}oEh{kW^cVrO~8#|ojb2+G<0z_A%FyCY0<2yecnF&67?RhxR%0bwr zO1dvJ%fy*DkD7waZn&$Lz4m{SZpn@EBm`Cp(=5XLnY8jZbN*?W$|%bwS@18_msB5O z^ixjhgR#<2tP2uito2!ptSztQDEd+KV~yUAEvp{s`!dF3N-51kNJ)|L9zzB!N5})3 z2~gg%x^~{W$L4p;hMSn>=&!~jT53Mq?9VDefsY0g6wH<%_B|S_J#guV>7?S+x6XC>d?#MLnx+j~p-a?O2PWCkw%M$X&jl*xmluhFy(z79P;5Y|x!^O`&yOpw?&mCBxakmlR07DAM zRKSK)gruDZtjP-;Vx;=Gn^iT?OiB&G4uqX;G{a(>XF9;n%3+=X3NV{`kG@klzsL`M zWx^4-d7^~n9gOVl;0ud;e}}M95=h0L2^TQr*7uYZ8A1f9<+bLS;AnnuDu$&T@j{>!r3Ytg>hxTM*Uy13Vi)!1oH?iC1C2m=wdh8b%2p`n&3zYo) z4OH-=jYTC1udKOaeuVSp#60OwD!vyCRY{Fk?2`xa9NN<_w%%DGfe5?g#KahJyn6?%AwY{L&=pPJZj?FaEXqYa29=8TUx^^gTZ_L0x2tI&!QN-Jy^qVvtg z98&rSm50IM)&OVeW7$c1)yh7`RPp(`f~=Z@M9T;!`J~BnlcYPzzXHC$1~A>FOYZD0 z%s+A8EeGmXA&j-+NVD;*hLrAb&m><5a1r^wEEPV~O{9&oT&XQFn* zSI0G0vXOaD`|zKYld3NhDff?|p#EP1E+#Ds)cN0A_iy7vCxro14W*N*bVEc(xzAa- zk5s=`2rN1p*?bl0V%)uD+Ftm7=NY>NGnS2F@==Nz|2Rs6uAGisqqK*`^vm>*oga5o zpU*F+2*2pk%siXg+T#54m|R@cxqtYnacSIt+j5Phm^kYG!xNsLiDsJGkGY9Ql)DSIe$RC;4mV*-foNZg$JC$AX`+)tBlw zp|Eva!~!~Uny7m}0}x1LGd;$Um<|$JE9I3bq0FI3$RcDohUM`xy?b4HomEe&Cl_<# zct@|E6X^qCl>bnhX`;-G_mlO@;!$M$QYO$`P%=PtmK!j_hvOzNJ9*26h0+58UYc zChyB)J`r^Y>V3XqNQ?_W?_oRBY+@RYXAOZCAa-&H9>VfzCc%Ls&)0{~dXtWEQFS;qps^H_eaWb63T%Jmdq=132qfOJj; z^o!D$8dRA3XPaeB3}}qvc%-aXuob>UCE)F6P5ro3cb!#ay8C7=2MI0M<@Spslua!Y zfH*S;lhxG@Wof;QAa_?t7?03?HrKqeQ}NtxoW(0tgJ!6g%uz&UZQvZiZ*_<&^~U)- z!V4a&9U%vfoGl5RFBq{M(&r|a^e5(;xiFM2v(CV25AGXix*J<43);ewr!ap|`~|Q+ zS`#Wf2A!X__5S-QwC|AR<0n_t;F<7&+wb%%%ga`QI~+7ES{4qW)(xE-yUne2BLUGF zLiYE5v|w~x`RfrTF`QoXzl=h`?yvA4(EnqD8EIz(F#ixD{C@~ZmSX~H!g=bdV|+TW zB|h;G$gmZKoUwdtC5;IqG(~hz_Q#1&Af@26lr)YiCcPcwmxS+8ZxE$V%bPuiBw zA~$U}Fp1)kwt;jZ{+_Zrt|`kt6?#^q+=mSgS7BK4EI~GblcEW9r_8B)a7`JJwB^q| zcK7Y#Fg9o4uj(DCHB1$#9BF7z4>w?~jV#fHY63KA(IxJ2j(Mmn&r(orNO3#p;AHYD zr0%tDqJtl6piy77+VT@EB51Y9Jx!xv(Pp!}PR{}0+MzwL70welF?GrCu9oi_ExX6I zzE5m#Ssb>iJJJAY2>?_j^ogDOl;$*+)|Io4uK9LeP(BTp0I%^ga~6!?QHo=n;ywLd zrG-{s8x$%dWiW)gw7o*>c8sk4-_8q7BdA$`N}I~fC`~)ztO$y4!A`gXa0|ugSqk-_ z3A?SP(W1zbG54hBLZN|)<2|!d3)ra~joK(-lEa5y+08P57Aaw*;FsN-whG_mRCX_AxC%{gOp!hzWL&%q_W2e#Y<$R!6rv^!siuqhAa@0It`#*?lO zbBF~rIau~T>n$sgYaKlMkd8b@bvT6s>v*YIq!F@9D|}ZuJFIfX37Sb#-wB-92wI zp6&n&FXp-hxYAVVf@P!=P**GZyQ#!Mg3g+ z^51krxe`VAv-L}OC9J&}ndx%_-ek%vwpfAk&fgfw-Ao%jMm104avlW`Z}&9^IqCI{7K>-}u>Hat;!vgwmJ9T3l$o@^nn>Ua`9s;MQ`(w-+g10mim*e5 zxlQXo{h%Vfx^0A{E!?>xTlB>8Z04xGDa?68hp-sQOkWQA-p(Wt#tUIN5Q<&B(d-VC zRg|2etlG(wZ<_M+>&m!qCmX-I?*cH?hiINamr#w|+kms1= zgoZbkmpe<=OGI%2@TC1rTW9{Rdh;E04XjLu7mz3|*)|&vr>%cIXr=qr^(;p5Tr4cq zx0NKfuash^OEFWpuX;##)kymY2e|{J$a=>aPb$c4w17i_zbv{ZpOGz(M54{ezi!;9 zHIB&tIp_%n<7jaD7#Xe>KBw>dK#TFTAY2Yl`;4z{z9%(iYWd7mnlNG60du1ShP-Pe z!(8til%B7jxcdQBGwtER!)bJ%PrKecGyk(}=O{?a*>H0~2#-Hda;S~agxd^w)RrP| z_eSB2nJQ*b=B9MRJ&<*AhVI)$t|i|SSfeTia9LfKm%q%QJ=yZl62HQGHV0GO)k(to z@WU%$pv}3hE_O4iJ|V!;xI1&VhUgBuidgh)-y|J_!Z7=K17xIOM@Jvk*L@q18(BW9 zzKr?f)v;0v5A*&@dw`F|jeiDM$tJf&sCq+IE~56;tmN-J!qAj#0GupAa%ucNK)@p*ffr-`???~*)~kK<6qjrpyNjhUvc+9h;xo!t{&Y<( zKwnT7J*x=^wfL26KtPUTCO_!2eo=c+1{n*ZhtW*YmfIugMdvRDJ(W4|?~m&JCrB02 zV#==*`M>VgQbW1o8YGHr`TI5ZklZ>$J151Kj{Ar)%d5MMV?BQ`a%n$>OK}>{vo5EF zO=nnE~;1JIL)smt2q ztjvq09vBFtO5B2}3sjcZ+Hyg$!A24`+wyS|X($ZaA_(Wia@uR|N{khIjMoOGo^V0$ zkc*@h80LxC3EJT+qiD=>N;g0AF)H7~;8S8gJhhgZ{yzYFK!m^G*<`RVa9MvOxnsvT z);1kLd-DNon82oFXVW+?jvPSO(gWxz;?n&P|K?%~5+&)Ii4tzPa02~Fp`nP&I$2i{ z+q;X{c|j2at-d07tG|e$*4ju@^U|;{><`zDWB0z!30TR{m636{4@o8S=zWnRFV@L1 zghg^(Om8ePF2U(?)NqCz8?b*uj-CsGV3S0WM-<}KiRQUvVuB*TXl#nyiw&XSgLw5E z@@t)>_DJe6)J@>pq~MI>_4na=an3nXZ7t@Uc7(z^N#6nDEhAND(O8GK;H};U>}gt6 zOXGa0@@-P(!)QzPNctURy4Cj>8p8CWP2k34bmutURm3d|T8p?XOg?|QrHI>m_Cjqc z;{83*L-6gVuggLo*jdDfZ%2@HwTC`h#3w_a?iBJ}q5b3dY>51NFqv%ig(iyleCUfc z58yx%hg$uiFAMrBKBAK~p|2%~8TK=pR*HC%xJoiwv)Ui}b`jrOt z-if>AxS#wY#z(1s&!O=ts=8u)2G7dzIXo{%FBW}JU%-YJ1)$pq?~4R%72G3HJ&DUv zBO!hxu>=SR`!(=SvE;`CV&a)2h)>Fl6@-lJVoGlDUqijLlTCkOhv8!+Oi}&?R+V6M zD*_UvHwcuA!2YTn*iJ$Hrc8AS>UU+TTTp)}Q$2$E(@{VO@-I`Qe}O8zOzL;E*4Bic zPxwNAPxzyW+ORL7g#8IMl2}mNlvtoNCqjqAwfEu0eKH@ZWs-QU`8QBY2MFdV&OX@* z008C^002-+0|b-zI~J2vdKZ(=rv{U7Rw92<5IvUy-F~20QBYKLRVWGD4StXYi3v)9 zhZ;<4O?+x@cc`<1)9HN?md@n0AdG@AGW{87f)qA`jOzT7)=X3or+x%b=m&tCyN zz_P%*ikOEuZ)UCe0rdy#Oxt>hiFfjbkCdL(cBxB;>K*okOAZr+>eyo3Q z_N5oonjSfZFC)XvYVJ6)}Y z>+B`rX{x|n^`Fg`a5H1xDnmn|fGOM-n0(5Q&AXpMoKq$e8j2|KeV4rzOt1wk ze!OhyP@r)+S3lBd^ zM5~n>nC`mirk!hFQ_*2We~y@m&Wd0~q^qL3B4WjRqcI~LwGx52)oEfqX~s+=Wn#0( zNChH2X5>gJ6HiqHyNp=Mtgh(o4#bV#KvdA^sHuo9nU zqC1)}&15vujn$)OGKI6SzP9GdnzeyW^JvBEG-4*b-O3~*=B8-Oe`H#0CA(|8lSXIE ztUZ=AdV9@e?PmG8*ZyiXq6w9pOw(^LjvBQwBhg*Ez2gQml2*yhsz@8brWilV#JWs9a{#NSTpLGMetI9S^hKLmrx< zQz=blT5xe#m8LUIf5AbGP?jw*)BFiXjP8QCm&$aSK{J`=Oa`UWET&SB4OtOsOeiK# zG-0M|ckc{=&>ZsVG@Ir!dB*OjG@r?pws!AqnSj;;v<0+Kr_0D+h}NP~1yc#mY=@7; zA;!!+>R4@iXfZ9(X%Srkt8~G*8dVlp&4yEHIg{JGF#{iCe=4sGjW_H1W&1o-O#z*% zs0OyOIf+`ef@bXwBi#cdu3&P2A^1;ap%8hQ#=?WORdl6JD`_>8cjCTEbzmuN*&aEf z7l4QrV6UZhrL=~E;HHS1sdRPT8{~4EB|WXl?Al~y5}nP-q?J@@V_vB_vMOE6qzXp_ z2Oes$b=L?+f3A)uqUnv}bTi`89%`mdI@Qx=+a^1Vq?t&2s6`N{r>!>8HY09&C}gj- zg6M&o8;s;)jkd#kYI>6vA}bv=QyRSrd?n4^m?0uEnSx5!7CE;FC&fIVopuSc?Pgkf zX+)$rdj*r%+0kN)BNXJJeY8&O>}T?i$r6!R6!8#`e;bL;5b_NWQYQ3!5FSx!(>tWo z^>i4YbOE;E~MM*G! zqed{8f9u9f)J$u16e~>{9fyfieW|n=4+ukR^lGN5l1wHYjn#&tDWuNVLa25#?Y9B_ zIgjY`TV4KikLlmKr`2C+)^ykS15NQhvAZGOchrbw%w;ti-Gmc5%~T{A&FRNm%o%Q` zTLhoC=97Rty*`;V`Vhcxgm#UT;Du>Pfp+s*e;`!IG6=qj-mKFJx^1E^r4w|H(Wpvq zh4MxzY%x+j5LczQp(NN=O*Qn{tin-3g^;aAFOGXVy+b(3J0}prwo3m60i;6UQgbTD za@%OdVs<3}kvr+#I-R8VF!?Hr!`MFiKArBMQ=*WCCUBhtdB0A#)7?yUuM`Z68_X^% ze`$wvd!{3|uhIvZHdkK6X>IKF;~^#}H^yT?f?9IxP|wHd6Q%Sq>SwBcMXBsZd)i2Y{-^Ti7En~_)5w45X4=f-X_*iZ?4P0g zOX)s(0A(p5mkY~R&fh%rIeJjQeIEWAe>eI%Oq`TVZ_jyn(PRwbXDF-Fy)?k21Ogg8 z#1wc%LF&7}ZZ03GG$aDxQg!}_PG6u$A!8u0|N0FFt2BBHA8{j%%AE4hmjpLe^ktNW zRHh@9bMNxXmZI7Et8`94KaR|6B?_e7cZnt76-BiPjR(`ZiP=O>~;ax1%yRp}ZCk zeV4u`boG7V%Po_s^M?ZDN9b^^M13xeGc^?Rod1;DAJemf+y6m++gr{_g$;ug(&0tGfuRQyTEK+-?ap9P7( zAb+GSd(%TNibm#n`WuXe9sy}FuU-%RgYFla`KQ!6)Yuy{)94*uvd#N4e>jO@FiH2w zYyd+J1CXj1b4aO`XtQ#CfrlMJ!}qcnG$ft8Ihqrl9(IeK;$Bt@`&n5!RW8YOE+b9V z_<}IHv);p{?9o~0DMF!8^wpQ*9TT#_XnVoaQ5ARw(-oJ7qjDJ%LTFq;&K1}@xx9pD z@~nKSO4$ykjeLd3xxyi(+cRCByH-RI#e;eYI7Ocu^m^wp+^F-wSre>D^G?nt3o#p?tF z#)*YvN+%kEZX+fGzWI2>%vlSg#XOr;Kgyavo{6QSaB;ugdemsVQRfXJ;1=efIxREh zPgrSyA2t0(qR$2eWIej_NvG}I$OBu@_l7L%NTye13?g%ynm5(&4(&R$d1rl7sQJ+D z_U4_3wrp>0_HZ*=e>-mCO(TtSjcA-}WaG?R>;X0B8GUfgOG*Jy`c~d1Vj~2y=^P(OPz7>}GN5xN9VS3%^yE<#rgUR^vO6e-1FYrd#Ze%ERxlivZ>-MpnWc zrKXH7b9XYzv|y6koDtG@^1FqCF-}cMTlMXYEiJhgf!`-DP#7bWqqXTOjo%LsEWAW( zHB%|0+iZ$nw{r3{Rh$O+`4E3t=MOTbAlL3)n*wV!7K0DSHuR;1 z_suFse{+9>hd<7r5K2HXb!U1zk@G>Ja({!URiEN}1nytap4x_JcS|B|$^`Kl zAazO(M5d7B9^lUkoX=sWvPF`Cy*{t={d`(bkHj*m=uvs& zTOWx)g{?*cT0~fH80&jc2$)P5G5cmNW<`!bUA4`VqC@|W^Aja-%C9lapFH3euT&Y+ zM)IP;ROo5NLLx`4=w8umXj|bMI-ln!ZLg45IH(^518DAEhrh|+(n;l~Vbq#f;Xad-!{H-pBk=8bz0%L?>Y-(SH2UUdPZeca-AJOd^duIi`*HF=nJjD--LK ztwAJd!sGnC@~+L_nWyIOvXXwGcE2!yUt^3L)4+9oN6Lz2(xz?MpUO)`{+Z6tioQcj z7zs;cW!YeF_3$tGSE4rm+C}2uw1#UPf5hK;EI)NX-8)f9t+;JTc@xSQEG`?lmW}in ziG&$TNwYNCA1ePoFW>}_5ExeZ4;a9c$29(<&d-U0t_yA3U`&@+j=2^tMjzV$3;$K1 zz6d8yC;J3Zk&Y(A6Z=5=JO4xH=NZGt`u~R?tNaog8F}Z>7_(C5tHgC)tZy`Xf8cbv zAx1md&R*bQonKa{U>@1k1G9Fjih@*u&gw)h0!a1v616Brr4FL z;?UA`;j$}ISsGCMzf=6=hNQ4>P>g8mer zxF`1Ke%lCnl=qr+jW=Gu9O$bhV3%p#eROpIdS>&M>`)!Gk zWq;w%FOy))Y@jUFmAOhK$`=ZXh(6nB&Nm8*mv>NE^= z^7n{VGu>lBplgc|*gt{5SdvMzOWcXp+7v*0of6ckR9RneV^IjDDjSd_qlu%|5hS2> zMFz>qua*mjGUXcOT3y+we_%**MMSK5lt%bHjMc={JeoRV;%7Hg-jUnd^XIkc-&()Z zA5G+!$Cgh2(j}>-HJXBX$&DO~fDlnFMi)RlB#k+gemG-1yfXY zuI&0pr$4)N34M=F!g6-PK^UwyHX?~*sS|@_G9FEs{)q6yUQ{+Ie=eE%w;D-*SJI06 zBUY!`0ip9IJe+SUe{-EedtV}L93LZZhq(Q@2=ASOclfGP{HBXMfJ_-Vf&pTefI+<# zS2b;!c!!ykD@gG!Qe`Pce36F#Sm`F3au{!=L|VDmm8EG}D$mlqEL|QBWofB*S(a)~ zsn1jm(p3);;wRKk-n~OqA8xJ6Qqur!sSYi#%71Uee{J3!f8L#0+A~1mEFG}_LPKSWr%JM2c1K7M>uer-j${I4$xf#^noGzP&nuc_?!cD&qMS{rl8yBeuzHHbc)aU zT;lyS(_k&J#ZMP?pYT z>FJ=WfA~J^e@E`ui2dmsvh;&G0ay;uXKc`Nm-DcEdm>9e5lF{?^fQU%7f8-gP@n1^ z1>5l;{qioF1K?jvV0S;24$*JJ1N6UV13&|0P=nMye=SSTouZk7mUz$eHa(D|9V`)0 zB@*flKGzUEANG|T^1d)Yf6UTfv-EedcOF7#>0hU)EH9|d#)Yr>@NpsNa@A?&norHL za?gb`K3BQsJS-$F*QBUHO_J3L$lAitsI{r3z}98FAj_AB>$JORhM-r*i?Y0Q zZ~ySqJ}HV%b(CvD8r69?XKK0qd7m>J5Jy&dyM>_NeC=8LwL!c-$eZ_;amygL z;;eI2EOTe`Y~d*iSpnLm&jz$~>U^T)~olxCvGs5i81_ zRl$;gPxF-sN&!LWG(R>%3(hHtL8pRR$!Y#_IH>2TmH1pCA*G%tc15+Xq-qSIbA^O* zukI0=r}^tcd_ElVK~kTy8Y+D%%ioq+INU1Y+Oev&pIqEpeU93Pl)2#pAwbN_DhpbjkI-ddM|Jz4vN)?; zF`z6PR0248WtnniR#}7H(s0P(-Oyg9ti|%xSWvOByq)pYus5qTe@>`Pe=cuxQ~_-B z@bclf=lcOJrbnou!#*7^Z5aN`&UoVydKToDVq9 zs81@_IR~BR=_91tAM)>dm2Ow*UX|`6dWq^(s#>`Eied7Ke+Fq7jgnRr7GMH= zF`mP;sR+=Md7xpmRV9BE_lA& zI4Q}#Oe+L~f2Re*v_~jIA10k#@tDJ)NC8QAYpQOJ;Gg;`O zIE>`-WlCty7o|$4e~gGb0ZxKQLv9oY7XVRSXZ4z^Nz(kM;QKam2t7%p`8H)fFTcgV z+(x-=Cb^;Vb1FaYRQZMcZUZ`H0n5*e|2+r4Qc8x&U4Zj~jq_X{M4D-NjNTa+D=M-cednUESgQS3}zW!9}%Ytwo*z)e>a5nN@?WZh}Y;7mq<{) z?gDuvF>$hBVv)^++>9tuJZos1oFdj?e+NX{M@}*!a};{%1IFvY@w;I1dvFLESNaqv z-Urh@fOve0rqRuu+!to+4ayn?SQ>7)&X>^6tOG}-VROzgyWzN;K z+_{FTob^=gyp96SgH+>;P_6R>t#E#fRyzA>mGc3*()lA=?R=50a{i0zTuf_Ri)pPZ zK=2Pz^UisA!x zyaW`6iVE1Jh4K(}o1mg7_(a7Az7R!3MMUcVd`Z@{w1xhD>AC0o&UfD5Ip=%qwfi3e zaI9)qxc<^hH?4g~eXkX}$WDL7>m&8CzWS#6n427Q5|-zMzGKIO@tsPcN!bC0`4I2+LCnHz`8qU+IhZS7 zhbj0Qykl|r)Hf*+)f*43}A(bH^{EjO4^e($di*<7|p`0g`O54q~Z$UhSw9m z{%k=MS**fpk#-D?Z+0&-u|~o4+&onf$BBRySgUa4lo6aDMY}E{3Q1l%8D=CM<)$yu zjy*q!ldw*9Po{smPDZ!{u|B_as=^!^yS_K$CbFJ=w&e{3u_15WX$p&`PYDBW;f1tf zF+0PIT*;j5Z4lgahHYqgpT|3?y!09+c;pjJc$iSJ@HcxoEo1_EIl7#HU z*%Qh{*CiRxP8!%m&)I3->)L~ApG_@2>S|j_YOonwD$#$1b9u-6EGLmo+h@`bRzFjw zda8su4^feJJ}bo(3=M2!(hbT&f)$~5s#Ic-FGNoO7vOCSW1I!pqZPgRFvgfX3}aiu z%48^FLelC*s$io}Zdd=*PMhj78*r#hX;teQuvV{W?aC&DxJWG8jzsY~7OIGW)I^VJ z^$iTt{e6F~6mQ#$4JaHwWm*?Ykyx8XMuP0oT6-6D$ON$?Z|zQMHD1Kq+(d%uPVF)V znDUi&a?rb^gC`h^q9-(^tkDtgz&itYJKjao1Xn~noi?vw`PRubH>D?O-j2SH&ikjH`3}2l6wqlUA$Ol>P*}$HK<2w)-4L5X*n6Vjh>;%AU-GL zpT&Re3`0Jfbt9cODKErVdvK>@!snT4rO6n?7p0YK$6agyp1Z!Qt-ZZiKff#`%*9ve zKaLYl-z6K|ovDOt#oG$Aio%*HZrPhDwfEp&(dMg6=xplk&R~bk3DYI?K{I%8FLH8l zm}PZ5U}Vt3A>*`NF?%q7=kCk*pL{7E&D($R0N0u``tq50h)CLI!QR1YQ$Ky%DPE=^ zzJ^DH%h&0RqE@G7`}*v(9p7YIy7hgNQ7i7Xrv|fy%2eFmUu>HNgGxvYd~1rZ>7Mjh z0FUC^3gufiZw#+B@m+<+al#TF({{D*1#kf0my&kySYD;V{tp7!had97kW0LSLu7vt zPl?O+;YSo3OSl=X{6yx8efVkd#%eJo9{>4-jm-mTcV~VS`~{uT=4KP|x|HkH^-1Nb zky-jZe^UD7bA#!ZgWZ}GbTeuHNx%@W0;G2<-p z2f2BFR8Y+({!Dk!Nf|d4p^|@*zGr`Xh4vK0U&TGY#NVizn`usQ$}#bGjt!D>X_xwY ztf5D}sbPka|AChR?1TR-*8F@KlN&+z{aeAerR!ivEZO79|KOEMyo~=+wC8rXJK1~q zq8JxlN?#_&<_(m`}UVE04Vo5)=)QYwNE8S&ZoV9;bF=PfjXnPr5~^sRiLD1XZn?FO&;-(O$Q0sF1k8a=eYw zFF5hF2i2i!aX>9n9Ian^0 zvn*w*qu4z9^sd5*QzXpRX_I&&V@hsN%gI|c@|KLBX-{!8ogMV-`1oa2O(i2#`&lI$ z&7$4f3Bw1kGRuOYRmxTx;P^hj&dE@pI=(EOcpck`-fK411_r8)&uuEvdW8?Ra!!V{8Rc{5$)gP*3>F|CY#Q>prXinq0DPpc!6AH> zZzR^p^A&_k8l&5`h069~{))X=*t8dm!h5keRK6EWhH=C_kiU7T$C3GS=5op;cmK7G zqgWR0XdJ@A9F~t_MYOSJ7)=^onZvQwt^Ak6@xwTA2#az!WjBA;tjM8lH=227K7Wg% zIcyw3NA%1goD=QbkBUA1IVRTR6b_Z;kPVgRu zU`P}jp&5Jd+wR)Rid*r$kZ}NyHEF77#L(;vac~X~ig$k>E^_=v#2nR9LuM!tE`%bS zr(9V=$vDsA4kj_eikw##vXKv!zx3v@NiSK zXpzxV{R}M{!S8eUQ}uHP%_{DjJ=M=^i(fdnr6NXIt65v=dt0=%@@92Ht$F=x-Nh8( zZ?R@}cS(ODs4CfxM#?0>)h~|VU-#nG9Ftf1a;joCV~3}-&E?@5WzsO!IjREDiU)CV zG#V=JiTZ0)u&b;_&F(61t;nf)wG};G!|ITnTFA7?sU^FS5l3{28zM%COZC-{_t0lg zgbX@jR4paluv$iU{+I;&(GaSrQAbD2vIk*ABb9&tkkLhVSLW0T2J`98J($biB4M;7sqLVLmW{BejNuid<>6k_%jYf z0%d=M5%@0+SLG=utRu`+QG`w0}qv5sc z1`TgiBN{%Sp3v|K^`v?hP(M;X)%dgOIf1@weAoGBs}>CdD(t(_cZ`1^Q z^1ZBafr9_nU!ie<#QoL&1%hix96t3Hmfb5+_dlF#V3~o=S1@~wb6>zfxn4M3|9AEO z?FNS%1&pzZPfNfWjtavVV~wAd#=zyIdJS_8T%pwBG4_h8>G_dJWcp{~XK1y|nMi*= zu1SucS@ZJ^+&_jZrzLVpM1`InL)r8+2KH&HUy5NfP(7_RI(cS|#@IC9AR4F1Zl0hs zPbRBz7$vLw3Wqt+aPKIFsJMsx4i#46Hbb?%3O}jDnd3CvDo{ZJTe{IQzEM`XAui8v zyo@8p*rChVrwfD}DdoE}pGpTe6!mH5+k27t7-w)C=qBA(?q5hhUdCbI3etUyirv8$ z|0)7%J*w0O1XVv~sU&9m)?tosGv@j(z&u|J)xLhz_%6jE{w~z|FT{L*91Hvo7Wxwi z`3JQezaBgM{|8V@2MF_%Q9{HF006QWlkqzolT>;|e_B^->*2<`Rq)hx@kmkeMi2!> zP!POKx6^Gjdm!1?3$YL4TX-RY7e0UwCC*kwLlJ}3-Hvn6h6?p9RF6#Gg zLk71LH{D$~Xt^~vNTO6}nW-f9qNGWz8`2~#@n&0EFKAP6Ydev3cUw|hs<~5z*XmxAy6(dWgh1&s z>6n0ylqP}2#DsomWK)xWXJnd^@lRr#Nv#*Y^I?9mA_fH}Z)8{cTE?M&-ngM4D`J@a zzQ&J}i2Wu``;1Eb+<%XSmQ=c9=!~qDArsZpZeN$nEWa&N!}}^$*@3|P(qDuB@bZ;F zVQKlwfrE(>iYPl6!RRQ4P;pSgSYAyD3?A|;p~6j(e`bIyrnsu)3}?aNV4T+(?&eV7 z0Lm-Z*Dsh{eMYtRjOiz!j~4nCg-=jR2MDI8gO6$f008Hc@H-uoBYZD^3w&GWRX?94 z`N}uS!*=Y%c{I0n+{lt;=dswS(wFU|tz+fsJfgBf1?)j2Ma2b}nT%Mu+sIZL~IKh9fCG6ERuFKu5=>#OAG7o84C0Ka@)* zF<_7Akxl3t>0vW%7+EttjL|bj*2Y;F-`2LJZChl}IMet6KM6s9YQL4sCX74Hq#f`kHr03aTWQfK0tn|;;)qfQfU!?t%5ssxoiE# zjT;3G&wIh5L$}AIGfk_V4=eVhYx^BW&Gwe-Y+he%dl;sF?Au|(=}GD~0ACwyDU&4! zw+HA3TE|w<1O>{ERj3gTG0vH`V@rb_4bXaOR;h_@ngKUgCxwE7>f~t7F_Y~*Rx$|` z0@=1gAwg9}D&vgCAWcwBNe{V_$Dl?lMN|q?8R`*UnbruJ3l^qSx&F+PwxS&1=^w$Mrv*TzxU;Gxj zmG=XgOJ*vr&>eyl)85Iq3s5&TFQP8$5p?fe(mUE97G=$W99u%$&}?te1}($Z(w3to zthA$>X-!X$VwtOxY1nPr&T|=bj6uz@v>`J+s2S&f^n{Zf)izD78*TH`PWWfY%BFOf z^yc7PlpLGqE^}7}=q|cjr55THwBd(@l|p@jnu6~MQyF8sRf^FbL0;Ru-;hY^4bVQ? z&xSgHP+!ncMf=z=gQcbZuU0yUBM}1Z+uoMB775T{I>M^FAM29lfS-;sBA{=}JjUp@ zEC*_T>Y3e8tl!bIpo;aI6uL*H6O68wnKnu5Ddr1@S!W&?-^(ZIf_A+(R`_^5%U7L3 zjW*9N+&3Yp9y!Gv8ZB{RPcdN$+By$P-rI=)c>mp9k{4|VIBA3`kB9}Ft(e~Zo zG|=DsH7q@d4J%*nS3p#1~@T7d+O@kUU4DDxIbK5mmX&pzc6-1yjAf zEcQp}1FX@5C2{gL2S>8jS$%-H@}IfL>-I0-D)9iWHl$5_aJ zkC(1hW|HolnH=O?@{=k(!bqx~UeSw$B=gKq!M2Wdw{gzhGY8UB5&bjt5tV+LewGUW zR2$AnfIde1ImkbbA;wY~7he{lLp>FsrpAv2rOoDto@kD+ZS-`qc!Zs?or#an~aNv-#VXZiE*tAVY8*!YB9c?dCWE-<(u~42a zk=vQETsD%bPff6QtReWy#0lkp<^!?!4!PDEU_fa(8|Klq1TKl|mM?A9Y{QUF(M-o? zYo9RzKycu%piZ5}+JRi!F;fOAI3vUR6#BJUnSMsT`ix4?(eo%nT=1b`cn6eI0$eiYO&qsrQu&ZUg3bUT!rq%ZLL-Y>7g@gHXe3XSbC#b|#G! zq#`nZm&=v~kWUPRx$&sm%H%`aNF$3Nq3ht#?ArQH8z?jS8oIz1?zE+`GZ-VUroAyTZ}L>ehtN|tq(~?U|E80`k^=rO8yc3u}XhPf5IoD4y;U_ zM)iQZ{<%vze*vB>IiWi@G{i)(H|LaPlD`tPvfNEGXa8EI*V!)()1EC~P{iEdsPr2B zEvieII;Um@wFhJKo33=3nRyNOd4s;muKhcBWxfLy`g_3bEYdE24E~Rt)&7CL%|9RJ zT}WE0gd$T!GC-fBD~!;8DbJ#N%L3_N@e=5Q1PKJ? zf58X~KI#;DhwCqEI6(iy5%}NqePoXVU=yY(KNX-DY*Q>00(cz*Di4VY45I|bBiV2g zBMZe(+Hl$r9q5&R@v|6G_JLK?j{B}&7HpYSn2AcE!1Kb-?gtiqZ5h;gez6D`+fhcv zez6$E&~@ITidYJCGb|5fQ5M}0oTbgoZa`Fv8dWS4wX+iLf~9*|!WDHexu`Ea;fgX9 zu@dS#)}aHjvWvQtF&wx`tX4&XSTl25Oc6H#iAYVH>C*0hBMyW*Yyb2dBx&MCRjdi`xeXzJ9Ahx?xx1cr* zE*RS4HePc(oH;DdaB%OKTi}T<6nL2Ip7AzEg=#PmcL4aPwHfyA&}`0jN8!mk#a*h{ zDelGw)8@)Eo6TiV9R$QK5F%#!e8m5j5#c1{+~F*LVv?W2MtaVlfM!R;`W?oQo=ZBV z{=Qk;asFPhkL|dB=HF!gw}KSWkJMHwobXU{a(2%ME^5evf7dSd#vyT76$ix;(8d&O z`Yj}slHaC@PQ*c8Q}xqX-PX)$)3o`;F_qq;=b<a&fg1oZw`FGF?2%YnMlNbOt z$_Ye&)^C0RjcSTjX;gFEleM5<3~_}%Pkmn=_9Gnj;1*BHZt;uLfU*viPO9F%t2m*3Ls{tjXk;4fRU9WRE=by!22G2`KbzD)%+JO*#>Aa zS_QCJLQ6@A40;=|-ivm1D1LmLYOc`oc;7gG)rDT572y}Cq4fn?eM!Qpiq_Ctca!)M zwp5~B6b|L-#v^&!aFNsrYVRAP+rxR<67PGND#r@n4PBwmcx;@uUAxWG;jQzoeVW#W z>b#rdQD2_6Um!KyfREdcocD^c!W-ef(2ImPxImisDkbp`mQ z0wXbaBnt&XaCjv)?!)K^gq?x6J_4~%U~~-Y-T*M(!kz-wRgpnMMX&NaL+2~4FO&CD z&Bz3$_gtY&Jn9XPlU==xKJSnE8ocbX2jU%-Pf$&y!RM)~%+m+Q;BNYOU1i08lkE4` zBMsg>ozK%xVE-f7KTeN&I(&7$$hD`bEmG&(QcZ;iC+MT`C^kO^gD-0EF58%=Pac7I z3_X72ybp-@S}V(WGQKBIPhWsa;dq{&0otC8DeRT_@u=4m>i35GeXaeKk^Y)rZScA- zdM*wJ{raTTViFdpqg60D0l`gwvTecd)+vX5j8xydRIkt}g)$1|3bc|Wg`!JBp@#}= zURd09;?z30>uvHEAic6|GN&Nm2{jUTiw-VMLf|9p(!}gGb2~kH#0y%=_1;+1s&#i01u<{y)d?>tTGY~&PFJ2^npXa&r6|m_y zvGSScuv5spFDB3TsYao3vGQ$*tm1mI2#05jO!D*9;vXU*;G+kB{FM z2(MS;d-yP*B$B5;n4mwELH1`CXerzOFOQ5BzB)$7S|eBJHD398oIx~BUvKb@(>L<; zt*E!!I}2Km)6x>OzB5*T_;w^-#M7JjKUVlqUkE3?IoX=0f4am!lVCFySLv2UTQ1ub zq{+6Cnq?cL4%yyJx5;)V?UHSb_R97E9hdEKIthal=?DvMN63=uee1Eugg1&nxz9$sFObr}{;gdE0K2G05_#nV) z{u4i~#qYQAgE-66yTzrElPGa{t?*1uP2w;DBr3rjE_T2%cPi*r3$O6G$9oNJJnL)&cya?5b){}X$`LgK9i>Um)H81Xn z`l^G#-tN5U>F`!{`l~wC24AZLVE|m_Oo-mRh+U+6>(zRHe_i0=eP>fqJ#h`|x8IX+@--2aQhuWpMyQ^=e+czd>pB)Zx0{VF{gTr+=*QR9}M<^^TEU zY@=7`t$3|CJ}&N=3^ynZzQ|>9qE_6C>z7cEl;sbzsX{Pk;>aZ=+O2)OjqL`z)(Qg_ z1$BxQwPF~5pAmV*Q?(-LS~@f?tjTi8FOi?4?RC>{$E%%?L&&WQv+<%@f$v(H-e~~6-pIh#~L|>MDZn^&r z`j+f-%YD2tWuII0g$Hji^kvKaR#fcV=a%~k@tD+q(+$h-(UJm=Qe}8GF*l=d(nR&OQ{7OL_2E=Vm2~MJX9`-SZSXeEFD}Wr5B5U8nD2AgzO2JB1RsOKwrp| zQ9+&%9{^BG2MBjW_x58D003kklkqzolXHtTe}Te6DU?D%5Kvqd+tTd+0E=b=XuYWoSE;xzkUO- ziY11l!^7w0w`!dmd%|s~>#DJ%7FEM@e9PvM<++;UH3aE_umukVEjD?m8BJmAg|QQ= zf9pHk4n|^y zT)JB-YYlOrz8e5zNY=bKFvKIv77Wu~VCrVT8@AA22i*5XpjSQ96oG;S!{{zQ;JVFS zQ-50D6-K0>pCNmuJ|x0z@VYG&3^4TVf5(=H7}z#L|9#7~q6Z9#+;)D8p*NS`N+E@j zBow4mNMdLZeaO&??U@V{x$2p3Et31FNbXz>wKriT90e1^croRfXd#xTKco1FD8Zdd z3Rf^Sh)GN{jCTl7FvFnuQn1|==8#Qd7T2g`ezF~grSr9HG}8hQOQ?3e{H_P zpkIdkQ{+5UnfE5cN>_GsvuncT%b^Y_7i7vi)cD*+SLdm}YaI*<(qNIgxCMQd(>>{iBFSw8J6KV=ooCr>Y&{ zbUK#D6MxFu;BS6WYE8f;!W)xC6Dxygm5GV2(K>pIcrZE{1zv<}{@ez}p!1NGR^qkN z$lx%uu^(FzY4jhh$aA#*ohXt^=P(U5+7{Fq>@USy_*$6QzYUitixxB)G|!b$#RY?d z{>@K7Wq!5w?7th#8PxiNc^BHy=|Bs17}T%m3o6iq2HC0@oi=P!-zC>0t&uj4-k|&X z8>qk*)V={wO9u$HjWB8?0RRAMlkhtolZKB&e-2P4PC`p5lv2gUpcq0zq!*0Pi!D;Y z2B-v!sTZ6~PLhGi%y?!7%2K=92Y*ESppSj+Q_{*>_Q5yb{SE#GUyS<2}pIOwBWFD^<0NoaBO= ze_V4pDJzw?!{iKcTa?pfp%qP@-V~bS zaFM<%YAoUf2mpJ^kQL+>z;y6hBIaE<+fapSDT&;7vkB# z+OX3SW@=>T=zE5lp4XfyhDfVkfy&TnxI1aJ$4Bl*5J8uUFitY`HGQXT)1=5$o2#Ik zA;hbWw?&8yr{jl%M9_mXDo&%9p|`1O=BeN;g}rK6hIc&(doO}>7*NrV^9=p1e;LkM zj_>6>!L_P_H)OO!1qQBfsu;uth7Qx#iVWwPMlJqe5_&yvkb4f ze!<;Mp)WpnY!08`j^c}0f;a2U(H!(9PtC~579LsrF zLUeP0&xd)~lsq;NIVi^14|c^ac}6=}p5!k~Q2%v}7lsErGUTnvA$f5&XasePPJ_sg z6hwO2?$YipnbOVRboPAd-8-(a?jjcxrEaP=73lUf=x_LpwkWxrOtgUq2iuJf27CDI z$Zo!&;JFpGF;C}KyUq56H9w}UsDoGCm~uO-bmp~{q}<>S6#vc^sy<<)K_NX?&~$+# zSpV|%XBcFILUM~0EhMqI6MYf0HD`iqU8Mrn0^)^REIRsgKJYE%DE&TzM-V{|BR5(o-FtXIUIdAvAp_2i%4*$iNCzjVTipiOx8IZ6E?+t$V#^sGm;;^uj zWpcCr=t@o85&cLcr`~n_G8R`gHLdoW15WR=V+IriwkY!f;}gQ}^mt6qnyH>1LFMr-$to}%T!%YB^nUi- zk0IWBMZdM27T5(8(V^vBtn5beZtk-T#2}wu zwXtVIXPL+5JVO?DGbgg&?X3UmF$bNGGNs6smHpPp;+AyU>&)@kzIGhdER2 zUn9LuaFny*!&Q#r0h*&$wdn@Z|^T$|5vZPCZGYKVMbd-*A-OTE2$aT zvElV9QO9#Wb-!~c>Ro$^i1^IP>tk_F$`b2aCqAlbefKEalH)n0E_>0zY@?%Kd8!Vb z)eh6~UhMYI;pL5&H(fQ*-vU?Ogn$gF!R_& zG*`?yg&5hECwPSDBgezFU0OYchl>aZ_O#1As$3DLs?6DVQ{+Bgf)qXOt?i!a-QsZ%Qyak$I+*LVKW3LN868lw&Abn1?M8woaWLO$jR z$1o+N+loH#L^Er>=GCPgsT1^R0=X}s#h!PvnZFcfc zPt^$bFspHAPSw5*d+fTlT0DcKG-OCmeGp&5%#xVc(qXh_!{LV4Fy&pGr2278^s7Hd zG0OA~n))|Zn3$VO=t^_#qRjpIIm&kCB^Mks z5%5*{`o~*6j@yuj;WK9LU!7(f7@qD&a9f}U_ezFf?*k~2TwalyDA{Me7+?!XX85W8~2Gkn7tkMi(Y#9wua=HjEN6b!4F;~fq2 zN+=n_OYt$sP&~H8bAIx}a8=fAeC)y3XSNNE)@wvGrmw_A2?_6(5dH4Ay$$3eKnpls zQ9p2NjNR;IS2XA*j@uavp?DKu^d$E794+V23Ft`Vk@33@+vnrt10H+~EM|8CvEjZ0 zsbjngycb@L8_MfVT`Xnnuk>x^`U%`CUB!Uzxi*3x3TY=eP}a67_st`3LM%MRB2@IF z--lqT%Cn#eoc*(yV-@o_=s>T9rI^|8Sn#Mxp@^^<0&VtemQx&)8jQ7o21p%?cZhY= z2$L+PviXU>b&m1-87KE7;kWh`u#fdL$UD*xi>MUO^=5ux-13*`xP76LtA@2zUB^ms zSP{pq)Oc4=?5KT7jGFsk9qwwUux!x@N8#C3{jzMRcrJ}`@d6sRivaGYm`CCXmL6|fuFcBWxDev6Dq94<*BsW}T zUkMa>wwY(#q>&x))jD6u=f}0nXH*SBq(iHCV2gJ)&{Y3)R1aG6HdSi6xrrL+dp_=o zTnPHdBA;++kh;9JI$dVv-Z^nm2UM>VT`TKi3#7P}DGpQ3hHyot_%Ga5v(0Q0Xw^BQ zrB9sE+=kH-nx;d_Bwn5&zP(`iND^1RUcgx6*Ieq^p5Ygbprub6b$UW5=&;iph_RJX zv<=!^MO&MGLRP?LAeXM#O}yx{*)e_8fczM2xhtfJUEEenScK&7Hm`>;^Z!hT>)+_| zotD^E!|*`-9xk8Mw9oTqyVn;=CubXG)F|FKXuGWzYg<+^{7hV|$;^Yn&0ElR`rJL} z@vE~it;yE0dG*)jM%UBw6e>Tu^*xu9&HUkCUX1ntJ{WCAJasOvA3ufatZs5*DI-p- zxNA`D)n(2siM^MSVtP0)tHIk@)Xyyz(ho#&Rr)o@W(78Dad7&wf4-@MOtE?N z?#5=EP9XfsK%DG|mFk0QoA#XR{LtbZ@XFbt-?!L<9(NTEGPBG}T`ZcX-L#^jM zq2;S+?;XXN4s!~p7D#pnf~~zMgH`2|dUL}P=UuB`{<@O=I98hMSI++L66r4FY2r<< z%0Bf0xHUihoNG6;)RcCV(`@{S-4gawQv?%S?=6Wh<;jH!587HZv1BDpGAo@Ha#KkB zjix+Lg`FvSr!`ja1%F;iIbo1XspRa=d+)|5G{2lHURUXkxe35IPELIvv7a zc|*l*t#Q=As}vi>RC7aRxdsm%)g@4h`#6*)7T$V$Dlxt=ej+c%c-+ArC9|ex{2@7| zu4c+$vYSIihTmODqeJ{JH$%> z-CFQ!lh+{2vP;+tewX9brpOL9Ne7)_0gn)ROwklwW4VTNQqE#prrjg3HjNst&{(RS| zGk*}mpX;P2#HZfT)Hx8EbQ~u0Zdek{Znhq#>yfJt;^%*@YT~1O1FKn5tErRueVR-L@n%;Fhr|EP^GW)F`mDjn z=f0ShV<4J&+CF9AoFQJ zAblnPmu*LPX`s(O6$An`00LxqfK$b-aNX%sw zpzWo1N+A9djuA~ekCB0ytR#>%SDb(3=lj+RM5vxPT~s84Fn~p_xj;(RQ+jKn06+}e zhLfE?!%Y+s1X%=LHV4X#WPK~b_KXgOb1;2;_b{P*DdDF8YJI?#iBmj46lRX{+Svix3yprmvW z;urmpc*u~|x~H*62?NkVap+;Z!rxsq(F6gka7~idft^3G?K)&yFSPe4J|I;~fiw&U zF7QP16d5_83uqVFK}lZZ#3mgj0&-*k3;_aa^iGlr9(pSOT~O3;kKzR6iw&WNzOo>Y z5}DTG=|2=5;9)FG()?c!GGQ{>&g>5j2KY+^srL=5v`V-r2#k#CzWIj&1J}a%NtF+GV?iJxGCC#V z4^0cKl?p-+x6(i$K{C=TX`hV4l76?)gN-9%3&=0^U0|OSNDv@ZKU^AuK(b_-5vluR tb|UG5rrMiG19Iiulsp;xC-#?+`!a`jC=f`JOy*MdA6k~?a^c>+=|A-;lequ@ delta 35551 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 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index d4081da476bb3..2a84e188b85a3 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradleUtils/PatchedArtifactsSettings.gradle b/gradleUtils/PatchedArtifactsSettings.gradle index 588f8115e4f5a..066a70ef982a2 100644 --- a/gradleUtils/PatchedArtifactsSettings.gradle +++ b/gradleUtils/PatchedArtifactsSettings.gradle @@ -1,3 +1,4 @@ +import groovy.xml.XmlSlurper import groovy.json.JsonSlurper import java.util.concurrent.TimeUnit diff --git a/modules/group-ib-fp/android/build.gradle b/modules/group-ib-fp/android/build.gradle index 1119cd102f397..be9a8243a32cc 100644 --- a/modules/group-ib-fp/android/build.gradle +++ b/modules/group-ib-fp/android/build.gradle @@ -2,7 +2,6 @@ buildscript { repositories { google() mavenCentral() - jcenter() } dependencies { diff --git a/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.jar b/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.jar index 7454180f2ae8848c63b8b4dea2cb829da983f2fa..8bdaf60c75ab801e22807dde59e12a8735a34077 100644 GIT binary patch literal 45457 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 c82=K%QXLKFx%@O{wJjEi6Y56o#$)Bpeg literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL diff --git a/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.properties b/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.properties index 69a9715077f4f..d30212c04be10 100644 --- a/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.properties +++ b/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/package-lock.json b/package-lock.json index 95eb15adeae45..98f241376211a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "@formatjs/intl-numberformat": "^8.10.3", "@formatjs/intl-pluralrules": "^5.2.14", "@fullstory/browser": "^2.0.6", - "@fullstory/react-native": "^1.7.8", + "@fullstory/react-native": "1.8.0", "@gorhom/portal": "^1.0.14", "@invertase/react-native-apple-authentication": "^2.5.0", "@noble/ed25519": "^3.0.0", @@ -89,15 +89,15 @@ "pako": "^2.1.0", "process": "^0.11.10", "pusher-js": "8.3.0", - "react": "19.1.0", + "react": "19.2.0", "react-collapse": "^5.1.0", "react-content-loader": "^7.0.0", - "react-dom": "19.1.0", + "react-dom": "19.2.0", "react-error-boundary": "^4.0.11", "react-fast-pdf": "^1.0.29", "react-is": "^18.3.1", "react-map-gl": "^7.1.3", - "react-native": "0.81.4", + "react-native": "0.83.1", "react-native-advanced-input-mask": "1.4.6", "react-native-app-logs": "0.3.1", "react-native-blob-util": "0.22.2", @@ -114,7 +114,7 @@ "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#cb392140db4953a283590d7cf93b4d0461baa2a9", "react-native-key-command": "1.0.14", "react-native-keyboard-controller": "1.18.5", - "react-native-launch-arguments": "^4.0.2", + "react-native-launch-arguments": "4.1.1", "react-native-localize": "^3.5.4", "react-native-nitro-modules": "0.29.4", "react-native-nitro-sqlite": "9.2.0", @@ -126,7 +126,7 @@ "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#07d60d78d4772d47afd7a744940fc6b6d1881806", "react-native-plaid-link-sdk": "12.5.3", "react-native-qrcode-svg": "6.3.21", - "react-native-reanimated": "4.1.5", + "react-native-reanimated": "4.2.1", "react-native-release-profiler": "0.4.2", "react-native-render-html": "6.3.1", "react-native-safe-area-context": "5.6.2", @@ -140,7 +140,7 @@ "react-native-vision-camera": "^4.7.2", "react-native-web": "0.21.2", "react-native-webview": "13.16.0", - "react-native-worklets": "0.6.1", + "react-native-worklets": "0.7.1", "react-plaid-link": "3.3.2", "react-web-config": "^1.0.0", "react-webcam": "^7.1.1", @@ -180,8 +180,8 @@ "@react-native-community/cli": "20.0.0", "@react-native-community/cli-platform-android": "20.0.0", "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native/babel-preset": "0.81.4", - "@react-native/metro-config": "0.81.4", + "@react-native/babel-preset": "0.83.1", + "@react-native/metro-config": "0.83.1", "@react-navigation/devtools": "^6.0.10", "@rock-js/platform-android": "0.12.0", "@rock-js/platform-ios": "0.12.0", @@ -210,9 +210,9 @@ "@types/node": "^20.11.5", "@types/pako": "^2.0.3", "@types/pusher-js": "^5.1.0", - "@types/react": "^19.1.0", + "@types/react": "^19.2.0", "@types/react-collapse": "^5.0.1", - "@types/react-dom": "^19.1.0", + "@types/react-dom": "^19.2.0", "@types/react-is": "^18.3.0", "@types/react-native-web": "^0.0.0", "@types/react-test-renderer": "^19.1.0", @@ -274,7 +274,7 @@ "react-compiler-healthcheck": "^19.0.0-beta-8a03594-20241020", "react-native-clean-project": "^4.0.0-alpha4.0", "react-refresh": "^0.14.2", - "react-test-renderer": "19.1.0", + "react-test-renderer": "19.2.0", "reassure": "^1.0.0-rc.4", "rock": "0.12.0", "semver": "7.5.2", @@ -1690,10 +1690,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -1775,13 +1777,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -1859,17 +1861,17 @@ "license": "ISC" }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", - "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.3", + "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "engines": { @@ -1887,11 +1889,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -1963,38 +1967,40 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2014,7 +2020,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2036,12 +2044,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2050,17 +2060,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.27.1", "license": "MIT", @@ -2138,12 +2137,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -2574,12 +2573,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2604,10 +2603,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2674,11 +2675,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2704,15 +2707,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -2949,12 +2954,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3024,10 +3030,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3093,11 +3101,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3313,10 +3323,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3353,10 +3365,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3380,14 +3394,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.26.3", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3426,11 +3442,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3602,14 +3620,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-typescript": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3765,31 +3785,31 @@ "license": "MIT" }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", "debug": "^4.3.1" }, "engines": { @@ -3814,9 +3834,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -8981,9 +9001,9 @@ } }, "node_modules/@fullstory/react-native": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@fullstory/react-native/-/react-native-1.7.8.tgz", - "integrity": "sha512-4kvebnfS3tNiWKbePYzTU0sMr1r83My1/t0rIOGh/jGgFVHWVYp2rEki8ea3P/bw6Mu5j7GwrArtCXLoFPzmoA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@fullstory/react-native/-/react-native-1.8.0.tgz", + "integrity": "sha512-nzzd0+B/C7HLqCFsAwSnvWxS9mQ75Kw8129Br86iIb/M190q0gTMvjEwvA/fM5eLJHu1pKfFLXwb3AU0aHjGqw==", "license": "MIT", "dependencies": { "@fullstory/babel-plugin-annotate-react": "^2.3.2", @@ -11983,32 +12003,32 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.4.tgz", - "integrity": "sha512-AMcDadefBIjD10BRqkWw+W/VdvXEomR6aEZ0fhQRAv7igrBzb4PTn4vHKYg+sUK0e3wa74kcMy2DLc/HtnGcMA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", + "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.4.tgz", - "integrity": "sha512-6ztXf2Tl2iWznyI/Da/N2Eqymt0Mnn69GCLnEFxFbNdk0HxHPZBNWU9shTXhsLWOL7HATSqwg/bB1+3kY1q+mA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", + "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", "devOptional": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.81.4" + "@react-native/codegen": "0.83.1" }, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-preset": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.4.tgz", - "integrity": "sha512-VYj0c/cTjQJn/RJ5G6P0L9wuYSbU9yGbPYDHCKstlQZQWkk+L9V8ZDbxdJBTIei9Xl3KPQ1odQ4QaeW+4v+AZg==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", + "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -12053,8 +12073,8 @@ "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.81.4", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "@react-native/babel-plugin-codegen": "0.83.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, @@ -12065,16 +12085,26 @@ "@babel/core": "*" } }, + "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "hermes-parser": "0.32.0" + } + }, "node_modules/@react-native/codegen": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.4.tgz", - "integrity": "sha512-LWTGUTzFu+qOQnvkzBP52B90Ym3stZT8IFCzzUrppz8Iwglg83FCtDZAR4yLHI29VY/x/+pkcWAMCl3739XHdw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", + "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", "glob": "^7.1.1", - "hermes-parser": "0.29.1", + "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "yargs": "^17.6.2" @@ -12107,33 +12137,18 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@react-native/codegen/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/@react-native/codegen/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.4.tgz", - "integrity": "sha512-8mpnvfcLcnVh+t1ok6V9eozWo8Ut+TZhz8ylJ6gF9d6q9EGDQX6s8jenan5Yv/pzN4vQEKI4ib2pTf/FELw+SA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", + "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.81.4", + "@react-native/dev-middleware": "0.83.1", "debug": "^4.4.0", "invariant": "^2.2.4", - "metro": "^0.83.1", - "metro-config": "^0.83.1", - "metro-core": "^0.83.1", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", "semver": "^7.1.3" }, "engines": { @@ -12152,6 +12167,62 @@ } } }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", + "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", + "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.83.1", + "@react-native/debugger-shell": "0.83.1", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^7.5.10" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/@react-native/debugger-frontend": { "version": "0.81.4", "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.4.tgz", @@ -12161,6 +12232,19 @@ "node": ">= 20.19.4" } }, + "node_modules/@react-native/debugger-shell": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", + "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": ">= 20.19.4" + } + }, "node_modules/@react-native/dev-middleware": { "version": "0.81.4", "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.4.tgz", @@ -12208,33 +12292,33 @@ } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.4.tgz", - "integrity": "sha512-T7fPcQvDDCSusZFVSg6H1oVDKb/NnVYLnsqkcHsAF2C2KGXyo3J7slH/tJAwNfj/7EOA2OgcWxfC1frgn9TQvw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", + "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.4.tgz", - "integrity": "sha512-sr42FaypKXJHMVHhgSbu2f/ZJfrLzgaoQ+HdpRvKEiEh2mhFf6XzZwecyLBvWqf2pMPZa+CpPfNPiejXjKEy8w==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", + "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/metro-babel-transformer": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.81.4.tgz", - "integrity": "sha512-AahgamQ9kZV4B1x8I/LpTZBgbT+j9i1pQoM3KDkECPIOF1JUwNFUukEjpkq4kRSdzudLocnfASFg+eWzIgPcCA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.83.1.tgz", + "integrity": "sha512-fqt6DHWX1GBGDKa5WJOjDtPPy2M9lkYVLn59fBeFQ0GXhBRzNbUh8JzWWI/Q2CLDZ2tgKCcwaiXJ1OHWVd2BCQ==", "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.81.4", - "hermes-parser": "0.29.1", + "@react-native/babel-preset": "0.83.1", + "hermes-parser": "0.32.0", "nullthrows": "^1.1.1" }, "engines": { @@ -12244,34 +12328,17 @@ "@babel/core": "*" } }, - "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, "node_modules/@react-native/metro-config": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.81.4.tgz", - "integrity": "sha512-aEXhRMsz6yN5X63Zk+cdKByQ0j3dsKv+ETRP9lLARdZ82fBOCMuK6IfmZMwK3A/3bI7gSvt2MFPn3QHy3WnByw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.83.1.tgz", + "integrity": "sha512-1rjYZf62fCm6QAinHmRAKnJxIypX0VF/zBPd0qWvWABMZugrS0eACuIbk9Wk0StBod4yL8KnwEJyg77ak8xYzQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native/js-polyfills": "0.81.4", - "@react-native/metro-babel-transformer": "0.81.4", - "metro-config": "^0.83.1", - "metro-runtime": "^0.83.1" + "@react-native/js-polyfills": "0.83.1", + "@react-native/metro-babel-transformer": "0.83.1", + "metro-config": "^0.83.3", + "metro-runtime": "^0.83.3" }, "engines": { "node": ">= 20.19.4" @@ -12286,9 +12353,9 @@ "license": "MIT" }, "node_modules/@react-native/virtualized-lists": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.81.4.tgz", - "integrity": "sha512-hBM+rMyL6Wm1Q4f/WpqGsaCojKSNUBqAXLABNGoWm1vabZ7cSnARMxBvA/2vo3hLcoR4v7zDK8tkKm9+O0LjVA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", + "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", "license": "MIT", "dependencies": { "invariant": "^2.2.4", @@ -12298,7 +12365,7 @@ "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.1.0", + "@types/react": "^19.2.0", "react": "*", "react-native": "*" }, @@ -12876,16 +12943,6 @@ "semver": "^7.5.2" } }, - "node_modules/@rock-js/plugin-metro/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12919,13 +12976,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@rock-js/plugin-metro/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@rock-js/plugin-metro/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -12956,20 +13006,6 @@ "node": ">=8" } }, - "node_modules/@rock-js/plugin-metro/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", @@ -12980,334 +13016,6 @@ "node": ">=4" } }, - "node_modules/@rock-js/plugin-metro/node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", - "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "error-stack-parser": "^2.0.6", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.32.0", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.3", - "metro-cache": "0.83.3", - "metro-cache-key": "0.83.3", - "metro-config": "0.83.3", - "metro-core": "0.83.3", - "metro-file-map": "0.83.3", - "metro-resolver": "0.83.3", - "metro-runtime": "0.83.3", - "metro-source-map": "0.83.3", - "metro-symbolicate": "0.83.3", - "metro-transform-plugins": "0.83.3", - "metro-transform-worker": "0.83.3", - "mime-types": "^2.1.27", - "nullthrows": "^1.1.1", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "throat": "^5.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-babel-transformer": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", - "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.32.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-cache": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", - "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "exponential-backoff": "^3.1.1", - "flow-enums-runtime": "^0.0.6", - "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.3" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-cache-key": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", - "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-config": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", - "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", - "dev": true, - "license": "MIT", - "dependencies": { - "connect": "^3.6.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.83.3", - "metro-cache": "0.83.3", - "metro-core": "0.83.3", - "metro-runtime": "0.83.3", - "yaml": "^2.6.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-core": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", - "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.3" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-file-map": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", - "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "fb-watchman": "^2.0.0", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-minify-terser": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", - "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "terser": "^5.15.0" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-resolver": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", - "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-runtime": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", - "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.0", - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-source-map": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", - "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-symbolicate": "0.83.3", - "nullthrows": "^1.1.1", - "ob1": "0.83.3", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-symbolicate": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", - "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-source-map": "0.83.3", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-transform-plugins": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", - "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-transform-worker": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", - "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "metro": "0.83.3", - "metro-babel-transformer": "0.83.3", - "metro-cache": "0.83.3", - "metro-cache-key": "0.83.3", - "metro-minify-terser": "0.83.3", - "metro-source-map": "0.83.3", - "metro-transform-plugins": "0.83.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/ob1": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", - "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/open": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", @@ -13321,26 +13029,6 @@ "node": ">=8" } }, - "node_modules/@rock-js/plugin-metro/node_modules/serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -16480,10 +16168,12 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.2", + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.8.tgz", + "integrity": "sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==", "license": "MIT", "dependencies": { - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-collapse": { @@ -16495,10 +16185,12 @@ } }, "node_modules/@types/react-dom": { - "version": "19.1.2", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "license": "MIT", "peerDependencies": { - "@types/react": "^19.0.0" + "@types/react": "^19.2.0" } }, "node_modules/@types/react-is": { @@ -20872,7 +20564,9 @@ "license": "MIT" }, "node_modules/csstype": { - "version": "3.1.1", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, "node_modules/csv-parse": { @@ -24226,6 +23920,18 @@ "node": ">=0.8.0" } }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -25614,6 +25320,12 @@ "version": "1.1.13", "license": "LGPL-3.0" }, + "node_modules/hermes-compiler": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", + "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "license": "MIT" + }, "node_modules/hermes-estree": { "version": "0.32.0", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", @@ -28009,6 +27721,34 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/jest-expo/node_modules/react-is": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.3.tgz", + "integrity": "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-expo/node_modules/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-is": "^19.1.0", + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/jest-expo/node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-expo/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -30374,9 +30114,9 @@ } }, "node_modules/metro": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.2.tgz", - "integrity": "sha512-HQgs9H1FyVbRptNSMy/ImchTTE5vS2MSqLoOo7hbDoBq6hPPZokwJvBMwrYSxdjQZmLXz2JFZtdvS+ZfgTc9yw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", + "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", @@ -30400,18 +30140,18 @@ "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.2", - "metro-cache": "0.83.2", - "metro-cache-key": "0.83.2", - "metro-config": "0.83.2", - "metro-core": "0.83.2", - "metro-file-map": "0.83.2", - "metro-resolver": "0.83.2", - "metro-runtime": "0.83.2", - "metro-source-map": "0.83.2", - "metro-symbolicate": "0.83.2", - "metro-transform-plugins": "0.83.2", - "metro-transform-worker": "0.83.2", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3", "mime-types": "^2.1.27", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", @@ -30428,9 +30168,9 @@ } }, "node_modules/metro-babel-transformer": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.2.tgz", - "integrity": "sha512-rirY1QMFlA1uxH3ZiNauBninwTioOgwChnRdDcbB4tgRZ+bGX9DiXoh9QdpppiaVKXdJsII932OwWXGGV4+Nlw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", + "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -30443,24 +30183,24 @@ } }, "node_modules/metro-cache": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.2.tgz", - "integrity": "sha512-Z43IodutUZeIS7OTH+yQFjc59QlFJ6s5OvM8p2AP9alr0+F8UKr8ADzFzoGKoHefZSKGa4bJx7MZJLF6GwPDHQ==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", + "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", "license": "MIT", "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.2" + "metro-core": "0.83.3" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-cache-key": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.2.tgz", - "integrity": "sha512-3EMG/GkGKYoTaf5RqguGLSWRqGTwO7NQ0qXKmNBjr0y6qD9s3VBXYlwB+MszGtmOKsqE9q3FPrE5Nd9Ipv7rZw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", + "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" @@ -30492,18 +30232,18 @@ } }, "node_modules/metro-config": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.2.tgz", - "integrity": "sha512-1FjCcdBe3e3D08gSSiU9u3Vtxd7alGH3x/DNFqWDFf5NouX4kLgbVloDDClr1UrLz62c0fHh2Vfr9ecmrOZp+g==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", "license": "MIT", "dependencies": { "connect": "^3.6.5", "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.7.0", - "metro": "0.83.2", - "metro-cache": "0.83.2", - "metro-core": "0.83.2", - "metro-runtime": "0.83.2", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", "yaml": "^2.6.1" }, "engines": { @@ -30511,23 +30251,23 @@ } }, "node_modules/metro-core": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.2.tgz", - "integrity": "sha512-8DRb0O82Br0IW77cNgKMLYWUkx48lWxUkvNUxVISyMkcNwE/9ywf1MYQUE88HaKwSrqne6kFgCSA/UWZoUT0Iw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", + "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.2" + "metro-resolver": "0.83.3" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-file-map": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.2.tgz", - "integrity": "sha512-cMSWnEqZrp/dzZIEd7DEDdk72PXz6w5NOKriJoDN9p1TDQ5nAYrY2lHi8d6mwbcGLoSlWmpPyny9HZYFfPWcGQ==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", + "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -30584,9 +30324,9 @@ } }, "node_modules/metro-minify-terser": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.2.tgz", - "integrity": "sha512-zvIxnh7U0JQ7vT4quasKsijId3dOAWgq+ip2jF/8TMrPUqQabGrs04L2dd0haQJ+PA+d4VvK/bPOY8X/vL2PWw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", + "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", @@ -30597,9 +30337,9 @@ } }, "node_modules/metro-resolver": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.2.tgz", - "integrity": "sha512-Yf5mjyuiRE/Y+KvqfsZxrbHDA15NZxyfg8pIk0qg47LfAJhpMVEX+36e6ZRBq7KVBqy6VDX5Sq55iHGM4xSm7Q==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", + "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" @@ -30609,9 +30349,9 @@ } }, "node_modules/metro-runtime": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.2.tgz", - "integrity": "sha512-nnsPtgRvFbNKwemqs0FuyFDzXLl+ezuFsUXDbX8o0SXOfsOPijqiQrf3kuafO1Zx1aUWf4NOrKJMAQP5EEHg9A==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", @@ -30622,9 +30362,9 @@ } }, "node_modules/metro-source-map": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.2.tgz", - "integrity": "sha512-5FL/6BSQvshIKjXOennt9upFngq2lFvDakZn5LfauIVq8+L4sxXewIlSTcxAtzbtjAIaXeOSVMtCJ5DdfCt9AA==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", + "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", @@ -30632,9 +30372,9 @@ "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.83.2", + "metro-symbolicate": "0.83.3", "nullthrows": "^1.1.1", - "ob1": "0.83.2", + "ob1": "0.83.3", "source-map": "^0.5.6", "vlq": "^1.0.0" }, @@ -30652,14 +30392,14 @@ } }, "node_modules/metro-symbolicate": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.2.tgz", - "integrity": "sha512-KoU9BLwxxED6n33KYuQQuc5bXkIxF3fSwlc3ouxrrdLWwhu64muYZNQrukkWzhVKRNFIXW7X2iM8JXpi2heIPw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", + "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.83.2", + "metro-source-map": "0.83.3", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" @@ -30681,9 +30421,9 @@ } }, "node_modules/metro-transform-plugins": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.2.tgz", - "integrity": "sha512-5WlW25WKPkiJk2yA9d8bMuZrgW7vfA4f4MBb9ZeHbTB3eIAoNN8vS8NENgG/X/90vpTB06X66OBvxhT3nHwP6A==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", + "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -30698,9 +30438,9 @@ } }, "node_modules/metro-transform-worker": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.2.tgz", - "integrity": "sha512-G5DsIg+cMZ2KNfrdLnWMvtppb3+Rp1GMyj7Bvd9GgYc/8gRmvq1XVEF9XuO87Shhb03kFhGqMTgZerz3hZ1v4Q==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", + "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -30708,13 +30448,13 @@ "@babel/parser": "^7.25.3", "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "metro": "0.83.2", - "metro-babel-transformer": "0.83.2", - "metro-cache": "0.83.2", - "metro-cache-key": "0.83.2", - "metro-minify-terser": "0.83.2", - "metro-source-map": "0.83.2", - "metro-transform-plugins": "0.83.2", + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-source-map": "0.83.3", + "metro-transform-plugins": "0.83.3", "nullthrows": "^1.1.1" }, "engines": { @@ -31282,9 +31022,9 @@ "license": "MIT" }, "node_modules/ob1": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.2.tgz", - "integrity": "sha512-XlK3w4M+dwd1g1gvHzVbxiXEbUllRONEgcF2uEO0zm4nxa0eKlh41c6N65q1xbiDOeKKda1tvNOAD33fNjyvCg==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", + "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" @@ -32942,9 +32682,9 @@ } }, "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -33108,15 +32848,15 @@ } }, "node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.0" + "react": "^19.2.0" } }, "node_modules/react-error-boundary": { @@ -33184,44 +32924,45 @@ } }, "node_modules/react-native": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.4.tgz", - "integrity": "sha512-bt5bz3A/+Cv46KcjV0VQa+fo7MKxs17RCcpzjftINlen4ZDUl0I6Ut+brQ2FToa5oD0IB0xvQHfmsg2EDqsZdQ==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz", + "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==", "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.81.4", - "@react-native/codegen": "0.81.4", - "@react-native/community-cli-plugin": "0.81.4", - "@react-native/gradle-plugin": "0.81.4", - "@react-native/js-polyfills": "0.81.4", - "@react-native/normalize-colors": "0.81.4", - "@react-native/virtualized-lists": "0.81.4", + "@react-native/assets-registry": "0.83.1", + "@react-native/codegen": "0.83.1", + "@react-native/community-cli-plugin": "0.83.1", + "@react-native/gradle-plugin": "0.83.1", + "@react-native/js-polyfills": "0.83.1", + "@react-native/normalize-colors": "0.83.1", + "@react-native/virtualized-lists": "0.83.1", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", + "hermes-compiler": "0.14.0", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.83.1", - "metro-source-map": "^0.83.1", + "metro-runtime": "^0.83.3", + "metro-source-map": "^0.83.3", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.26.0", + "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", - "ws": "^6.2.3", + "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { @@ -33231,8 +32972,8 @@ "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.1.0", - "react": "^19.1.0" + "@types/react": "^19.1.1", + "react": "^19.2.0" }, "peerDependenciesMeta": { "@types/react": { @@ -33460,7 +33201,9 @@ } }, "node_modules/react-native-launch-arguments": { - "version": "4.0.2", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-native-launch-arguments/-/react-native-launch-arguments-4.1.1.tgz", + "integrity": "sha512-7tkJNHKhn37eXmGKz4UJ+47AywEqb3fknUsJ1GjCLNL0cpxDddKr43JbLrPGpASIxUSu36oYV/a0o0T6IWyKMg==", "license": "MIT", "peerDependencies": { "react": ">=16.8.1", @@ -33857,25 +33600,24 @@ } }, "node_modules/react-native-reanimated": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.1.5.tgz", - "integrity": "sha512-UA6VUbxwhRjEw2gSNrvhkusUq3upfD3Cv+AnB07V+kC8kpvwRVI+ivwY95ePbWNFkFpP+Y2Sdw1WHpHWEV+P2Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.2.1.tgz", + "integrity": "sha512-/NcHnZMyOvsD/wYXug/YqSKw90P9edN0kEPL5lP4PFf1aQ4F1V7MKe/E0tvfkXKIajy3Qocp5EiEnlcrK/+BZg==", "license": "MIT", "dependencies": { - "react-native-is-edge-to-edge": "^1.2.1", - "semver": "7.7.2" + "react-native-is-edge-to-edge": "1.2.1", + "semver": "7.7.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0", "react": "*", "react-native": "*", - "react-native-worklets": ">=0.5.0" + "react-native-worklets": ">=0.7.0" } }, "node_modules/react-native-reanimated/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -34161,33 +33903,33 @@ } }, "node_modules/react-native-worklets": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.6.1.tgz", - "integrity": "sha512-URca8l7c7Uog7gv4mcg9KILdJlnbvwdS5yfXQYf5TDkD2W1VY1sduEKrD+sA3lUPXH/TG1vmXAvNxCNwPMYgGg==", - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-arrow-functions": "^7.0.0-0", - "@babel/plugin-transform-class-properties": "^7.0.0-0", - "@babel/plugin-transform-classes": "^7.0.0-0", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", - "@babel/plugin-transform-optional-chaining": "^7.0.0-0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", - "@babel/plugin-transform-template-literals": "^7.0.0-0", - "@babel/plugin-transform-unicode-regex": "^7.0.0-0", - "@babel/preset-typescript": "^7.16.7", - "convert-source-map": "^2.0.0", - "semver": "7.7.2" + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.1.tgz", + "integrity": "sha512-KNsvR48ULg73QhTlmwPbdJLPsWcyBotrGPsrDRDswb5FYpQaJEThUKc2ncXE4UM5dn/ewLoQHjSjLaKUVPxPhA==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-arrow-functions": "7.27.1", + "@babel/plugin-transform-class-properties": "7.27.1", + "@babel/plugin-transform-classes": "7.28.4", + "@babel/plugin-transform-nullish-coalescing-operator": "7.27.1", + "@babel/plugin-transform-optional-chaining": "7.27.1", + "@babel/plugin-transform-shorthand-properties": "7.27.1", + "@babel/plugin-transform-template-literals": "7.27.1", + "@babel/plugin-transform-unicode-regex": "7.27.1", + "@babel/preset-typescript": "7.27.1", + "convert-source-map": "2.0.0", + "semver": "7.7.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0", + "@babel/core": "*", "react": "*", "react-native": "*" } }, "node_modules/react-native-worklets/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -34197,9 +33939,9 @@ } }, "node_modules/react-native/node_modules/@react-native/normalize-colors": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.4.tgz", - "integrity": "sha512-9nRRHO1H+tcFqjb9gAM105Urtgcanbta2tuqCVY0NATHeFPDEAB7gPyiLxCHKMi1NbhP6TH0kxgSWXKZl1cyRg==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", + "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", "license": "MIT" }, "node_modules/react-native/node_modules/ansi-regex": { @@ -34209,6 +33951,15 @@ "node": ">=8" } }, + "node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.32.0" + } + }, "node_modules/react-native/node_modules/glob": { "version": "7.2.3", "license": "ISC", @@ -34289,21 +34040,23 @@ } }, "node_modules/react-test-renderer": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.1.0.tgz", - "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", + "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", "dev": true, "license": "MIT", "dependencies": { - "react-is": "^19.1.0", - "scheduler": "^0.26.0" + "react-is": "^19.2.0", + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.0" + "react": "^19.2.0" } }, "node_modules/react-test-renderer/node_modules/react-is": { - "version": "19.1.0", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.3.tgz", + "integrity": "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==", "dev": true, "license": "MIT" }, @@ -35049,9 +34802,9 @@ } }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/schema-utils": { diff --git a/package.json b/package.json index 8360b731f810d..675834bff04c8 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "@formatjs/intl-numberformat": "^8.10.3", "@formatjs/intl-pluralrules": "^5.2.14", "@fullstory/browser": "^2.0.6", - "@fullstory/react-native": "^1.7.8", + "@fullstory/react-native": "1.8.0", "@gorhom/portal": "^1.0.14", "@invertase/react-native-apple-authentication": "^2.5.0", "@noble/ed25519": "^3.0.0", @@ -158,15 +158,15 @@ "pako": "^2.1.0", "process": "^0.11.10", "pusher-js": "8.3.0", - "react": "19.1.0", + "react": "19.2.0", "react-collapse": "^5.1.0", "react-content-loader": "^7.0.0", - "react-dom": "19.1.0", + "react-dom": "19.2.0", "react-error-boundary": "^4.0.11", "react-fast-pdf": "^1.0.29", "react-is": "^18.3.1", "react-map-gl": "^7.1.3", - "react-native": "0.81.4", + "react-native": "0.83.1", "react-native-advanced-input-mask": "1.4.6", "react-native-app-logs": "0.3.1", "react-native-blob-util": "0.22.2", @@ -183,7 +183,7 @@ "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#cb392140db4953a283590d7cf93b4d0461baa2a9", "react-native-key-command": "1.0.14", "react-native-keyboard-controller": "1.18.5", - "react-native-launch-arguments": "^4.0.2", + "react-native-launch-arguments": "4.1.1", "react-native-localize": "^3.5.4", "react-native-nitro-modules": "0.29.4", "react-native-nitro-sqlite": "9.2.0", @@ -195,7 +195,7 @@ "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#07d60d78d4772d47afd7a744940fc6b6d1881806", "react-native-plaid-link-sdk": "12.5.3", "react-native-qrcode-svg": "6.3.21", - "react-native-reanimated": "4.1.5", + "react-native-reanimated": "4.2.1", "react-native-release-profiler": "0.4.2", "react-native-render-html": "6.3.1", "react-native-safe-area-context": "5.6.2", @@ -209,7 +209,7 @@ "react-native-vision-camera": "^4.7.2", "react-native-web": "0.21.2", "react-native-webview": "13.16.0", - "react-native-worklets": "0.6.1", + "react-native-worklets": "0.7.1", "react-plaid-link": "3.3.2", "react-web-config": "^1.0.0", "react-webcam": "^7.1.1", @@ -249,8 +249,8 @@ "@react-native-community/cli": "20.0.0", "@react-native-community/cli-platform-android": "20.0.0", "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native/babel-preset": "0.81.4", - "@react-native/metro-config": "0.81.4", + "@react-native/babel-preset": "0.83.1", + "@react-native/metro-config": "0.83.1", "@react-navigation/devtools": "^6.0.10", "@rock-js/platform-android": "0.12.0", "@rock-js/platform-ios": "0.12.0", @@ -279,9 +279,9 @@ "@types/node": "^20.11.5", "@types/pako": "^2.0.3", "@types/pusher-js": "^5.1.0", - "@types/react": "^19.1.0", + "@types/react": "^19.2.0", "@types/react-collapse": "^5.0.1", - "@types/react-dom": "^19.1.0", + "@types/react-dom": "^19.2.0", "@types/react-is": "^18.3.0", "@types/react-native-web": "^0.0.0", "@types/react-test-renderer": "^19.1.0", @@ -343,7 +343,7 @@ "react-compiler-healthcheck": "^19.0.0-beta-8a03594-20241020", "react-native-clean-project": "^4.0.0-alpha4.0", "react-refresh": "^0.14.2", - "react-test-renderer": "19.1.0", + "react-test-renderer": "19.2.0", "reassure": "^1.0.0-rc.4", "rock": "0.12.0", "semver": "7.5.2", @@ -387,8 +387,8 @@ "path-to-regexp": "0.1.10", "send": "0.19.0", "regexpu-core": "5.3.2", - "react": "19.1.0", - "react-dom": "19.1.0", + "react": "19.2.0", + "react-dom": "19.2.0", "eslint-config-airbnb-typescript": { "@typescript-eslint/eslint-plugin": "^8.45.0", "@typescript-eslint/parser": "^8.45.0", diff --git a/patches/@react-native/virtualized-lists/@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch b/patches/@react-native/virtualized-lists/@react-native+virtualized-lists+0.83.1+001+osr-improvement.patch similarity index 100% rename from patches/@react-native/virtualized-lists/@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch rename to patches/@react-native/virtualized-lists/@react-native+virtualized-lists+0.83.1+001+osr-improvement.patch diff --git a/patches/react-native-reanimated/details.md b/patches/react-native-reanimated/details.md deleted file mode 100644 index 4ee1327bb42cc..0000000000000 --- a/patches/react-native-reanimated/details.md +++ /dev/null @@ -1,9 +0,0 @@ - -# `react-native-reanimated` patches - -### [react-native-reanimated+4.1.5+001+catch-all-exceptions-on-stoi.patch](react-native-reanimated+4.1.5+001+catch-all-exceptions-on-stoi.patch) - -- Reason: Reanimated wasn't able to catch an exception here, so the catch clause was broadened. -- Upstream PR/issue: 🛑 -- E/App issue: 🛑 -- PR Introducing Patch: [Upgrade to React Native 0.76](https://github.com/Expensify/App/pull/51475) \ No newline at end of file diff --git a/patches/react-native-reanimated/react-native-reanimated+4.1.5+001+catch-all-exceptions-on-stoi.patch b/patches/react-native-reanimated/react-native-reanimated+4.1.5+001+catch-all-exceptions-on-stoi.patch deleted file mode 100644 index 4e168c22a926b..0000000000000 --- a/patches/react-native-reanimated/react-native-reanimated+4.1.5+001+catch-all-exceptions-on-stoi.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.cpp b/node_modules/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.cpp -index 6574d2d..8cb9b2f 100644 ---- a/node_modules/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.cpp -+++ b/node_modules/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.cpp -@@ -805,7 +805,7 @@ void LayoutAnimationsProxy::transferConfigFromNativeID( - auto nativeId = stoi(nativeIdString); - layoutAnimationsManager_->transferConfigFromNativeID(nativeId, tag); - } catch (std::invalid_argument) { -- } catch (std::out_of_range) { -+ } catch (...) { - } - } - From dfcd6d70f6e3859bed335a39a5c9c1f27626ac7a Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 19 Jan 2026 15:27:15 +0100 Subject: [PATCH 03/56] wip --- package-lock.json | 10 +- package.json | 2 +- ...y+react-native-live-markdown+0.1.317.patch | 118 - .../react-native-live-markdown/details.md | 18 - ...react-native+6.5.1+005+support-RN-82.patch | 4815 +++++++++++++++++ ...native+0.83.1+014+fixScrollViewState.patch | 2 +- 6 files changed, 4822 insertions(+), 143 deletions(-) delete mode 100644 patches/@expensify/react-native-live-markdown/@expensify+react-native-live-markdown+0.1.317.patch delete mode 100644 patches/@expensify/react-native-live-markdown/details.md create mode 100644 patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-82.patch diff --git a/package-lock.json b/package-lock.json index 98f241376211a..54efa3d38ed45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@expensify/nitro-utils": "file:./modules/ExpensifyNitroUtils", "@expensify/react-native-background-task": "file:./modules/background-task", "@expensify/react-native-hybrid-app": "file:./modules/hybrid-app", - "@expensify/react-native-live-markdown": "0.1.317", + "@expensify/react-native-live-markdown": "https://github.com/Expensify/react-native-live-markdown.git#85413860f969c22951de15c0b631ee0b877f3e85", "@expensify/react-native-wallet": "0.1.11", "@expo/metro-runtime": "^6.0.2", "@firebase/app": "^0.13.2", @@ -5608,9 +5608,9 @@ "link": true }, "node_modules/@expensify/react-native-live-markdown": { - "version": "0.1.317", - "resolved": "https://registry.npmjs.org/@expensify/react-native-live-markdown/-/react-native-live-markdown-0.1.317.tgz", - "integrity": "sha512-B5KYLH7O8jHiP5AWQJ+n/fXPN4XldH+ODiwAylEVUOWEcbI0WztFYWK4fCsCq6kx3ajYl0Y58nfza3jnSuj95g==", + "version": "0.1.320", + "resolved": "git+ssh://git@github.com/Expensify/react-native-live-markdown.git#85413860f969c22951de15c0b631ee0b877f3e85", + "integrity": "sha512-k9SwpTORPPTstfoGyC8XLOPKluxYtk/lz7MdqRpqXsH2udkuGJwU2spa20b1gj9b7cDmZ6+qm7/Z19HEdGBdgA==", "license": "MIT", "workspaces": [ "./example", @@ -5623,7 +5623,7 @@ "expensify-common": ">=2.0.148", "react": "*", "react-native": "*", - "react-native-worklets": ">=0.6.0" + "react-native-worklets": ">=0.7.0" } }, "node_modules/@expensify/react-native-wallet": { diff --git a/package.json b/package.json index 675834bff04c8..4542bb6757919 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "@expensify/nitro-utils": "file:./modules/ExpensifyNitroUtils", "@expensify/react-native-background-task": "file:./modules/background-task", "@expensify/react-native-hybrid-app": "file:./modules/hybrid-app", - "@expensify/react-native-live-markdown": "0.1.317", + "@expensify/react-native-live-markdown": "https://github.com/Expensify/react-native-live-markdown.git#85413860f969c22951de15c0b631ee0b877f3e85", "@expensify/react-native-wallet": "0.1.11", "@expo/metro-runtime": "^6.0.2", "@firebase/app": "^0.13.2", diff --git a/patches/@expensify/react-native-live-markdown/@expensify+react-native-live-markdown+0.1.317.patch b/patches/@expensify/react-native-live-markdown/@expensify+react-native-live-markdown+0.1.317.patch deleted file mode 100644 index ab04f92db7f20..0000000000000 --- a/patches/@expensify/react-native-live-markdown/@expensify+react-native-live-markdown+0.1.317.patch +++ /dev/null @@ -1,118 +0,0 @@ -diff --git a/node_modules/@expensify/react-native-live-markdown/lib/module/MarkdownTextInput.web.js b/node_modules/@expensify/react-native-live-markdown/lib/module/MarkdownTextInput.web.js -index e36195f..3a3ae72 100644 ---- a/node_modules/@expensify/react-native-live-markdown/lib/module/MarkdownTextInput.web.js -+++ b/node_modules/@expensify/react-native-live-markdown/lib/module/MarkdownTextInput.web.js -@@ -21,6 +21,7 @@ const MarkdownTextInput = /*#__PURE__*/React.forwardRef(({ - autoCapitalize = 'sentences', - autoCorrect = true, - blurOnSubmit = false, -+ submitBehavior, - caretHidden, - clearTextOnFocus, - dir = 'auto', -@@ -359,8 +360,19 @@ const MarkdownTextInput = /*#__PURE__*/React.forwardRef(({ - handleOnChangeText(e); - return; - } -- const blurOnSubmitDefault = !multiline; -- const shouldBlurOnSubmit = blurOnSubmit === null ? blurOnSubmitDefault : blurOnSubmit; -+ // Support submitBehavior prop (React Native 0.73+), fallback to blurOnSubmit for backwards compatibility -+ let shouldBlurOnSubmit; -+ let shouldSubmit; -+ if (submitBehavior != null) { -+ // submitBehavior takes precedence over blurOnSubmit -+ shouldSubmit = submitBehavior === 'submit' || submitBehavior === 'blurAndSubmit'; -+ shouldBlurOnSubmit = submitBehavior === 'blurAndSubmit'; -+ } else { -+ // Fallback to blurOnSubmit logic for backwards compatibility -+ const blurOnSubmitDefault = !multiline; -+ shouldBlurOnSubmit = blurOnSubmit === null ? blurOnSubmitDefault : blurOnSubmit; -+ shouldSubmit = blurOnSubmit || !multiline; -+ } - const nativeEvent = e.nativeEvent; - const isComposing = isEventComposing(nativeEvent); - const event = e; -@@ -373,18 +385,19 @@ const MarkdownTextInput = /*#__PURE__*/React.forwardRef(({ - !isComposing && !e.isDefaultPrevented()) { - // prevent "Enter" from inserting a newline or submitting a form - e.preventDefault(); -- if (!e.shiftKey && (blurOnSubmit || !multiline) && onSubmitEditing) { -+ // submitBehavior === 'newline' means don't submit, just insert newline (default behavior) -+ if (!e.shiftKey && shouldSubmit && onSubmitEditing) { - onSubmitEditing(event); -- } else if (multiline) { -+ } else if (multiline && (!shouldSubmit || e.shiftKey)) { - // We need to change normal behavior of "Enter" key to insert a line breaks, to prevent wrapping contentEditable text in

tags. - // Thanks to that in every situation we have proper amount of new lines in our parsed text. Without it pressing enter in empty lines will add 2 more new lines. - insertText(e, '\n'); - } -- if (!e.shiftKey && (shouldBlurOnSubmit && hostNode !== null || !multiline)) { -+ if (!e.shiftKey && shouldBlurOnSubmit && hostNode !== null) { - setTimeout(() => divRef.current && divRef.current.blur(), 0); - } - } -- }, [multiline, blurOnSubmit, setEventProps, onKeyPress, handleOnChangeText, onSubmitEditing, insertText]); -+ }, [multiline, blurOnSubmit, submitBehavior, setEventProps, onKeyPress, handleOnChangeText, onSubmitEditing, insertText]); - const handleFocus = useCallback(event => { - hasJustBeenFocused.current = true; - const e = event; -diff --git a/node_modules/@expensify/react-native-live-markdown/src/MarkdownTextInput.web.tsx b/node_modules/@expensify/react-native-live-markdown/src/MarkdownTextInput.web.tsx -index fa3283d..59f02c6 100644 ---- a/node_modules/@expensify/react-native-live-markdown/src/MarkdownTextInput.web.tsx -+++ b/node_modules/@expensify/react-native-live-markdown/src/MarkdownTextInput.web.tsx -@@ -87,6 +87,7 @@ const MarkdownTextInput = React.forwardRef); -- } else if (multiline) { -+ } else if (multiline && (!shouldSubmit || e.shiftKey)) { - // We need to change normal behavior of "Enter" key to insert a line breaks, to prevent wrapping contentEditable text in
tags. - // Thanks to that in every situation we have proper amount of new lines in our parsed text. Without it pressing enter in empty lines will add 2 more new lines. - insertText(e, '\n'); - } -- if (!e.shiftKey && ((shouldBlurOnSubmit && hostNode !== null) || !multiline)) { -+ if (!e.shiftKey && shouldBlurOnSubmit && hostNode !== null) { - setTimeout(() => divRef.current && divRef.current.blur(), 0); - } - } - }, -- [multiline, blurOnSubmit, setEventProps, onKeyPress, handleOnChangeText, onSubmitEditing, insertText], -+ [multiline, blurOnSubmit, submitBehavior, setEventProps, onKeyPress, handleOnChangeText, onSubmitEditing, insertText], - ); - - const handleFocus: FocusEventHandler = useCallback( diff --git a/patches/@expensify/react-native-live-markdown/details.md b/patches/@expensify/react-native-live-markdown/details.md deleted file mode 100644 index 6a7cbf31d75a9..0000000000000 --- a/patches/@expensify/react-native-live-markdown/details.md +++ /dev/null @@ -1,18 +0,0 @@ -# # `react-native-live-markdown` patches - -### [@expensify+react-native-live-markdown+0.1.317.patch](@expensify+react-native-live-markdown+0.1.317.patch) - -- Reason: - ``` - Adds support for the `submitBehavior` prop in MarkdownTextInput component for web. - React Native deprecated `blurOnSubmit` in favor of `submitBehavior` (React Native 0.73+), - but @expensify/react-native-live-markdown's MarkdownTextInput on web doesn't natively - support this prop. This patch implements the web equivalent behavior, mapping - `submitBehavior` values ('submit', 'blurAndSubmit', 'newline') to the appropriate - keyboard handling logic in handleKeyPress while maintaining backwards compatibility with - the deprecated `blurOnSubmit` prop. This aligns MarkdownTextInput with React Native's - TextInput API and react-native-web's TextInput implementation. - ``` -- Upstream PR/issue: https://github.com/Expensify/react-native-live-markdown/issues/744 -- E/App issue: https://github.com/Expensify/App/issues/73782 -- PR introducing patch: https://github.com/Expensify/App/pull/76332 \ No newline at end of file diff --git a/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-82.patch b/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-82.patch new file mode 100644 index 0000000000000..c850b81e7d244 --- /dev/null +++ b/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-82.patch @@ -0,0 +1,4815 @@ +diff --git a/node_modules/lottie-react-native/android/build/generated/source/buildConfig/debug/com/airbnb/android/react/lottie/BuildConfig.java b/node_modules/lottie-react-native/android/build/generated/source/buildConfig/debug/com/airbnb/android/react/lottie/BuildConfig.java +new file mode 100644 +index 0000000..1bde21c +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/buildConfig/debug/com/airbnb/android/react/lottie/BuildConfig.java +@@ -0,0 +1,12 @@ ++/** ++ * Automatically generated file. DO NOT MODIFY ++ */ ++package com.airbnb.android.react.lottie; ++ ++public final class BuildConfig { ++ public static final boolean DEBUG = Boolean.parseBoolean("true"); ++ public static final String LIBRARY_PACKAGE_NAME = "com.airbnb.android.react.lottie"; ++ public static final String BUILD_TYPE = "debug"; ++ // Field from default config. ++ public static final boolean IS_NEW_ARCHITECTURE_ENABLED = true; ++} +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerDelegate.java b/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerDelegate.java +new file mode 100644 +index 0000000..179f47a +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerDelegate.java +@@ -0,0 +1,104 @@ ++/** ++* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++* ++* Do not edit this file as changes may cause incorrect behavior and will be lost ++* once the code is regenerated. ++* ++* @generated by codegen project: GeneratePropsJavaDelegate.js ++*/ ++ ++package com.facebook.react.viewmanagers; ++ ++import android.view.View; ++import androidx.annotation.Nullable; ++import com.facebook.react.bridge.ReadableArray; ++import com.facebook.react.bridge.ReadableMap; ++import com.facebook.react.uimanager.BaseViewManager; ++import com.facebook.react.uimanager.BaseViewManagerDelegate; ++import com.facebook.react.uimanager.LayoutShadowNode; ++ ++@SuppressWarnings("deprecation") ++public class LottieAnimationViewManagerDelegate & LottieAnimationViewManagerInterface> extends BaseViewManagerDelegate { ++ public LottieAnimationViewManagerDelegate(U viewManager) { ++ super(viewManager); ++ } ++ @Override ++ public void setProperty(T view, String propName, @Nullable Object value) { ++ switch (propName) { ++ case "resizeMode": ++ mViewManager.setResizeMode(view, value == null ? null : (String) value); ++ break; ++ case "renderMode": ++ mViewManager.setRenderMode(view, value == null ? null : (String) value); ++ break; ++ case "sourceName": ++ mViewManager.setSourceName(view, value == null ? null : (String) value); ++ break; ++ case "sourceJson": ++ mViewManager.setSourceJson(view, value == null ? null : (String) value); ++ break; ++ case "sourceURL": ++ mViewManager.setSourceURL(view, value == null ? null : (String) value); ++ break; ++ case "sourceDotLottieURI": ++ mViewManager.setSourceDotLottieURI(view, value == null ? null : (String) value); ++ break; ++ case "imageAssetsFolder": ++ mViewManager.setImageAssetsFolder(view, value == null ? null : (String) value); ++ break; ++ case "progress": ++ mViewManager.setProgress(view, value == null ? 0f : ((Double) value).floatValue()); ++ break; ++ case "speed": ++ mViewManager.setSpeed(view, value == null ? 0f : ((Double) value).doubleValue()); ++ break; ++ case "loop": ++ mViewManager.setLoop(view, value == null ? false : (boolean) value); ++ break; ++ case "autoPlay": ++ mViewManager.setAutoPlay(view, value == null ? false : (boolean) value); ++ break; ++ case "enableMergePathsAndroidForKitKatAndAbove": ++ mViewManager.setEnableMergePathsAndroidForKitKatAndAbove(view, value == null ? false : (boolean) value); ++ break; ++ case "hardwareAccelerationAndroid": ++ mViewManager.setHardwareAccelerationAndroid(view, value == null ? false : (boolean) value); ++ break; ++ case "cacheComposition": ++ mViewManager.setCacheComposition(view, value == null ? false : (boolean) value); ++ break; ++ case "colorFilters": ++ mViewManager.setColorFilters(view, (ReadableArray) value); ++ break; ++ case "dummy": ++ mViewManager.setDummy(view, (ReadableMap) value); ++ break; ++ case "textFiltersAndroid": ++ mViewManager.setTextFiltersAndroid(view, (ReadableArray) value); ++ break; ++ case "textFiltersIOS": ++ mViewManager.setTextFiltersIOS(view, (ReadableArray) value); ++ break; ++ default: ++ super.setProperty(view, propName, value); ++ } ++ } ++ ++ @Override ++ public void receiveCommand(T view, String commandName, ReadableArray args) { ++ switch (commandName) { ++ case "play": ++ mViewManager.play(view, args.getInt(0), args.getInt(1)); ++ break; ++ case "reset": ++ mViewManager.reset(view); ++ break; ++ case "pause": ++ mViewManager.pause(view); ++ break; ++ case "resume": ++ mViewManager.resume(view); ++ break; ++ } ++ } ++} +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerInterface.java b/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerInterface.java +new file mode 100644 +index 0000000..23b3f0d +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerInterface.java +@@ -0,0 +1,41 @@ ++/** ++* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++* ++* Do not edit this file as changes may cause incorrect behavior and will be lost ++* once the code is regenerated. ++* ++* @generated by codegen project: GeneratePropsJavaInterface.js ++*/ ++ ++package com.facebook.react.viewmanagers; ++ ++import android.view.View; ++import androidx.annotation.Nullable; ++import com.facebook.react.bridge.ReadableArray; ++import com.facebook.react.bridge.ReadableMap; ++import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; ++ ++public interface LottieAnimationViewManagerInterface extends ViewManagerWithGeneratedInterface { ++ void setResizeMode(T view, @Nullable String value); ++ void setRenderMode(T view, @Nullable String value); ++ void setSourceName(T view, @Nullable String value); ++ void setSourceJson(T view, @Nullable String value); ++ void setSourceURL(T view, @Nullable String value); ++ void setSourceDotLottieURI(T view, @Nullable String value); ++ void setImageAssetsFolder(T view, @Nullable String value); ++ void setProgress(T view, float value); ++ void setSpeed(T view, double value); ++ void setLoop(T view, boolean value); ++ void setAutoPlay(T view, boolean value); ++ void setEnableMergePathsAndroidForKitKatAndAbove(T view, boolean value); ++ void setHardwareAccelerationAndroid(T view, boolean value); ++ void setCacheComposition(T view, boolean value); ++ void setColorFilters(T view, @Nullable ReadableArray value); ++ void setDummy(T view, @Nullable ReadableMap value); ++ void setTextFiltersAndroid(T view, @Nullable ReadableArray value); ++ void setTextFiltersIOS(T view, @Nullable ReadableArray value); ++ void play(T view, int startFrame, int endFrame); ++ void reset(T view); ++ void pause(T view); ++ void resume(T view); ++} +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/CMakeLists.txt b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/CMakeLists.txt +new file mode 100644 +index 0000000..25ce90d +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# Copyright (c) Meta Platforms, Inc. and affiliates. ++# ++# This source code is licensed under the MIT license found in the ++# LICENSE file in the root directory of this source tree. ++ ++cmake_minimum_required(VERSION 3.13) ++set(CMAKE_VERBOSE_MAKEFILE on) ++ ++file(GLOB react_codegen_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/lottiereactnative/*.cpp) ++ ++add_library( ++ react_codegen_lottiereactnative ++ OBJECT ++ ${react_codegen_SRCS} ++) ++ ++target_include_directories(react_codegen_lottiereactnative PUBLIC . react/renderer/components/lottiereactnative) ++ ++target_link_libraries( ++ react_codegen_lottiereactnative ++ fbjni ++ jsi ++ # We need to link different libraries based on whether we are building rncore or not, that's necessary ++ # because we want to break a circular dependency between react_codegen_rncore and reactnative ++ reactnative ++) ++ ++target_compile_reactnative_options(react_codegen_lottiereactnative PRIVATE) +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative-generated.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative-generated.cpp +new file mode 100644 +index 0000000..9f7d572 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative-generated.cpp +@@ -0,0 +1,22 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateModuleJniCpp.js ++ */ ++ ++#include "lottiereactnative.h" ++ ++namespace facebook::react { ++ ++ ++ ++std::shared_ptr lottiereactnative_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) { ++ ++ return nullptr; ++} ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative.h +new file mode 100644 +index 0000000..b85ab2f +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative.h +@@ -0,0 +1,24 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateModuleJniH.js ++ */ ++ ++#pragma once ++ ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++ ++ ++JSI_EXPORT ++std::shared_ptr lottiereactnative_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms); ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.cpp +new file mode 100644 +index 0000000..2a98e57 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.cpp +@@ -0,0 +1,22 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateComponentDescriptorCpp.js ++ */ ++ ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++void lottiereactnative_registerComponentDescriptorsFromCodegen( ++ std::shared_ptr registry) { ++registry->add(concreteComponentDescriptorProvider()); ++} ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.h +new file mode 100644 +index 0000000..fcb8acc +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.h +@@ -0,0 +1,24 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateComponentDescriptorH.js ++ */ ++ ++#pragma once ++ ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++using LottieAnimationViewComponentDescriptor = ConcreteComponentDescriptor; ++ ++void lottiereactnative_registerComponentDescriptorsFromCodegen( ++ std::shared_ptr registry); ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.cpp +new file mode 100644 +index 0000000..e8bcfa7 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.cpp +@@ -0,0 +1,42 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateEventEmitterCpp.js ++ */ ++ ++#include ++ ++ ++namespace facebook::react { ++ ++void LottieAnimationViewEventEmitter::onAnimationFinish(OnAnimationFinish event) const { ++ dispatchEvent("onAnimationFinish", [event=std::move(event)](jsi::Runtime &runtime) { ++ auto payload = jsi::Object(runtime); ++ payload.setProperty(runtime, "isCancelled", event.isCancelled); ++ return payload; ++ }); ++} ++ ++ ++void LottieAnimationViewEventEmitter::onAnimationFailure(OnAnimationFailure event) const { ++ dispatchEvent("onAnimationFailure", [event=std::move(event)](jsi::Runtime &runtime) { ++ auto payload = jsi::Object(runtime); ++ payload.setProperty(runtime, "error", event.error); ++ return payload; ++ }); ++} ++ ++ ++void LottieAnimationViewEventEmitter::onAnimationLoaded(OnAnimationLoaded event) const { ++ dispatchEvent("onAnimationLoaded", [](jsi::Runtime &runtime) { ++ auto payload = jsi::Object(runtime); ++ ++ return payload; ++ }); ++} ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.h +new file mode 100644 +index 0000000..3656651 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.h +@@ -0,0 +1,37 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateEventEmitterH.js ++ */ ++#pragma once ++ ++#include ++ ++ ++namespace facebook::react { ++class LottieAnimationViewEventEmitter : public ViewEventEmitter { ++ public: ++ using ViewEventEmitter::ViewEventEmitter; ++ ++ struct OnAnimationFinish { ++ bool isCancelled; ++ }; ++ ++ struct OnAnimationFailure { ++ std::string error; ++ }; ++ ++ struct OnAnimationLoaded { ++ ++ }; ++ void onAnimationFinish(OnAnimationFinish value) const; ++ ++ void onAnimationFailure(OnAnimationFailure value) const; ++ ++ void onAnimationLoaded(OnAnimationLoaded value) const; ++}; ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.cpp +new file mode 100644 +index 0000000..9b53bbe +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.cpp +@@ -0,0 +1,132 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GeneratePropsCpp.js ++ */ ++ ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++LottieAnimationViewProps::LottieAnimationViewProps( ++ const PropsParserContext &context, ++ const LottieAnimationViewProps &sourceProps, ++ const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), ++ ++ resizeMode(convertRawProp(context, rawProps, "resizeMode", sourceProps.resizeMode, {})), ++ renderMode(convertRawProp(context, rawProps, "renderMode", sourceProps.renderMode, {})), ++ sourceName(convertRawProp(context, rawProps, "sourceName", sourceProps.sourceName, {})), ++ sourceJson(convertRawProp(context, rawProps, "sourceJson", sourceProps.sourceJson, {})), ++ sourceURL(convertRawProp(context, rawProps, "sourceURL", sourceProps.sourceURL, {})), ++ sourceDotLottieURI(convertRawProp(context, rawProps, "sourceDotLottieURI", sourceProps.sourceDotLottieURI, {})), ++ imageAssetsFolder(convertRawProp(context, rawProps, "imageAssetsFolder", sourceProps.imageAssetsFolder, {})), ++ progress(convertRawProp(context, rawProps, "progress", sourceProps.progress, {0.0})), ++ speed(convertRawProp(context, rawProps, "speed", sourceProps.speed, {0.0})), ++ loop(convertRawProp(context, rawProps, "loop", sourceProps.loop, {false})), ++ autoPlay(convertRawProp(context, rawProps, "autoPlay", sourceProps.autoPlay, {false})), ++ enableMergePathsAndroidForKitKatAndAbove(convertRawProp(context, rawProps, "enableMergePathsAndroidForKitKatAndAbove", sourceProps.enableMergePathsAndroidForKitKatAndAbove, {false})), ++ hardwareAccelerationAndroid(convertRawProp(context, rawProps, "hardwareAccelerationAndroid", sourceProps.hardwareAccelerationAndroid, {false})), ++ cacheComposition(convertRawProp(context, rawProps, "cacheComposition", sourceProps.cacheComposition, {false})), ++ colorFilters(convertRawProp(context, rawProps, "colorFilters", sourceProps.colorFilters, {})), ++ dummy(convertRawProp(context, rawProps, "dummy", sourceProps.dummy, {})), ++ textFiltersAndroid(convertRawProp(context, rawProps, "textFiltersAndroid", sourceProps.textFiltersAndroid, {})), ++ textFiltersIOS(convertRawProp(context, rawProps, "textFiltersIOS", sourceProps.textFiltersIOS, {})) {} ++ ++#ifdef RN_SERIALIZABLE_STATE ++ComponentName LottieAnimationViewProps::getDiffPropsImplementationTarget() const { ++ return "LottieAnimationView"; ++} ++ ++folly::dynamic LottieAnimationViewProps::getDiffProps( ++ const Props* prevProps) const { ++ static const auto defaultProps = LottieAnimationViewProps(); ++ const LottieAnimationViewProps* oldProps = prevProps == nullptr ++ ? &defaultProps ++ : static_cast(prevProps); ++ if (this == oldProps) { ++ return folly::dynamic::object(); ++ } ++ folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); ++ ++ if (resizeMode != oldProps->resizeMode) { ++ result["resizeMode"] = resizeMode; ++ } ++ ++ if (renderMode != oldProps->renderMode) { ++ result["renderMode"] = renderMode; ++ } ++ ++ if (sourceName != oldProps->sourceName) { ++ result["sourceName"] = sourceName; ++ } ++ ++ if (sourceJson != oldProps->sourceJson) { ++ result["sourceJson"] = sourceJson; ++ } ++ ++ if (sourceURL != oldProps->sourceURL) { ++ result["sourceURL"] = sourceURL; ++ } ++ ++ if (sourceDotLottieURI != oldProps->sourceDotLottieURI) { ++ result["sourceDotLottieURI"] = sourceDotLottieURI; ++ } ++ ++ if (imageAssetsFolder != oldProps->imageAssetsFolder) { ++ result["imageAssetsFolder"] = imageAssetsFolder; ++ } ++ ++ if ((progress != oldProps->progress) && !(std::isnan(progress) && std::isnan(oldProps->progress))) { ++ result["progress"] = progress; ++ } ++ ++ if ((speed != oldProps->speed) && !(std::isnan(speed) && std::isnan(oldProps->speed))) { ++ result["speed"] = speed; ++ } ++ ++ if (loop != oldProps->loop) { ++ result["loop"] = loop; ++ } ++ ++ if (autoPlay != oldProps->autoPlay) { ++ result["autoPlay"] = autoPlay; ++ } ++ ++ if (enableMergePathsAndroidForKitKatAndAbove != oldProps->enableMergePathsAndroidForKitKatAndAbove) { ++ result["enableMergePathsAndroidForKitKatAndAbove"] = enableMergePathsAndroidForKitKatAndAbove; ++ } ++ ++ if (hardwareAccelerationAndroid != oldProps->hardwareAccelerationAndroid) { ++ result["hardwareAccelerationAndroid"] = hardwareAccelerationAndroid; ++ } ++ ++ if (cacheComposition != oldProps->cacheComposition) { ++ result["cacheComposition"] = cacheComposition; ++ } ++ ++ if (colorFilters != oldProps->colorFilters) { ++ result["colorFilters"] = toDynamic(colorFilters); ++ } ++ ++ if (dummy != oldProps->dummy) { ++ result["dummy"] = toDynamic(dummy); ++ } ++ ++ if (textFiltersAndroid != oldProps->textFiltersAndroid) { ++ result["textFiltersAndroid"] = toDynamic(textFiltersAndroid); ++ } ++ ++ if (textFiltersIOS != oldProps->textFiltersIOS) { ++ result["textFiltersIOS"] = toDynamic(textFiltersIOS); ++ } ++ return result; ++} ++#endif ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.h +new file mode 100644 +index 0000000..e0fd752 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.h +@@ -0,0 +1,239 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GeneratePropsH.js ++ */ ++#pragma once ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++struct LottieAnimationViewColorFiltersStruct { ++ std::string keypath{}; ++ SharedColor color{}; ++ ++ ++#ifdef RN_SERIALIZABLE_STATE ++ bool operator==(const LottieAnimationViewColorFiltersStruct&) const = default; ++ ++ folly::dynamic toDynamic() const { ++ folly::dynamic result = folly::dynamic::object(); ++ result["keypath"] = keypath; ++ result["color"] = ::facebook::react::toDynamic(color); ++ return result; ++ } ++#endif ++}; ++ ++static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, LottieAnimationViewColorFiltersStruct &result) { ++ auto map = (std::unordered_map)value; ++ ++ auto tmp_keypath = map.find("keypath"); ++ if (tmp_keypath != map.end()) { ++ fromRawValue(context, tmp_keypath->second, result.keypath); ++ } ++ auto tmp_color = map.find("color"); ++ if (tmp_color != map.end()) { ++ fromRawValue(context, tmp_color->second, result.color); ++ } ++} ++ ++static inline std::string toString(const LottieAnimationViewColorFiltersStruct &value) { ++ return "[Object LottieAnimationViewColorFiltersStruct]"; ++} ++ ++#ifdef RN_SERIALIZABLE_STATE ++static inline folly::dynamic toDynamic(const LottieAnimationViewColorFiltersStruct &value) { ++ return value.toDynamic(); ++} ++#endif ++ ++static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { ++ auto items = (std::vector)value; ++ for (const auto &item : items) { ++ LottieAnimationViewColorFiltersStruct newItem; ++ fromRawValue(context, item, newItem); ++ result.emplace_back(newItem); ++ } ++} ++ ++ ++struct LottieAnimationViewDummyStruct { ++ bool dummy{false}; ++ ++ ++#ifdef RN_SERIALIZABLE_STATE ++ bool operator==(const LottieAnimationViewDummyStruct&) const = default; ++ ++ folly::dynamic toDynamic() const { ++ folly::dynamic result = folly::dynamic::object(); ++ result["dummy"] = dummy; ++ return result; ++ } ++#endif ++}; ++ ++static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, LottieAnimationViewDummyStruct &result) { ++ auto map = (std::unordered_map)value; ++ ++ auto tmp_dummy = map.find("dummy"); ++ if (tmp_dummy != map.end()) { ++ fromRawValue(context, tmp_dummy->second, result.dummy); ++ } ++} ++ ++static inline std::string toString(const LottieAnimationViewDummyStruct &value) { ++ return "[Object LottieAnimationViewDummyStruct]"; ++} ++ ++#ifdef RN_SERIALIZABLE_STATE ++static inline folly::dynamic toDynamic(const LottieAnimationViewDummyStruct &value) { ++ return value.toDynamic(); ++} ++#endif ++ ++struct LottieAnimationViewTextFiltersAndroidStruct { ++ std::string find{}; ++ std::string replace{}; ++ ++ ++#ifdef RN_SERIALIZABLE_STATE ++ bool operator==(const LottieAnimationViewTextFiltersAndroidStruct&) const = default; ++ ++ folly::dynamic toDynamic() const { ++ folly::dynamic result = folly::dynamic::object(); ++ result["find"] = find; ++ result["replace"] = replace; ++ return result; ++ } ++#endif ++}; ++ ++static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, LottieAnimationViewTextFiltersAndroidStruct &result) { ++ auto map = (std::unordered_map)value; ++ ++ auto tmp_find = map.find("find"); ++ if (tmp_find != map.end()) { ++ fromRawValue(context, tmp_find->second, result.find); ++ } ++ auto tmp_replace = map.find("replace"); ++ if (tmp_replace != map.end()) { ++ fromRawValue(context, tmp_replace->second, result.replace); ++ } ++} ++ ++static inline std::string toString(const LottieAnimationViewTextFiltersAndroidStruct &value) { ++ return "[Object LottieAnimationViewTextFiltersAndroidStruct]"; ++} ++ ++#ifdef RN_SERIALIZABLE_STATE ++static inline folly::dynamic toDynamic(const LottieAnimationViewTextFiltersAndroidStruct &value) { ++ return value.toDynamic(); ++} ++#endif ++ ++static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { ++ auto items = (std::vector)value; ++ for (const auto &item : items) { ++ LottieAnimationViewTextFiltersAndroidStruct newItem; ++ fromRawValue(context, item, newItem); ++ result.emplace_back(newItem); ++ } ++} ++ ++ ++struct LottieAnimationViewTextFiltersIOSStruct { ++ std::string keypath{}; ++ std::string text{}; ++ ++ ++#ifdef RN_SERIALIZABLE_STATE ++ bool operator==(const LottieAnimationViewTextFiltersIOSStruct&) const = default; ++ ++ folly::dynamic toDynamic() const { ++ folly::dynamic result = folly::dynamic::object(); ++ result["keypath"] = keypath; ++ result["text"] = text; ++ return result; ++ } ++#endif ++}; ++ ++static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, LottieAnimationViewTextFiltersIOSStruct &result) { ++ auto map = (std::unordered_map)value; ++ ++ auto tmp_keypath = map.find("keypath"); ++ if (tmp_keypath != map.end()) { ++ fromRawValue(context, tmp_keypath->second, result.keypath); ++ } ++ auto tmp_text = map.find("text"); ++ if (tmp_text != map.end()) { ++ fromRawValue(context, tmp_text->second, result.text); ++ } ++} ++ ++static inline std::string toString(const LottieAnimationViewTextFiltersIOSStruct &value) { ++ return "[Object LottieAnimationViewTextFiltersIOSStruct]"; ++} ++ ++#ifdef RN_SERIALIZABLE_STATE ++static inline folly::dynamic toDynamic(const LottieAnimationViewTextFiltersIOSStruct &value) { ++ return value.toDynamic(); ++} ++#endif ++ ++static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { ++ auto items = (std::vector)value; ++ for (const auto &item : items) { ++ LottieAnimationViewTextFiltersIOSStruct newItem; ++ fromRawValue(context, item, newItem); ++ result.emplace_back(newItem); ++ } ++} ++ ++class LottieAnimationViewProps final : public ViewProps { ++ public: ++ LottieAnimationViewProps() = default; ++ LottieAnimationViewProps(const PropsParserContext& context, const LottieAnimationViewProps &sourceProps, const RawProps &rawProps); ++ ++#pragma mark - Props ++ ++ std::string resizeMode{}; ++ std::string renderMode{}; ++ std::string sourceName{}; ++ std::string sourceJson{}; ++ std::string sourceURL{}; ++ std::string sourceDotLottieURI{}; ++ std::string imageAssetsFolder{}; ++ Float progress{0.0}; ++ double speed{0.0}; ++ bool loop{false}; ++ bool autoPlay{false}; ++ bool enableMergePathsAndroidForKitKatAndAbove{false}; ++ bool hardwareAccelerationAndroid{false}; ++ bool cacheComposition{false}; ++ std::vector colorFilters{}; ++ LottieAnimationViewDummyStruct dummy{}; ++ std::vector textFiltersAndroid{}; ++ std::vector textFiltersIOS{}; ++ ++ #ifdef RN_SERIALIZABLE_STATE ++ ComponentName getDiffPropsImplementationTarget() const override; ++ ++ folly::dynamic getDiffProps(const Props* prevProps) const override; ++ #endif ++ ++ ++}; ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.cpp +new file mode 100644 +index 0000000..10f89ca +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.cpp +@@ -0,0 +1,17 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateShadowNodeCpp.js ++ */ ++ ++#include ++ ++namespace facebook::react { ++ ++extern const char LottieAnimationViewComponentName[] = "LottieAnimationView"; ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.h +new file mode 100644 +index 0000000..baa5c72 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.h +@@ -0,0 +1,32 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateShadowNodeH.js ++ */ ++ ++#pragma once ++ ++#include ++#include ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++JSI_EXPORT extern const char LottieAnimationViewComponentName[]; ++ ++/* ++ * `ShadowNode` for component. ++ */ ++using LottieAnimationViewShadowNode = ConcreteViewShadowNode< ++ LottieAnimationViewComponentName, ++ LottieAnimationViewProps, ++ LottieAnimationViewEventEmitter, ++ LottieAnimationViewState>; ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.cpp +new file mode 100644 +index 0000000..fe96380 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.cpp +@@ -0,0 +1,16 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateStateCpp.js ++ */ ++#include ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.h +new file mode 100644 +index 0000000..d536bf5 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.h +@@ -0,0 +1,20 @@ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateStateH.js ++ */ ++#pragma once ++ ++#include ++#ifdef RN_SERIALIZABLE_STATE ++#include ++#endif ++ ++namespace facebook::react { ++ ++using LottieAnimationViewState = StateData; ++ ++} // namespace facebook::react +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/lottiereactnativeJSI.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/lottiereactnativeJSI.h +new file mode 100644 +index 0000000..ec16260 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/lottiereactnativeJSI.h +@@ -0,0 +1,19 @@ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateModuleH.js ++ */ ++ ++#pragma once ++ ++#include ++#include ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/schema.json b/node_modules/lottie-react-native/android/build/generated/source/codegen/schema.json +new file mode 100644 +index 0000000..0848ad5 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/schema.json +@@ -0,0 +1 @@ ++{"libraryName":"","modules":{"LottieAnimationView":{"type":"Component","components":{"LottieAnimationView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[{"name":"onAnimationFinish","optional":true,"bubblingType":"bubble","paperTopLevelNameDeprecated":"onAnimationFinish","typeAnnotation":{"type":"EventTypeAnnotation","argument":{"type":"ObjectTypeAnnotation","properties":[{"name":"isCancelled","optional":false,"typeAnnotation":{"type":"BooleanTypeAnnotation"}}]}}},{"name":"onAnimationFailure","optional":true,"bubblingType":"bubble","paperTopLevelNameDeprecated":"onAnimationFailure","typeAnnotation":{"type":"EventTypeAnnotation","argument":{"type":"ObjectTypeAnnotation","properties":[{"name":"error","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}}]}}},{"name":"onAnimationLoaded","optional":true,"bubblingType":"bubble","paperTopLevelNameDeprecated":"onAnimationLoaded","typeAnnotation":{"type":"EventTypeAnnotation","argument":{"type":"ObjectTypeAnnotation","properties":[]}}}],"props":[{"name":"resizeMode","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"renderMode","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"sourceName","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"sourceJson","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"sourceURL","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"sourceDotLottieURI","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"imageAssetsFolder","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"progress","optional":true,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"speed","optional":true,"typeAnnotation":{"type":"DoubleTypeAnnotation","default":0}},{"name":"loop","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"autoPlay","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"enableMergePathsAndroidForKitKatAndAbove","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"hardwareAccelerationAndroid","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"cacheComposition","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"colorFilters","optional":true,"typeAnnotation":{"type":"ArrayTypeAnnotation","elementType":{"type":"ObjectTypeAnnotation","properties":[{"name":"keypath","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}]}}},{"name":"dummy","optional":true,"typeAnnotation":{"type":"ObjectTypeAnnotation","properties":[{"name":"dummy","optional":false,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}}]}},{"name":"textFiltersAndroid","optional":true,"typeAnnotation":{"type":"ArrayTypeAnnotation","elementType":{"type":"ObjectTypeAnnotation","properties":[{"name":"find","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"replace","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}}]}}},{"name":"textFiltersIOS","optional":true,"typeAnnotation":{"type":"ArrayTypeAnnotation","elementType":{"type":"ObjectTypeAnnotation","properties":[{"name":"keypath","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"text","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}}]}}}],"commands":[{"name":"play","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","params":[{"name":"startFrame","optional":false,"typeAnnotation":{"type":"Int32TypeAnnotation"}},{"name":"endFrame","optional":false,"typeAnnotation":{"type":"Int32TypeAnnotation"}}],"returnTypeAnnotation":{"type":"VoidTypeAnnotation"}}},{"name":"reset","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","params":[],"returnTypeAnnotation":{"type":"VoidTypeAnnotation"}}},{"name":"pause","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","params":[],"returnTypeAnnotation":{"type":"VoidTypeAnnotation"}}},{"name":"resume","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","params":[],"returnTypeAnnotation":{"type":"VoidTypeAnnotation"}}}]}}}}} +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml b/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +new file mode 100644 +index 0000000..7ca7cec +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json b/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +new file mode 100644 +index 0000000..a67528b +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +@@ -0,0 +1,18 @@ ++{ ++ "version": 3, ++ "artifactType": { ++ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS", ++ "kind": "Directory" ++ }, ++ "applicationId": "com.airbnb.android.react.lottie", ++ "variantName": "debug", ++ "elements": [ ++ { ++ "type": "SINGLE", ++ "filters": [], ++ "attributes": [], ++ "outputFile": "AndroidManifest.xml" ++ } ++ ], ++ "elementType": "File" ++} +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties b/node_modules/lottie-react-native/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +new file mode 100644 +index 0000000..1211b1e +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +@@ -0,0 +1,6 @@ ++aarFormatVersion=1.0 ++aarMetadataVersion=1.0 ++minCompileSdk=1 ++minCompileSdkExtension=0 ++minAndroidGradlePluginVersion=1.0.0 ++coreLibraryDesugaringEnabled=false +diff --git a/node_modules/lottie-react-native/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json b/node_modules/lottie-react-native/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +new file mode 100644 +index 0000000..9e26dfe +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +@@ -0,0 +1 @@ ++{} +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar b/node_modules/lottie-react-native/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +new file mode 100644 +index 0000000..f2397aa +Binary files /dev/null and b/node_modules/lottie-react-native/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar differ +diff --git a/node_modules/lottie-react-native/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt b/node_modules/lottie-react-native/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +new file mode 100644 +index 0000000..df1c8c5 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +@@ -0,0 +1,2050 @@ ++int anim abc_fade_in 0x0 ++int anim abc_fade_out 0x0 ++int anim abc_grow_fade_in_from_bottom 0x0 ++int anim abc_popup_enter 0x0 ++int anim abc_popup_exit 0x0 ++int anim abc_shrink_fade_out_from_bottom 0x0 ++int anim abc_slide_in_bottom 0x0 ++int anim abc_slide_in_top 0x0 ++int anim abc_slide_out_bottom 0x0 ++int anim abc_slide_out_top 0x0 ++int anim abc_tooltip_enter 0x0 ++int anim abc_tooltip_exit 0x0 ++int anim btn_checkbox_to_checked_box_inner_merged_animation 0x0 ++int anim btn_checkbox_to_checked_box_outer_merged_animation 0x0 ++int anim btn_checkbox_to_checked_icon_null_animation 0x0 ++int anim btn_checkbox_to_unchecked_box_inner_merged_animation 0x0 ++int anim btn_checkbox_to_unchecked_check_path_merged_animation 0x0 ++int anim btn_checkbox_to_unchecked_icon_null_animation 0x0 ++int anim btn_radio_to_off_mtrl_dot_group_animation 0x0 ++int anim btn_radio_to_off_mtrl_ring_outer_animation 0x0 ++int anim btn_radio_to_off_mtrl_ring_outer_path_animation 0x0 ++int anim btn_radio_to_on_mtrl_dot_group_animation 0x0 ++int anim btn_radio_to_on_mtrl_ring_outer_animation 0x0 ++int anim btn_radio_to_on_mtrl_ring_outer_path_animation 0x0 ++int anim catalyst_fade_in 0x0 ++int anim catalyst_fade_out 0x0 ++int anim catalyst_push_up_in 0x0 ++int anim catalyst_push_up_out 0x0 ++int anim catalyst_slide_down 0x0 ++int anim catalyst_slide_up 0x0 ++int anim fragment_fast_out_extra_slow_in 0x0 ++int animator fragment_close_enter 0x0 ++int animator fragment_close_exit 0x0 ++int animator fragment_fade_enter 0x0 ++int animator fragment_fade_exit 0x0 ++int animator fragment_open_enter 0x0 ++int animator fragment_open_exit 0x0 ++int attr actionBarDivider 0x0 ++int attr actionBarItemBackground 0x0 ++int attr actionBarPopupTheme 0x0 ++int attr actionBarSize 0x0 ++int attr actionBarSplitStyle 0x0 ++int attr actionBarStyle 0x0 ++int attr actionBarTabBarStyle 0x0 ++int attr actionBarTabStyle 0x0 ++int attr actionBarTabTextStyle 0x0 ++int attr actionBarTheme 0x0 ++int attr actionBarWidgetTheme 0x0 ++int attr actionButtonStyle 0x0 ++int attr actionDropDownStyle 0x0 ++int attr actionLayout 0x0 ++int attr actionMenuTextAppearance 0x0 ++int attr actionMenuTextColor 0x0 ++int attr actionModeBackground 0x0 ++int attr actionModeCloseButtonStyle 0x0 ++int attr actionModeCloseContentDescription 0x0 ++int attr actionModeCloseDrawable 0x0 ++int attr actionModeCopyDrawable 0x0 ++int attr actionModeCutDrawable 0x0 ++int attr actionModeFindDrawable 0x0 ++int attr actionModePasteDrawable 0x0 ++int attr actionModePopupWindowStyle 0x0 ++int attr actionModeSelectAllDrawable 0x0 ++int attr actionModeShareDrawable 0x0 ++int attr actionModeSplitBackground 0x0 ++int attr actionModeStyle 0x0 ++int attr actionModeTheme 0x0 ++int attr actionModeWebSearchDrawable 0x0 ++int attr actionOverflowButtonStyle 0x0 ++int attr actionOverflowMenuStyle 0x0 ++int attr actionProviderClass 0x0 ++int attr actionViewClass 0x0 ++int attr activityChooserViewStyle 0x0 ++int attr actualImageResource 0x0 ++int attr actualImageScaleType 0x0 ++int attr actualImageUri 0x0 ++int attr alertDialogButtonGroupStyle 0x0 ++int attr alertDialogCenterButtons 0x0 ++int attr alertDialogStyle 0x0 ++int attr alertDialogTheme 0x0 ++int attr allowStacking 0x0 ++int attr alpha 0x0 ++int attr alphabeticModifiers 0x0 ++int attr arrowHeadLength 0x0 ++int attr arrowShaftLength 0x0 ++int attr autoCompleteTextViewStyle 0x0 ++int attr autoSizeMaxTextSize 0x0 ++int attr autoSizeMinTextSize 0x0 ++int attr autoSizePresetSizes 0x0 ++int attr autoSizeStepGranularity 0x0 ++int attr autoSizeTextType 0x0 ++int attr autofillInlineSuggestionChip 0x0 ++int attr autofillInlineSuggestionEndIconStyle 0x0 ++int attr autofillInlineSuggestionStartIconStyle 0x0 ++int attr autofillInlineSuggestionSubtitle 0x0 ++int attr autofillInlineSuggestionTitle 0x0 ++int attr background 0x0 ++int attr backgroundImage 0x0 ++int attr backgroundSplit 0x0 ++int attr backgroundStacked 0x0 ++int attr backgroundTint 0x0 ++int attr backgroundTintMode 0x0 ++int attr barLength 0x0 ++int attr borderlessButtonStyle 0x0 ++int attr buttonBarButtonStyle 0x0 ++int attr buttonBarNegativeButtonStyle 0x0 ++int attr buttonBarNeutralButtonStyle 0x0 ++int attr buttonBarPositiveButtonStyle 0x0 ++int attr buttonBarStyle 0x0 ++int attr buttonCompat 0x0 ++int attr buttonGravity 0x0 ++int attr buttonIconDimen 0x0 ++int attr buttonPanelSideLayout 0x0 ++int attr buttonStyle 0x0 ++int attr buttonStyleSmall 0x0 ++int attr buttonTint 0x0 ++int attr buttonTintMode 0x0 ++int attr checkMarkCompat 0x0 ++int attr checkMarkTint 0x0 ++int attr checkMarkTintMode 0x0 ++int attr checkboxStyle 0x0 ++int attr checkedTextViewStyle 0x0 ++int attr closeIcon 0x0 ++int attr closeItemLayout 0x0 ++int attr collapseContentDescription 0x0 ++int attr collapseIcon 0x0 ++int attr color 0x0 ++int attr colorAccent 0x0 ++int attr colorBackgroundFloating 0x0 ++int attr colorButtonNormal 0x0 ++int attr colorControlActivated 0x0 ++int attr colorControlHighlight 0x0 ++int attr colorControlNormal 0x0 ++int attr colorError 0x0 ++int attr colorPrimary 0x0 ++int attr colorPrimaryDark 0x0 ++int attr colorSwitchThumbNormal 0x0 ++int attr commitIcon 0x0 ++int attr contentDescription 0x0 ++int attr contentInsetEnd 0x0 ++int attr contentInsetEndWithActions 0x0 ++int attr contentInsetLeft 0x0 ++int attr contentInsetRight 0x0 ++int attr contentInsetStart 0x0 ++int attr contentInsetStartWithNavigation 0x0 ++int attr controlBackground 0x0 ++int attr customNavigationLayout 0x0 ++int attr defaultQueryHint 0x0 ++int attr dialogCornerRadius 0x0 ++int attr dialogPreferredPadding 0x0 ++int attr dialogTheme 0x0 ++int attr displayOptions 0x0 ++int attr divider 0x0 ++int attr dividerHorizontal 0x0 ++int attr dividerPadding 0x0 ++int attr dividerVertical 0x0 ++int attr drawableBottomCompat 0x0 ++int attr drawableEndCompat 0x0 ++int attr drawableLeftCompat 0x0 ++int attr drawableRightCompat 0x0 ++int attr drawableSize 0x0 ++int attr drawableStartCompat 0x0 ++int attr drawableTint 0x0 ++int attr drawableTintMode 0x0 ++int attr drawableTopCompat 0x0 ++int attr drawerArrowStyle 0x0 ++int attr dropDownListViewStyle 0x0 ++int attr dropdownListPreferredItemHeight 0x0 ++int attr editTextBackground 0x0 ++int attr editTextColor 0x0 ++int attr editTextStyle 0x0 ++int attr elevation 0x0 ++int attr emojiCompatEnabled 0x0 ++int attr expandActivityOverflowButtonDrawable 0x0 ++int attr fadeDuration 0x0 ++int attr failureImage 0x0 ++int attr failureImageScaleType 0x0 ++int attr firstBaselineToTopHeight 0x0 ++int attr font 0x0 ++int attr fontFamily 0x0 ++int attr fontProviderAuthority 0x0 ++int attr fontProviderCerts 0x0 ++int attr fontProviderFetchStrategy 0x0 ++int attr fontProviderFetchTimeout 0x0 ++int attr fontProviderPackage 0x0 ++int attr fontProviderQuery 0x0 ++int attr fontProviderSystemFontFamily 0x0 ++int attr fontStyle 0x0 ++int attr fontVariationSettings 0x0 ++int attr fontWeight 0x0 ++int attr gapBetweenBars 0x0 ++int attr goIcon 0x0 ++int attr height 0x0 ++int attr hideOnContentScroll 0x0 ++int attr homeAsUpIndicator 0x0 ++int attr homeLayout 0x0 ++int attr icon 0x0 ++int attr iconTint 0x0 ++int attr iconTintMode 0x0 ++int attr iconifiedByDefault 0x0 ++int attr imageButtonStyle 0x0 ++int attr indeterminateProgressStyle 0x0 ++int attr initialActivityCount 0x0 ++int attr isAutofillInlineSuggestionTheme 0x0 ++int attr isLightTheme 0x0 ++int attr itemPadding 0x0 ++int attr lStar 0x0 ++int attr lastBaselineToBottomHeight 0x0 ++int attr layout 0x0 ++int attr lineHeight 0x0 ++int attr listChoiceBackgroundIndicator 0x0 ++int attr listChoiceIndicatorMultipleAnimated 0x0 ++int attr listChoiceIndicatorSingleAnimated 0x0 ++int attr listDividerAlertDialog 0x0 ++int attr listItemLayout 0x0 ++int attr listLayout 0x0 ++int attr listMenuViewStyle 0x0 ++int attr listPopupWindowStyle 0x0 ++int attr listPreferredItemHeight 0x0 ++int attr listPreferredItemHeightLarge 0x0 ++int attr listPreferredItemHeightSmall 0x0 ++int attr listPreferredItemPaddingEnd 0x0 ++int attr listPreferredItemPaddingLeft 0x0 ++int attr listPreferredItemPaddingRight 0x0 ++int attr listPreferredItemPaddingStart 0x0 ++int attr logo 0x0 ++int attr logoDescription 0x0 ++int attr lottieAnimationViewStyle 0x0 ++int attr lottie_asyncUpdates 0x0 ++int attr lottie_autoPlay 0x0 ++int attr lottie_cacheComposition 0x0 ++int attr lottie_clipToCompositionBounds 0x0 ++int attr lottie_colorFilter 0x0 ++int attr lottie_defaultFontFileExtension 0x0 ++int attr lottie_enableMergePathsForKitKatAndAbove 0x0 ++int attr lottie_fallbackRes 0x0 ++int attr lottie_fileName 0x0 ++int attr lottie_ignoreDisabledSystemAnimations 0x0 ++int attr lottie_imageAssetsFolder 0x0 ++int attr lottie_loop 0x0 ++int attr lottie_progress 0x0 ++int attr lottie_rawRes 0x0 ++int attr lottie_renderMode 0x0 ++int attr lottie_repeatCount 0x0 ++int attr lottie_repeatMode 0x0 ++int attr lottie_speed 0x0 ++int attr lottie_url 0x0 ++int attr lottie_useCompositionFrameRate 0x0 ++int attr maxButtonHeight 0x0 ++int attr measureWithLargestChild 0x0 ++int attr menu 0x0 ++int attr multiChoiceItemLayout 0x0 ++int attr navigationContentDescription 0x0 ++int attr navigationIcon 0x0 ++int attr navigationMode 0x0 ++int attr nestedScrollViewStyle 0x0 ++int attr numericModifiers 0x0 ++int attr overlapAnchor 0x0 ++int attr overlayImage 0x0 ++int attr paddingBottomNoButtons 0x0 ++int attr paddingEnd 0x0 ++int attr paddingStart 0x0 ++int attr paddingTopNoTitle 0x0 ++int attr panelBackground 0x0 ++int attr panelMenuListTheme 0x0 ++int attr panelMenuListWidth 0x0 ++int attr placeholderImage 0x0 ++int attr placeholderImageScaleType 0x0 ++int attr popupMenuStyle 0x0 ++int attr popupTheme 0x0 ++int attr popupWindowStyle 0x0 ++int attr preserveIconSpacing 0x0 ++int attr pressedStateOverlayImage 0x0 ++int attr progressBarAutoRotateInterval 0x0 ++int attr progressBarImage 0x0 ++int attr progressBarImageScaleType 0x0 ++int attr progressBarPadding 0x0 ++int attr progressBarStyle 0x0 ++int attr queryBackground 0x0 ++int attr queryHint 0x0 ++int attr queryPatterns 0x0 ++int attr radioButtonStyle 0x0 ++int attr ratingBarStyle 0x0 ++int attr ratingBarStyleIndicator 0x0 ++int attr ratingBarStyleSmall 0x0 ++int attr retryImage 0x0 ++int attr retryImageScaleType 0x0 ++int attr roundAsCircle 0x0 ++int attr roundBottomEnd 0x0 ++int attr roundBottomLeft 0x0 ++int attr roundBottomRight 0x0 ++int attr roundBottomStart 0x0 ++int attr roundTopEnd 0x0 ++int attr roundTopLeft 0x0 ++int attr roundTopRight 0x0 ++int attr roundTopStart 0x0 ++int attr roundWithOverlayColor 0x0 ++int attr roundedCornerRadius 0x0 ++int attr roundingBorderColor 0x0 ++int attr roundingBorderPadding 0x0 ++int attr roundingBorderWidth 0x0 ++int attr searchHintIcon 0x0 ++int attr searchIcon 0x0 ++int attr searchViewStyle 0x0 ++int attr seekBarStyle 0x0 ++int attr selectableItemBackground 0x0 ++int attr selectableItemBackgroundBorderless 0x0 ++int attr shortcutMatchRequired 0x0 ++int attr showAsAction 0x0 ++int attr showDividers 0x0 ++int attr showText 0x0 ++int attr showTitle 0x0 ++int attr singleChoiceItemLayout 0x0 ++int attr spinBars 0x0 ++int attr spinnerDropDownItemStyle 0x0 ++int attr spinnerStyle 0x0 ++int attr splitTrack 0x0 ++int attr srcCompat 0x0 ++int attr state_above_anchor 0x0 ++int attr subMenuArrow 0x0 ++int attr submitBackground 0x0 ++int attr subtitle 0x0 ++int attr subtitleTextAppearance 0x0 ++int attr subtitleTextColor 0x0 ++int attr subtitleTextStyle 0x0 ++int attr suggestionRowLayout 0x0 ++int attr swipeRefreshLayoutProgressSpinnerBackgroundColor 0x0 ++int attr switchMinWidth 0x0 ++int attr switchPadding 0x0 ++int attr switchStyle 0x0 ++int attr switchTextAppearance 0x0 ++int attr textAllCaps 0x0 ++int attr textAppearanceLargePopupMenu 0x0 ++int attr textAppearanceListItem 0x0 ++int attr textAppearanceListItemSecondary 0x0 ++int attr textAppearanceListItemSmall 0x0 ++int attr textAppearancePopupMenuHeader 0x0 ++int attr textAppearanceSearchResultSubtitle 0x0 ++int attr textAppearanceSearchResultTitle 0x0 ++int attr textAppearanceSmallPopupMenu 0x0 ++int attr textColorAlertDialogListItem 0x0 ++int attr textColorSearchUrl 0x0 ++int attr textLocale 0x0 ++int attr theme 0x0 ++int attr thickness 0x0 ++int attr thumbTextPadding 0x0 ++int attr thumbTint 0x0 ++int attr thumbTintMode 0x0 ++int attr tickMark 0x0 ++int attr tickMarkTint 0x0 ++int attr tickMarkTintMode 0x0 ++int attr tint 0x0 ++int attr tintMode 0x0 ++int attr title 0x0 ++int attr titleMargin 0x0 ++int attr titleMarginBottom 0x0 ++int attr titleMarginEnd 0x0 ++int attr titleMarginStart 0x0 ++int attr titleMarginTop 0x0 ++int attr titleMargins 0x0 ++int attr titleTextAppearance 0x0 ++int attr titleTextColor 0x0 ++int attr titleTextStyle 0x0 ++int attr toolbarNavigationButtonStyle 0x0 ++int attr toolbarStyle 0x0 ++int attr tooltipForegroundColor 0x0 ++int attr tooltipFrameBackground 0x0 ++int attr tooltipText 0x0 ++int attr track 0x0 ++int attr trackTint 0x0 ++int attr trackTintMode 0x0 ++int attr ttcIndex 0x0 ++int attr viewAspectRatio 0x0 ++int attr viewInflaterClass 0x0 ++int attr voiceIcon 0x0 ++int attr windowActionBar 0x0 ++int attr windowActionBarOverlay 0x0 ++int attr windowActionModeOverlay 0x0 ++int attr windowFixedHeightMajor 0x0 ++int attr windowFixedHeightMinor 0x0 ++int attr windowFixedWidthMajor 0x0 ++int attr windowFixedWidthMinor 0x0 ++int attr windowMinWidthMajor 0x0 ++int attr windowMinWidthMinor 0x0 ++int attr windowNoTitle 0x0 ++int bool abc_action_bar_embed_tabs 0x0 ++int bool abc_config_actionMenuItemAllCaps 0x0 ++int color abc_background_cache_hint_selector_material_dark 0x0 ++int color abc_background_cache_hint_selector_material_light 0x0 ++int color abc_btn_colored_borderless_text_material 0x0 ++int color abc_btn_colored_text_material 0x0 ++int color abc_color_highlight_material 0x0 ++int color abc_decor_view_status_guard 0x0 ++int color abc_decor_view_status_guard_light 0x0 ++int color abc_hint_foreground_material_dark 0x0 ++int color abc_hint_foreground_material_light 0x0 ++int color abc_primary_text_disable_only_material_dark 0x0 ++int color abc_primary_text_disable_only_material_light 0x0 ++int color abc_primary_text_material_dark 0x0 ++int color abc_primary_text_material_light 0x0 ++int color abc_search_url_text 0x0 ++int color abc_search_url_text_normal 0x0 ++int color abc_search_url_text_pressed 0x0 ++int color abc_search_url_text_selected 0x0 ++int color abc_secondary_text_material_dark 0x0 ++int color abc_secondary_text_material_light 0x0 ++int color abc_tint_btn_checkable 0x0 ++int color abc_tint_default 0x0 ++int color abc_tint_edittext 0x0 ++int color abc_tint_seek_thumb 0x0 ++int color abc_tint_spinner 0x0 ++int color abc_tint_switch_track 0x0 ++int color accent_material_dark 0x0 ++int color accent_material_light 0x0 ++int color androidx_core_ripple_material_light 0x0 ++int color androidx_core_secondary_text_default_material_light 0x0 ++int color background_floating_material_dark 0x0 ++int color background_floating_material_light 0x0 ++int color background_material_dark 0x0 ++int color background_material_light 0x0 ++int color bright_foreground_disabled_material_dark 0x0 ++int color bright_foreground_disabled_material_light 0x0 ++int color bright_foreground_inverse_material_dark 0x0 ++int color bright_foreground_inverse_material_light 0x0 ++int color bright_foreground_material_dark 0x0 ++int color bright_foreground_material_light 0x0 ++int color button_material_dark 0x0 ++int color button_material_light 0x0 ++int color call_notification_answer_color 0x0 ++int color call_notification_decline_color 0x0 ++int color catalyst_logbox_background 0x0 ++int color catalyst_redbox_background 0x0 ++int color dim_foreground_disabled_material_dark 0x0 ++int color dim_foreground_disabled_material_light 0x0 ++int color dim_foreground_material_dark 0x0 ++int color dim_foreground_material_light 0x0 ++int color error_color_material_dark 0x0 ++int color error_color_material_light 0x0 ++int color foreground_material_dark 0x0 ++int color foreground_material_light 0x0 ++int color highlighted_text_material_dark 0x0 ++int color highlighted_text_material_light 0x0 ++int color material_blue_grey_800 0x0 ++int color material_blue_grey_900 0x0 ++int color material_blue_grey_950 0x0 ++int color material_deep_teal_200 0x0 ++int color material_deep_teal_500 0x0 ++int color material_grey_100 0x0 ++int color material_grey_300 0x0 ++int color material_grey_50 0x0 ++int color material_grey_600 0x0 ++int color material_grey_800 0x0 ++int color material_grey_850 0x0 ++int color material_grey_900 0x0 ++int color notification_action_color_filter 0x0 ++int color notification_icon_bg_color 0x0 ++int color primary_dark_material_dark 0x0 ++int color primary_dark_material_light 0x0 ++int color primary_material_dark 0x0 ++int color primary_material_light 0x0 ++int color primary_text_default_material_dark 0x0 ++int color primary_text_default_material_light 0x0 ++int color primary_text_disabled_material_dark 0x0 ++int color primary_text_disabled_material_light 0x0 ++int color ripple_material_dark 0x0 ++int color ripple_material_light 0x0 ++int color secondary_text_default_material_dark 0x0 ++int color secondary_text_default_material_light 0x0 ++int color secondary_text_disabled_material_dark 0x0 ++int color secondary_text_disabled_material_light 0x0 ++int color switch_thumb_disabled_material_dark 0x0 ++int color switch_thumb_disabled_material_light 0x0 ++int color switch_thumb_material_dark 0x0 ++int color switch_thumb_material_light 0x0 ++int color switch_thumb_normal_material_dark 0x0 ++int color switch_thumb_normal_material_light 0x0 ++int color tooltip_background_dark 0x0 ++int color tooltip_background_light 0x0 ++int dimen abc_action_bar_content_inset_material 0x0 ++int dimen abc_action_bar_content_inset_with_nav 0x0 ++int dimen abc_action_bar_default_height_material 0x0 ++int dimen abc_action_bar_default_padding_end_material 0x0 ++int dimen abc_action_bar_default_padding_start_material 0x0 ++int dimen abc_action_bar_elevation_material 0x0 ++int dimen abc_action_bar_icon_vertical_padding_material 0x0 ++int dimen abc_action_bar_overflow_padding_end_material 0x0 ++int dimen abc_action_bar_overflow_padding_start_material 0x0 ++int dimen abc_action_bar_stacked_max_height 0x0 ++int dimen abc_action_bar_stacked_tab_max_width 0x0 ++int dimen abc_action_bar_subtitle_bottom_margin_material 0x0 ++int dimen abc_action_bar_subtitle_top_margin_material 0x0 ++int dimen abc_action_button_min_height_material 0x0 ++int dimen abc_action_button_min_width_material 0x0 ++int dimen abc_action_button_min_width_overflow_material 0x0 ++int dimen abc_alert_dialog_button_bar_height 0x0 ++int dimen abc_alert_dialog_button_dimen 0x0 ++int dimen abc_button_inset_horizontal_material 0x0 ++int dimen abc_button_inset_vertical_material 0x0 ++int dimen abc_button_padding_horizontal_material 0x0 ++int dimen abc_button_padding_vertical_material 0x0 ++int dimen abc_cascading_menus_min_smallest_width 0x0 ++int dimen abc_config_prefDialogWidth 0x0 ++int dimen abc_control_corner_material 0x0 ++int dimen abc_control_inset_material 0x0 ++int dimen abc_control_padding_material 0x0 ++int dimen abc_dialog_corner_radius_material 0x0 ++int dimen abc_dialog_fixed_height_major 0x0 ++int dimen abc_dialog_fixed_height_minor 0x0 ++int dimen abc_dialog_fixed_width_major 0x0 ++int dimen abc_dialog_fixed_width_minor 0x0 ++int dimen abc_dialog_list_padding_bottom_no_buttons 0x0 ++int dimen abc_dialog_list_padding_top_no_title 0x0 ++int dimen abc_dialog_min_width_major 0x0 ++int dimen abc_dialog_min_width_minor 0x0 ++int dimen abc_dialog_padding_material 0x0 ++int dimen abc_dialog_padding_top_material 0x0 ++int dimen abc_dialog_title_divider_material 0x0 ++int dimen abc_disabled_alpha_material_dark 0x0 ++int dimen abc_disabled_alpha_material_light 0x0 ++int dimen abc_dropdownitem_icon_width 0x0 ++int dimen abc_dropdownitem_text_padding_left 0x0 ++int dimen abc_dropdownitem_text_padding_right 0x0 ++int dimen abc_edit_text_inset_bottom_material 0x0 ++int dimen abc_edit_text_inset_horizontal_material 0x0 ++int dimen abc_edit_text_inset_top_material 0x0 ++int dimen abc_floating_window_z 0x0 ++int dimen abc_list_item_height_large_material 0x0 ++int dimen abc_list_item_height_material 0x0 ++int dimen abc_list_item_height_small_material 0x0 ++int dimen abc_list_item_padding_horizontal_material 0x0 ++int dimen abc_panel_menu_list_width 0x0 ++int dimen abc_progress_bar_height_material 0x0 ++int dimen abc_search_view_preferred_height 0x0 ++int dimen abc_search_view_preferred_width 0x0 ++int dimen abc_seekbar_track_background_height_material 0x0 ++int dimen abc_seekbar_track_progress_height_material 0x0 ++int dimen abc_select_dialog_padding_start_material 0x0 ++int dimen abc_star_big 0x0 ++int dimen abc_star_medium 0x0 ++int dimen abc_star_small 0x0 ++int dimen abc_switch_padding 0x0 ++int dimen abc_text_size_body_1_material 0x0 ++int dimen abc_text_size_body_2_material 0x0 ++int dimen abc_text_size_button_material 0x0 ++int dimen abc_text_size_caption_material 0x0 ++int dimen abc_text_size_display_1_material 0x0 ++int dimen abc_text_size_display_2_material 0x0 ++int dimen abc_text_size_display_3_material 0x0 ++int dimen abc_text_size_display_4_material 0x0 ++int dimen abc_text_size_headline_material 0x0 ++int dimen abc_text_size_large_material 0x0 ++int dimen abc_text_size_medium_material 0x0 ++int dimen abc_text_size_menu_header_material 0x0 ++int dimen abc_text_size_menu_material 0x0 ++int dimen abc_text_size_small_material 0x0 ++int dimen abc_text_size_subhead_material 0x0 ++int dimen abc_text_size_subtitle_material_toolbar 0x0 ++int dimen abc_text_size_title_material 0x0 ++int dimen abc_text_size_title_material_toolbar 0x0 ++int dimen autofill_inline_suggestion_icon_size 0x0 ++int dimen compat_button_inset_horizontal_material 0x0 ++int dimen compat_button_inset_vertical_material 0x0 ++int dimen compat_button_padding_horizontal_material 0x0 ++int dimen compat_button_padding_vertical_material 0x0 ++int dimen compat_control_corner_material 0x0 ++int dimen compat_notification_large_icon_max_height 0x0 ++int dimen compat_notification_large_icon_max_width 0x0 ++int dimen disabled_alpha_material_dark 0x0 ++int dimen disabled_alpha_material_light 0x0 ++int dimen highlight_alpha_material_colored 0x0 ++int dimen highlight_alpha_material_dark 0x0 ++int dimen highlight_alpha_material_light 0x0 ++int dimen hint_alpha_material_dark 0x0 ++int dimen hint_alpha_material_light 0x0 ++int dimen hint_pressed_alpha_material_dark 0x0 ++int dimen hint_pressed_alpha_material_light 0x0 ++int dimen notification_action_icon_size 0x0 ++int dimen notification_action_text_size 0x0 ++int dimen notification_big_circle_margin 0x0 ++int dimen notification_content_margin_start 0x0 ++int dimen notification_large_icon_height 0x0 ++int dimen notification_large_icon_width 0x0 ++int dimen notification_main_column_padding_top 0x0 ++int dimen notification_media_narrow_margin 0x0 ++int dimen notification_right_icon_size 0x0 ++int dimen notification_right_side_padding_top 0x0 ++int dimen notification_small_icon_background_padding 0x0 ++int dimen notification_small_icon_size_as_large 0x0 ++int dimen notification_subtext_size 0x0 ++int dimen notification_top_pad 0x0 ++int dimen notification_top_pad_large_text 0x0 ++int dimen tooltip_corner_radius 0x0 ++int dimen tooltip_horizontal_padding 0x0 ++int dimen tooltip_margin 0x0 ++int dimen tooltip_precise_anchor_extra_offset 0x0 ++int dimen tooltip_precise_anchor_threshold 0x0 ++int dimen tooltip_vertical_padding 0x0 ++int dimen tooltip_y_offset_non_touch 0x0 ++int dimen tooltip_y_offset_touch 0x0 ++int drawable abc_ab_share_pack_mtrl_alpha 0x0 ++int drawable abc_action_bar_item_background_material 0x0 ++int drawable abc_btn_borderless_material 0x0 ++int drawable abc_btn_check_material 0x0 ++int drawable abc_btn_check_material_anim 0x0 ++int drawable abc_btn_check_to_on_mtrl_000 0x0 ++int drawable abc_btn_check_to_on_mtrl_015 0x0 ++int drawable abc_btn_colored_material 0x0 ++int drawable abc_btn_default_mtrl_shape 0x0 ++int drawable abc_btn_radio_material 0x0 ++int drawable abc_btn_radio_material_anim 0x0 ++int drawable abc_btn_radio_to_on_mtrl_000 0x0 ++int drawable abc_btn_radio_to_on_mtrl_015 0x0 ++int drawable abc_btn_switch_to_on_mtrl_00001 0x0 ++int drawable abc_btn_switch_to_on_mtrl_00012 0x0 ++int drawable abc_cab_background_internal_bg 0x0 ++int drawable abc_cab_background_top_material 0x0 ++int drawable abc_cab_background_top_mtrl_alpha 0x0 ++int drawable abc_control_background_material 0x0 ++int drawable abc_dialog_material_background 0x0 ++int drawable abc_edit_text_material 0x0 ++int drawable abc_ic_ab_back_material 0x0 ++int drawable abc_ic_arrow_drop_right_black_24dp 0x0 ++int drawable abc_ic_clear_material 0x0 ++int drawable abc_ic_commit_search_api_mtrl_alpha 0x0 ++int drawable abc_ic_go_search_api_material 0x0 ++int drawable abc_ic_menu_copy_mtrl_am_alpha 0x0 ++int drawable abc_ic_menu_cut_mtrl_alpha 0x0 ++int drawable abc_ic_menu_overflow_material 0x0 ++int drawable abc_ic_menu_paste_mtrl_am_alpha 0x0 ++int drawable abc_ic_menu_selectall_mtrl_alpha 0x0 ++int drawable abc_ic_menu_share_mtrl_alpha 0x0 ++int drawable abc_ic_search_api_material 0x0 ++int drawable abc_ic_voice_search_api_material 0x0 ++int drawable abc_item_background_holo_dark 0x0 ++int drawable abc_item_background_holo_light 0x0 ++int drawable abc_list_divider_material 0x0 ++int drawable abc_list_divider_mtrl_alpha 0x0 ++int drawable abc_list_focused_holo 0x0 ++int drawable abc_list_longpressed_holo 0x0 ++int drawable abc_list_pressed_holo_dark 0x0 ++int drawable abc_list_pressed_holo_light 0x0 ++int drawable abc_list_selector_background_transition_holo_dark 0x0 ++int drawable abc_list_selector_background_transition_holo_light 0x0 ++int drawable abc_list_selector_disabled_holo_dark 0x0 ++int drawable abc_list_selector_disabled_holo_light 0x0 ++int drawable abc_list_selector_holo_dark 0x0 ++int drawable abc_list_selector_holo_light 0x0 ++int drawable abc_menu_hardkey_panel_mtrl_mult 0x0 ++int drawable abc_popup_background_mtrl_mult 0x0 ++int drawable abc_ratingbar_indicator_material 0x0 ++int drawable abc_ratingbar_material 0x0 ++int drawable abc_ratingbar_small_material 0x0 ++int drawable abc_scrubber_control_off_mtrl_alpha 0x0 ++int drawable abc_scrubber_control_to_pressed_mtrl_000 0x0 ++int drawable abc_scrubber_control_to_pressed_mtrl_005 0x0 ++int drawable abc_scrubber_primary_mtrl_alpha 0x0 ++int drawable abc_scrubber_track_mtrl_alpha 0x0 ++int drawable abc_seekbar_thumb_material 0x0 ++int drawable abc_seekbar_tick_mark_material 0x0 ++int drawable abc_seekbar_track_material 0x0 ++int drawable abc_spinner_mtrl_am_alpha 0x0 ++int drawable abc_spinner_textfield_background_material 0x0 ++int drawable abc_star_black_48dp 0x0 ++int drawable abc_star_half_black_48dp 0x0 ++int drawable abc_switch_thumb_material 0x0 ++int drawable abc_switch_track_mtrl_alpha 0x0 ++int drawable abc_tab_indicator_material 0x0 ++int drawable abc_tab_indicator_mtrl_alpha 0x0 ++int drawable abc_text_cursor_material 0x0 ++int drawable abc_text_select_handle_left_mtrl 0x0 ++int drawable abc_text_select_handle_middle_mtrl 0x0 ++int drawable abc_text_select_handle_right_mtrl 0x0 ++int drawable abc_textfield_activated_mtrl_alpha 0x0 ++int drawable abc_textfield_default_mtrl_alpha 0x0 ++int drawable abc_textfield_search_activated_mtrl_alpha 0x0 ++int drawable abc_textfield_search_default_mtrl_alpha 0x0 ++int drawable abc_textfield_search_material 0x0 ++int drawable abc_vector_test 0x0 ++int drawable autofill_inline_suggestion_chip_background 0x0 ++int drawable btn_checkbox_checked_mtrl 0x0 ++int drawable btn_checkbox_checked_to_unchecked_mtrl_animation 0x0 ++int drawable btn_checkbox_unchecked_mtrl 0x0 ++int drawable btn_checkbox_unchecked_to_checked_mtrl_animation 0x0 ++int drawable btn_radio_off_mtrl 0x0 ++int drawable btn_radio_off_to_on_mtrl_animation 0x0 ++int drawable btn_radio_on_mtrl 0x0 ++int drawable btn_radio_on_to_off_mtrl_animation 0x0 ++int drawable ic_call_answer 0x0 ++int drawable ic_call_answer_low 0x0 ++int drawable ic_call_answer_video 0x0 ++int drawable ic_call_answer_video_low 0x0 ++int drawable ic_call_decline 0x0 ++int drawable ic_call_decline_low 0x0 ++int drawable ic_resume 0x0 ++int drawable notification_action_background 0x0 ++int drawable notification_bg 0x0 ++int drawable notification_bg_low 0x0 ++int drawable notification_bg_low_normal 0x0 ++int drawable notification_bg_low_pressed 0x0 ++int drawable notification_bg_normal 0x0 ++int drawable notification_bg_normal_pressed 0x0 ++int drawable notification_icon_background 0x0 ++int drawable notification_oversize_large_icon_bg 0x0 ++int drawable notification_template_icon_bg 0x0 ++int drawable notification_template_icon_low_bg 0x0 ++int drawable notification_tile_bg 0x0 ++int drawable notify_panel_notification_icon_bg 0x0 ++int drawable paused_in_debugger_background 0x0 ++int drawable paused_in_debugger_dialog_background 0x0 ++int drawable redbox_top_border_background 0x0 ++int drawable ripple_effect 0x0 ++int drawable test_level_drawable 0x0 ++int drawable tooltip_frame_dark 0x0 ++int drawable tooltip_frame_light 0x0 ++int id accessibility_action_clickable_span 0x0 ++int id accessibility_actions 0x0 ++int id accessibility_collection 0x0 ++int id accessibility_collection_item 0x0 ++int id accessibility_custom_action_0 0x0 ++int id accessibility_custom_action_1 0x0 ++int id accessibility_custom_action_10 0x0 ++int id accessibility_custom_action_11 0x0 ++int id accessibility_custom_action_12 0x0 ++int id accessibility_custom_action_13 0x0 ++int id accessibility_custom_action_14 0x0 ++int id accessibility_custom_action_15 0x0 ++int id accessibility_custom_action_16 0x0 ++int id accessibility_custom_action_17 0x0 ++int id accessibility_custom_action_18 0x0 ++int id accessibility_custom_action_19 0x0 ++int id accessibility_custom_action_2 0x0 ++int id accessibility_custom_action_20 0x0 ++int id accessibility_custom_action_21 0x0 ++int id accessibility_custom_action_22 0x0 ++int id accessibility_custom_action_23 0x0 ++int id accessibility_custom_action_24 0x0 ++int id accessibility_custom_action_25 0x0 ++int id accessibility_custom_action_26 0x0 ++int id accessibility_custom_action_27 0x0 ++int id accessibility_custom_action_28 0x0 ++int id accessibility_custom_action_29 0x0 ++int id accessibility_custom_action_3 0x0 ++int id accessibility_custom_action_30 0x0 ++int id accessibility_custom_action_31 0x0 ++int id accessibility_custom_action_4 0x0 ++int id accessibility_custom_action_5 0x0 ++int id accessibility_custom_action_6 0x0 ++int id accessibility_custom_action_7 0x0 ++int id accessibility_custom_action_8 0x0 ++int id accessibility_custom_action_9 0x0 ++int id accessibility_hint 0x0 ++int id accessibility_label 0x0 ++int id accessibility_links 0x0 ++int id accessibility_order 0x0 ++int id accessibility_order_parent 0x0 ++int id accessibility_role 0x0 ++int id accessibility_state 0x0 ++int id accessibility_state_expanded 0x0 ++int id accessibility_value 0x0 ++int id action_bar 0x0 ++int id action_bar_activity_content 0x0 ++int id action_bar_container 0x0 ++int id action_bar_root 0x0 ++int id action_bar_spinner 0x0 ++int id action_bar_subtitle 0x0 ++int id action_bar_title 0x0 ++int id action_container 0x0 ++int id action_context_bar 0x0 ++int id action_divider 0x0 ++int id action_image 0x0 ++int id action_menu_divider 0x0 ++int id action_menu_presenter 0x0 ++int id action_mode_bar 0x0 ++int id action_mode_bar_stub 0x0 ++int id action_mode_close_button 0x0 ++int id action_text 0x0 ++int id actions 0x0 ++int id activity_chooser_view_content 0x0 ++int id add 0x0 ++int id alertTitle 0x0 ++int id alert_title 0x0 ++int id async 0x0 ++int id autofill_inline_suggestion_end_icon 0x0 ++int id autofill_inline_suggestion_start_icon 0x0 ++int id autofill_inline_suggestion_subtitle 0x0 ++int id autofill_inline_suggestion_title 0x0 ++int id automatic 0x0 ++int id blocking 0x0 ++int id button 0x0 ++int id buttonPanel 0x0 ++int id button_text 0x0 ++int id catalyst_redbox_title 0x0 ++int id center 0x0 ++int id centerCrop 0x0 ++int id centerInside 0x0 ++int id checkbox 0x0 ++int id checked 0x0 ++int id chronometer 0x0 ++int id content 0x0 ++int id contentPanel 0x0 ++int id custom 0x0 ++int id customPanel 0x0 ++int id decor_content_parent 0x0 ++int id default_activity_button 0x0 ++int id dialog_button 0x0 ++int id disabled 0x0 ++int id edit_query 0x0 ++int id edit_text_id 0x0 ++int id enabled 0x0 ++int id expand_activities_button 0x0 ++int id expanded_menu 0x0 ++int id filter 0x0 ++int id fitBottomStart 0x0 ++int id fitCenter 0x0 ++int id fitEnd 0x0 ++int id fitStart 0x0 ++int id fitXY 0x0 ++int id focusCrop 0x0 ++int id forever 0x0 ++int id fps_text 0x0 ++int id fragment_container_view_tag 0x0 ++int id group_divider 0x0 ++int id hardware 0x0 ++int id hide_ime_id 0x0 ++int id home 0x0 ++int id icon 0x0 ++int id icon_group 0x0 ++int id image 0x0 ++int id info 0x0 ++int id invalidate_transform 0x0 ++int id italic 0x0 ++int id labelled_by 0x0 ++int id line1 0x0 ++int id line3 0x0 ++int id listMode 0x0 ++int id list_item 0x0 ++int id lottie_layer_name 0x0 ++int id message 0x0 ++int id mix_blend_mode 0x0 ++int id multiply 0x0 ++int id none 0x0 ++int id normal 0x0 ++int id notification_background 0x0 ++int id notification_main_column 0x0 ++int id notification_main_column_container 0x0 ++int id off 0x0 ++int id on 0x0 ++int id original_focusability 0x0 ++int id parentPanel 0x0 ++int id pointer_events 0x0 ++int id progress_circular 0x0 ++int id progress_horizontal 0x0 ++int id radio 0x0 ++int id react_test_id 0x0 ++int id report_drawn 0x0 ++int id restart 0x0 ++int id reverse 0x0 ++int id right_icon 0x0 ++int id right_side 0x0 ++int id rn_frame_file 0x0 ++int id rn_frame_method 0x0 ++int id rn_redbox_dismiss_button 0x0 ++int id rn_redbox_line_separator 0x0 ++int id rn_redbox_loading_indicator 0x0 ++int id rn_redbox_reload_button 0x0 ++int id rn_redbox_report_button 0x0 ++int id rn_redbox_report_label 0x0 ++int id rn_redbox_stack 0x0 ++int id role 0x0 ++int id screen 0x0 ++int id scrollIndicatorDown 0x0 ++int id scrollIndicatorUp 0x0 ++int id scrollView 0x0 ++int id search_badge 0x0 ++int id search_bar 0x0 ++int id search_button 0x0 ++int id search_close_btn 0x0 ++int id search_edit_frame 0x0 ++int id search_go_btn 0x0 ++int id search_mag_icon 0x0 ++int id search_plate 0x0 ++int id search_src_text 0x0 ++int id search_voice_btn 0x0 ++int id select_dialog_listview 0x0 ++int id shortcut 0x0 ++int id software 0x0 ++int id spacer 0x0 ++int id special_effects_controller_view_tag 0x0 ++int id split_action_bar 0x0 ++int id src_atop 0x0 ++int id src_in 0x0 ++int id src_over 0x0 ++int id submenuarrow 0x0 ++int id submit_area 0x0 ++int id tabMode 0x0 ++int id tag_accessibility_actions 0x0 ++int id tag_accessibility_clickable_spans 0x0 ++int id tag_accessibility_heading 0x0 ++int id tag_accessibility_pane_title 0x0 ++int id tag_on_apply_window_listener 0x0 ++int id tag_on_receive_content_listener 0x0 ++int id tag_on_receive_content_mime_types 0x0 ++int id tag_screen_reader_focusable 0x0 ++int id tag_state_description 0x0 ++int id tag_transition_group 0x0 ++int id tag_unhandled_key_event_manager 0x0 ++int id tag_unhandled_key_listeners 0x0 ++int id tag_window_insets_animation_callback 0x0 ++int id text 0x0 ++int id text2 0x0 ++int id textSpacerNoButtons 0x0 ++int id textSpacerNoTitle 0x0 ++int id time 0x0 ++int id title 0x0 ++int id titleDividerNoCustom 0x0 ++int id title_template 0x0 ++int id topPanel 0x0 ++int id transform 0x0 ++int id transform_origin 0x0 ++int id unchecked 0x0 ++int id uniform 0x0 ++int id up 0x0 ++int id use_hardware_layer 0x0 ++int id view_clipped 0x0 ++int id view_tag_instance_handle 0x0 ++int id view_tag_native_id 0x0 ++int id view_tree_lifecycle_owner 0x0 ++int id view_tree_on_back_pressed_dispatcher_owner 0x0 ++int id view_tree_saved_state_registry_owner 0x0 ++int id view_tree_view_model_store_owner 0x0 ++int id visible_removing_fragment_view_tag 0x0 ++int id wrap_content 0x0 ++int integer abc_config_activityDefaultDur 0x0 ++int integer abc_config_activityShortDur 0x0 ++int integer cancel_button_image_alpha 0x0 ++int integer config_tooltipAnimTime 0x0 ++int integer react_native_dev_server_port 0x0 ++int integer status_bar_notification_info_maxnum 0x0 ++int interpolator btn_checkbox_checked_mtrl_animation_interpolator_0 0x0 ++int interpolator btn_checkbox_checked_mtrl_animation_interpolator_1 0x0 ++int interpolator btn_checkbox_unchecked_mtrl_animation_interpolator_0 0x0 ++int interpolator btn_checkbox_unchecked_mtrl_animation_interpolator_1 0x0 ++int interpolator btn_radio_to_off_mtrl_animation_interpolator_0 0x0 ++int interpolator btn_radio_to_on_mtrl_animation_interpolator_0 0x0 ++int interpolator fast_out_slow_in 0x0 ++int layout abc_action_bar_title_item 0x0 ++int layout abc_action_bar_up_container 0x0 ++int layout abc_action_menu_item_layout 0x0 ++int layout abc_action_menu_layout 0x0 ++int layout abc_action_mode_bar 0x0 ++int layout abc_action_mode_close_item_material 0x0 ++int layout abc_activity_chooser_view 0x0 ++int layout abc_activity_chooser_view_list_item 0x0 ++int layout abc_alert_dialog_button_bar_material 0x0 ++int layout abc_alert_dialog_material 0x0 ++int layout abc_alert_dialog_title_material 0x0 ++int layout abc_cascading_menu_item_layout 0x0 ++int layout abc_dialog_title_material 0x0 ++int layout abc_expanded_menu_layout 0x0 ++int layout abc_list_menu_item_checkbox 0x0 ++int layout abc_list_menu_item_icon 0x0 ++int layout abc_list_menu_item_layout 0x0 ++int layout abc_list_menu_item_radio 0x0 ++int layout abc_popup_menu_header_item_layout 0x0 ++int layout abc_popup_menu_item_layout 0x0 ++int layout abc_screen_content_include 0x0 ++int layout abc_screen_simple 0x0 ++int layout abc_screen_simple_overlay_action_mode 0x0 ++int layout abc_screen_toolbar 0x0 ++int layout abc_search_dropdown_item_icons_2line 0x0 ++int layout abc_search_view 0x0 ++int layout abc_select_dialog_material 0x0 ++int layout abc_tooltip 0x0 ++int layout alert_title_layout 0x0 ++int layout autofill_inline_suggestion 0x0 ++int layout custom_dialog 0x0 ++int layout dev_loading_view 0x0 ++int layout fps_view 0x0 ++int layout ime_base_split_test_activity 0x0 ++int layout ime_secondary_split_test_activity 0x0 ++int layout notification_action 0x0 ++int layout notification_action_tombstone 0x0 ++int layout notification_template_custom_big 0x0 ++int layout notification_template_icon_group 0x0 ++int layout notification_template_part_chronometer 0x0 ++int layout notification_template_part_time 0x0 ++int layout paused_in_debugger_view 0x0 ++int layout redbox_item_frame 0x0 ++int layout redbox_item_title 0x0 ++int layout redbox_view 0x0 ++int layout select_dialog_item_material 0x0 ++int layout select_dialog_multichoice_material 0x0 ++int layout select_dialog_singlechoice_material 0x0 ++int layout support_simple_spinner_dropdown_item 0x0 ++int string abc_action_bar_home_description 0x0 ++int string abc_action_bar_up_description 0x0 ++int string abc_action_menu_overflow_description 0x0 ++int string abc_action_mode_done 0x0 ++int string abc_activity_chooser_view_see_all 0x0 ++int string abc_activitychooserview_choose_application 0x0 ++int string abc_capital_off 0x0 ++int string abc_capital_on 0x0 ++int string abc_menu_alt_shortcut_label 0x0 ++int string abc_menu_ctrl_shortcut_label 0x0 ++int string abc_menu_delete_shortcut_label 0x0 ++int string abc_menu_enter_shortcut_label 0x0 ++int string abc_menu_function_shortcut_label 0x0 ++int string abc_menu_meta_shortcut_label 0x0 ++int string abc_menu_shift_shortcut_label 0x0 ++int string abc_menu_space_shortcut_label 0x0 ++int string abc_menu_sym_shortcut_label 0x0 ++int string abc_prepend_shortcut_label 0x0 ++int string abc_search_hint 0x0 ++int string abc_searchview_description_clear 0x0 ++int string abc_searchview_description_query 0x0 ++int string abc_searchview_description_search 0x0 ++int string abc_searchview_description_submit 0x0 ++int string abc_searchview_description_voice 0x0 ++int string abc_shareactionprovider_share_with 0x0 ++int string abc_shareactionprovider_share_with_application 0x0 ++int string abc_toolbar_collapse_description 0x0 ++int string alert_description 0x0 ++int string call_notification_answer_action 0x0 ++int string call_notification_answer_video_action 0x0 ++int string call_notification_decline_action 0x0 ++int string call_notification_hang_up_action 0x0 ++int string call_notification_incoming_text 0x0 ++int string call_notification_ongoing_text 0x0 ++int string call_notification_screening_text 0x0 ++int string catalyst_change_bundle_location 0x0 ++int string catalyst_change_bundle_location_apply 0x0 ++int string catalyst_change_bundle_location_cancel 0x0 ++int string catalyst_change_bundle_location_input_hint 0x0 ++int string catalyst_change_bundle_location_input_label 0x0 ++int string catalyst_change_bundle_location_instructions 0x0 ++int string catalyst_copy_button 0x0 ++int string catalyst_debug_connecting 0x0 ++int string catalyst_debug_error 0x0 ++int string catalyst_debug_open 0x0 ++int string catalyst_debug_open_disabled 0x0 ++int string catalyst_dev_menu_header 0x0 ++int string catalyst_dev_menu_sub_header 0x0 ++int string catalyst_dismiss_button 0x0 ++int string catalyst_heap_capture 0x0 ++int string catalyst_hot_reloading 0x0 ++int string catalyst_hot_reloading_auto_disable 0x0 ++int string catalyst_hot_reloading_auto_enable 0x0 ++int string catalyst_hot_reloading_stop 0x0 ++int string catalyst_inspector_toggle 0x0 ++int string catalyst_loading_from_url 0x0 ++int string catalyst_open_debugger_error 0x0 ++int string catalyst_perf_monitor 0x0 ++int string catalyst_perf_monitor_stop 0x0 ++int string catalyst_performance_background 0x0 ++int string catalyst_performance_cdp 0x0 ++int string catalyst_performance_disable 0x0 ++int string catalyst_performance_disabled 0x0 ++int string catalyst_performance_enable 0x0 ++int string catalyst_reload 0x0 ++int string catalyst_reload_button 0x0 ++int string catalyst_reload_error 0x0 ++int string catalyst_report_button 0x0 ++int string catalyst_sample_profiler_toggle 0x0 ++int string catalyst_settings 0x0 ++int string catalyst_settings_title 0x0 ++int string combobox_description 0x0 ++int string header_description 0x0 ++int string image_description 0x0 ++int string imagebutton_description 0x0 ++int string link_description 0x0 ++int string menu_description 0x0 ++int string menubar_description 0x0 ++int string menuitem_description 0x0 ++int string progressbar_description 0x0 ++int string radiogroup_description 0x0 ++int string react_native_dev_server_ip 0x0 ++int string rn_tab_description 0x0 ++int string scrollbar_description 0x0 ++int string search_menu_title 0x0 ++int string spinbutton_description 0x0 ++int string state_busy_description 0x0 ++int string state_collapsed_description 0x0 ++int string state_expanded_description 0x0 ++int string state_mixed_description 0x0 ++int string state_off_description 0x0 ++int string state_on_description 0x0 ++int string state_unselected_description 0x0 ++int string status_bar_notification_info_overflow 0x0 ++int string summary_description 0x0 ++int string tablist_description 0x0 ++int string timer_description 0x0 ++int string toolbar_description 0x0 ++int style AlertDialog_AppCompat 0x0 ++int style AlertDialog_AppCompat_Light 0x0 ++int style Animation_AppCompat_Dialog 0x0 ++int style Animation_AppCompat_DropDownUp 0x0 ++int style Animation_AppCompat_Tooltip 0x0 ++int style Animation_Catalyst_LogBox 0x0 ++int style Animation_Catalyst_RedBox 0x0 ++int style Base_AlertDialog_AppCompat 0x0 ++int style Base_AlertDialog_AppCompat_Light 0x0 ++int style Base_Animation_AppCompat_Dialog 0x0 ++int style Base_Animation_AppCompat_DropDownUp 0x0 ++int style Base_Animation_AppCompat_Tooltip 0x0 ++int style Base_DialogWindowTitleBackground_AppCompat 0x0 ++int style Base_DialogWindowTitle_AppCompat 0x0 ++int style Base_TextAppearance_AppCompat 0x0 ++int style Base_TextAppearance_AppCompat_Body1 0x0 ++int style Base_TextAppearance_AppCompat_Body2 0x0 ++int style Base_TextAppearance_AppCompat_Button 0x0 ++int style Base_TextAppearance_AppCompat_Caption 0x0 ++int style Base_TextAppearance_AppCompat_Display1 0x0 ++int style Base_TextAppearance_AppCompat_Display2 0x0 ++int style Base_TextAppearance_AppCompat_Display3 0x0 ++int style Base_TextAppearance_AppCompat_Display4 0x0 ++int style Base_TextAppearance_AppCompat_Headline 0x0 ++int style Base_TextAppearance_AppCompat_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Large 0x0 ++int style Base_TextAppearance_AppCompat_Large_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x0 ++int style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x0 ++int style Base_TextAppearance_AppCompat_Medium 0x0 ++int style Base_TextAppearance_AppCompat_Medium_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Menu 0x0 ++int style Base_TextAppearance_AppCompat_SearchResult 0x0 ++int style Base_TextAppearance_AppCompat_SearchResult_Subtitle 0x0 ++int style Base_TextAppearance_AppCompat_SearchResult_Title 0x0 ++int style Base_TextAppearance_AppCompat_Small 0x0 ++int style Base_TextAppearance_AppCompat_Small_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Subhead 0x0 ++int style Base_TextAppearance_AppCompat_Subhead_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Title 0x0 ++int style Base_TextAppearance_AppCompat_Title_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Tooltip 0x0 ++int style Base_TextAppearance_AppCompat_Widget_ActionBar_Menu 0x0 ++int style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x0 ++int style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Widget_ActionBar_Title 0x0 ++int style Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x0 ++int style Base_TextAppearance_AppCompat_Widget_ActionMode_Title 0x0 ++int style Base_TextAppearance_AppCompat_Widget_Button 0x0 ++int style Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored 0x0 ++int style Base_TextAppearance_AppCompat_Widget_Button_Colored 0x0 ++int style Base_TextAppearance_AppCompat_Widget_Button_Inverse 0x0 ++int style Base_TextAppearance_AppCompat_Widget_DropDownItem 0x0 ++int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Header 0x0 ++int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Large 0x0 ++int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Small 0x0 ++int style Base_TextAppearance_AppCompat_Widget_Switch 0x0 ++int style Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem 0x0 ++int style Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x0 ++int style Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle 0x0 ++int style Base_TextAppearance_Widget_AppCompat_Toolbar_Title 0x0 ++int style Base_ThemeOverlay_AppCompat 0x0 ++int style Base_ThemeOverlay_AppCompat_ActionBar 0x0 ++int style Base_ThemeOverlay_AppCompat_Dark 0x0 ++int style Base_ThemeOverlay_AppCompat_Dark_ActionBar 0x0 ++int style Base_ThemeOverlay_AppCompat_Dialog 0x0 ++int style Base_ThemeOverlay_AppCompat_Dialog_Alert 0x0 ++int style Base_ThemeOverlay_AppCompat_Light 0x0 ++int style Base_Theme_AppCompat 0x0 ++int style Base_Theme_AppCompat_CompactMenu 0x0 ++int style Base_Theme_AppCompat_Dialog 0x0 ++int style Base_Theme_AppCompat_DialogWhenLarge 0x0 ++int style Base_Theme_AppCompat_Dialog_Alert 0x0 ++int style Base_Theme_AppCompat_Dialog_FixedSize 0x0 ++int style Base_Theme_AppCompat_Dialog_MinWidth 0x0 ++int style Base_Theme_AppCompat_Light 0x0 ++int style Base_Theme_AppCompat_Light_DarkActionBar 0x0 ++int style Base_Theme_AppCompat_Light_Dialog 0x0 ++int style Base_Theme_AppCompat_Light_DialogWhenLarge 0x0 ++int style Base_Theme_AppCompat_Light_Dialog_Alert 0x0 ++int style Base_Theme_AppCompat_Light_Dialog_FixedSize 0x0 ++int style Base_Theme_AppCompat_Light_Dialog_MinWidth 0x0 ++int style Base_V21_ThemeOverlay_AppCompat_Dialog 0x0 ++int style Base_V21_Theme_AppCompat 0x0 ++int style Base_V21_Theme_AppCompat_Dialog 0x0 ++int style Base_V21_Theme_AppCompat_Light 0x0 ++int style Base_V21_Theme_AppCompat_Light_Dialog 0x0 ++int style Base_V22_Theme_AppCompat 0x0 ++int style Base_V22_Theme_AppCompat_Light 0x0 ++int style Base_V23_Theme_AppCompat 0x0 ++int style Base_V23_Theme_AppCompat_Light 0x0 ++int style Base_V26_Theme_AppCompat 0x0 ++int style Base_V26_Theme_AppCompat_Light 0x0 ++int style Base_V26_Widget_AppCompat_Toolbar 0x0 ++int style Base_V28_Theme_AppCompat 0x0 ++int style Base_V28_Theme_AppCompat_Light 0x0 ++int style Base_V7_ThemeOverlay_AppCompat_Dialog 0x0 ++int style Base_V7_Theme_AppCompat 0x0 ++int style Base_V7_Theme_AppCompat_Dialog 0x0 ++int style Base_V7_Theme_AppCompat_Light 0x0 ++int style Base_V7_Theme_AppCompat_Light_Dialog 0x0 ++int style Base_V7_Widget_AppCompat_AutoCompleteTextView 0x0 ++int style Base_V7_Widget_AppCompat_EditText 0x0 ++int style Base_V7_Widget_AppCompat_Toolbar 0x0 ++int style Base_Widget_AppCompat_ActionBar 0x0 ++int style Base_Widget_AppCompat_ActionBar_Solid 0x0 ++int style Base_Widget_AppCompat_ActionBar_TabBar 0x0 ++int style Base_Widget_AppCompat_ActionBar_TabText 0x0 ++int style Base_Widget_AppCompat_ActionBar_TabView 0x0 ++int style Base_Widget_AppCompat_ActionButton 0x0 ++int style Base_Widget_AppCompat_ActionButton_CloseMode 0x0 ++int style Base_Widget_AppCompat_ActionButton_Overflow 0x0 ++int style Base_Widget_AppCompat_ActionMode 0x0 ++int style Base_Widget_AppCompat_ActivityChooserView 0x0 ++int style Base_Widget_AppCompat_AutoCompleteTextView 0x0 ++int style Base_Widget_AppCompat_Button 0x0 ++int style Base_Widget_AppCompat_ButtonBar 0x0 ++int style Base_Widget_AppCompat_ButtonBar_AlertDialog 0x0 ++int style Base_Widget_AppCompat_Button_Borderless 0x0 ++int style Base_Widget_AppCompat_Button_Borderless_Colored 0x0 ++int style Base_Widget_AppCompat_Button_ButtonBar_AlertDialog 0x0 ++int style Base_Widget_AppCompat_Button_Colored 0x0 ++int style Base_Widget_AppCompat_Button_Small 0x0 ++int style Base_Widget_AppCompat_CompoundButton_CheckBox 0x0 ++int style Base_Widget_AppCompat_CompoundButton_RadioButton 0x0 ++int style Base_Widget_AppCompat_CompoundButton_Switch 0x0 ++int style Base_Widget_AppCompat_DrawerArrowToggle 0x0 ++int style Base_Widget_AppCompat_DrawerArrowToggle_Common 0x0 ++int style Base_Widget_AppCompat_DropDownItem_Spinner 0x0 ++int style Base_Widget_AppCompat_EditText 0x0 ++int style Base_Widget_AppCompat_ImageButton 0x0 ++int style Base_Widget_AppCompat_Light_ActionBar 0x0 ++int style Base_Widget_AppCompat_Light_ActionBar_Solid 0x0 ++int style Base_Widget_AppCompat_Light_ActionBar_TabBar 0x0 ++int style Base_Widget_AppCompat_Light_ActionBar_TabText 0x0 ++int style Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x0 ++int style Base_Widget_AppCompat_Light_ActionBar_TabView 0x0 ++int style Base_Widget_AppCompat_Light_PopupMenu 0x0 ++int style Base_Widget_AppCompat_Light_PopupMenu_Overflow 0x0 ++int style Base_Widget_AppCompat_ListMenuView 0x0 ++int style Base_Widget_AppCompat_ListPopupWindow 0x0 ++int style Base_Widget_AppCompat_ListView 0x0 ++int style Base_Widget_AppCompat_ListView_DropDown 0x0 ++int style Base_Widget_AppCompat_ListView_Menu 0x0 ++int style Base_Widget_AppCompat_PopupMenu 0x0 ++int style Base_Widget_AppCompat_PopupMenu_Overflow 0x0 ++int style Base_Widget_AppCompat_PopupWindow 0x0 ++int style Base_Widget_AppCompat_ProgressBar 0x0 ++int style Base_Widget_AppCompat_ProgressBar_Horizontal 0x0 ++int style Base_Widget_AppCompat_RatingBar 0x0 ++int style Base_Widget_AppCompat_RatingBar_Indicator 0x0 ++int style Base_Widget_AppCompat_RatingBar_Small 0x0 ++int style Base_Widget_AppCompat_SearchView 0x0 ++int style Base_Widget_AppCompat_SearchView_ActionBar 0x0 ++int style Base_Widget_AppCompat_SeekBar 0x0 ++int style Base_Widget_AppCompat_SeekBar_Discrete 0x0 ++int style Base_Widget_AppCompat_Spinner 0x0 ++int style Base_Widget_AppCompat_Spinner_Underlined 0x0 ++int style Base_Widget_AppCompat_TextView 0x0 ++int style Base_Widget_AppCompat_TextView_SpinnerItem 0x0 ++int style Base_Widget_AppCompat_Toolbar 0x0 ++int style Base_Widget_AppCompat_Toolbar_Button_Navigation 0x0 ++int style CalendarDatePickerDialog 0x0 ++int style CalendarDatePickerStyle 0x0 ++int style DialogAnimationFade 0x0 ++int style DialogAnimationSlide 0x0 ++int style NoAnimationDialog 0x0 ++int style Platform_AppCompat 0x0 ++int style Platform_AppCompat_Light 0x0 ++int style Platform_ThemeOverlay_AppCompat 0x0 ++int style Platform_ThemeOverlay_AppCompat_Dark 0x0 ++int style Platform_ThemeOverlay_AppCompat_Light 0x0 ++int style Platform_V21_AppCompat 0x0 ++int style Platform_V21_AppCompat_Light 0x0 ++int style Platform_V25_AppCompat 0x0 ++int style Platform_V25_AppCompat_Light 0x0 ++int style Platform_Widget_AppCompat_Spinner 0x0 ++int style RtlOverlay_DialogWindowTitle_AppCompat 0x0 ++int style RtlOverlay_Widget_AppCompat_ActionBar_TitleItem 0x0 ++int style RtlOverlay_Widget_AppCompat_DialogTitle_Icon 0x0 ++int style RtlOverlay_Widget_AppCompat_PopupMenuItem 0x0 ++int style RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup 0x0 ++int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut 0x0 ++int style RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow 0x0 ++int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Text 0x0 ++int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Title 0x0 ++int style RtlOverlay_Widget_AppCompat_SearchView_MagIcon 0x0 ++int style RtlOverlay_Widget_AppCompat_Search_DropDown 0x0 ++int style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 0x0 ++int style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 0x0 ++int style RtlOverlay_Widget_AppCompat_Search_DropDown_Query 0x0 ++int style RtlOverlay_Widget_AppCompat_Search_DropDown_Text 0x0 ++int style RtlUnderlay_Widget_AppCompat_ActionButton 0x0 ++int style RtlUnderlay_Widget_AppCompat_ActionButton_Overflow 0x0 ++int style SpinnerDatePickerDialog 0x0 ++int style SpinnerDatePickerStyle 0x0 ++int style TextAppearance_AppCompat 0x0 ++int style TextAppearance_AppCompat_Body1 0x0 ++int style TextAppearance_AppCompat_Body2 0x0 ++int style TextAppearance_AppCompat_Button 0x0 ++int style TextAppearance_AppCompat_Caption 0x0 ++int style TextAppearance_AppCompat_Display1 0x0 ++int style TextAppearance_AppCompat_Display2 0x0 ++int style TextAppearance_AppCompat_Display3 0x0 ++int style TextAppearance_AppCompat_Display4 0x0 ++int style TextAppearance_AppCompat_Headline 0x0 ++int style TextAppearance_AppCompat_Inverse 0x0 ++int style TextAppearance_AppCompat_Large 0x0 ++int style TextAppearance_AppCompat_Large_Inverse 0x0 ++int style TextAppearance_AppCompat_Light_SearchResult_Subtitle 0x0 ++int style TextAppearance_AppCompat_Light_SearchResult_Title 0x0 ++int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x0 ++int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x0 ++int style TextAppearance_AppCompat_Medium 0x0 ++int style TextAppearance_AppCompat_Medium_Inverse 0x0 ++int style TextAppearance_AppCompat_Menu 0x0 ++int style TextAppearance_AppCompat_SearchResult_Subtitle 0x0 ++int style TextAppearance_AppCompat_SearchResult_Title 0x0 ++int style TextAppearance_AppCompat_Small 0x0 ++int style TextAppearance_AppCompat_Small_Inverse 0x0 ++int style TextAppearance_AppCompat_Subhead 0x0 ++int style TextAppearance_AppCompat_Subhead_Inverse 0x0 ++int style TextAppearance_AppCompat_Title 0x0 ++int style TextAppearance_AppCompat_Title_Inverse 0x0 ++int style TextAppearance_AppCompat_Tooltip 0x0 ++int style TextAppearance_AppCompat_Widget_ActionBar_Menu 0x0 ++int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x0 ++int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x0 ++int style TextAppearance_AppCompat_Widget_ActionBar_Title 0x0 ++int style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x0 ++int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x0 ++int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse 0x0 ++int style TextAppearance_AppCompat_Widget_ActionMode_Title 0x0 ++int style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse 0x0 ++int style TextAppearance_AppCompat_Widget_Button 0x0 ++int style TextAppearance_AppCompat_Widget_Button_Borderless_Colored 0x0 ++int style TextAppearance_AppCompat_Widget_Button_Colored 0x0 ++int style TextAppearance_AppCompat_Widget_Button_Inverse 0x0 ++int style TextAppearance_AppCompat_Widget_DropDownItem 0x0 ++int style TextAppearance_AppCompat_Widget_PopupMenu_Header 0x0 ++int style TextAppearance_AppCompat_Widget_PopupMenu_Large 0x0 ++int style TextAppearance_AppCompat_Widget_PopupMenu_Small 0x0 ++int style TextAppearance_AppCompat_Widget_Switch 0x0 ++int style TextAppearance_AppCompat_Widget_TextView_SpinnerItem 0x0 ++int style TextAppearance_Compat_Notification 0x0 ++int style TextAppearance_Compat_Notification_Info 0x0 ++int style TextAppearance_Compat_Notification_Line2 0x0 ++int style TextAppearance_Compat_Notification_Time 0x0 ++int style TextAppearance_Compat_Notification_Title 0x0 ++int style TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x0 ++int style TextAppearance_Widget_AppCompat_Toolbar_Subtitle 0x0 ++int style TextAppearance_Widget_AppCompat_Toolbar_Title 0x0 ++int style Theme 0x0 ++int style ThemeOverlay_AppCompat 0x0 ++int style ThemeOverlay_AppCompat_ActionBar 0x0 ++int style ThemeOverlay_AppCompat_Dark 0x0 ++int style ThemeOverlay_AppCompat_Dark_ActionBar 0x0 ++int style ThemeOverlay_AppCompat_DayNight 0x0 ++int style ThemeOverlay_AppCompat_DayNight_ActionBar 0x0 ++int style ThemeOverlay_AppCompat_Dialog 0x0 ++int style ThemeOverlay_AppCompat_Dialog_Alert 0x0 ++int style ThemeOverlay_AppCompat_Light 0x0 ++int style Theme_AppCompat 0x0 ++int style Theme_AppCompat_CompactMenu 0x0 ++int style Theme_AppCompat_DayNight 0x0 ++int style Theme_AppCompat_DayNight_DarkActionBar 0x0 ++int style Theme_AppCompat_DayNight_Dialog 0x0 ++int style Theme_AppCompat_DayNight_DialogWhenLarge 0x0 ++int style Theme_AppCompat_DayNight_Dialog_Alert 0x0 ++int style Theme_AppCompat_DayNight_Dialog_MinWidth 0x0 ++int style Theme_AppCompat_DayNight_NoActionBar 0x0 ++int style Theme_AppCompat_Dialog 0x0 ++int style Theme_AppCompat_DialogWhenLarge 0x0 ++int style Theme_AppCompat_Dialog_Alert 0x0 ++int style Theme_AppCompat_Dialog_MinWidth 0x0 ++int style Theme_AppCompat_Empty 0x0 ++int style Theme_AppCompat_Light 0x0 ++int style Theme_AppCompat_Light_DarkActionBar 0x0 ++int style Theme_AppCompat_Light_Dialog 0x0 ++int style Theme_AppCompat_Light_DialogWhenLarge 0x0 ++int style Theme_AppCompat_Light_Dialog_Alert 0x0 ++int style Theme_AppCompat_Light_Dialog_MinWidth 0x0 ++int style Theme_AppCompat_Light_NoActionBar 0x0 ++int style Theme_AppCompat_NoActionBar 0x0 ++int style Theme_AutofillInlineSuggestion 0x0 ++int style Theme_Catalyst 0x0 ++int style Theme_Catalyst_LogBox 0x0 ++int style Theme_Catalyst_RedBox 0x0 ++int style Theme_FullScreenDialog 0x0 ++int style Theme_FullScreenDialogAnimatedFade 0x0 ++int style Theme_FullScreenDialogAnimatedSlide 0x0 ++int style Theme_ReactNative_AppCompat_Light 0x0 ++int style Theme_ReactNative_AppCompat_Light_NoActionBar_FullScreen 0x0 ++int style Theme_ReactNative_TextInput_DefaultBackground 0x0 ++int style Widget_AppCompat_ActionBar 0x0 ++int style Widget_AppCompat_ActionBar_Solid 0x0 ++int style Widget_AppCompat_ActionBar_TabBar 0x0 ++int style Widget_AppCompat_ActionBar_TabText 0x0 ++int style Widget_AppCompat_ActionBar_TabView 0x0 ++int style Widget_AppCompat_ActionButton 0x0 ++int style Widget_AppCompat_ActionButton_CloseMode 0x0 ++int style Widget_AppCompat_ActionButton_Overflow 0x0 ++int style Widget_AppCompat_ActionMode 0x0 ++int style Widget_AppCompat_ActivityChooserView 0x0 ++int style Widget_AppCompat_AutoCompleteTextView 0x0 ++int style Widget_AppCompat_Button 0x0 ++int style Widget_AppCompat_ButtonBar 0x0 ++int style Widget_AppCompat_ButtonBar_AlertDialog 0x0 ++int style Widget_AppCompat_Button_Borderless 0x0 ++int style Widget_AppCompat_Button_Borderless_Colored 0x0 ++int style Widget_AppCompat_Button_ButtonBar_AlertDialog 0x0 ++int style Widget_AppCompat_Button_Colored 0x0 ++int style Widget_AppCompat_Button_Small 0x0 ++int style Widget_AppCompat_CompoundButton_CheckBox 0x0 ++int style Widget_AppCompat_CompoundButton_RadioButton 0x0 ++int style Widget_AppCompat_CompoundButton_Switch 0x0 ++int style Widget_AppCompat_DrawerArrowToggle 0x0 ++int style Widget_AppCompat_DropDownItem_Spinner 0x0 ++int style Widget_AppCompat_EditText 0x0 ++int style Widget_AppCompat_ImageButton 0x0 ++int style Widget_AppCompat_Light_ActionBar 0x0 ++int style Widget_AppCompat_Light_ActionBar_Solid 0x0 ++int style Widget_AppCompat_Light_ActionBar_Solid_Inverse 0x0 ++int style Widget_AppCompat_Light_ActionBar_TabBar 0x0 ++int style Widget_AppCompat_Light_ActionBar_TabBar_Inverse 0x0 ++int style Widget_AppCompat_Light_ActionBar_TabText 0x0 ++int style Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x0 ++int style Widget_AppCompat_Light_ActionBar_TabView 0x0 ++int style Widget_AppCompat_Light_ActionBar_TabView_Inverse 0x0 ++int style Widget_AppCompat_Light_ActionButton 0x0 ++int style Widget_AppCompat_Light_ActionButton_CloseMode 0x0 ++int style Widget_AppCompat_Light_ActionButton_Overflow 0x0 ++int style Widget_AppCompat_Light_ActionMode_Inverse 0x0 ++int style Widget_AppCompat_Light_ActivityChooserView 0x0 ++int style Widget_AppCompat_Light_AutoCompleteTextView 0x0 ++int style Widget_AppCompat_Light_DropDownItem_Spinner 0x0 ++int style Widget_AppCompat_Light_ListPopupWindow 0x0 ++int style Widget_AppCompat_Light_ListView_DropDown 0x0 ++int style Widget_AppCompat_Light_PopupMenu 0x0 ++int style Widget_AppCompat_Light_PopupMenu_Overflow 0x0 ++int style Widget_AppCompat_Light_SearchView 0x0 ++int style Widget_AppCompat_Light_Spinner_DropDown_ActionBar 0x0 ++int style Widget_AppCompat_ListMenuView 0x0 ++int style Widget_AppCompat_ListPopupWindow 0x0 ++int style Widget_AppCompat_ListView 0x0 ++int style Widget_AppCompat_ListView_DropDown 0x0 ++int style Widget_AppCompat_ListView_Menu 0x0 ++int style Widget_AppCompat_PopupMenu 0x0 ++int style Widget_AppCompat_PopupMenu_Overflow 0x0 ++int style Widget_AppCompat_PopupWindow 0x0 ++int style Widget_AppCompat_ProgressBar 0x0 ++int style Widget_AppCompat_ProgressBar_Horizontal 0x0 ++int style Widget_AppCompat_RatingBar 0x0 ++int style Widget_AppCompat_RatingBar_Indicator 0x0 ++int style Widget_AppCompat_RatingBar_Small 0x0 ++int style Widget_AppCompat_SearchView 0x0 ++int style Widget_AppCompat_SearchView_ActionBar 0x0 ++int style Widget_AppCompat_SeekBar 0x0 ++int style Widget_AppCompat_SeekBar_Discrete 0x0 ++int style Widget_AppCompat_Spinner 0x0 ++int style Widget_AppCompat_Spinner_DropDown 0x0 ++int style Widget_AppCompat_Spinner_DropDown_ActionBar 0x0 ++int style Widget_AppCompat_Spinner_Underlined 0x0 ++int style Widget_AppCompat_TextView 0x0 ++int style Widget_AppCompat_TextView_SpinnerItem 0x0 ++int style Widget_AppCompat_Toolbar 0x0 ++int style Widget_AppCompat_Toolbar_Button_Navigation 0x0 ++int style Widget_Autofill 0x0 ++int style Widget_Autofill_InlineSuggestionChip 0x0 ++int style Widget_Autofill_InlineSuggestionEndIconStyle 0x0 ++int style Widget_Autofill_InlineSuggestionStartIconStyle 0x0 ++int style Widget_Autofill_InlineSuggestionSubtitle 0x0 ++int style Widget_Autofill_InlineSuggestionTitle 0x0 ++int style Widget_Compat_NotificationActionContainer 0x0 ++int style Widget_Compat_NotificationActionText 0x0 ++int style redboxButton 0x0 ++int[] styleable ActionBar { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable ActionBar_background 0 ++int styleable ActionBar_backgroundSplit 1 ++int styleable ActionBar_backgroundStacked 2 ++int styleable ActionBar_contentInsetEnd 3 ++int styleable ActionBar_contentInsetEndWithActions 4 ++int styleable ActionBar_contentInsetLeft 5 ++int styleable ActionBar_contentInsetRight 6 ++int styleable ActionBar_contentInsetStart 7 ++int styleable ActionBar_contentInsetStartWithNavigation 8 ++int styleable ActionBar_customNavigationLayout 9 ++int styleable ActionBar_displayOptions 10 ++int styleable ActionBar_divider 11 ++int styleable ActionBar_elevation 12 ++int styleable ActionBar_height 13 ++int styleable ActionBar_hideOnContentScroll 14 ++int styleable ActionBar_homeAsUpIndicator 15 ++int styleable ActionBar_homeLayout 16 ++int styleable ActionBar_icon 17 ++int styleable ActionBar_indeterminateProgressStyle 18 ++int styleable ActionBar_itemPadding 19 ++int styleable ActionBar_logo 20 ++int styleable ActionBar_navigationMode 21 ++int styleable ActionBar_popupTheme 22 ++int styleable ActionBar_progressBarPadding 23 ++int styleable ActionBar_progressBarStyle 24 ++int styleable ActionBar_subtitle 25 ++int styleable ActionBar_subtitleTextStyle 26 ++int styleable ActionBar_title 27 ++int styleable ActionBar_titleTextStyle 28 ++int[] styleable ActionBarLayout { 0x10100b3 } ++int styleable ActionBarLayout_android_layout_gravity 0 ++int[] styleable ActionMenuItemView { 0x101013f } ++int styleable ActionMenuItemView_android_minWidth 0 ++int[] styleable ActionMenuView { } ++int[] styleable ActionMode { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable ActionMode_background 0 ++int styleable ActionMode_backgroundSplit 1 ++int styleable ActionMode_closeItemLayout 2 ++int styleable ActionMode_height 3 ++int styleable ActionMode_subtitleTextStyle 4 ++int styleable ActionMode_titleTextStyle 5 ++int[] styleable ActivityChooserView { 0x0, 0x0 } ++int styleable ActivityChooserView_expandActivityOverflowButtonDrawable 0 ++int styleable ActivityChooserView_initialActivityCount 1 ++int[] styleable AlertDialog { 0x10100f2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable AlertDialog_android_layout 0 ++int styleable AlertDialog_buttonIconDimen 1 ++int styleable AlertDialog_buttonPanelSideLayout 2 ++int styleable AlertDialog_listItemLayout 3 ++int styleable AlertDialog_listLayout 4 ++int styleable AlertDialog_multiChoiceItemLayout 5 ++int styleable AlertDialog_showTitle 6 ++int styleable AlertDialog_singleChoiceItemLayout 7 ++int[] styleable AnimatedStateListDrawableCompat { 0x1010196, 0x101011c, 0x101030c, 0x101030d, 0x1010195, 0x1010194 } ++int styleable AnimatedStateListDrawableCompat_android_constantSize 0 ++int styleable AnimatedStateListDrawableCompat_android_dither 1 ++int styleable AnimatedStateListDrawableCompat_android_enterFadeDuration 2 ++int styleable AnimatedStateListDrawableCompat_android_exitFadeDuration 3 ++int styleable AnimatedStateListDrawableCompat_android_variablePadding 4 ++int styleable AnimatedStateListDrawableCompat_android_visible 5 ++int[] styleable AnimatedStateListDrawableItem { 0x1010199, 0x10100d0 } ++int styleable AnimatedStateListDrawableItem_android_drawable 0 ++int styleable AnimatedStateListDrawableItem_android_id 1 ++int[] styleable AnimatedStateListDrawableTransition { 0x1010199, 0x101044a, 0x101044b, 0x1010449 } ++int styleable AnimatedStateListDrawableTransition_android_drawable 0 ++int styleable AnimatedStateListDrawableTransition_android_fromId 1 ++int styleable AnimatedStateListDrawableTransition_android_reversible 2 ++int styleable AnimatedStateListDrawableTransition_android_toId 3 ++int[] styleable AppCompatEmojiHelper { } ++int[] styleable AppCompatImageView { 0x1010119, 0x0, 0x0, 0x0 } ++int styleable AppCompatImageView_android_src 0 ++int styleable AppCompatImageView_srcCompat 1 ++int styleable AppCompatImageView_tint 2 ++int styleable AppCompatImageView_tintMode 3 ++int[] styleable AppCompatSeekBar { 0x1010142, 0x0, 0x0, 0x0 } ++int styleable AppCompatSeekBar_android_thumb 0 ++int styleable AppCompatSeekBar_tickMark 1 ++int styleable AppCompatSeekBar_tickMarkTint 2 ++int styleable AppCompatSeekBar_tickMarkTintMode 3 ++int[] styleable AppCompatTextHelper { 0x101016e, 0x1010393, 0x101016f, 0x1010170, 0x1010392, 0x101016d, 0x1010034 } ++int styleable AppCompatTextHelper_android_drawableBottom 0 ++int styleable AppCompatTextHelper_android_drawableEnd 1 ++int styleable AppCompatTextHelper_android_drawableLeft 2 ++int styleable AppCompatTextHelper_android_drawableRight 3 ++int styleable AppCompatTextHelper_android_drawableStart 4 ++int styleable AppCompatTextHelper_android_drawableTop 5 ++int styleable AppCompatTextHelper_android_textAppearance 6 ++int[] styleable AppCompatTextView { 0x1010034, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable AppCompatTextView_android_textAppearance 0 ++int styleable AppCompatTextView_autoSizeMaxTextSize 1 ++int styleable AppCompatTextView_autoSizeMinTextSize 2 ++int styleable AppCompatTextView_autoSizePresetSizes 3 ++int styleable AppCompatTextView_autoSizeStepGranularity 4 ++int styleable AppCompatTextView_autoSizeTextType 5 ++int styleable AppCompatTextView_drawableBottomCompat 6 ++int styleable AppCompatTextView_drawableEndCompat 7 ++int styleable AppCompatTextView_drawableLeftCompat 8 ++int styleable AppCompatTextView_drawableRightCompat 9 ++int styleable AppCompatTextView_drawableStartCompat 10 ++int styleable AppCompatTextView_drawableTint 11 ++int styleable AppCompatTextView_drawableTintMode 12 ++int styleable AppCompatTextView_drawableTopCompat 13 ++int styleable AppCompatTextView_emojiCompatEnabled 14 ++int styleable AppCompatTextView_firstBaselineToTopHeight 15 ++int styleable AppCompatTextView_fontFamily 16 ++int styleable AppCompatTextView_fontVariationSettings 17 ++int styleable AppCompatTextView_lastBaselineToBottomHeight 18 ++int styleable AppCompatTextView_lineHeight 19 ++int styleable AppCompatTextView_textAllCaps 20 ++int styleable AppCompatTextView_textLocale 21 ++int[] styleable AppCompatTheme { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10100ae, 0x1010057, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable AppCompatTheme_actionBarDivider 0 ++int styleable AppCompatTheme_actionBarItemBackground 1 ++int styleable AppCompatTheme_actionBarPopupTheme 2 ++int styleable AppCompatTheme_actionBarSize 3 ++int styleable AppCompatTheme_actionBarSplitStyle 4 ++int styleable AppCompatTheme_actionBarStyle 5 ++int styleable AppCompatTheme_actionBarTabBarStyle 6 ++int styleable AppCompatTheme_actionBarTabStyle 7 ++int styleable AppCompatTheme_actionBarTabTextStyle 8 ++int styleable AppCompatTheme_actionBarTheme 9 ++int styleable AppCompatTheme_actionBarWidgetTheme 10 ++int styleable AppCompatTheme_actionButtonStyle 11 ++int styleable AppCompatTheme_actionDropDownStyle 12 ++int styleable AppCompatTheme_actionMenuTextAppearance 13 ++int styleable AppCompatTheme_actionMenuTextColor 14 ++int styleable AppCompatTheme_actionModeBackground 15 ++int styleable AppCompatTheme_actionModeCloseButtonStyle 16 ++int styleable AppCompatTheme_actionModeCloseContentDescription 17 ++int styleable AppCompatTheme_actionModeCloseDrawable 18 ++int styleable AppCompatTheme_actionModeCopyDrawable 19 ++int styleable AppCompatTheme_actionModeCutDrawable 20 ++int styleable AppCompatTheme_actionModeFindDrawable 21 ++int styleable AppCompatTheme_actionModePasteDrawable 22 ++int styleable AppCompatTheme_actionModePopupWindowStyle 23 ++int styleable AppCompatTheme_actionModeSelectAllDrawable 24 ++int styleable AppCompatTheme_actionModeShareDrawable 25 ++int styleable AppCompatTheme_actionModeSplitBackground 26 ++int styleable AppCompatTheme_actionModeStyle 27 ++int styleable AppCompatTheme_actionModeTheme 28 ++int styleable AppCompatTheme_actionModeWebSearchDrawable 29 ++int styleable AppCompatTheme_actionOverflowButtonStyle 30 ++int styleable AppCompatTheme_actionOverflowMenuStyle 31 ++int styleable AppCompatTheme_activityChooserViewStyle 32 ++int styleable AppCompatTheme_alertDialogButtonGroupStyle 33 ++int styleable AppCompatTheme_alertDialogCenterButtons 34 ++int styleable AppCompatTheme_alertDialogStyle 35 ++int styleable AppCompatTheme_alertDialogTheme 36 ++int styleable AppCompatTheme_android_windowAnimationStyle 37 ++int styleable AppCompatTheme_android_windowIsFloating 38 ++int styleable AppCompatTheme_autoCompleteTextViewStyle 39 ++int styleable AppCompatTheme_borderlessButtonStyle 40 ++int styleable AppCompatTheme_buttonBarButtonStyle 41 ++int styleable AppCompatTheme_buttonBarNegativeButtonStyle 42 ++int styleable AppCompatTheme_buttonBarNeutralButtonStyle 43 ++int styleable AppCompatTheme_buttonBarPositiveButtonStyle 44 ++int styleable AppCompatTheme_buttonBarStyle 45 ++int styleable AppCompatTheme_buttonStyle 46 ++int styleable AppCompatTheme_buttonStyleSmall 47 ++int styleable AppCompatTheme_checkboxStyle 48 ++int styleable AppCompatTheme_checkedTextViewStyle 49 ++int styleable AppCompatTheme_colorAccent 50 ++int styleable AppCompatTheme_colorBackgroundFloating 51 ++int styleable AppCompatTheme_colorButtonNormal 52 ++int styleable AppCompatTheme_colorControlActivated 53 ++int styleable AppCompatTheme_colorControlHighlight 54 ++int styleable AppCompatTheme_colorControlNormal 55 ++int styleable AppCompatTheme_colorError 56 ++int styleable AppCompatTheme_colorPrimary 57 ++int styleable AppCompatTheme_colorPrimaryDark 58 ++int styleable AppCompatTheme_colorSwitchThumbNormal 59 ++int styleable AppCompatTheme_controlBackground 60 ++int styleable AppCompatTheme_dialogCornerRadius 61 ++int styleable AppCompatTheme_dialogPreferredPadding 62 ++int styleable AppCompatTheme_dialogTheme 63 ++int styleable AppCompatTheme_dividerHorizontal 64 ++int styleable AppCompatTheme_dividerVertical 65 ++int styleable AppCompatTheme_dropDownListViewStyle 66 ++int styleable AppCompatTheme_dropdownListPreferredItemHeight 67 ++int styleable AppCompatTheme_editTextBackground 68 ++int styleable AppCompatTheme_editTextColor 69 ++int styleable AppCompatTheme_editTextStyle 70 ++int styleable AppCompatTheme_homeAsUpIndicator 71 ++int styleable AppCompatTheme_imageButtonStyle 72 ++int styleable AppCompatTheme_listChoiceBackgroundIndicator 73 ++int styleable AppCompatTheme_listChoiceIndicatorMultipleAnimated 74 ++int styleable AppCompatTheme_listChoiceIndicatorSingleAnimated 75 ++int styleable AppCompatTheme_listDividerAlertDialog 76 ++int styleable AppCompatTheme_listMenuViewStyle 77 ++int styleable AppCompatTheme_listPopupWindowStyle 78 ++int styleable AppCompatTheme_listPreferredItemHeight 79 ++int styleable AppCompatTheme_listPreferredItemHeightLarge 80 ++int styleable AppCompatTheme_listPreferredItemHeightSmall 81 ++int styleable AppCompatTheme_listPreferredItemPaddingEnd 82 ++int styleable AppCompatTheme_listPreferredItemPaddingLeft 83 ++int styleable AppCompatTheme_listPreferredItemPaddingRight 84 ++int styleable AppCompatTheme_listPreferredItemPaddingStart 85 ++int styleable AppCompatTheme_panelBackground 86 ++int styleable AppCompatTheme_panelMenuListTheme 87 ++int styleable AppCompatTheme_panelMenuListWidth 88 ++int styleable AppCompatTheme_popupMenuStyle 89 ++int styleable AppCompatTheme_popupWindowStyle 90 ++int styleable AppCompatTheme_radioButtonStyle 91 ++int styleable AppCompatTheme_ratingBarStyle 92 ++int styleable AppCompatTheme_ratingBarStyleIndicator 93 ++int styleable AppCompatTheme_ratingBarStyleSmall 94 ++int styleable AppCompatTheme_searchViewStyle 95 ++int styleable AppCompatTheme_seekBarStyle 96 ++int styleable AppCompatTheme_selectableItemBackground 97 ++int styleable AppCompatTheme_selectableItemBackgroundBorderless 98 ++int styleable AppCompatTheme_spinnerDropDownItemStyle 99 ++int styleable AppCompatTheme_spinnerStyle 100 ++int styleable AppCompatTheme_switchStyle 101 ++int styleable AppCompatTheme_textAppearanceLargePopupMenu 102 ++int styleable AppCompatTheme_textAppearanceListItem 103 ++int styleable AppCompatTheme_textAppearanceListItemSecondary 104 ++int styleable AppCompatTheme_textAppearanceListItemSmall 105 ++int styleable AppCompatTheme_textAppearancePopupMenuHeader 106 ++int styleable AppCompatTheme_textAppearanceSearchResultSubtitle 107 ++int styleable AppCompatTheme_textAppearanceSearchResultTitle 108 ++int styleable AppCompatTheme_textAppearanceSmallPopupMenu 109 ++int styleable AppCompatTheme_textColorAlertDialogListItem 110 ++int styleable AppCompatTheme_textColorSearchUrl 111 ++int styleable AppCompatTheme_toolbarNavigationButtonStyle 112 ++int styleable AppCompatTheme_toolbarStyle 113 ++int styleable AppCompatTheme_tooltipForegroundColor 114 ++int styleable AppCompatTheme_tooltipFrameBackground 115 ++int styleable AppCompatTheme_viewInflaterClass 116 ++int styleable AppCompatTheme_windowActionBar 117 ++int styleable AppCompatTheme_windowActionBarOverlay 118 ++int styleable AppCompatTheme_windowActionModeOverlay 119 ++int styleable AppCompatTheme_windowFixedHeightMajor 120 ++int styleable AppCompatTheme_windowFixedHeightMinor 121 ++int styleable AppCompatTheme_windowFixedWidthMajor 122 ++int styleable AppCompatTheme_windowFixedWidthMinor 123 ++int styleable AppCompatTheme_windowMinWidthMajor 124 ++int styleable AppCompatTheme_windowMinWidthMinor 125 ++int styleable AppCompatTheme_windowNoTitle 126 ++int[] styleable Autofill_InlineSuggestion { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable Autofill_InlineSuggestion_autofillInlineSuggestionChip 0 ++int styleable Autofill_InlineSuggestion_autofillInlineSuggestionEndIconStyle 1 ++int styleable Autofill_InlineSuggestion_autofillInlineSuggestionStartIconStyle 2 ++int styleable Autofill_InlineSuggestion_autofillInlineSuggestionSubtitle 3 ++int styleable Autofill_InlineSuggestion_autofillInlineSuggestionTitle 4 ++int styleable Autofill_InlineSuggestion_isAutofillInlineSuggestionTheme 5 ++int[] styleable ButtonBarLayout { 0x0 } ++int styleable ButtonBarLayout_allowStacking 0 ++int[] styleable Capability { 0x0, 0x0 } ++int styleable Capability_queryPatterns 0 ++int styleable Capability_shortcutMatchRequired 1 ++int[] styleable CheckedTextView { 0x1010108, 0x0, 0x0, 0x0 } ++int styleable CheckedTextView_android_checkMark 0 ++int styleable CheckedTextView_checkMarkCompat 1 ++int styleable CheckedTextView_checkMarkTint 2 ++int styleable CheckedTextView_checkMarkTintMode 3 ++int[] styleable ColorStateListItem { 0x0, 0x101031f, 0x10101a5, 0x1010647, 0x0 } ++int styleable ColorStateListItem_alpha 0 ++int styleable ColorStateListItem_android_alpha 1 ++int styleable ColorStateListItem_android_color 2 ++int styleable ColorStateListItem_android_lStar 3 ++int styleable ColorStateListItem_lStar 4 ++int[] styleable CompoundButton { 0x1010107, 0x0, 0x0, 0x0 } ++int styleable CompoundButton_android_button 0 ++int styleable CompoundButton_buttonCompat 1 ++int styleable CompoundButton_buttonTint 2 ++int styleable CompoundButton_buttonTintMode 3 ++int[] styleable DrawerArrowToggle { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable DrawerArrowToggle_arrowHeadLength 0 ++int styleable DrawerArrowToggle_arrowShaftLength 1 ++int styleable DrawerArrowToggle_barLength 2 ++int styleable DrawerArrowToggle_color 3 ++int styleable DrawerArrowToggle_drawableSize 4 ++int styleable DrawerArrowToggle_gapBetweenBars 5 ++int styleable DrawerArrowToggle_spinBars 6 ++int styleable DrawerArrowToggle_thickness 7 ++int[] styleable FontFamily { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable FontFamily_fontProviderAuthority 0 ++int styleable FontFamily_fontProviderCerts 1 ++int styleable FontFamily_fontProviderFetchStrategy 2 ++int styleable FontFamily_fontProviderFetchTimeout 3 ++int styleable FontFamily_fontProviderPackage 4 ++int styleable FontFamily_fontProviderQuery 5 ++int styleable FontFamily_fontProviderSystemFontFamily 6 ++int[] styleable FontFamilyFont { 0x1010532, 0x101053f, 0x1010570, 0x1010533, 0x101056f, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable FontFamilyFont_android_font 0 ++int styleable FontFamilyFont_android_fontStyle 1 ++int styleable FontFamilyFont_android_fontVariationSettings 2 ++int styleable FontFamilyFont_android_fontWeight 3 ++int styleable FontFamilyFont_android_ttcIndex 4 ++int styleable FontFamilyFont_font 5 ++int styleable FontFamilyFont_fontStyle 6 ++int styleable FontFamilyFont_fontVariationSettings 7 ++int styleable FontFamilyFont_fontWeight 8 ++int styleable FontFamilyFont_ttcIndex 9 ++int[] styleable Fragment { 0x10100d0, 0x1010003, 0x10100d1 } ++int styleable Fragment_android_id 0 ++int styleable Fragment_android_name 1 ++int styleable Fragment_android_tag 2 ++int[] styleable FragmentContainerView { 0x1010003, 0x10100d1 } ++int styleable FragmentContainerView_android_name 0 ++int styleable FragmentContainerView_android_tag 1 ++int[] styleable GenericDraweeHierarchy { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable GenericDraweeHierarchy_actualImageScaleType 0 ++int styleable GenericDraweeHierarchy_backgroundImage 1 ++int styleable GenericDraweeHierarchy_fadeDuration 2 ++int styleable GenericDraweeHierarchy_failureImage 3 ++int styleable GenericDraweeHierarchy_failureImageScaleType 4 ++int styleable GenericDraweeHierarchy_overlayImage 5 ++int styleable GenericDraweeHierarchy_placeholderImage 6 ++int styleable GenericDraweeHierarchy_placeholderImageScaleType 7 ++int styleable GenericDraweeHierarchy_pressedStateOverlayImage 8 ++int styleable GenericDraweeHierarchy_progressBarAutoRotateInterval 9 ++int styleable GenericDraweeHierarchy_progressBarImage 10 ++int styleable GenericDraweeHierarchy_progressBarImageScaleType 11 ++int styleable GenericDraweeHierarchy_retryImage 12 ++int styleable GenericDraweeHierarchy_retryImageScaleType 13 ++int styleable GenericDraweeHierarchy_roundAsCircle 14 ++int styleable GenericDraweeHierarchy_roundBottomEnd 15 ++int styleable GenericDraweeHierarchy_roundBottomLeft 16 ++int styleable GenericDraweeHierarchy_roundBottomRight 17 ++int styleable GenericDraweeHierarchy_roundBottomStart 18 ++int styleable GenericDraweeHierarchy_roundTopEnd 19 ++int styleable GenericDraweeHierarchy_roundTopLeft 20 ++int styleable GenericDraweeHierarchy_roundTopRight 21 ++int styleable GenericDraweeHierarchy_roundTopStart 22 ++int styleable GenericDraweeHierarchy_roundWithOverlayColor 23 ++int styleable GenericDraweeHierarchy_roundedCornerRadius 24 ++int styleable GenericDraweeHierarchy_roundingBorderColor 25 ++int styleable GenericDraweeHierarchy_roundingBorderPadding 26 ++int styleable GenericDraweeHierarchy_roundingBorderWidth 27 ++int styleable GenericDraweeHierarchy_viewAspectRatio 28 ++int[] styleable GradientColor { 0x101020b, 0x10101a2, 0x10101a3, 0x101019e, 0x1010512, 0x1010513, 0x10101a4, 0x101019d, 0x1010510, 0x1010511, 0x1010201, 0x10101a1 } ++int styleable GradientColor_android_centerColor 0 ++int styleable GradientColor_android_centerX 1 ++int styleable GradientColor_android_centerY 2 ++int styleable GradientColor_android_endColor 3 ++int styleable GradientColor_android_endX 4 ++int styleable GradientColor_android_endY 5 ++int styleable GradientColor_android_gradientRadius 6 ++int styleable GradientColor_android_startColor 7 ++int styleable GradientColor_android_startX 8 ++int styleable GradientColor_android_startY 9 ++int styleable GradientColor_android_tileMode 10 ++int styleable GradientColor_android_type 11 ++int[] styleable GradientColorItem { 0x10101a5, 0x1010514 } ++int styleable GradientColorItem_android_color 0 ++int styleable GradientColorItem_android_offset 1 ++int[] styleable LinearLayoutCompat { 0x1010126, 0x1010127, 0x10100af, 0x10100c4, 0x1010128, 0x0, 0x0, 0x0, 0x0 } ++int styleable LinearLayoutCompat_android_baselineAligned 0 ++int styleable LinearLayoutCompat_android_baselineAlignedChildIndex 1 ++int styleable LinearLayoutCompat_android_gravity 2 ++int styleable LinearLayoutCompat_android_orientation 3 ++int styleable LinearLayoutCompat_android_weightSum 4 ++int styleable LinearLayoutCompat_divider 5 ++int styleable LinearLayoutCompat_dividerPadding 6 ++int styleable LinearLayoutCompat_measureWithLargestChild 7 ++int styleable LinearLayoutCompat_showDividers 8 ++int[] styleable LinearLayoutCompat_Layout { 0x10100b3, 0x10100f5, 0x1010181, 0x10100f4 } ++int styleable LinearLayoutCompat_Layout_android_layout_gravity 0 ++int styleable LinearLayoutCompat_Layout_android_layout_height 1 ++int styleable LinearLayoutCompat_Layout_android_layout_weight 2 ++int styleable LinearLayoutCompat_Layout_android_layout_width 3 ++int[] styleable ListPopupWindow { 0x10102ac, 0x10102ad } ++int styleable ListPopupWindow_android_dropDownHorizontalOffset 0 ++int styleable ListPopupWindow_android_dropDownVerticalOffset 1 ++int[] styleable LottieAnimationView { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable LottieAnimationView_lottie_asyncUpdates 0 ++int styleable LottieAnimationView_lottie_autoPlay 1 ++int styleable LottieAnimationView_lottie_cacheComposition 2 ++int styleable LottieAnimationView_lottie_clipToCompositionBounds 3 ++int styleable LottieAnimationView_lottie_colorFilter 4 ++int styleable LottieAnimationView_lottie_defaultFontFileExtension 5 ++int styleable LottieAnimationView_lottie_enableMergePathsForKitKatAndAbove 6 ++int styleable LottieAnimationView_lottie_fallbackRes 7 ++int styleable LottieAnimationView_lottie_fileName 8 ++int styleable LottieAnimationView_lottie_ignoreDisabledSystemAnimations 9 ++int styleable LottieAnimationView_lottie_imageAssetsFolder 10 ++int styleable LottieAnimationView_lottie_loop 11 ++int styleable LottieAnimationView_lottie_progress 12 ++int styleable LottieAnimationView_lottie_rawRes 13 ++int styleable LottieAnimationView_lottie_renderMode 14 ++int styleable LottieAnimationView_lottie_repeatCount 15 ++int styleable LottieAnimationView_lottie_repeatMode 16 ++int styleable LottieAnimationView_lottie_speed 17 ++int styleable LottieAnimationView_lottie_url 18 ++int styleable LottieAnimationView_lottie_useCompositionFrameRate 19 ++int[] styleable MenuGroup { 0x10101e0, 0x101000e, 0x10100d0, 0x10101de, 0x10101df, 0x1010194 } ++int styleable MenuGroup_android_checkableBehavior 0 ++int styleable MenuGroup_android_enabled 1 ++int styleable MenuGroup_android_id 2 ++int styleable MenuGroup_android_menuCategory 3 ++int styleable MenuGroup_android_orderInCategory 4 ++int styleable MenuGroup_android_visible 5 ++int[] styleable MenuItem { 0x0, 0x0, 0x0, 0x0, 0x10101e3, 0x10101e5, 0x1010106, 0x101000e, 0x1010002, 0x10100d0, 0x10101de, 0x10101e4, 0x101026f, 0x10101df, 0x10101e1, 0x10101e2, 0x1010194, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable MenuItem_actionLayout 0 ++int styleable MenuItem_actionProviderClass 1 ++int styleable MenuItem_actionViewClass 2 ++int styleable MenuItem_alphabeticModifiers 3 ++int styleable MenuItem_android_alphabeticShortcut 4 ++int styleable MenuItem_android_checkable 5 ++int styleable MenuItem_android_checked 6 ++int styleable MenuItem_android_enabled 7 ++int styleable MenuItem_android_icon 8 ++int styleable MenuItem_android_id 9 ++int styleable MenuItem_android_menuCategory 10 ++int styleable MenuItem_android_numericShortcut 11 ++int styleable MenuItem_android_onClick 12 ++int styleable MenuItem_android_orderInCategory 13 ++int styleable MenuItem_android_title 14 ++int styleable MenuItem_android_titleCondensed 15 ++int styleable MenuItem_android_visible 16 ++int styleable MenuItem_contentDescription 17 ++int styleable MenuItem_iconTint 18 ++int styleable MenuItem_iconTintMode 19 ++int styleable MenuItem_numericModifiers 20 ++int styleable MenuItem_showAsAction 21 ++int styleable MenuItem_tooltipText 22 ++int[] styleable MenuView { 0x101012f, 0x101012d, 0x1010130, 0x1010131, 0x101012c, 0x101012e, 0x10100ae, 0x0, 0x0 } ++int styleable MenuView_android_headerBackground 0 ++int styleable MenuView_android_horizontalDivider 1 ++int styleable MenuView_android_itemBackground 2 ++int styleable MenuView_android_itemIconDisabledAlpha 3 ++int styleable MenuView_android_itemTextAppearance 4 ++int styleable MenuView_android_verticalDivider 5 ++int styleable MenuView_android_windowAnimationStyle 6 ++int styleable MenuView_preserveIconSpacing 7 ++int styleable MenuView_subMenuArrow 8 ++int[] styleable PopupWindow { 0x10102c9, 0x1010176, 0x0 } ++int styleable PopupWindow_android_popupAnimationStyle 0 ++int styleable PopupWindow_android_popupBackground 1 ++int styleable PopupWindow_overlapAnchor 2 ++int[] styleable PopupWindowBackgroundState { 0x0 } ++int styleable PopupWindowBackgroundState_state_above_anchor 0 ++int[] styleable RecycleListView { 0x0, 0x0 } ++int styleable RecycleListView_paddingBottomNoButtons 0 ++int styleable RecycleListView_paddingTopNoTitle 1 ++int[] styleable SearchView { 0x10100da, 0x1010264, 0x1010220, 0x101011f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable SearchView_android_focusable 0 ++int styleable SearchView_android_imeOptions 1 ++int styleable SearchView_android_inputType 2 ++int styleable SearchView_android_maxWidth 3 ++int styleable SearchView_closeIcon 4 ++int styleable SearchView_commitIcon 5 ++int styleable SearchView_defaultQueryHint 6 ++int styleable SearchView_goIcon 7 ++int styleable SearchView_iconifiedByDefault 8 ++int styleable SearchView_layout 9 ++int styleable SearchView_queryBackground 10 ++int styleable SearchView_queryHint 11 ++int styleable SearchView_searchHintIcon 12 ++int styleable SearchView_searchIcon 13 ++int styleable SearchView_submitBackground 14 ++int styleable SearchView_suggestionRowLayout 15 ++int styleable SearchView_voiceIcon 16 ++int[] styleable SimpleDraweeView { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable SimpleDraweeView_actualImageResource 0 ++int styleable SimpleDraweeView_actualImageUri 1 ++int styleable SimpleDraweeView_backgroundImage 2 ++int styleable SimpleDraweeView_fadeDuration 3 ++int styleable SimpleDraweeView_failureImage 4 ++int styleable SimpleDraweeView_failureImageScaleType 5 ++int styleable SimpleDraweeView_overlayImage 6 ++int styleable SimpleDraweeView_placeholderImage 7 ++int styleable SimpleDraweeView_placeholderImageScaleType 8 ++int styleable SimpleDraweeView_pressedStateOverlayImage 9 ++int styleable SimpleDraweeView_progressBarAutoRotateInterval 10 ++int styleable SimpleDraweeView_progressBarImage 11 ++int styleable SimpleDraweeView_progressBarImageScaleType 12 ++int styleable SimpleDraweeView_retryImage 13 ++int styleable SimpleDraweeView_retryImageScaleType 14 ++int styleable SimpleDraweeView_roundAsCircle 15 ++int styleable SimpleDraweeView_roundBottomEnd 16 ++int styleable SimpleDraweeView_roundBottomLeft 17 ++int styleable SimpleDraweeView_roundBottomRight 18 ++int styleable SimpleDraweeView_roundBottomStart 19 ++int styleable SimpleDraweeView_roundTopEnd 20 ++int styleable SimpleDraweeView_roundTopLeft 21 ++int styleable SimpleDraweeView_roundTopRight 22 ++int styleable SimpleDraweeView_roundTopStart 23 ++int styleable SimpleDraweeView_roundWithOverlayColor 24 ++int styleable SimpleDraweeView_roundedCornerRadius 25 ++int styleable SimpleDraweeView_roundingBorderColor 26 ++int styleable SimpleDraweeView_roundingBorderPadding 27 ++int styleable SimpleDraweeView_roundingBorderWidth 28 ++int styleable SimpleDraweeView_viewAspectRatio 29 ++int[] styleable Spinner { 0x1010262, 0x10100b2, 0x1010176, 0x101017b, 0x0 } ++int styleable Spinner_android_dropDownWidth 0 ++int styleable Spinner_android_entries 1 ++int styleable Spinner_android_popupBackground 2 ++int styleable Spinner_android_prompt 3 ++int styleable Spinner_popupTheme 4 ++int[] styleable StateListDrawable { 0x1010196, 0x101011c, 0x101030c, 0x101030d, 0x1010195, 0x1010194 } ++int styleable StateListDrawable_android_constantSize 0 ++int styleable StateListDrawable_android_dither 1 ++int styleable StateListDrawable_android_enterFadeDuration 2 ++int styleable StateListDrawable_android_exitFadeDuration 3 ++int styleable StateListDrawable_android_variablePadding 4 ++int styleable StateListDrawable_android_visible 5 ++int[] styleable StateListDrawableItem { 0x1010199 } ++int styleable StateListDrawableItem_android_drawable 0 ++int[] styleable SwipeRefreshLayout { 0x0 } ++int styleable SwipeRefreshLayout_swipeRefreshLayoutProgressSpinnerBackgroundColor 0 ++int[] styleable SwitchCompat { 0x1010125, 0x1010124, 0x1010142, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable SwitchCompat_android_textOff 0 ++int styleable SwitchCompat_android_textOn 1 ++int styleable SwitchCompat_android_thumb 2 ++int styleable SwitchCompat_showText 3 ++int styleable SwitchCompat_splitTrack 4 ++int styleable SwitchCompat_switchMinWidth 5 ++int styleable SwitchCompat_switchPadding 6 ++int styleable SwitchCompat_switchTextAppearance 7 ++int styleable SwitchCompat_thumbTextPadding 8 ++int styleable SwitchCompat_thumbTint 9 ++int styleable SwitchCompat_thumbTintMode 10 ++int styleable SwitchCompat_track 11 ++int styleable SwitchCompat_trackTint 12 ++int styleable SwitchCompat_trackTintMode 13 ++int[] styleable TextAppearance { 0x10103ac, 0x1010161, 0x1010162, 0x1010163, 0x1010164, 0x1010098, 0x101009a, 0x101009b, 0x1010585, 0x1010095, 0x1010097, 0x1010096, 0x0, 0x0, 0x0, 0x0 } ++int styleable TextAppearance_android_fontFamily 0 ++int styleable TextAppearance_android_shadowColor 1 ++int styleable TextAppearance_android_shadowDx 2 ++int styleable TextAppearance_android_shadowDy 3 ++int styleable TextAppearance_android_shadowRadius 4 ++int styleable TextAppearance_android_textColor 5 ++int styleable TextAppearance_android_textColorHint 6 ++int styleable TextAppearance_android_textColorLink 7 ++int styleable TextAppearance_android_textFontWeight 8 ++int styleable TextAppearance_android_textSize 9 ++int styleable TextAppearance_android_textStyle 10 ++int styleable TextAppearance_android_typeface 11 ++int styleable TextAppearance_fontFamily 12 ++int styleable TextAppearance_fontVariationSettings 13 ++int styleable TextAppearance_textAllCaps 14 ++int styleable TextAppearance_textLocale 15 ++int[] styleable Toolbar { 0x10100af, 0x1010140, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ++int styleable Toolbar_android_gravity 0 ++int styleable Toolbar_android_minHeight 1 ++int styleable Toolbar_buttonGravity 2 ++int styleable Toolbar_collapseContentDescription 3 ++int styleable Toolbar_collapseIcon 4 ++int styleable Toolbar_contentInsetEnd 5 ++int styleable Toolbar_contentInsetEndWithActions 6 ++int styleable Toolbar_contentInsetLeft 7 ++int styleable Toolbar_contentInsetRight 8 ++int styleable Toolbar_contentInsetStart 9 ++int styleable Toolbar_contentInsetStartWithNavigation 10 ++int styleable Toolbar_logo 11 ++int styleable Toolbar_logoDescription 12 ++int styleable Toolbar_maxButtonHeight 13 ++int styleable Toolbar_menu 14 ++int styleable Toolbar_navigationContentDescription 15 ++int styleable Toolbar_navigationIcon 16 ++int styleable Toolbar_popupTheme 17 ++int styleable Toolbar_subtitle 18 ++int styleable Toolbar_subtitleTextAppearance 19 ++int styleable Toolbar_subtitleTextColor 20 ++int styleable Toolbar_title 21 ++int styleable Toolbar_titleMargin 22 ++int styleable Toolbar_titleMarginBottom 23 ++int styleable Toolbar_titleMarginEnd 24 ++int styleable Toolbar_titleMarginStart 25 ++int styleable Toolbar_titleMarginTop 26 ++int styleable Toolbar_titleMargins 27 ++int styleable Toolbar_titleTextAppearance 28 ++int styleable Toolbar_titleTextColor 29 ++int[] styleable View { 0x10100da, 0x1010000, 0x0, 0x0, 0x0 } ++int styleable View_android_focusable 0 ++int styleable View_android_theme 1 ++int styleable View_paddingEnd 2 ++int styleable View_paddingStart 3 ++int styleable View_theme 4 ++int[] styleable ViewBackgroundHelper { 0x10100d4, 0x0, 0x0 } ++int styleable ViewBackgroundHelper_android_background 0 ++int styleable ViewBackgroundHelper_backgroundTint 1 ++int styleable ViewBackgroundHelper_backgroundTintMode 2 ++int[] styleable ViewStubCompat { 0x10100d0, 0x10100f3, 0x10100f2 } ++int styleable ViewStubCompat_android_id 0 ++int styleable ViewStubCompat_android_inflatedId 1 ++int styleable ViewStubCompat_android_layout 2 ++int xml rn_dev_preferences 0x0 +diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties b/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +new file mode 100644 +index 0000000..fd67625 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +@@ -0,0 +1 @@ ++#Fri Jan 16 17:47:48 CET 2026 +diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml b/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +new file mode 100644 +index 0000000..640f653 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +@@ -0,0 +1,2 @@ ++ ++ +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugAssets/merger.xml b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +new file mode 100644 +index 0000000..7784cd9 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +@@ -0,0 +1,2 @@ ++ ++ +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +new file mode 100644 +index 0000000..a2f0db8 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +@@ -0,0 +1,2 @@ ++ ++ +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugShaders/merger.xml b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +new file mode 100644 +index 0000000..b36c56b +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +@@ -0,0 +1,2 @@ ++ ++ +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt b/node_modules/lottie-react-native/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +new file mode 100644 +index 0000000..78ac5b8 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +@@ -0,0 +1,2 @@ ++R_DEF: Internal format may change without notice ++local +diff --git a/node_modules/lottie-react-native/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt b/node_modules/lottie-react-native/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +new file mode 100644 +index 0000000..37bf81e +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +@@ -0,0 +1,7 @@ ++1 ++2 ++4 ++5 ++6 ++7 +diff --git a/node_modules/lottie-react-native/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml b/node_modules/lottie-react-native/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +new file mode 100644 +index 0000000..7ca7cec +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json b/node_modules/lottie-react-native/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +new file mode 100644 +index 0000000..0637a08 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +@@ -0,0 +1 @@ ++[] +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt b/node_modules/lottie-react-native/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +new file mode 100644 +index 0000000..08f4ebe +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +@@ -0,0 +1 @@ ++0 Warning/Error +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt b/node_modules/lottie-react-native/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +new file mode 100644 +index 0000000..40bea4a +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +@@ -0,0 +1,1523 @@ ++com.airbnb.android.react.lottie ++anim abc_fade_in ++anim abc_fade_out ++anim abc_grow_fade_in_from_bottom ++anim abc_popup_enter ++anim abc_popup_exit ++anim abc_shrink_fade_out_from_bottom ++anim abc_slide_in_bottom ++anim abc_slide_in_top ++anim abc_slide_out_bottom ++anim abc_slide_out_top ++anim abc_tooltip_enter ++anim abc_tooltip_exit ++anim btn_checkbox_to_checked_box_inner_merged_animation ++anim btn_checkbox_to_checked_box_outer_merged_animation ++anim btn_checkbox_to_checked_icon_null_animation ++anim btn_checkbox_to_unchecked_box_inner_merged_animation ++anim btn_checkbox_to_unchecked_check_path_merged_animation ++anim btn_checkbox_to_unchecked_icon_null_animation ++anim btn_radio_to_off_mtrl_dot_group_animation ++anim btn_radio_to_off_mtrl_ring_outer_animation ++anim btn_radio_to_off_mtrl_ring_outer_path_animation ++anim btn_radio_to_on_mtrl_dot_group_animation ++anim btn_radio_to_on_mtrl_ring_outer_animation ++anim btn_radio_to_on_mtrl_ring_outer_path_animation ++anim catalyst_fade_in ++anim catalyst_fade_out ++anim catalyst_push_up_in ++anim catalyst_push_up_out ++anim catalyst_slide_down ++anim catalyst_slide_up ++anim fragment_fast_out_extra_slow_in ++animator fragment_close_enter ++animator fragment_close_exit ++animator fragment_fade_enter ++animator fragment_fade_exit ++animator fragment_open_enter ++animator fragment_open_exit ++attr actionBarDivider ++attr actionBarItemBackground ++attr actionBarPopupTheme ++attr actionBarSize ++attr actionBarSplitStyle ++attr actionBarStyle ++attr actionBarTabBarStyle ++attr actionBarTabStyle ++attr actionBarTabTextStyle ++attr actionBarTheme ++attr actionBarWidgetTheme ++attr actionButtonStyle ++attr actionDropDownStyle ++attr actionLayout ++attr actionMenuTextAppearance ++attr actionMenuTextColor ++attr actionModeBackground ++attr actionModeCloseButtonStyle ++attr actionModeCloseContentDescription ++attr actionModeCloseDrawable ++attr actionModeCopyDrawable ++attr actionModeCutDrawable ++attr actionModeFindDrawable ++attr actionModePasteDrawable ++attr actionModePopupWindowStyle ++attr actionModeSelectAllDrawable ++attr actionModeShareDrawable ++attr actionModeSplitBackground ++attr actionModeStyle ++attr actionModeTheme ++attr actionModeWebSearchDrawable ++attr actionOverflowButtonStyle ++attr actionOverflowMenuStyle ++attr actionProviderClass ++attr actionViewClass ++attr activityChooserViewStyle ++attr actualImageResource ++attr actualImageScaleType ++attr actualImageUri ++attr alertDialogButtonGroupStyle ++attr alertDialogCenterButtons ++attr alertDialogStyle ++attr alertDialogTheme ++attr allowStacking ++attr alpha ++attr alphabeticModifiers ++attr arrowHeadLength ++attr arrowShaftLength ++attr autoCompleteTextViewStyle ++attr autoSizeMaxTextSize ++attr autoSizeMinTextSize ++attr autoSizePresetSizes ++attr autoSizeStepGranularity ++attr autoSizeTextType ++attr autofillInlineSuggestionChip ++attr autofillInlineSuggestionEndIconStyle ++attr autofillInlineSuggestionStartIconStyle ++attr autofillInlineSuggestionSubtitle ++attr autofillInlineSuggestionTitle ++attr background ++attr backgroundImage ++attr backgroundSplit ++attr backgroundStacked ++attr backgroundTint ++attr backgroundTintMode ++attr barLength ++attr borderlessButtonStyle ++attr buttonBarButtonStyle ++attr buttonBarNegativeButtonStyle ++attr buttonBarNeutralButtonStyle ++attr buttonBarPositiveButtonStyle ++attr buttonBarStyle ++attr buttonCompat ++attr buttonGravity ++attr buttonIconDimen ++attr buttonPanelSideLayout ++attr buttonStyle ++attr buttonStyleSmall ++attr buttonTint ++attr buttonTintMode ++attr checkMarkCompat ++attr checkMarkTint ++attr checkMarkTintMode ++attr checkboxStyle ++attr checkedTextViewStyle ++attr closeIcon ++attr closeItemLayout ++attr collapseContentDescription ++attr collapseIcon ++attr color ++attr colorAccent ++attr colorBackgroundFloating ++attr colorButtonNormal ++attr colorControlActivated ++attr colorControlHighlight ++attr colorControlNormal ++attr colorError ++attr colorPrimary ++attr colorPrimaryDark ++attr colorSwitchThumbNormal ++attr commitIcon ++attr contentDescription ++attr contentInsetEnd ++attr contentInsetEndWithActions ++attr contentInsetLeft ++attr contentInsetRight ++attr contentInsetStart ++attr contentInsetStartWithNavigation ++attr controlBackground ++attr customNavigationLayout ++attr defaultQueryHint ++attr dialogCornerRadius ++attr dialogPreferredPadding ++attr dialogTheme ++attr displayOptions ++attr divider ++attr dividerHorizontal ++attr dividerPadding ++attr dividerVertical ++attr drawableBottomCompat ++attr drawableEndCompat ++attr drawableLeftCompat ++attr drawableRightCompat ++attr drawableSize ++attr drawableStartCompat ++attr drawableTint ++attr drawableTintMode ++attr drawableTopCompat ++attr drawerArrowStyle ++attr dropDownListViewStyle ++attr dropdownListPreferredItemHeight ++attr editTextBackground ++attr editTextColor ++attr editTextStyle ++attr elevation ++attr emojiCompatEnabled ++attr expandActivityOverflowButtonDrawable ++attr fadeDuration ++attr failureImage ++attr failureImageScaleType ++attr firstBaselineToTopHeight ++attr font ++attr fontFamily ++attr fontProviderAuthority ++attr fontProviderCerts ++attr fontProviderFetchStrategy ++attr fontProviderFetchTimeout ++attr fontProviderPackage ++attr fontProviderQuery ++attr fontProviderSystemFontFamily ++attr fontStyle ++attr fontVariationSettings ++attr fontWeight ++attr gapBetweenBars ++attr goIcon ++attr height ++attr hideOnContentScroll ++attr homeAsUpIndicator ++attr homeLayout ++attr icon ++attr iconTint ++attr iconTintMode ++attr iconifiedByDefault ++attr imageButtonStyle ++attr indeterminateProgressStyle ++attr initialActivityCount ++attr isAutofillInlineSuggestionTheme ++attr isLightTheme ++attr itemPadding ++attr lStar ++attr lastBaselineToBottomHeight ++attr layout ++attr lineHeight ++attr listChoiceBackgroundIndicator ++attr listChoiceIndicatorMultipleAnimated ++attr listChoiceIndicatorSingleAnimated ++attr listDividerAlertDialog ++attr listItemLayout ++attr listLayout ++attr listMenuViewStyle ++attr listPopupWindowStyle ++attr listPreferredItemHeight ++attr listPreferredItemHeightLarge ++attr listPreferredItemHeightSmall ++attr listPreferredItemPaddingEnd ++attr listPreferredItemPaddingLeft ++attr listPreferredItemPaddingRight ++attr listPreferredItemPaddingStart ++attr logo ++attr logoDescription ++attr lottieAnimationViewStyle ++attr lottie_asyncUpdates ++attr lottie_autoPlay ++attr lottie_cacheComposition ++attr lottie_clipToCompositionBounds ++attr lottie_colorFilter ++attr lottie_defaultFontFileExtension ++attr lottie_enableMergePathsForKitKatAndAbove ++attr lottie_fallbackRes ++attr lottie_fileName ++attr lottie_ignoreDisabledSystemAnimations ++attr lottie_imageAssetsFolder ++attr lottie_loop ++attr lottie_progress ++attr lottie_rawRes ++attr lottie_renderMode ++attr lottie_repeatCount ++attr lottie_repeatMode ++attr lottie_speed ++attr lottie_url ++attr lottie_useCompositionFrameRate ++attr maxButtonHeight ++attr measureWithLargestChild ++attr menu ++attr multiChoiceItemLayout ++attr navigationContentDescription ++attr navigationIcon ++attr navigationMode ++attr nestedScrollViewStyle ++attr numericModifiers ++attr overlapAnchor ++attr overlayImage ++attr paddingBottomNoButtons ++attr paddingEnd ++attr paddingStart ++attr paddingTopNoTitle ++attr panelBackground ++attr panelMenuListTheme ++attr panelMenuListWidth ++attr placeholderImage ++attr placeholderImageScaleType ++attr popupMenuStyle ++attr popupTheme ++attr popupWindowStyle ++attr preserveIconSpacing ++attr pressedStateOverlayImage ++attr progressBarAutoRotateInterval ++attr progressBarImage ++attr progressBarImageScaleType ++attr progressBarPadding ++attr progressBarStyle ++attr queryBackground ++attr queryHint ++attr queryPatterns ++attr radioButtonStyle ++attr ratingBarStyle ++attr ratingBarStyleIndicator ++attr ratingBarStyleSmall ++attr retryImage ++attr retryImageScaleType ++attr roundAsCircle ++attr roundBottomEnd ++attr roundBottomLeft ++attr roundBottomRight ++attr roundBottomStart ++attr roundTopEnd ++attr roundTopLeft ++attr roundTopRight ++attr roundTopStart ++attr roundWithOverlayColor ++attr roundedCornerRadius ++attr roundingBorderColor ++attr roundingBorderPadding ++attr roundingBorderWidth ++attr searchHintIcon ++attr searchIcon ++attr searchViewStyle ++attr seekBarStyle ++attr selectableItemBackground ++attr selectableItemBackgroundBorderless ++attr shortcutMatchRequired ++attr showAsAction ++attr showDividers ++attr showText ++attr showTitle ++attr singleChoiceItemLayout ++attr spinBars ++attr spinnerDropDownItemStyle ++attr spinnerStyle ++attr splitTrack ++attr srcCompat ++attr state_above_anchor ++attr subMenuArrow ++attr submitBackground ++attr subtitle ++attr subtitleTextAppearance ++attr subtitleTextColor ++attr subtitleTextStyle ++attr suggestionRowLayout ++attr swipeRefreshLayoutProgressSpinnerBackgroundColor ++attr switchMinWidth ++attr switchPadding ++attr switchStyle ++attr switchTextAppearance ++attr textAllCaps ++attr textAppearanceLargePopupMenu ++attr textAppearanceListItem ++attr textAppearanceListItemSecondary ++attr textAppearanceListItemSmall ++attr textAppearancePopupMenuHeader ++attr textAppearanceSearchResultSubtitle ++attr textAppearanceSearchResultTitle ++attr textAppearanceSmallPopupMenu ++attr textColorAlertDialogListItem ++attr textColorSearchUrl ++attr textLocale ++attr theme ++attr thickness ++attr thumbTextPadding ++attr thumbTint ++attr thumbTintMode ++attr tickMark ++attr tickMarkTint ++attr tickMarkTintMode ++attr tint ++attr tintMode ++attr title ++attr titleMargin ++attr titleMarginBottom ++attr titleMarginEnd ++attr titleMarginStart ++attr titleMarginTop ++attr titleMargins ++attr titleTextAppearance ++attr titleTextColor ++attr titleTextStyle ++attr toolbarNavigationButtonStyle ++attr toolbarStyle ++attr tooltipForegroundColor ++attr tooltipFrameBackground ++attr tooltipText ++attr track ++attr trackTint ++attr trackTintMode ++attr ttcIndex ++attr viewAspectRatio ++attr viewInflaterClass ++attr voiceIcon ++attr windowActionBar ++attr windowActionBarOverlay ++attr windowActionModeOverlay ++attr windowFixedHeightMajor ++attr windowFixedHeightMinor ++attr windowFixedWidthMajor ++attr windowFixedWidthMinor ++attr windowMinWidthMajor ++attr windowMinWidthMinor ++attr windowNoTitle ++bool abc_action_bar_embed_tabs ++bool abc_config_actionMenuItemAllCaps ++color abc_background_cache_hint_selector_material_dark ++color abc_background_cache_hint_selector_material_light ++color abc_btn_colored_borderless_text_material ++color abc_btn_colored_text_material ++color abc_color_highlight_material ++color abc_decor_view_status_guard ++color abc_decor_view_status_guard_light ++color abc_hint_foreground_material_dark ++color abc_hint_foreground_material_light ++color abc_primary_text_disable_only_material_dark ++color abc_primary_text_disable_only_material_light ++color abc_primary_text_material_dark ++color abc_primary_text_material_light ++color abc_search_url_text ++color abc_search_url_text_normal ++color abc_search_url_text_pressed ++color abc_search_url_text_selected ++color abc_secondary_text_material_dark ++color abc_secondary_text_material_light ++color abc_tint_btn_checkable ++color abc_tint_default ++color abc_tint_edittext ++color abc_tint_seek_thumb ++color abc_tint_spinner ++color abc_tint_switch_track ++color accent_material_dark ++color accent_material_light ++color androidx_core_ripple_material_light ++color androidx_core_secondary_text_default_material_light ++color background_floating_material_dark ++color background_floating_material_light ++color background_material_dark ++color background_material_light ++color bright_foreground_disabled_material_dark ++color bright_foreground_disabled_material_light ++color bright_foreground_inverse_material_dark ++color bright_foreground_inverse_material_light ++color bright_foreground_material_dark ++color bright_foreground_material_light ++color button_material_dark ++color button_material_light ++color call_notification_answer_color ++color call_notification_decline_color ++color catalyst_logbox_background ++color catalyst_redbox_background ++color dim_foreground_disabled_material_dark ++color dim_foreground_disabled_material_light ++color dim_foreground_material_dark ++color dim_foreground_material_light ++color error_color_material_dark ++color error_color_material_light ++color foreground_material_dark ++color foreground_material_light ++color highlighted_text_material_dark ++color highlighted_text_material_light ++color material_blue_grey_800 ++color material_blue_grey_900 ++color material_blue_grey_950 ++color material_deep_teal_200 ++color material_deep_teal_500 ++color material_grey_100 ++color material_grey_300 ++color material_grey_50 ++color material_grey_600 ++color material_grey_800 ++color material_grey_850 ++color material_grey_900 ++color notification_action_color_filter ++color notification_icon_bg_color ++color primary_dark_material_dark ++color primary_dark_material_light ++color primary_material_dark ++color primary_material_light ++color primary_text_default_material_dark ++color primary_text_default_material_light ++color primary_text_disabled_material_dark ++color primary_text_disabled_material_light ++color ripple_material_dark ++color ripple_material_light ++color secondary_text_default_material_dark ++color secondary_text_default_material_light ++color secondary_text_disabled_material_dark ++color secondary_text_disabled_material_light ++color switch_thumb_disabled_material_dark ++color switch_thumb_disabled_material_light ++color switch_thumb_material_dark ++color switch_thumb_material_light ++color switch_thumb_normal_material_dark ++color switch_thumb_normal_material_light ++color tooltip_background_dark ++color tooltip_background_light ++dimen abc_action_bar_content_inset_material ++dimen abc_action_bar_content_inset_with_nav ++dimen abc_action_bar_default_height_material ++dimen abc_action_bar_default_padding_end_material ++dimen abc_action_bar_default_padding_start_material ++dimen abc_action_bar_elevation_material ++dimen abc_action_bar_icon_vertical_padding_material ++dimen abc_action_bar_overflow_padding_end_material ++dimen abc_action_bar_overflow_padding_start_material ++dimen abc_action_bar_stacked_max_height ++dimen abc_action_bar_stacked_tab_max_width ++dimen abc_action_bar_subtitle_bottom_margin_material ++dimen abc_action_bar_subtitle_top_margin_material ++dimen abc_action_button_min_height_material ++dimen abc_action_button_min_width_material ++dimen abc_action_button_min_width_overflow_material ++dimen abc_alert_dialog_button_bar_height ++dimen abc_alert_dialog_button_dimen ++dimen abc_button_inset_horizontal_material ++dimen abc_button_inset_vertical_material ++dimen abc_button_padding_horizontal_material ++dimen abc_button_padding_vertical_material ++dimen abc_cascading_menus_min_smallest_width ++dimen abc_config_prefDialogWidth ++dimen abc_control_corner_material ++dimen abc_control_inset_material ++dimen abc_control_padding_material ++dimen abc_dialog_corner_radius_material ++dimen abc_dialog_fixed_height_major ++dimen abc_dialog_fixed_height_minor ++dimen abc_dialog_fixed_width_major ++dimen abc_dialog_fixed_width_minor ++dimen abc_dialog_list_padding_bottom_no_buttons ++dimen abc_dialog_list_padding_top_no_title ++dimen abc_dialog_min_width_major ++dimen abc_dialog_min_width_minor ++dimen abc_dialog_padding_material ++dimen abc_dialog_padding_top_material ++dimen abc_dialog_title_divider_material ++dimen abc_disabled_alpha_material_dark ++dimen abc_disabled_alpha_material_light ++dimen abc_dropdownitem_icon_width ++dimen abc_dropdownitem_text_padding_left ++dimen abc_dropdownitem_text_padding_right ++dimen abc_edit_text_inset_bottom_material ++dimen abc_edit_text_inset_horizontal_material ++dimen abc_edit_text_inset_top_material ++dimen abc_floating_window_z ++dimen abc_list_item_height_large_material ++dimen abc_list_item_height_material ++dimen abc_list_item_height_small_material ++dimen abc_list_item_padding_horizontal_material ++dimen abc_panel_menu_list_width ++dimen abc_progress_bar_height_material ++dimen abc_search_view_preferred_height ++dimen abc_search_view_preferred_width ++dimen abc_seekbar_track_background_height_material ++dimen abc_seekbar_track_progress_height_material ++dimen abc_select_dialog_padding_start_material ++dimen abc_star_big ++dimen abc_star_medium ++dimen abc_star_small ++dimen abc_switch_padding ++dimen abc_text_size_body_1_material ++dimen abc_text_size_body_2_material ++dimen abc_text_size_button_material ++dimen abc_text_size_caption_material ++dimen abc_text_size_display_1_material ++dimen abc_text_size_display_2_material ++dimen abc_text_size_display_3_material ++dimen abc_text_size_display_4_material ++dimen abc_text_size_headline_material ++dimen abc_text_size_large_material ++dimen abc_text_size_medium_material ++dimen abc_text_size_menu_header_material ++dimen abc_text_size_menu_material ++dimen abc_text_size_small_material ++dimen abc_text_size_subhead_material ++dimen abc_text_size_subtitle_material_toolbar ++dimen abc_text_size_title_material ++dimen abc_text_size_title_material_toolbar ++dimen autofill_inline_suggestion_icon_size ++dimen compat_button_inset_horizontal_material ++dimen compat_button_inset_vertical_material ++dimen compat_button_padding_horizontal_material ++dimen compat_button_padding_vertical_material ++dimen compat_control_corner_material ++dimen compat_notification_large_icon_max_height ++dimen compat_notification_large_icon_max_width ++dimen disabled_alpha_material_dark ++dimen disabled_alpha_material_light ++dimen highlight_alpha_material_colored ++dimen highlight_alpha_material_dark ++dimen highlight_alpha_material_light ++dimen hint_alpha_material_dark ++dimen hint_alpha_material_light ++dimen hint_pressed_alpha_material_dark ++dimen hint_pressed_alpha_material_light ++dimen notification_action_icon_size ++dimen notification_action_text_size ++dimen notification_big_circle_margin ++dimen notification_content_margin_start ++dimen notification_large_icon_height ++dimen notification_large_icon_width ++dimen notification_main_column_padding_top ++dimen notification_media_narrow_margin ++dimen notification_right_icon_size ++dimen notification_right_side_padding_top ++dimen notification_small_icon_background_padding ++dimen notification_small_icon_size_as_large ++dimen notification_subtext_size ++dimen notification_top_pad ++dimen notification_top_pad_large_text ++dimen tooltip_corner_radius ++dimen tooltip_horizontal_padding ++dimen tooltip_margin ++dimen tooltip_precise_anchor_extra_offset ++dimen tooltip_precise_anchor_threshold ++dimen tooltip_vertical_padding ++dimen tooltip_y_offset_non_touch ++dimen tooltip_y_offset_touch ++drawable abc_ab_share_pack_mtrl_alpha ++drawable abc_action_bar_item_background_material ++drawable abc_btn_borderless_material ++drawable abc_btn_check_material ++drawable abc_btn_check_material_anim ++drawable abc_btn_check_to_on_mtrl_000 ++drawable abc_btn_check_to_on_mtrl_015 ++drawable abc_btn_colored_material ++drawable abc_btn_default_mtrl_shape ++drawable abc_btn_radio_material ++drawable abc_btn_radio_material_anim ++drawable abc_btn_radio_to_on_mtrl_000 ++drawable abc_btn_radio_to_on_mtrl_015 ++drawable abc_btn_switch_to_on_mtrl_00001 ++drawable abc_btn_switch_to_on_mtrl_00012 ++drawable abc_cab_background_internal_bg ++drawable abc_cab_background_top_material ++drawable abc_cab_background_top_mtrl_alpha ++drawable abc_control_background_material ++drawable abc_dialog_material_background ++drawable abc_edit_text_material ++drawable abc_ic_ab_back_material ++drawable abc_ic_arrow_drop_right_black_24dp ++drawable abc_ic_clear_material ++drawable abc_ic_commit_search_api_mtrl_alpha ++drawable abc_ic_go_search_api_material ++drawable abc_ic_menu_copy_mtrl_am_alpha ++drawable abc_ic_menu_cut_mtrl_alpha ++drawable abc_ic_menu_overflow_material ++drawable abc_ic_menu_paste_mtrl_am_alpha ++drawable abc_ic_menu_selectall_mtrl_alpha ++drawable abc_ic_menu_share_mtrl_alpha ++drawable abc_ic_search_api_material ++drawable abc_ic_voice_search_api_material ++drawable abc_item_background_holo_dark ++drawable abc_item_background_holo_light ++drawable abc_list_divider_material ++drawable abc_list_divider_mtrl_alpha ++drawable abc_list_focused_holo ++drawable abc_list_longpressed_holo ++drawable abc_list_pressed_holo_dark ++drawable abc_list_pressed_holo_light ++drawable abc_list_selector_background_transition_holo_dark ++drawable abc_list_selector_background_transition_holo_light ++drawable abc_list_selector_disabled_holo_dark ++drawable abc_list_selector_disabled_holo_light ++drawable abc_list_selector_holo_dark ++drawable abc_list_selector_holo_light ++drawable abc_menu_hardkey_panel_mtrl_mult ++drawable abc_popup_background_mtrl_mult ++drawable abc_ratingbar_indicator_material ++drawable abc_ratingbar_material ++drawable abc_ratingbar_small_material ++drawable abc_scrubber_control_off_mtrl_alpha ++drawable abc_scrubber_control_to_pressed_mtrl_000 ++drawable abc_scrubber_control_to_pressed_mtrl_005 ++drawable abc_scrubber_primary_mtrl_alpha ++drawable abc_scrubber_track_mtrl_alpha ++drawable abc_seekbar_thumb_material ++drawable abc_seekbar_tick_mark_material ++drawable abc_seekbar_track_material ++drawable abc_spinner_mtrl_am_alpha ++drawable abc_spinner_textfield_background_material ++drawable abc_star_black_48dp ++drawable abc_star_half_black_48dp ++drawable abc_switch_thumb_material ++drawable abc_switch_track_mtrl_alpha ++drawable abc_tab_indicator_material ++drawable abc_tab_indicator_mtrl_alpha ++drawable abc_text_cursor_material ++drawable abc_text_select_handle_left_mtrl ++drawable abc_text_select_handle_middle_mtrl ++drawable abc_text_select_handle_right_mtrl ++drawable abc_textfield_activated_mtrl_alpha ++drawable abc_textfield_default_mtrl_alpha ++drawable abc_textfield_search_activated_mtrl_alpha ++drawable abc_textfield_search_default_mtrl_alpha ++drawable abc_textfield_search_material ++drawable abc_vector_test ++drawable autofill_inline_suggestion_chip_background ++drawable btn_checkbox_checked_mtrl ++drawable btn_checkbox_checked_to_unchecked_mtrl_animation ++drawable btn_checkbox_unchecked_mtrl ++drawable btn_checkbox_unchecked_to_checked_mtrl_animation ++drawable btn_radio_off_mtrl ++drawable btn_radio_off_to_on_mtrl_animation ++drawable btn_radio_on_mtrl ++drawable btn_radio_on_to_off_mtrl_animation ++drawable ic_call_answer ++drawable ic_call_answer_low ++drawable ic_call_answer_video ++drawable ic_call_answer_video_low ++drawable ic_call_decline ++drawable ic_call_decline_low ++drawable ic_resume ++drawable notification_action_background ++drawable notification_bg ++drawable notification_bg_low ++drawable notification_bg_low_normal ++drawable notification_bg_low_pressed ++drawable notification_bg_normal ++drawable notification_bg_normal_pressed ++drawable notification_icon_background ++drawable notification_oversize_large_icon_bg ++drawable notification_template_icon_bg ++drawable notification_template_icon_low_bg ++drawable notification_tile_bg ++drawable notify_panel_notification_icon_bg ++drawable paused_in_debugger_background ++drawable paused_in_debugger_dialog_background ++drawable redbox_top_border_background ++drawable ripple_effect ++drawable test_level_drawable ++drawable tooltip_frame_dark ++drawable tooltip_frame_light ++id accessibility_action_clickable_span ++id accessibility_actions ++id accessibility_collection ++id accessibility_collection_item ++id accessibility_custom_action_0 ++id accessibility_custom_action_1 ++id accessibility_custom_action_10 ++id accessibility_custom_action_11 ++id accessibility_custom_action_12 ++id accessibility_custom_action_13 ++id accessibility_custom_action_14 ++id accessibility_custom_action_15 ++id accessibility_custom_action_16 ++id accessibility_custom_action_17 ++id accessibility_custom_action_18 ++id accessibility_custom_action_19 ++id accessibility_custom_action_2 ++id accessibility_custom_action_20 ++id accessibility_custom_action_21 ++id accessibility_custom_action_22 ++id accessibility_custom_action_23 ++id accessibility_custom_action_24 ++id accessibility_custom_action_25 ++id accessibility_custom_action_26 ++id accessibility_custom_action_27 ++id accessibility_custom_action_28 ++id accessibility_custom_action_29 ++id accessibility_custom_action_3 ++id accessibility_custom_action_30 ++id accessibility_custom_action_31 ++id accessibility_custom_action_4 ++id accessibility_custom_action_5 ++id accessibility_custom_action_6 ++id accessibility_custom_action_7 ++id accessibility_custom_action_8 ++id accessibility_custom_action_9 ++id accessibility_hint ++id accessibility_label ++id accessibility_links ++id accessibility_order ++id accessibility_order_parent ++id accessibility_role ++id accessibility_state ++id accessibility_state_expanded ++id accessibility_value ++id action_bar ++id action_bar_activity_content ++id action_bar_container ++id action_bar_root ++id action_bar_spinner ++id action_bar_subtitle ++id action_bar_title ++id action_container ++id action_context_bar ++id action_divider ++id action_image ++id action_menu_divider ++id action_menu_presenter ++id action_mode_bar ++id action_mode_bar_stub ++id action_mode_close_button ++id action_text ++id actions ++id activity_chooser_view_content ++id add ++id alertTitle ++id alert_title ++id async ++id autofill_inline_suggestion_end_icon ++id autofill_inline_suggestion_start_icon ++id autofill_inline_suggestion_subtitle ++id autofill_inline_suggestion_title ++id automatic ++id blocking ++id button ++id buttonPanel ++id button_text ++id catalyst_redbox_title ++id center ++id centerCrop ++id centerInside ++id checkbox ++id checked ++id chronometer ++id content ++id contentPanel ++id custom ++id customPanel ++id decor_content_parent ++id default_activity_button ++id dialog_button ++id disabled ++id edit_query ++id edit_text_id ++id enabled ++id expand_activities_button ++id expanded_menu ++id filter ++id fitBottomStart ++id fitCenter ++id fitEnd ++id fitStart ++id fitXY ++id focusCrop ++id forever ++id fps_text ++id fragment_container_view_tag ++id group_divider ++id hardware ++id hide_ime_id ++id home ++id icon ++id icon_group ++id image ++id info ++id invalidate_transform ++id italic ++id labelled_by ++id line1 ++id line3 ++id listMode ++id list_item ++id lottie_layer_name ++id message ++id mix_blend_mode ++id multiply ++id none ++id normal ++id notification_background ++id notification_main_column ++id notification_main_column_container ++id off ++id on ++id original_focusability ++id parentPanel ++id pointer_events ++id progress_circular ++id progress_horizontal ++id radio ++id react_test_id ++id report_drawn ++id restart ++id reverse ++id right_icon ++id right_side ++id rn_frame_file ++id rn_frame_method ++id rn_redbox_dismiss_button ++id rn_redbox_line_separator ++id rn_redbox_loading_indicator ++id rn_redbox_reload_button ++id rn_redbox_report_button ++id rn_redbox_report_label ++id rn_redbox_stack ++id role ++id screen ++id scrollIndicatorDown ++id scrollIndicatorUp ++id scrollView ++id search_badge ++id search_bar ++id search_button ++id search_close_btn ++id search_edit_frame ++id search_go_btn ++id search_mag_icon ++id search_plate ++id search_src_text ++id search_voice_btn ++id select_dialog_listview ++id shortcut ++id software ++id spacer ++id special_effects_controller_view_tag ++id split_action_bar ++id src_atop ++id src_in ++id src_over ++id submenuarrow ++id submit_area ++id tabMode ++id tag_accessibility_actions ++id tag_accessibility_clickable_spans ++id tag_accessibility_heading ++id tag_accessibility_pane_title ++id tag_on_apply_window_listener ++id tag_on_receive_content_listener ++id tag_on_receive_content_mime_types ++id tag_screen_reader_focusable ++id tag_state_description ++id tag_transition_group ++id tag_unhandled_key_event_manager ++id tag_unhandled_key_listeners ++id tag_window_insets_animation_callback ++id text ++id text2 ++id textSpacerNoButtons ++id textSpacerNoTitle ++id time ++id title ++id titleDividerNoCustom ++id title_template ++id topPanel ++id transform ++id transform_origin ++id unchecked ++id uniform ++id up ++id use_hardware_layer ++id view_clipped ++id view_tag_instance_handle ++id view_tag_native_id ++id view_tree_lifecycle_owner ++id view_tree_on_back_pressed_dispatcher_owner ++id view_tree_saved_state_registry_owner ++id view_tree_view_model_store_owner ++id visible_removing_fragment_view_tag ++id wrap_content ++integer abc_config_activityDefaultDur ++integer abc_config_activityShortDur ++integer cancel_button_image_alpha ++integer config_tooltipAnimTime ++integer react_native_dev_server_port ++integer status_bar_notification_info_maxnum ++interpolator btn_checkbox_checked_mtrl_animation_interpolator_0 ++interpolator btn_checkbox_checked_mtrl_animation_interpolator_1 ++interpolator btn_checkbox_unchecked_mtrl_animation_interpolator_0 ++interpolator btn_checkbox_unchecked_mtrl_animation_interpolator_1 ++interpolator btn_radio_to_off_mtrl_animation_interpolator_0 ++interpolator btn_radio_to_on_mtrl_animation_interpolator_0 ++interpolator fast_out_slow_in ++layout abc_action_bar_title_item ++layout abc_action_bar_up_container ++layout abc_action_menu_item_layout ++layout abc_action_menu_layout ++layout abc_action_mode_bar ++layout abc_action_mode_close_item_material ++layout abc_activity_chooser_view ++layout abc_activity_chooser_view_list_item ++layout abc_alert_dialog_button_bar_material ++layout abc_alert_dialog_material ++layout abc_alert_dialog_title_material ++layout abc_cascading_menu_item_layout ++layout abc_dialog_title_material ++layout abc_expanded_menu_layout ++layout abc_list_menu_item_checkbox ++layout abc_list_menu_item_icon ++layout abc_list_menu_item_layout ++layout abc_list_menu_item_radio ++layout abc_popup_menu_header_item_layout ++layout abc_popup_menu_item_layout ++layout abc_screen_content_include ++layout abc_screen_simple ++layout abc_screen_simple_overlay_action_mode ++layout abc_screen_toolbar ++layout abc_search_dropdown_item_icons_2line ++layout abc_search_view ++layout abc_select_dialog_material ++layout abc_tooltip ++layout alert_title_layout ++layout autofill_inline_suggestion ++layout custom_dialog ++layout dev_loading_view ++layout fps_view ++layout ime_base_split_test_activity ++layout ime_secondary_split_test_activity ++layout notification_action ++layout notification_action_tombstone ++layout notification_template_custom_big ++layout notification_template_icon_group ++layout notification_template_part_chronometer ++layout notification_template_part_time ++layout paused_in_debugger_view ++layout redbox_item_frame ++layout redbox_item_title ++layout redbox_view ++layout select_dialog_item_material ++layout select_dialog_multichoice_material ++layout select_dialog_singlechoice_material ++layout support_simple_spinner_dropdown_item ++string abc_action_bar_home_description ++string abc_action_bar_up_description ++string abc_action_menu_overflow_description ++string abc_action_mode_done ++string abc_activity_chooser_view_see_all ++string abc_activitychooserview_choose_application ++string abc_capital_off ++string abc_capital_on ++string abc_menu_alt_shortcut_label ++string abc_menu_ctrl_shortcut_label ++string abc_menu_delete_shortcut_label ++string abc_menu_enter_shortcut_label ++string abc_menu_function_shortcut_label ++string abc_menu_meta_shortcut_label ++string abc_menu_shift_shortcut_label ++string abc_menu_space_shortcut_label ++string abc_menu_sym_shortcut_label ++string abc_prepend_shortcut_label ++string abc_search_hint ++string abc_searchview_description_clear ++string abc_searchview_description_query ++string abc_searchview_description_search ++string abc_searchview_description_submit ++string abc_searchview_description_voice ++string abc_shareactionprovider_share_with ++string abc_shareactionprovider_share_with_application ++string abc_toolbar_collapse_description ++string alert_description ++string call_notification_answer_action ++string call_notification_answer_video_action ++string call_notification_decline_action ++string call_notification_hang_up_action ++string call_notification_incoming_text ++string call_notification_ongoing_text ++string call_notification_screening_text ++string catalyst_change_bundle_location ++string catalyst_change_bundle_location_apply ++string catalyst_change_bundle_location_cancel ++string catalyst_change_bundle_location_input_hint ++string catalyst_change_bundle_location_input_label ++string catalyst_change_bundle_location_instructions ++string catalyst_copy_button ++string catalyst_debug_connecting ++string catalyst_debug_error ++string catalyst_debug_open ++string catalyst_debug_open_disabled ++string catalyst_dev_menu_header ++string catalyst_dev_menu_sub_header ++string catalyst_dismiss_button ++string catalyst_heap_capture ++string catalyst_hot_reloading ++string catalyst_hot_reloading_auto_disable ++string catalyst_hot_reloading_auto_enable ++string catalyst_hot_reloading_stop ++string catalyst_inspector_toggle ++string catalyst_loading_from_url ++string catalyst_open_debugger_error ++string catalyst_perf_monitor ++string catalyst_perf_monitor_stop ++string catalyst_performance_background ++string catalyst_performance_cdp ++string catalyst_performance_disable ++string catalyst_performance_disabled ++string catalyst_performance_enable ++string catalyst_reload ++string catalyst_reload_button ++string catalyst_reload_error ++string catalyst_report_button ++string catalyst_sample_profiler_toggle ++string catalyst_settings ++string catalyst_settings_title ++string combobox_description ++string header_description ++string image_description ++string imagebutton_description ++string link_description ++string menu_description ++string menubar_description ++string menuitem_description ++string progressbar_description ++string radiogroup_description ++string react_native_dev_server_ip ++string rn_tab_description ++string scrollbar_description ++string search_menu_title ++string spinbutton_description ++string state_busy_description ++string state_collapsed_description ++string state_expanded_description ++string state_mixed_description ++string state_off_description ++string state_on_description ++string state_unselected_description ++string status_bar_notification_info_overflow ++string summary_description ++string tablist_description ++string timer_description ++string toolbar_description ++style AlertDialog_AppCompat ++style AlertDialog_AppCompat_Light ++style Animation_AppCompat_Dialog ++style Animation_AppCompat_DropDownUp ++style Animation_AppCompat_Tooltip ++style Animation_Catalyst_LogBox ++style Animation_Catalyst_RedBox ++style Base_AlertDialog_AppCompat ++style Base_AlertDialog_AppCompat_Light ++style Base_Animation_AppCompat_Dialog ++style Base_Animation_AppCompat_DropDownUp ++style Base_Animation_AppCompat_Tooltip ++style Base_DialogWindowTitleBackground_AppCompat ++style Base_DialogWindowTitle_AppCompat ++style Base_TextAppearance_AppCompat ++style Base_TextAppearance_AppCompat_Body1 ++style Base_TextAppearance_AppCompat_Body2 ++style Base_TextAppearance_AppCompat_Button ++style Base_TextAppearance_AppCompat_Caption ++style Base_TextAppearance_AppCompat_Display1 ++style Base_TextAppearance_AppCompat_Display2 ++style Base_TextAppearance_AppCompat_Display3 ++style Base_TextAppearance_AppCompat_Display4 ++style Base_TextAppearance_AppCompat_Headline ++style Base_TextAppearance_AppCompat_Inverse ++style Base_TextAppearance_AppCompat_Large ++style Base_TextAppearance_AppCompat_Large_Inverse ++style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large ++style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small ++style Base_TextAppearance_AppCompat_Medium ++style Base_TextAppearance_AppCompat_Medium_Inverse ++style Base_TextAppearance_AppCompat_Menu ++style Base_TextAppearance_AppCompat_SearchResult ++style Base_TextAppearance_AppCompat_SearchResult_Subtitle ++style Base_TextAppearance_AppCompat_SearchResult_Title ++style Base_TextAppearance_AppCompat_Small ++style Base_TextAppearance_AppCompat_Small_Inverse ++style Base_TextAppearance_AppCompat_Subhead ++style Base_TextAppearance_AppCompat_Subhead_Inverse ++style Base_TextAppearance_AppCompat_Title ++style Base_TextAppearance_AppCompat_Title_Inverse ++style Base_TextAppearance_AppCompat_Tooltip ++style Base_TextAppearance_AppCompat_Widget_ActionBar_Menu ++style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle ++style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse ++style Base_TextAppearance_AppCompat_Widget_ActionBar_Title ++style Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse ++style Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle ++style Base_TextAppearance_AppCompat_Widget_ActionMode_Title ++style Base_TextAppearance_AppCompat_Widget_Button ++style Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored ++style Base_TextAppearance_AppCompat_Widget_Button_Colored ++style Base_TextAppearance_AppCompat_Widget_Button_Inverse ++style Base_TextAppearance_AppCompat_Widget_DropDownItem ++style Base_TextAppearance_AppCompat_Widget_PopupMenu_Header ++style Base_TextAppearance_AppCompat_Widget_PopupMenu_Large ++style Base_TextAppearance_AppCompat_Widget_PopupMenu_Small ++style Base_TextAppearance_AppCompat_Widget_Switch ++style Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem ++style Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item ++style Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle ++style Base_TextAppearance_Widget_AppCompat_Toolbar_Title ++style Base_ThemeOverlay_AppCompat ++style Base_ThemeOverlay_AppCompat_ActionBar ++style Base_ThemeOverlay_AppCompat_Dark ++style Base_ThemeOverlay_AppCompat_Dark_ActionBar ++style Base_ThemeOverlay_AppCompat_Dialog ++style Base_ThemeOverlay_AppCompat_Dialog_Alert ++style Base_ThemeOverlay_AppCompat_Light ++style Base_Theme_AppCompat ++style Base_Theme_AppCompat_CompactMenu ++style Base_Theme_AppCompat_Dialog ++style Base_Theme_AppCompat_DialogWhenLarge ++style Base_Theme_AppCompat_Dialog_Alert ++style Base_Theme_AppCompat_Dialog_FixedSize ++style Base_Theme_AppCompat_Dialog_MinWidth ++style Base_Theme_AppCompat_Light ++style Base_Theme_AppCompat_Light_DarkActionBar ++style Base_Theme_AppCompat_Light_Dialog ++style Base_Theme_AppCompat_Light_DialogWhenLarge ++style Base_Theme_AppCompat_Light_Dialog_Alert ++style Base_Theme_AppCompat_Light_Dialog_FixedSize ++style Base_Theme_AppCompat_Light_Dialog_MinWidth ++style Base_V21_ThemeOverlay_AppCompat_Dialog ++style Base_V21_Theme_AppCompat ++style Base_V21_Theme_AppCompat_Dialog ++style Base_V21_Theme_AppCompat_Light ++style Base_V21_Theme_AppCompat_Light_Dialog ++style Base_V22_Theme_AppCompat ++style Base_V22_Theme_AppCompat_Light ++style Base_V23_Theme_AppCompat ++style Base_V23_Theme_AppCompat_Light ++style Base_V26_Theme_AppCompat ++style Base_V26_Theme_AppCompat_Light ++style Base_V26_Widget_AppCompat_Toolbar ++style Base_V28_Theme_AppCompat ++style Base_V28_Theme_AppCompat_Light ++style Base_V7_ThemeOverlay_AppCompat_Dialog ++style Base_V7_Theme_AppCompat ++style Base_V7_Theme_AppCompat_Dialog ++style Base_V7_Theme_AppCompat_Light ++style Base_V7_Theme_AppCompat_Light_Dialog ++style Base_V7_Widget_AppCompat_AutoCompleteTextView ++style Base_V7_Widget_AppCompat_EditText ++style Base_V7_Widget_AppCompat_Toolbar ++style Base_Widget_AppCompat_ActionBar ++style Base_Widget_AppCompat_ActionBar_Solid ++style Base_Widget_AppCompat_ActionBar_TabBar ++style Base_Widget_AppCompat_ActionBar_TabText ++style Base_Widget_AppCompat_ActionBar_TabView ++style Base_Widget_AppCompat_ActionButton ++style Base_Widget_AppCompat_ActionButton_CloseMode ++style Base_Widget_AppCompat_ActionButton_Overflow ++style Base_Widget_AppCompat_ActionMode ++style Base_Widget_AppCompat_ActivityChooserView ++style Base_Widget_AppCompat_AutoCompleteTextView ++style Base_Widget_AppCompat_Button ++style Base_Widget_AppCompat_ButtonBar ++style Base_Widget_AppCompat_ButtonBar_AlertDialog ++style Base_Widget_AppCompat_Button_Borderless ++style Base_Widget_AppCompat_Button_Borderless_Colored ++style Base_Widget_AppCompat_Button_ButtonBar_AlertDialog ++style Base_Widget_AppCompat_Button_Colored ++style Base_Widget_AppCompat_Button_Small ++style Base_Widget_AppCompat_CompoundButton_CheckBox ++style Base_Widget_AppCompat_CompoundButton_RadioButton ++style Base_Widget_AppCompat_CompoundButton_Switch ++style Base_Widget_AppCompat_DrawerArrowToggle ++style Base_Widget_AppCompat_DrawerArrowToggle_Common ++style Base_Widget_AppCompat_DropDownItem_Spinner ++style Base_Widget_AppCompat_EditText ++style Base_Widget_AppCompat_ImageButton ++style Base_Widget_AppCompat_Light_ActionBar ++style Base_Widget_AppCompat_Light_ActionBar_Solid ++style Base_Widget_AppCompat_Light_ActionBar_TabBar ++style Base_Widget_AppCompat_Light_ActionBar_TabText ++style Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse ++style Base_Widget_AppCompat_Light_ActionBar_TabView ++style Base_Widget_AppCompat_Light_PopupMenu ++style Base_Widget_AppCompat_Light_PopupMenu_Overflow ++style Base_Widget_AppCompat_ListMenuView ++style Base_Widget_AppCompat_ListPopupWindow ++style Base_Widget_AppCompat_ListView ++style Base_Widget_AppCompat_ListView_DropDown ++style Base_Widget_AppCompat_ListView_Menu ++style Base_Widget_AppCompat_PopupMenu ++style Base_Widget_AppCompat_PopupMenu_Overflow ++style Base_Widget_AppCompat_PopupWindow ++style Base_Widget_AppCompat_ProgressBar ++style Base_Widget_AppCompat_ProgressBar_Horizontal ++style Base_Widget_AppCompat_RatingBar ++style Base_Widget_AppCompat_RatingBar_Indicator ++style Base_Widget_AppCompat_RatingBar_Small ++style Base_Widget_AppCompat_SearchView ++style Base_Widget_AppCompat_SearchView_ActionBar ++style Base_Widget_AppCompat_SeekBar ++style Base_Widget_AppCompat_SeekBar_Discrete ++style Base_Widget_AppCompat_Spinner ++style Base_Widget_AppCompat_Spinner_Underlined ++style Base_Widget_AppCompat_TextView ++style Base_Widget_AppCompat_TextView_SpinnerItem ++style Base_Widget_AppCompat_Toolbar ++style Base_Widget_AppCompat_Toolbar_Button_Navigation ++style CalendarDatePickerDialog ++style CalendarDatePickerStyle ++style DialogAnimationFade ++style DialogAnimationSlide ++style NoAnimationDialog ++style Platform_AppCompat ++style Platform_AppCompat_Light ++style Platform_ThemeOverlay_AppCompat ++style Platform_ThemeOverlay_AppCompat_Dark ++style Platform_ThemeOverlay_AppCompat_Light ++style Platform_V21_AppCompat ++style Platform_V21_AppCompat_Light ++style Platform_V25_AppCompat ++style Platform_V25_AppCompat_Light ++style Platform_Widget_AppCompat_Spinner ++style RtlOverlay_DialogWindowTitle_AppCompat ++style RtlOverlay_Widget_AppCompat_ActionBar_TitleItem ++style RtlOverlay_Widget_AppCompat_DialogTitle_Icon ++style RtlOverlay_Widget_AppCompat_PopupMenuItem ++style RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup ++style RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut ++style RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow ++style RtlOverlay_Widget_AppCompat_PopupMenuItem_Text ++style RtlOverlay_Widget_AppCompat_PopupMenuItem_Title ++style RtlOverlay_Widget_AppCompat_SearchView_MagIcon ++style RtlOverlay_Widget_AppCompat_Search_DropDown ++style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 ++style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 ++style RtlOverlay_Widget_AppCompat_Search_DropDown_Query ++style RtlOverlay_Widget_AppCompat_Search_DropDown_Text ++style RtlUnderlay_Widget_AppCompat_ActionButton ++style RtlUnderlay_Widget_AppCompat_ActionButton_Overflow ++style SpinnerDatePickerDialog ++style SpinnerDatePickerStyle ++style TextAppearance_AppCompat ++style TextAppearance_AppCompat_Body1 ++style TextAppearance_AppCompat_Body2 ++style TextAppearance_AppCompat_Button ++style TextAppearance_AppCompat_Caption ++style TextAppearance_AppCompat_Display1 ++style TextAppearance_AppCompat_Display2 ++style TextAppearance_AppCompat_Display3 ++style TextAppearance_AppCompat_Display4 ++style TextAppearance_AppCompat_Headline ++style TextAppearance_AppCompat_Inverse ++style TextAppearance_AppCompat_Large ++style TextAppearance_AppCompat_Large_Inverse ++style TextAppearance_AppCompat_Light_SearchResult_Subtitle ++style TextAppearance_AppCompat_Light_SearchResult_Title ++style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large ++style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small ++style TextAppearance_AppCompat_Medium ++style TextAppearance_AppCompat_Medium_Inverse ++style TextAppearance_AppCompat_Menu ++style TextAppearance_AppCompat_SearchResult_Subtitle ++style TextAppearance_AppCompat_SearchResult_Title ++style TextAppearance_AppCompat_Small ++style TextAppearance_AppCompat_Small_Inverse ++style TextAppearance_AppCompat_Subhead ++style TextAppearance_AppCompat_Subhead_Inverse ++style TextAppearance_AppCompat_Title ++style TextAppearance_AppCompat_Title_Inverse ++style TextAppearance_AppCompat_Tooltip ++style TextAppearance_AppCompat_Widget_ActionBar_Menu ++style TextAppearance_AppCompat_Widget_ActionBar_Subtitle ++style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse ++style TextAppearance_AppCompat_Widget_ActionBar_Title ++style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse ++style TextAppearance_AppCompat_Widget_ActionMode_Subtitle ++style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse ++style TextAppearance_AppCompat_Widget_ActionMode_Title ++style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse ++style TextAppearance_AppCompat_Widget_Button ++style TextAppearance_AppCompat_Widget_Button_Borderless_Colored ++style TextAppearance_AppCompat_Widget_Button_Colored ++style TextAppearance_AppCompat_Widget_Button_Inverse ++style TextAppearance_AppCompat_Widget_DropDownItem ++style TextAppearance_AppCompat_Widget_PopupMenu_Header ++style TextAppearance_AppCompat_Widget_PopupMenu_Large ++style TextAppearance_AppCompat_Widget_PopupMenu_Small ++style TextAppearance_AppCompat_Widget_Switch ++style TextAppearance_AppCompat_Widget_TextView_SpinnerItem ++style TextAppearance_Compat_Notification ++style TextAppearance_Compat_Notification_Info ++style TextAppearance_Compat_Notification_Line2 ++style TextAppearance_Compat_Notification_Time ++style TextAppearance_Compat_Notification_Title ++style TextAppearance_Widget_AppCompat_ExpandedMenu_Item ++style TextAppearance_Widget_AppCompat_Toolbar_Subtitle ++style TextAppearance_Widget_AppCompat_Toolbar_Title ++style Theme ++style ThemeOverlay_AppCompat ++style ThemeOverlay_AppCompat_ActionBar ++style ThemeOverlay_AppCompat_Dark ++style ThemeOverlay_AppCompat_Dark_ActionBar ++style ThemeOverlay_AppCompat_DayNight ++style ThemeOverlay_AppCompat_DayNight_ActionBar ++style ThemeOverlay_AppCompat_Dialog ++style ThemeOverlay_AppCompat_Dialog_Alert ++style ThemeOverlay_AppCompat_Light ++style Theme_AppCompat ++style Theme_AppCompat_CompactMenu ++style Theme_AppCompat_DayNight ++style Theme_AppCompat_DayNight_DarkActionBar ++style Theme_AppCompat_DayNight_Dialog ++style Theme_AppCompat_DayNight_DialogWhenLarge ++style Theme_AppCompat_DayNight_Dialog_Alert ++style Theme_AppCompat_DayNight_Dialog_MinWidth ++style Theme_AppCompat_DayNight_NoActionBar ++style Theme_AppCompat_Dialog ++style Theme_AppCompat_DialogWhenLarge ++style Theme_AppCompat_Dialog_Alert ++style Theme_AppCompat_Dialog_MinWidth ++style Theme_AppCompat_Empty ++style Theme_AppCompat_Light ++style Theme_AppCompat_Light_DarkActionBar ++style Theme_AppCompat_Light_Dialog ++style Theme_AppCompat_Light_DialogWhenLarge ++style Theme_AppCompat_Light_Dialog_Alert ++style Theme_AppCompat_Light_Dialog_MinWidth ++style Theme_AppCompat_Light_NoActionBar ++style Theme_AppCompat_NoActionBar ++style Theme_AutofillInlineSuggestion ++style Theme_Catalyst ++style Theme_Catalyst_LogBox ++style Theme_Catalyst_RedBox ++style Theme_FullScreenDialog ++style Theme_FullScreenDialogAnimatedFade ++style Theme_FullScreenDialogAnimatedSlide ++style Theme_ReactNative_AppCompat_Light ++style Theme_ReactNative_AppCompat_Light_NoActionBar_FullScreen ++style Theme_ReactNative_TextInput_DefaultBackground ++style Widget_AppCompat_ActionBar ++style Widget_AppCompat_ActionBar_Solid ++style Widget_AppCompat_ActionBar_TabBar ++style Widget_AppCompat_ActionBar_TabText ++style Widget_AppCompat_ActionBar_TabView ++style Widget_AppCompat_ActionButton ++style Widget_AppCompat_ActionButton_CloseMode ++style Widget_AppCompat_ActionButton_Overflow ++style Widget_AppCompat_ActionMode ++style Widget_AppCompat_ActivityChooserView ++style Widget_AppCompat_AutoCompleteTextView ++style Widget_AppCompat_Button ++style Widget_AppCompat_ButtonBar ++style Widget_AppCompat_ButtonBar_AlertDialog ++style Widget_AppCompat_Button_Borderless ++style Widget_AppCompat_Button_Borderless_Colored ++style Widget_AppCompat_Button_ButtonBar_AlertDialog ++style Widget_AppCompat_Button_Colored ++style Widget_AppCompat_Button_Small ++style Widget_AppCompat_CompoundButton_CheckBox ++style Widget_AppCompat_CompoundButton_RadioButton ++style Widget_AppCompat_CompoundButton_Switch ++style Widget_AppCompat_DrawerArrowToggle ++style Widget_AppCompat_DropDownItem_Spinner ++style Widget_AppCompat_EditText ++style Widget_AppCompat_ImageButton ++style Widget_AppCompat_Light_ActionBar ++style Widget_AppCompat_Light_ActionBar_Solid ++style Widget_AppCompat_Light_ActionBar_Solid_Inverse ++style Widget_AppCompat_Light_ActionBar_TabBar ++style Widget_AppCompat_Light_ActionBar_TabBar_Inverse ++style Widget_AppCompat_Light_ActionBar_TabText ++style Widget_AppCompat_Light_ActionBar_TabText_Inverse ++style Widget_AppCompat_Light_ActionBar_TabView ++style Widget_AppCompat_Light_ActionBar_TabView_Inverse ++style Widget_AppCompat_Light_ActionButton ++style Widget_AppCompat_Light_ActionButton_CloseMode ++style Widget_AppCompat_Light_ActionButton_Overflow ++style Widget_AppCompat_Light_ActionMode_Inverse ++style Widget_AppCompat_Light_ActivityChooserView ++style Widget_AppCompat_Light_AutoCompleteTextView ++style Widget_AppCompat_Light_DropDownItem_Spinner ++style Widget_AppCompat_Light_ListPopupWindow ++style Widget_AppCompat_Light_ListView_DropDown ++style Widget_AppCompat_Light_PopupMenu ++style Widget_AppCompat_Light_PopupMenu_Overflow ++style Widget_AppCompat_Light_SearchView ++style Widget_AppCompat_Light_Spinner_DropDown_ActionBar ++style Widget_AppCompat_ListMenuView ++style Widget_AppCompat_ListPopupWindow ++style Widget_AppCompat_ListView ++style Widget_AppCompat_ListView_DropDown ++style Widget_AppCompat_ListView_Menu ++style Widget_AppCompat_PopupMenu ++style Widget_AppCompat_PopupMenu_Overflow ++style Widget_AppCompat_PopupWindow ++style Widget_AppCompat_ProgressBar ++style Widget_AppCompat_ProgressBar_Horizontal ++style Widget_AppCompat_RatingBar ++style Widget_AppCompat_RatingBar_Indicator ++style Widget_AppCompat_RatingBar_Small ++style Widget_AppCompat_SearchView ++style Widget_AppCompat_SearchView_ActionBar ++style Widget_AppCompat_SeekBar ++style Widget_AppCompat_SeekBar_Discrete ++style Widget_AppCompat_Spinner ++style Widget_AppCompat_Spinner_DropDown ++style Widget_AppCompat_Spinner_DropDown_ActionBar ++style Widget_AppCompat_Spinner_Underlined ++style Widget_AppCompat_TextView ++style Widget_AppCompat_TextView_SpinnerItem ++style Widget_AppCompat_Toolbar ++style Widget_AppCompat_Toolbar_Button_Navigation ++style Widget_Autofill ++style Widget_Autofill_InlineSuggestionChip ++style Widget_Autofill_InlineSuggestionEndIconStyle ++style Widget_Autofill_InlineSuggestionStartIconStyle ++style Widget_Autofill_InlineSuggestionSubtitle ++style Widget_Autofill_InlineSuggestionTitle ++style Widget_Compat_NotificationActionContainer ++style Widget_Compat_NotificationActionText ++style redboxButton ++styleable ActionBar background backgroundSplit backgroundStacked contentInsetEnd contentInsetEndWithActions contentInsetLeft contentInsetRight contentInsetStart contentInsetStartWithNavigation customNavigationLayout displayOptions divider elevation height hideOnContentScroll homeAsUpIndicator homeLayout icon indeterminateProgressStyle itemPadding logo navigationMode popupTheme progressBarPadding progressBarStyle subtitle subtitleTextStyle title titleTextStyle ++styleable ActionBarLayout android_layout_gravity ++styleable ActionMenuItemView android_minWidth ++styleable ActionMenuView ++styleable ActionMode background backgroundSplit closeItemLayout height subtitleTextStyle titleTextStyle ++styleable ActivityChooserView expandActivityOverflowButtonDrawable initialActivityCount ++styleable AlertDialog android_layout buttonIconDimen buttonPanelSideLayout listItemLayout listLayout multiChoiceItemLayout showTitle singleChoiceItemLayout ++styleable AnimatedStateListDrawableCompat android_constantSize android_dither android_enterFadeDuration android_exitFadeDuration android_variablePadding android_visible ++styleable AnimatedStateListDrawableItem android_drawable android_id ++styleable AnimatedStateListDrawableTransition android_drawable android_fromId android_reversible android_toId ++styleable AppCompatEmojiHelper ++styleable AppCompatImageView android_src srcCompat tint tintMode ++styleable AppCompatSeekBar android_thumb tickMark tickMarkTint tickMarkTintMode ++styleable AppCompatTextHelper android_drawableBottom android_drawableEnd android_drawableLeft android_drawableRight android_drawableStart android_drawableTop android_textAppearance ++styleable AppCompatTextView android_textAppearance autoSizeMaxTextSize autoSizeMinTextSize autoSizePresetSizes autoSizeStepGranularity autoSizeTextType drawableBottomCompat drawableEndCompat drawableLeftCompat drawableRightCompat drawableStartCompat drawableTint drawableTintMode drawableTopCompat emojiCompatEnabled firstBaselineToTopHeight fontFamily fontVariationSettings lastBaselineToBottomHeight lineHeight textAllCaps textLocale ++styleable AppCompatTheme actionBarDivider actionBarItemBackground actionBarPopupTheme actionBarSize actionBarSplitStyle actionBarStyle actionBarTabBarStyle actionBarTabStyle actionBarTabTextStyle actionBarTheme actionBarWidgetTheme actionButtonStyle actionDropDownStyle actionMenuTextAppearance actionMenuTextColor actionModeBackground actionModeCloseButtonStyle actionModeCloseContentDescription actionModeCloseDrawable actionModeCopyDrawable actionModeCutDrawable actionModeFindDrawable actionModePasteDrawable actionModePopupWindowStyle actionModeSelectAllDrawable actionModeShareDrawable actionModeSplitBackground actionModeStyle actionModeTheme actionModeWebSearchDrawable actionOverflowButtonStyle actionOverflowMenuStyle activityChooserViewStyle alertDialogButtonGroupStyle alertDialogCenterButtons alertDialogStyle alertDialogTheme android_windowAnimationStyle android_windowIsFloating autoCompleteTextViewStyle borderlessButtonStyle buttonBarButtonStyle buttonBarNegativeButtonStyle buttonBarNeutralButtonStyle buttonBarPositiveButtonStyle buttonBarStyle buttonStyle buttonStyleSmall checkboxStyle checkedTextViewStyle colorAccent colorBackgroundFloating colorButtonNormal colorControlActivated colorControlHighlight colorControlNormal colorError colorPrimary colorPrimaryDark colorSwitchThumbNormal controlBackground dialogCornerRadius dialogPreferredPadding dialogTheme dividerHorizontal dividerVertical dropDownListViewStyle dropdownListPreferredItemHeight editTextBackground editTextColor editTextStyle homeAsUpIndicator imageButtonStyle listChoiceBackgroundIndicator listChoiceIndicatorMultipleAnimated listChoiceIndicatorSingleAnimated listDividerAlertDialog listMenuViewStyle listPopupWindowStyle listPreferredItemHeight listPreferredItemHeightLarge listPreferredItemHeightSmall listPreferredItemPaddingEnd listPreferredItemPaddingLeft listPreferredItemPaddingRight listPreferredItemPaddingStart panelBackground panelMenuListTheme panelMenuListWidth popupMenuStyle popupWindowStyle radioButtonStyle ratingBarStyle ratingBarStyleIndicator ratingBarStyleSmall searchViewStyle seekBarStyle selectableItemBackground selectableItemBackgroundBorderless spinnerDropDownItemStyle spinnerStyle switchStyle textAppearanceLargePopupMenu textAppearanceListItem textAppearanceListItemSecondary textAppearanceListItemSmall textAppearancePopupMenuHeader textAppearanceSearchResultSubtitle textAppearanceSearchResultTitle textAppearanceSmallPopupMenu textColorAlertDialogListItem textColorSearchUrl toolbarNavigationButtonStyle toolbarStyle tooltipForegroundColor tooltipFrameBackground viewInflaterClass windowActionBar windowActionBarOverlay windowActionModeOverlay windowFixedHeightMajor windowFixedHeightMinor windowFixedWidthMajor windowFixedWidthMinor windowMinWidthMajor windowMinWidthMinor windowNoTitle ++styleable Autofill_InlineSuggestion autofillInlineSuggestionChip autofillInlineSuggestionEndIconStyle autofillInlineSuggestionStartIconStyle autofillInlineSuggestionSubtitle autofillInlineSuggestionTitle isAutofillInlineSuggestionTheme ++styleable ButtonBarLayout allowStacking ++styleable Capability queryPatterns shortcutMatchRequired ++styleable CheckedTextView android_checkMark checkMarkCompat checkMarkTint checkMarkTintMode ++styleable ColorStateListItem alpha android_alpha android_color android_lStar lStar ++styleable CompoundButton android_button buttonCompat buttonTint buttonTintMode ++styleable DrawerArrowToggle arrowHeadLength arrowShaftLength barLength color drawableSize gapBetweenBars spinBars thickness ++styleable FontFamily fontProviderAuthority fontProviderCerts fontProviderFetchStrategy fontProviderFetchTimeout fontProviderPackage fontProviderQuery fontProviderSystemFontFamily ++styleable FontFamilyFont android_font android_fontStyle android_fontVariationSettings android_fontWeight android_ttcIndex font fontStyle fontVariationSettings fontWeight ttcIndex ++styleable Fragment android_id android_name android_tag ++styleable FragmentContainerView android_name android_tag ++styleable GenericDraweeHierarchy actualImageScaleType backgroundImage fadeDuration failureImage failureImageScaleType overlayImage placeholderImage placeholderImageScaleType pressedStateOverlayImage progressBarAutoRotateInterval progressBarImage progressBarImageScaleType retryImage retryImageScaleType roundAsCircle roundBottomEnd roundBottomLeft roundBottomRight roundBottomStart roundTopEnd roundTopLeft roundTopRight roundTopStart roundWithOverlayColor roundedCornerRadius roundingBorderColor roundingBorderPadding roundingBorderWidth viewAspectRatio ++styleable GradientColor android_centerColor android_centerX android_centerY android_endColor android_endX android_endY android_gradientRadius android_startColor android_startX android_startY android_tileMode android_type ++styleable GradientColorItem android_color android_offset ++styleable LinearLayoutCompat android_baselineAligned android_baselineAlignedChildIndex android_gravity android_orientation android_weightSum divider dividerPadding measureWithLargestChild showDividers ++styleable LinearLayoutCompat_Layout android_layout_gravity android_layout_height android_layout_weight android_layout_width ++styleable ListPopupWindow android_dropDownHorizontalOffset android_dropDownVerticalOffset ++styleable LottieAnimationView lottie_asyncUpdates lottie_autoPlay lottie_cacheComposition lottie_clipToCompositionBounds lottie_colorFilter lottie_defaultFontFileExtension lottie_enableMergePathsForKitKatAndAbove lottie_fallbackRes lottie_fileName lottie_ignoreDisabledSystemAnimations lottie_imageAssetsFolder lottie_loop lottie_progress lottie_rawRes lottie_renderMode lottie_repeatCount lottie_repeatMode lottie_speed lottie_url lottie_useCompositionFrameRate ++styleable MenuGroup android_checkableBehavior android_enabled android_id android_menuCategory android_orderInCategory android_visible ++styleable MenuItem actionLayout actionProviderClass actionViewClass alphabeticModifiers android_alphabeticShortcut android_checkable android_checked android_enabled android_icon android_id android_menuCategory android_numericShortcut android_onClick android_orderInCategory android_title android_titleCondensed android_visible contentDescription iconTint iconTintMode numericModifiers showAsAction tooltipText ++styleable MenuView android_headerBackground android_horizontalDivider android_itemBackground android_itemIconDisabledAlpha android_itemTextAppearance android_verticalDivider android_windowAnimationStyle preserveIconSpacing subMenuArrow ++styleable PopupWindow android_popupAnimationStyle android_popupBackground overlapAnchor ++styleable PopupWindowBackgroundState state_above_anchor ++styleable RecycleListView paddingBottomNoButtons paddingTopNoTitle ++styleable SearchView android_focusable android_imeOptions android_inputType android_maxWidth closeIcon commitIcon defaultQueryHint goIcon iconifiedByDefault layout queryBackground queryHint searchHintIcon searchIcon submitBackground suggestionRowLayout voiceIcon ++styleable SimpleDraweeView actualImageResource actualImageUri backgroundImage fadeDuration failureImage failureImageScaleType overlayImage placeholderImage placeholderImageScaleType pressedStateOverlayImage progressBarAutoRotateInterval progressBarImage progressBarImageScaleType retryImage retryImageScaleType roundAsCircle roundBottomEnd roundBottomLeft roundBottomRight roundBottomStart roundTopEnd roundTopLeft roundTopRight roundTopStart roundWithOverlayColor roundedCornerRadius roundingBorderColor roundingBorderPadding roundingBorderWidth viewAspectRatio ++styleable Spinner android_dropDownWidth android_entries android_popupBackground android_prompt popupTheme ++styleable StateListDrawable android_constantSize android_dither android_enterFadeDuration android_exitFadeDuration android_variablePadding android_visible ++styleable StateListDrawableItem android_drawable ++styleable SwipeRefreshLayout swipeRefreshLayoutProgressSpinnerBackgroundColor ++styleable SwitchCompat android_textOff android_textOn android_thumb showText splitTrack switchMinWidth switchPadding switchTextAppearance thumbTextPadding thumbTint thumbTintMode track trackTint trackTintMode ++styleable TextAppearance android_fontFamily android_shadowColor android_shadowDx android_shadowDy android_shadowRadius android_textColor android_textColorHint android_textColorLink android_textFontWeight android_textSize android_textStyle android_typeface fontFamily fontVariationSettings textAllCaps textLocale ++styleable Toolbar android_gravity android_minHeight buttonGravity collapseContentDescription collapseIcon contentInsetEnd contentInsetEndWithActions contentInsetLeft contentInsetRight contentInsetStart contentInsetStartWithNavigation logo logoDescription maxButtonHeight menu navigationContentDescription navigationIcon popupTheme subtitle subtitleTextAppearance subtitleTextColor title titleMargin titleMarginBottom titleMarginEnd titleMarginStart titleMarginTop titleMargins titleTextAppearance titleTextColor ++styleable View android_focusable android_theme paddingEnd paddingStart theme ++styleable ViewBackgroundHelper android_background backgroundTint backgroundTintMode ++styleable ViewStubCompat android_id android_inflatedId android_layout ++xml rn_dev_preferences +diff --git a/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt b/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt +new file mode 100644 +index 0000000..9c21325 +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt +@@ -0,0 +1,7 @@ ++/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt ++/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFinishEvent.kt ++/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewManagerImpl.kt ++/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/newarch/com/airbnb/android/react/lottie/LottieAnimationViewManager.kt ++/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottiePackage.kt ++/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt ++/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin b/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +new file mode 100644 +index 0000000..1eb66dc +Binary files /dev/null and b/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin differ +diff --git a/node_modules/lottie-react-native/android/build/outputs/logs/manifest-merger-debug-report.txt b/node_modules/lottie-react-native/android/build/outputs/logs/manifest-merger-debug-report.txt +new file mode 100644 +index 0000000..b849b1e +--- /dev/null ++++ b/node_modules/lottie-react-native/android/build/outputs/logs/manifest-merger-debug-report.txt +@@ -0,0 +1,17 @@ ++-- Merging decision tree log --- ++manifest ++ADDED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml:1:1-3:12 ++INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml:1:1-3:12 ++ package ++ ADDED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml:2:5-46 ++ INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml ++ xmlns:android ++ ADDED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml:1:11-69 ++uses-sdk ++INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml reason: use-sdk injection requested ++INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml ++INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml ++ android:targetSdkVersion ++ INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml ++ android:minSdkVersion ++ INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml +diff --git a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt +index e4bfb4a..f60d7e3 100644 +--- a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt ++++ b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt +@@ -1,5 +1,6 @@ + package com.airbnb.android.react.lottie + ++import android.graphics.Color + import android.graphics.ColorFilter + import android.graphics.Typeface + import android.net.Uri +@@ -18,7 +19,7 @@ import com.facebook.react.bridge.ReadableArray + import com.facebook.react.bridge.ReadableMap + import com.facebook.react.bridge.ReadableType + import com.facebook.react.views.text.ReactFontManager +-import com.facebook.react.views.text.TextAttributeProps.UNSET ++import com.facebook.react.common.ReactConstants.UNSET + import com.facebook.react.util.RNLog + import java.lang.ref.WeakReference + import java.util.regex.Pattern +@@ -102,8 +103,8 @@ class LottieAnimationViewPropertyManager(view: LottieAnimationView) { + textFilters?.let { + if (it.size() > 0) { + val textDelegate = TextDelegate(view) +- for (i in 0 until textFilters!!.size()) { +- val current = textFilters!!.getMap(i) ++ for (i in 0 until it.size()) { ++ val current = it.getMap(i) ?: continue + val searchText = current.getString("find") + val replacementText = current.getString("replace") + textDelegate.setText(searchText, replacementText) +@@ -213,7 +214,7 @@ class LottieAnimationViewPropertyManager(view: LottieAnimationView) { + colorFilters?.let { colorFilters -> + if (colorFilters.size() > 0) { + for (i in 0 until colorFilters.size()) { +- val current = colorFilters.getMap(i) ++ val current = colorFilters.getMap(i) ?: continue + parseColorFilter(current, view) + } + } +@@ -225,7 +226,7 @@ class LottieAnimationViewPropertyManager(view: LottieAnimationView) { + view: LottieAnimationView + ) { + val color: Int = if (colorFilter.getType("color") == ReadableType.Map) { +- ColorPropConverter.getColor(colorFilter.getMap("color"), view.context) ++ ColorPropConverter.getColor(colorFilter.getMap("color"), view.context) ?: Color.TRANSPARENT; + } else { + colorFilter.getInt("color") + } +diff --git a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt +index aa538d3..0185eaf 100644 +--- a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt ++++ b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt +@@ -21,6 +21,6 @@ constructor(surfaceId: Int, viewId: Int, private val error: Throwable) : + } + + companion object { +- const val EVENT_NAME = "topAnimationFailureEvent" ++ const val EVENT_NAME = "topAnimationFailure" + } + } +\ No newline at end of file +diff --git a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt +index f17cff9..4ebe3ba 100644 +--- a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt ++++ b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt +@@ -16,6 +16,6 @@ class OnAnimationLoadedEvent constructor(surfaceId: Int, viewId: Int) : + } + + companion object { +- const val EVENT_NAME = "topAnimationLoadedEvent" ++ const val EVENT_NAME = "topAnimationLoaded" + } + } +diff --git a/node_modules/lottie-react-native/ios/Fabric/LottieAnimationViewComponentView.mm b/node_modules/lottie-react-native/ios/Fabric/LottieAnimationViewComponentView.mm +index a4be628..d8f304e 100644 +--- a/node_modules/lottie-react-native/ios/Fabric/LottieAnimationViewComponentView.mm ++++ b/node_modules/lottie-react-native/ios/Fabric/LottieAnimationViewComponentView.mm +@@ -40,6 +40,11 @@ using namespace facebook::react; + + #pragma mark - RCTComponentViewProtocol + +++ (BOOL)shouldBeRecycled ++{ ++ return NO; ++} ++ + + (ComponentDescriptorProvider)componentDescriptorProvider + { + return concreteComponentDescriptorProvider(); diff --git a/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch b/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch index 04da19a0cbdeb..164dcb069fd24 100644 --- a/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch +++ b/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch @@ -7,7 +7,7 @@ index 7e86543..595acb9 100644 var scrollAwayPaddingTop: Int = 0, /** Get the Fabric state of last scroll position */ - val lastStateUpdateScroll: Point = Point(-1, -1), -+ val lastStateUpdateScroll: Point = Point(0, 0) ++ val lastStateUpdateScroll: Point = Point(0, 0), /** Get true if the previous animation was canceled */ var isCanceled: Boolean = false, /** Get true if previous animation was finished */ From 49310f3f8cb8f261483132ae6a52b00f267af2d0 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 19 Jan 2026 16:43:26 +0100 Subject: [PATCH 04/56] fix: clean-up lottie patch --- ...react-native+6.5.1+005+support-RN-82.patch | 4815 ----------------- ...react-native+6.5.1+005+support-RN-83.patch | 13 + 2 files changed, 13 insertions(+), 4815 deletions(-) delete mode 100644 patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-82.patch create mode 100644 patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-83.patch diff --git a/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-82.patch b/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-82.patch deleted file mode 100644 index c850b81e7d244..0000000000000 --- a/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-82.patch +++ /dev/null @@ -1,4815 +0,0 @@ -diff --git a/node_modules/lottie-react-native/android/build/generated/source/buildConfig/debug/com/airbnb/android/react/lottie/BuildConfig.java b/node_modules/lottie-react-native/android/build/generated/source/buildConfig/debug/com/airbnb/android/react/lottie/BuildConfig.java -new file mode 100644 -index 0000000..1bde21c ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/buildConfig/debug/com/airbnb/android/react/lottie/BuildConfig.java -@@ -0,0 +1,12 @@ -+/** -+ * Automatically generated file. DO NOT MODIFY -+ */ -+package com.airbnb.android.react.lottie; -+ -+public final class BuildConfig { -+ public static final boolean DEBUG = Boolean.parseBoolean("true"); -+ public static final String LIBRARY_PACKAGE_NAME = "com.airbnb.android.react.lottie"; -+ public static final String BUILD_TYPE = "debug"; -+ // Field from default config. -+ public static final boolean IS_NEW_ARCHITECTURE_ENABLED = true; -+} -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerDelegate.java b/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerDelegate.java -new file mode 100644 -index 0000000..179f47a ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerDelegate.java -@@ -0,0 +1,104 @@ -+/** -+* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+* -+* Do not edit this file as changes may cause incorrect behavior and will be lost -+* once the code is regenerated. -+* -+* @generated by codegen project: GeneratePropsJavaDelegate.js -+*/ -+ -+package com.facebook.react.viewmanagers; -+ -+import android.view.View; -+import androidx.annotation.Nullable; -+import com.facebook.react.bridge.ReadableArray; -+import com.facebook.react.bridge.ReadableMap; -+import com.facebook.react.uimanager.BaseViewManager; -+import com.facebook.react.uimanager.BaseViewManagerDelegate; -+import com.facebook.react.uimanager.LayoutShadowNode; -+ -+@SuppressWarnings("deprecation") -+public class LottieAnimationViewManagerDelegate & LottieAnimationViewManagerInterface> extends BaseViewManagerDelegate { -+ public LottieAnimationViewManagerDelegate(U viewManager) { -+ super(viewManager); -+ } -+ @Override -+ public void setProperty(T view, String propName, @Nullable Object value) { -+ switch (propName) { -+ case "resizeMode": -+ mViewManager.setResizeMode(view, value == null ? null : (String) value); -+ break; -+ case "renderMode": -+ mViewManager.setRenderMode(view, value == null ? null : (String) value); -+ break; -+ case "sourceName": -+ mViewManager.setSourceName(view, value == null ? null : (String) value); -+ break; -+ case "sourceJson": -+ mViewManager.setSourceJson(view, value == null ? null : (String) value); -+ break; -+ case "sourceURL": -+ mViewManager.setSourceURL(view, value == null ? null : (String) value); -+ break; -+ case "sourceDotLottieURI": -+ mViewManager.setSourceDotLottieURI(view, value == null ? null : (String) value); -+ break; -+ case "imageAssetsFolder": -+ mViewManager.setImageAssetsFolder(view, value == null ? null : (String) value); -+ break; -+ case "progress": -+ mViewManager.setProgress(view, value == null ? 0f : ((Double) value).floatValue()); -+ break; -+ case "speed": -+ mViewManager.setSpeed(view, value == null ? 0f : ((Double) value).doubleValue()); -+ break; -+ case "loop": -+ mViewManager.setLoop(view, value == null ? false : (boolean) value); -+ break; -+ case "autoPlay": -+ mViewManager.setAutoPlay(view, value == null ? false : (boolean) value); -+ break; -+ case "enableMergePathsAndroidForKitKatAndAbove": -+ mViewManager.setEnableMergePathsAndroidForKitKatAndAbove(view, value == null ? false : (boolean) value); -+ break; -+ case "hardwareAccelerationAndroid": -+ mViewManager.setHardwareAccelerationAndroid(view, value == null ? false : (boolean) value); -+ break; -+ case "cacheComposition": -+ mViewManager.setCacheComposition(view, value == null ? false : (boolean) value); -+ break; -+ case "colorFilters": -+ mViewManager.setColorFilters(view, (ReadableArray) value); -+ break; -+ case "dummy": -+ mViewManager.setDummy(view, (ReadableMap) value); -+ break; -+ case "textFiltersAndroid": -+ mViewManager.setTextFiltersAndroid(view, (ReadableArray) value); -+ break; -+ case "textFiltersIOS": -+ mViewManager.setTextFiltersIOS(view, (ReadableArray) value); -+ break; -+ default: -+ super.setProperty(view, propName, value); -+ } -+ } -+ -+ @Override -+ public void receiveCommand(T view, String commandName, ReadableArray args) { -+ switch (commandName) { -+ case "play": -+ mViewManager.play(view, args.getInt(0), args.getInt(1)); -+ break; -+ case "reset": -+ mViewManager.reset(view); -+ break; -+ case "pause": -+ mViewManager.pause(view); -+ break; -+ case "resume": -+ mViewManager.resume(view); -+ break; -+ } -+ } -+} -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerInterface.java b/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerInterface.java -new file mode 100644 -index 0000000..23b3f0d ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/LottieAnimationViewManagerInterface.java -@@ -0,0 +1,41 @@ -+/** -+* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+* -+* Do not edit this file as changes may cause incorrect behavior and will be lost -+* once the code is regenerated. -+* -+* @generated by codegen project: GeneratePropsJavaInterface.js -+*/ -+ -+package com.facebook.react.viewmanagers; -+ -+import android.view.View; -+import androidx.annotation.Nullable; -+import com.facebook.react.bridge.ReadableArray; -+import com.facebook.react.bridge.ReadableMap; -+import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; -+ -+public interface LottieAnimationViewManagerInterface extends ViewManagerWithGeneratedInterface { -+ void setResizeMode(T view, @Nullable String value); -+ void setRenderMode(T view, @Nullable String value); -+ void setSourceName(T view, @Nullable String value); -+ void setSourceJson(T view, @Nullable String value); -+ void setSourceURL(T view, @Nullable String value); -+ void setSourceDotLottieURI(T view, @Nullable String value); -+ void setImageAssetsFolder(T view, @Nullable String value); -+ void setProgress(T view, float value); -+ void setSpeed(T view, double value); -+ void setLoop(T view, boolean value); -+ void setAutoPlay(T view, boolean value); -+ void setEnableMergePathsAndroidForKitKatAndAbove(T view, boolean value); -+ void setHardwareAccelerationAndroid(T view, boolean value); -+ void setCacheComposition(T view, boolean value); -+ void setColorFilters(T view, @Nullable ReadableArray value); -+ void setDummy(T view, @Nullable ReadableMap value); -+ void setTextFiltersAndroid(T view, @Nullable ReadableArray value); -+ void setTextFiltersIOS(T view, @Nullable ReadableArray value); -+ void play(T view, int startFrame, int endFrame); -+ void reset(T view); -+ void pause(T view); -+ void resume(T view); -+} -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/CMakeLists.txt b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/CMakeLists.txt -new file mode 100644 -index 0000000..25ce90d ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/CMakeLists.txt -@@ -0,0 +1,28 @@ -+# Copyright (c) Meta Platforms, Inc. and affiliates. -+# -+# This source code is licensed under the MIT license found in the -+# LICENSE file in the root directory of this source tree. -+ -+cmake_minimum_required(VERSION 3.13) -+set(CMAKE_VERBOSE_MAKEFILE on) -+ -+file(GLOB react_codegen_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/lottiereactnative/*.cpp) -+ -+add_library( -+ react_codegen_lottiereactnative -+ OBJECT -+ ${react_codegen_SRCS} -+) -+ -+target_include_directories(react_codegen_lottiereactnative PUBLIC . react/renderer/components/lottiereactnative) -+ -+target_link_libraries( -+ react_codegen_lottiereactnative -+ fbjni -+ jsi -+ # We need to link different libraries based on whether we are building rncore or not, that's necessary -+ # because we want to break a circular dependency between react_codegen_rncore and reactnative -+ reactnative -+) -+ -+target_compile_reactnative_options(react_codegen_lottiereactnative PRIVATE) -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative-generated.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative-generated.cpp -new file mode 100644 -index 0000000..9f7d572 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative-generated.cpp -@@ -0,0 +1,22 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateModuleJniCpp.js -+ */ -+ -+#include "lottiereactnative.h" -+ -+namespace facebook::react { -+ -+ -+ -+std::shared_ptr lottiereactnative_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) { -+ -+ return nullptr; -+} -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative.h -new file mode 100644 -index 0000000..b85ab2f ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/lottiereactnative.h -@@ -0,0 +1,24 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateModuleJniH.js -+ */ -+ -+#pragma once -+ -+#include -+#include -+#include -+ -+namespace facebook::react { -+ -+ -+ -+JSI_EXPORT -+std::shared_ptr lottiereactnative_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms); -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.cpp -new file mode 100644 -index 0000000..2a98e57 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.cpp -@@ -0,0 +1,22 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateComponentDescriptorCpp.js -+ */ -+ -+#include -+#include -+#include -+ -+namespace facebook::react { -+ -+void lottiereactnative_registerComponentDescriptorsFromCodegen( -+ std::shared_ptr registry) { -+registry->add(concreteComponentDescriptorProvider()); -+} -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.h -new file mode 100644 -index 0000000..fcb8acc ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ComponentDescriptors.h -@@ -0,0 +1,24 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateComponentDescriptorH.js -+ */ -+ -+#pragma once -+ -+#include -+#include -+#include -+ -+namespace facebook::react { -+ -+using LottieAnimationViewComponentDescriptor = ConcreteComponentDescriptor; -+ -+void lottiereactnative_registerComponentDescriptorsFromCodegen( -+ std::shared_ptr registry); -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.cpp -new file mode 100644 -index 0000000..e8bcfa7 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.cpp -@@ -0,0 +1,42 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateEventEmitterCpp.js -+ */ -+ -+#include -+ -+ -+namespace facebook::react { -+ -+void LottieAnimationViewEventEmitter::onAnimationFinish(OnAnimationFinish event) const { -+ dispatchEvent("onAnimationFinish", [event=std::move(event)](jsi::Runtime &runtime) { -+ auto payload = jsi::Object(runtime); -+ payload.setProperty(runtime, "isCancelled", event.isCancelled); -+ return payload; -+ }); -+} -+ -+ -+void LottieAnimationViewEventEmitter::onAnimationFailure(OnAnimationFailure event) const { -+ dispatchEvent("onAnimationFailure", [event=std::move(event)](jsi::Runtime &runtime) { -+ auto payload = jsi::Object(runtime); -+ payload.setProperty(runtime, "error", event.error); -+ return payload; -+ }); -+} -+ -+ -+void LottieAnimationViewEventEmitter::onAnimationLoaded(OnAnimationLoaded event) const { -+ dispatchEvent("onAnimationLoaded", [](jsi::Runtime &runtime) { -+ auto payload = jsi::Object(runtime); -+ -+ return payload; -+ }); -+} -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.h -new file mode 100644 -index 0000000..3656651 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/EventEmitters.h -@@ -0,0 +1,37 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateEventEmitterH.js -+ */ -+#pragma once -+ -+#include -+ -+ -+namespace facebook::react { -+class LottieAnimationViewEventEmitter : public ViewEventEmitter { -+ public: -+ using ViewEventEmitter::ViewEventEmitter; -+ -+ struct OnAnimationFinish { -+ bool isCancelled; -+ }; -+ -+ struct OnAnimationFailure { -+ std::string error; -+ }; -+ -+ struct OnAnimationLoaded { -+ -+ }; -+ void onAnimationFinish(OnAnimationFinish value) const; -+ -+ void onAnimationFailure(OnAnimationFailure value) const; -+ -+ void onAnimationLoaded(OnAnimationLoaded value) const; -+}; -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.cpp -new file mode 100644 -index 0000000..9b53bbe ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.cpp -@@ -0,0 +1,132 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GeneratePropsCpp.js -+ */ -+ -+#include -+#include -+#include -+ -+namespace facebook::react { -+ -+LottieAnimationViewProps::LottieAnimationViewProps( -+ const PropsParserContext &context, -+ const LottieAnimationViewProps &sourceProps, -+ const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), -+ -+ resizeMode(convertRawProp(context, rawProps, "resizeMode", sourceProps.resizeMode, {})), -+ renderMode(convertRawProp(context, rawProps, "renderMode", sourceProps.renderMode, {})), -+ sourceName(convertRawProp(context, rawProps, "sourceName", sourceProps.sourceName, {})), -+ sourceJson(convertRawProp(context, rawProps, "sourceJson", sourceProps.sourceJson, {})), -+ sourceURL(convertRawProp(context, rawProps, "sourceURL", sourceProps.sourceURL, {})), -+ sourceDotLottieURI(convertRawProp(context, rawProps, "sourceDotLottieURI", sourceProps.sourceDotLottieURI, {})), -+ imageAssetsFolder(convertRawProp(context, rawProps, "imageAssetsFolder", sourceProps.imageAssetsFolder, {})), -+ progress(convertRawProp(context, rawProps, "progress", sourceProps.progress, {0.0})), -+ speed(convertRawProp(context, rawProps, "speed", sourceProps.speed, {0.0})), -+ loop(convertRawProp(context, rawProps, "loop", sourceProps.loop, {false})), -+ autoPlay(convertRawProp(context, rawProps, "autoPlay", sourceProps.autoPlay, {false})), -+ enableMergePathsAndroidForKitKatAndAbove(convertRawProp(context, rawProps, "enableMergePathsAndroidForKitKatAndAbove", sourceProps.enableMergePathsAndroidForKitKatAndAbove, {false})), -+ hardwareAccelerationAndroid(convertRawProp(context, rawProps, "hardwareAccelerationAndroid", sourceProps.hardwareAccelerationAndroid, {false})), -+ cacheComposition(convertRawProp(context, rawProps, "cacheComposition", sourceProps.cacheComposition, {false})), -+ colorFilters(convertRawProp(context, rawProps, "colorFilters", sourceProps.colorFilters, {})), -+ dummy(convertRawProp(context, rawProps, "dummy", sourceProps.dummy, {})), -+ textFiltersAndroid(convertRawProp(context, rawProps, "textFiltersAndroid", sourceProps.textFiltersAndroid, {})), -+ textFiltersIOS(convertRawProp(context, rawProps, "textFiltersIOS", sourceProps.textFiltersIOS, {})) {} -+ -+#ifdef RN_SERIALIZABLE_STATE -+ComponentName LottieAnimationViewProps::getDiffPropsImplementationTarget() const { -+ return "LottieAnimationView"; -+} -+ -+folly::dynamic LottieAnimationViewProps::getDiffProps( -+ const Props* prevProps) const { -+ static const auto defaultProps = LottieAnimationViewProps(); -+ const LottieAnimationViewProps* oldProps = prevProps == nullptr -+ ? &defaultProps -+ : static_cast(prevProps); -+ if (this == oldProps) { -+ return folly::dynamic::object(); -+ } -+ folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); -+ -+ if (resizeMode != oldProps->resizeMode) { -+ result["resizeMode"] = resizeMode; -+ } -+ -+ if (renderMode != oldProps->renderMode) { -+ result["renderMode"] = renderMode; -+ } -+ -+ if (sourceName != oldProps->sourceName) { -+ result["sourceName"] = sourceName; -+ } -+ -+ if (sourceJson != oldProps->sourceJson) { -+ result["sourceJson"] = sourceJson; -+ } -+ -+ if (sourceURL != oldProps->sourceURL) { -+ result["sourceURL"] = sourceURL; -+ } -+ -+ if (sourceDotLottieURI != oldProps->sourceDotLottieURI) { -+ result["sourceDotLottieURI"] = sourceDotLottieURI; -+ } -+ -+ if (imageAssetsFolder != oldProps->imageAssetsFolder) { -+ result["imageAssetsFolder"] = imageAssetsFolder; -+ } -+ -+ if ((progress != oldProps->progress) && !(std::isnan(progress) && std::isnan(oldProps->progress))) { -+ result["progress"] = progress; -+ } -+ -+ if ((speed != oldProps->speed) && !(std::isnan(speed) && std::isnan(oldProps->speed))) { -+ result["speed"] = speed; -+ } -+ -+ if (loop != oldProps->loop) { -+ result["loop"] = loop; -+ } -+ -+ if (autoPlay != oldProps->autoPlay) { -+ result["autoPlay"] = autoPlay; -+ } -+ -+ if (enableMergePathsAndroidForKitKatAndAbove != oldProps->enableMergePathsAndroidForKitKatAndAbove) { -+ result["enableMergePathsAndroidForKitKatAndAbove"] = enableMergePathsAndroidForKitKatAndAbove; -+ } -+ -+ if (hardwareAccelerationAndroid != oldProps->hardwareAccelerationAndroid) { -+ result["hardwareAccelerationAndroid"] = hardwareAccelerationAndroid; -+ } -+ -+ if (cacheComposition != oldProps->cacheComposition) { -+ result["cacheComposition"] = cacheComposition; -+ } -+ -+ if (colorFilters != oldProps->colorFilters) { -+ result["colorFilters"] = toDynamic(colorFilters); -+ } -+ -+ if (dummy != oldProps->dummy) { -+ result["dummy"] = toDynamic(dummy); -+ } -+ -+ if (textFiltersAndroid != oldProps->textFiltersAndroid) { -+ result["textFiltersAndroid"] = toDynamic(textFiltersAndroid); -+ } -+ -+ if (textFiltersIOS != oldProps->textFiltersIOS) { -+ result["textFiltersIOS"] = toDynamic(textFiltersIOS); -+ } -+ return result; -+} -+#endif -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.h -new file mode 100644 -index 0000000..e0fd752 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/Props.h -@@ -0,0 +1,239 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GeneratePropsH.js -+ */ -+#pragma once -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+namespace facebook::react { -+ -+struct LottieAnimationViewColorFiltersStruct { -+ std::string keypath{}; -+ SharedColor color{}; -+ -+ -+#ifdef RN_SERIALIZABLE_STATE -+ bool operator==(const LottieAnimationViewColorFiltersStruct&) const = default; -+ -+ folly::dynamic toDynamic() const { -+ folly::dynamic result = folly::dynamic::object(); -+ result["keypath"] = keypath; -+ result["color"] = ::facebook::react::toDynamic(color); -+ return result; -+ } -+#endif -+}; -+ -+static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, LottieAnimationViewColorFiltersStruct &result) { -+ auto map = (std::unordered_map)value; -+ -+ auto tmp_keypath = map.find("keypath"); -+ if (tmp_keypath != map.end()) { -+ fromRawValue(context, tmp_keypath->second, result.keypath); -+ } -+ auto tmp_color = map.find("color"); -+ if (tmp_color != map.end()) { -+ fromRawValue(context, tmp_color->second, result.color); -+ } -+} -+ -+static inline std::string toString(const LottieAnimationViewColorFiltersStruct &value) { -+ return "[Object LottieAnimationViewColorFiltersStruct]"; -+} -+ -+#ifdef RN_SERIALIZABLE_STATE -+static inline folly::dynamic toDynamic(const LottieAnimationViewColorFiltersStruct &value) { -+ return value.toDynamic(); -+} -+#endif -+ -+static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { -+ auto items = (std::vector)value; -+ for (const auto &item : items) { -+ LottieAnimationViewColorFiltersStruct newItem; -+ fromRawValue(context, item, newItem); -+ result.emplace_back(newItem); -+ } -+} -+ -+ -+struct LottieAnimationViewDummyStruct { -+ bool dummy{false}; -+ -+ -+#ifdef RN_SERIALIZABLE_STATE -+ bool operator==(const LottieAnimationViewDummyStruct&) const = default; -+ -+ folly::dynamic toDynamic() const { -+ folly::dynamic result = folly::dynamic::object(); -+ result["dummy"] = dummy; -+ return result; -+ } -+#endif -+}; -+ -+static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, LottieAnimationViewDummyStruct &result) { -+ auto map = (std::unordered_map)value; -+ -+ auto tmp_dummy = map.find("dummy"); -+ if (tmp_dummy != map.end()) { -+ fromRawValue(context, tmp_dummy->second, result.dummy); -+ } -+} -+ -+static inline std::string toString(const LottieAnimationViewDummyStruct &value) { -+ return "[Object LottieAnimationViewDummyStruct]"; -+} -+ -+#ifdef RN_SERIALIZABLE_STATE -+static inline folly::dynamic toDynamic(const LottieAnimationViewDummyStruct &value) { -+ return value.toDynamic(); -+} -+#endif -+ -+struct LottieAnimationViewTextFiltersAndroidStruct { -+ std::string find{}; -+ std::string replace{}; -+ -+ -+#ifdef RN_SERIALIZABLE_STATE -+ bool operator==(const LottieAnimationViewTextFiltersAndroidStruct&) const = default; -+ -+ folly::dynamic toDynamic() const { -+ folly::dynamic result = folly::dynamic::object(); -+ result["find"] = find; -+ result["replace"] = replace; -+ return result; -+ } -+#endif -+}; -+ -+static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, LottieAnimationViewTextFiltersAndroidStruct &result) { -+ auto map = (std::unordered_map)value; -+ -+ auto tmp_find = map.find("find"); -+ if (tmp_find != map.end()) { -+ fromRawValue(context, tmp_find->second, result.find); -+ } -+ auto tmp_replace = map.find("replace"); -+ if (tmp_replace != map.end()) { -+ fromRawValue(context, tmp_replace->second, result.replace); -+ } -+} -+ -+static inline std::string toString(const LottieAnimationViewTextFiltersAndroidStruct &value) { -+ return "[Object LottieAnimationViewTextFiltersAndroidStruct]"; -+} -+ -+#ifdef RN_SERIALIZABLE_STATE -+static inline folly::dynamic toDynamic(const LottieAnimationViewTextFiltersAndroidStruct &value) { -+ return value.toDynamic(); -+} -+#endif -+ -+static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { -+ auto items = (std::vector)value; -+ for (const auto &item : items) { -+ LottieAnimationViewTextFiltersAndroidStruct newItem; -+ fromRawValue(context, item, newItem); -+ result.emplace_back(newItem); -+ } -+} -+ -+ -+struct LottieAnimationViewTextFiltersIOSStruct { -+ std::string keypath{}; -+ std::string text{}; -+ -+ -+#ifdef RN_SERIALIZABLE_STATE -+ bool operator==(const LottieAnimationViewTextFiltersIOSStruct&) const = default; -+ -+ folly::dynamic toDynamic() const { -+ folly::dynamic result = folly::dynamic::object(); -+ result["keypath"] = keypath; -+ result["text"] = text; -+ return result; -+ } -+#endif -+}; -+ -+static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, LottieAnimationViewTextFiltersIOSStruct &result) { -+ auto map = (std::unordered_map)value; -+ -+ auto tmp_keypath = map.find("keypath"); -+ if (tmp_keypath != map.end()) { -+ fromRawValue(context, tmp_keypath->second, result.keypath); -+ } -+ auto tmp_text = map.find("text"); -+ if (tmp_text != map.end()) { -+ fromRawValue(context, tmp_text->second, result.text); -+ } -+} -+ -+static inline std::string toString(const LottieAnimationViewTextFiltersIOSStruct &value) { -+ return "[Object LottieAnimationViewTextFiltersIOSStruct]"; -+} -+ -+#ifdef RN_SERIALIZABLE_STATE -+static inline folly::dynamic toDynamic(const LottieAnimationViewTextFiltersIOSStruct &value) { -+ return value.toDynamic(); -+} -+#endif -+ -+static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { -+ auto items = (std::vector)value; -+ for (const auto &item : items) { -+ LottieAnimationViewTextFiltersIOSStruct newItem; -+ fromRawValue(context, item, newItem); -+ result.emplace_back(newItem); -+ } -+} -+ -+class LottieAnimationViewProps final : public ViewProps { -+ public: -+ LottieAnimationViewProps() = default; -+ LottieAnimationViewProps(const PropsParserContext& context, const LottieAnimationViewProps &sourceProps, const RawProps &rawProps); -+ -+#pragma mark - Props -+ -+ std::string resizeMode{}; -+ std::string renderMode{}; -+ std::string sourceName{}; -+ std::string sourceJson{}; -+ std::string sourceURL{}; -+ std::string sourceDotLottieURI{}; -+ std::string imageAssetsFolder{}; -+ Float progress{0.0}; -+ double speed{0.0}; -+ bool loop{false}; -+ bool autoPlay{false}; -+ bool enableMergePathsAndroidForKitKatAndAbove{false}; -+ bool hardwareAccelerationAndroid{false}; -+ bool cacheComposition{false}; -+ std::vector colorFilters{}; -+ LottieAnimationViewDummyStruct dummy{}; -+ std::vector textFiltersAndroid{}; -+ std::vector textFiltersIOS{}; -+ -+ #ifdef RN_SERIALIZABLE_STATE -+ ComponentName getDiffPropsImplementationTarget() const override; -+ -+ folly::dynamic getDiffProps(const Props* prevProps) const override; -+ #endif -+ -+ -+}; -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.cpp -new file mode 100644 -index 0000000..10f89ca ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.cpp -@@ -0,0 +1,17 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateShadowNodeCpp.js -+ */ -+ -+#include -+ -+namespace facebook::react { -+ -+extern const char LottieAnimationViewComponentName[] = "LottieAnimationView"; -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.h -new file mode 100644 -index 0000000..baa5c72 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/ShadowNodes.h -@@ -0,0 +1,32 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateShadowNodeH.js -+ */ -+ -+#pragma once -+ -+#include -+#include -+#include -+#include -+#include -+ -+namespace facebook::react { -+ -+JSI_EXPORT extern const char LottieAnimationViewComponentName[]; -+ -+/* -+ * `ShadowNode` for component. -+ */ -+using LottieAnimationViewShadowNode = ConcreteViewShadowNode< -+ LottieAnimationViewComponentName, -+ LottieAnimationViewProps, -+ LottieAnimationViewEventEmitter, -+ LottieAnimationViewState>; -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.cpp b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.cpp -new file mode 100644 -index 0000000..fe96380 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.cpp -@@ -0,0 +1,16 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateStateCpp.js -+ */ -+#include -+ -+namespace facebook::react { -+ -+ -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.h -new file mode 100644 -index 0000000..d536bf5 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/States.h -@@ -0,0 +1,20 @@ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateStateH.js -+ */ -+#pragma once -+ -+#include -+#ifdef RN_SERIALIZABLE_STATE -+#include -+#endif -+ -+namespace facebook::react { -+ -+using LottieAnimationViewState = StateData; -+ -+} // namespace facebook::react -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/lottiereactnativeJSI.h b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/lottiereactnativeJSI.h -new file mode 100644 -index 0000000..ec16260 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/jni/react/renderer/components/lottiereactnative/lottiereactnativeJSI.h -@@ -0,0 +1,19 @@ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateModuleH.js -+ */ -+ -+#pragma once -+ -+#include -+#include -+ -+namespace facebook::react { -+ -+ -+ -+} // namespace facebook::react -diff --git a/node_modules/lottie-react-native/android/build/generated/source/codegen/schema.json b/node_modules/lottie-react-native/android/build/generated/source/codegen/schema.json -new file mode 100644 -index 0000000..0848ad5 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/generated/source/codegen/schema.json -@@ -0,0 +1 @@ -+{"libraryName":"","modules":{"LottieAnimationView":{"type":"Component","components":{"LottieAnimationView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[{"name":"onAnimationFinish","optional":true,"bubblingType":"bubble","paperTopLevelNameDeprecated":"onAnimationFinish","typeAnnotation":{"type":"EventTypeAnnotation","argument":{"type":"ObjectTypeAnnotation","properties":[{"name":"isCancelled","optional":false,"typeAnnotation":{"type":"BooleanTypeAnnotation"}}]}}},{"name":"onAnimationFailure","optional":true,"bubblingType":"bubble","paperTopLevelNameDeprecated":"onAnimationFailure","typeAnnotation":{"type":"EventTypeAnnotation","argument":{"type":"ObjectTypeAnnotation","properties":[{"name":"error","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}}]}}},{"name":"onAnimationLoaded","optional":true,"bubblingType":"bubble","paperTopLevelNameDeprecated":"onAnimationLoaded","typeAnnotation":{"type":"EventTypeAnnotation","argument":{"type":"ObjectTypeAnnotation","properties":[]}}}],"props":[{"name":"resizeMode","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"renderMode","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"sourceName","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"sourceJson","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"sourceURL","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"sourceDotLottieURI","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"imageAssetsFolder","optional":true,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"progress","optional":true,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"speed","optional":true,"typeAnnotation":{"type":"DoubleTypeAnnotation","default":0}},{"name":"loop","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"autoPlay","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"enableMergePathsAndroidForKitKatAndAbove","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"hardwareAccelerationAndroid","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"cacheComposition","optional":true,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}},{"name":"colorFilters","optional":true,"typeAnnotation":{"type":"ArrayTypeAnnotation","elementType":{"type":"ObjectTypeAnnotation","properties":[{"name":"keypath","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}]}}},{"name":"dummy","optional":true,"typeAnnotation":{"type":"ObjectTypeAnnotation","properties":[{"name":"dummy","optional":false,"typeAnnotation":{"type":"BooleanTypeAnnotation","default":false}}]}},{"name":"textFiltersAndroid","optional":true,"typeAnnotation":{"type":"ArrayTypeAnnotation","elementType":{"type":"ObjectTypeAnnotation","properties":[{"name":"find","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"replace","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}}]}}},{"name":"textFiltersIOS","optional":true,"typeAnnotation":{"type":"ArrayTypeAnnotation","elementType":{"type":"ObjectTypeAnnotation","properties":[{"name":"keypath","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"text","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}}]}}}],"commands":[{"name":"play","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","params":[{"name":"startFrame","optional":false,"typeAnnotation":{"type":"Int32TypeAnnotation"}},{"name":"endFrame","optional":false,"typeAnnotation":{"type":"Int32TypeAnnotation"}}],"returnTypeAnnotation":{"type":"VoidTypeAnnotation"}}},{"name":"reset","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","params":[],"returnTypeAnnotation":{"type":"VoidTypeAnnotation"}}},{"name":"pause","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","params":[],"returnTypeAnnotation":{"type":"VoidTypeAnnotation"}}},{"name":"resume","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","params":[],"returnTypeAnnotation":{"type":"VoidTypeAnnotation"}}}]}}}}} -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml b/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml -new file mode 100644 -index 0000000..7ca7cec ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml -@@ -0,0 +1,7 @@ -+ -+ -+ -+ -+ -+ -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json b/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json -new file mode 100644 -index 0000000..a67528b ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json -@@ -0,0 +1,18 @@ -+{ -+ "version": 3, -+ "artifactType": { -+ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS", -+ "kind": "Directory" -+ }, -+ "applicationId": "com.airbnb.android.react.lottie", -+ "variantName": "debug", -+ "elements": [ -+ { -+ "type": "SINGLE", -+ "filters": [], -+ "attributes": [], -+ "outputFile": "AndroidManifest.xml" -+ } -+ ], -+ "elementType": "File" -+} -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties b/node_modules/lottie-react-native/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties -new file mode 100644 -index 0000000..1211b1e ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties -@@ -0,0 +1,6 @@ -+aarFormatVersion=1.0 -+aarMetadataVersion=1.0 -+minCompileSdk=1 -+minCompileSdkExtension=0 -+minAndroidGradlePluginVersion=1.0.0 -+coreLibraryDesugaringEnabled=false -diff --git a/node_modules/lottie-react-native/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json b/node_modules/lottie-react-native/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json -new file mode 100644 -index 0000000..9e26dfe ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json -@@ -0,0 +1 @@ -+{} -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar b/node_modules/lottie-react-native/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar -new file mode 100644 -index 0000000..f2397aa -Binary files /dev/null and b/node_modules/lottie-react-native/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar differ -diff --git a/node_modules/lottie-react-native/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt b/node_modules/lottie-react-native/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt -new file mode 100644 -index 0000000..df1c8c5 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt -@@ -0,0 +1,2050 @@ -+int anim abc_fade_in 0x0 -+int anim abc_fade_out 0x0 -+int anim abc_grow_fade_in_from_bottom 0x0 -+int anim abc_popup_enter 0x0 -+int anim abc_popup_exit 0x0 -+int anim abc_shrink_fade_out_from_bottom 0x0 -+int anim abc_slide_in_bottom 0x0 -+int anim abc_slide_in_top 0x0 -+int anim abc_slide_out_bottom 0x0 -+int anim abc_slide_out_top 0x0 -+int anim abc_tooltip_enter 0x0 -+int anim abc_tooltip_exit 0x0 -+int anim btn_checkbox_to_checked_box_inner_merged_animation 0x0 -+int anim btn_checkbox_to_checked_box_outer_merged_animation 0x0 -+int anim btn_checkbox_to_checked_icon_null_animation 0x0 -+int anim btn_checkbox_to_unchecked_box_inner_merged_animation 0x0 -+int anim btn_checkbox_to_unchecked_check_path_merged_animation 0x0 -+int anim btn_checkbox_to_unchecked_icon_null_animation 0x0 -+int anim btn_radio_to_off_mtrl_dot_group_animation 0x0 -+int anim btn_radio_to_off_mtrl_ring_outer_animation 0x0 -+int anim btn_radio_to_off_mtrl_ring_outer_path_animation 0x0 -+int anim btn_radio_to_on_mtrl_dot_group_animation 0x0 -+int anim btn_radio_to_on_mtrl_ring_outer_animation 0x0 -+int anim btn_radio_to_on_mtrl_ring_outer_path_animation 0x0 -+int anim catalyst_fade_in 0x0 -+int anim catalyst_fade_out 0x0 -+int anim catalyst_push_up_in 0x0 -+int anim catalyst_push_up_out 0x0 -+int anim catalyst_slide_down 0x0 -+int anim catalyst_slide_up 0x0 -+int anim fragment_fast_out_extra_slow_in 0x0 -+int animator fragment_close_enter 0x0 -+int animator fragment_close_exit 0x0 -+int animator fragment_fade_enter 0x0 -+int animator fragment_fade_exit 0x0 -+int animator fragment_open_enter 0x0 -+int animator fragment_open_exit 0x0 -+int attr actionBarDivider 0x0 -+int attr actionBarItemBackground 0x0 -+int attr actionBarPopupTheme 0x0 -+int attr actionBarSize 0x0 -+int attr actionBarSplitStyle 0x0 -+int attr actionBarStyle 0x0 -+int attr actionBarTabBarStyle 0x0 -+int attr actionBarTabStyle 0x0 -+int attr actionBarTabTextStyle 0x0 -+int attr actionBarTheme 0x0 -+int attr actionBarWidgetTheme 0x0 -+int attr actionButtonStyle 0x0 -+int attr actionDropDownStyle 0x0 -+int attr actionLayout 0x0 -+int attr actionMenuTextAppearance 0x0 -+int attr actionMenuTextColor 0x0 -+int attr actionModeBackground 0x0 -+int attr actionModeCloseButtonStyle 0x0 -+int attr actionModeCloseContentDescription 0x0 -+int attr actionModeCloseDrawable 0x0 -+int attr actionModeCopyDrawable 0x0 -+int attr actionModeCutDrawable 0x0 -+int attr actionModeFindDrawable 0x0 -+int attr actionModePasteDrawable 0x0 -+int attr actionModePopupWindowStyle 0x0 -+int attr actionModeSelectAllDrawable 0x0 -+int attr actionModeShareDrawable 0x0 -+int attr actionModeSplitBackground 0x0 -+int attr actionModeStyle 0x0 -+int attr actionModeTheme 0x0 -+int attr actionModeWebSearchDrawable 0x0 -+int attr actionOverflowButtonStyle 0x0 -+int attr actionOverflowMenuStyle 0x0 -+int attr actionProviderClass 0x0 -+int attr actionViewClass 0x0 -+int attr activityChooserViewStyle 0x0 -+int attr actualImageResource 0x0 -+int attr actualImageScaleType 0x0 -+int attr actualImageUri 0x0 -+int attr alertDialogButtonGroupStyle 0x0 -+int attr alertDialogCenterButtons 0x0 -+int attr alertDialogStyle 0x0 -+int attr alertDialogTheme 0x0 -+int attr allowStacking 0x0 -+int attr alpha 0x0 -+int attr alphabeticModifiers 0x0 -+int attr arrowHeadLength 0x0 -+int attr arrowShaftLength 0x0 -+int attr autoCompleteTextViewStyle 0x0 -+int attr autoSizeMaxTextSize 0x0 -+int attr autoSizeMinTextSize 0x0 -+int attr autoSizePresetSizes 0x0 -+int attr autoSizeStepGranularity 0x0 -+int attr autoSizeTextType 0x0 -+int attr autofillInlineSuggestionChip 0x0 -+int attr autofillInlineSuggestionEndIconStyle 0x0 -+int attr autofillInlineSuggestionStartIconStyle 0x0 -+int attr autofillInlineSuggestionSubtitle 0x0 -+int attr autofillInlineSuggestionTitle 0x0 -+int attr background 0x0 -+int attr backgroundImage 0x0 -+int attr backgroundSplit 0x0 -+int attr backgroundStacked 0x0 -+int attr backgroundTint 0x0 -+int attr backgroundTintMode 0x0 -+int attr barLength 0x0 -+int attr borderlessButtonStyle 0x0 -+int attr buttonBarButtonStyle 0x0 -+int attr buttonBarNegativeButtonStyle 0x0 -+int attr buttonBarNeutralButtonStyle 0x0 -+int attr buttonBarPositiveButtonStyle 0x0 -+int attr buttonBarStyle 0x0 -+int attr buttonCompat 0x0 -+int attr buttonGravity 0x0 -+int attr buttonIconDimen 0x0 -+int attr buttonPanelSideLayout 0x0 -+int attr buttonStyle 0x0 -+int attr buttonStyleSmall 0x0 -+int attr buttonTint 0x0 -+int attr buttonTintMode 0x0 -+int attr checkMarkCompat 0x0 -+int attr checkMarkTint 0x0 -+int attr checkMarkTintMode 0x0 -+int attr checkboxStyle 0x0 -+int attr checkedTextViewStyle 0x0 -+int attr closeIcon 0x0 -+int attr closeItemLayout 0x0 -+int attr collapseContentDescription 0x0 -+int attr collapseIcon 0x0 -+int attr color 0x0 -+int attr colorAccent 0x0 -+int attr colorBackgroundFloating 0x0 -+int attr colorButtonNormal 0x0 -+int attr colorControlActivated 0x0 -+int attr colorControlHighlight 0x0 -+int attr colorControlNormal 0x0 -+int attr colorError 0x0 -+int attr colorPrimary 0x0 -+int attr colorPrimaryDark 0x0 -+int attr colorSwitchThumbNormal 0x0 -+int attr commitIcon 0x0 -+int attr contentDescription 0x0 -+int attr contentInsetEnd 0x0 -+int attr contentInsetEndWithActions 0x0 -+int attr contentInsetLeft 0x0 -+int attr contentInsetRight 0x0 -+int attr contentInsetStart 0x0 -+int attr contentInsetStartWithNavigation 0x0 -+int attr controlBackground 0x0 -+int attr customNavigationLayout 0x0 -+int attr defaultQueryHint 0x0 -+int attr dialogCornerRadius 0x0 -+int attr dialogPreferredPadding 0x0 -+int attr dialogTheme 0x0 -+int attr displayOptions 0x0 -+int attr divider 0x0 -+int attr dividerHorizontal 0x0 -+int attr dividerPadding 0x0 -+int attr dividerVertical 0x0 -+int attr drawableBottomCompat 0x0 -+int attr drawableEndCompat 0x0 -+int attr drawableLeftCompat 0x0 -+int attr drawableRightCompat 0x0 -+int attr drawableSize 0x0 -+int attr drawableStartCompat 0x0 -+int attr drawableTint 0x0 -+int attr drawableTintMode 0x0 -+int attr drawableTopCompat 0x0 -+int attr drawerArrowStyle 0x0 -+int attr dropDownListViewStyle 0x0 -+int attr dropdownListPreferredItemHeight 0x0 -+int attr editTextBackground 0x0 -+int attr editTextColor 0x0 -+int attr editTextStyle 0x0 -+int attr elevation 0x0 -+int attr emojiCompatEnabled 0x0 -+int attr expandActivityOverflowButtonDrawable 0x0 -+int attr fadeDuration 0x0 -+int attr failureImage 0x0 -+int attr failureImageScaleType 0x0 -+int attr firstBaselineToTopHeight 0x0 -+int attr font 0x0 -+int attr fontFamily 0x0 -+int attr fontProviderAuthority 0x0 -+int attr fontProviderCerts 0x0 -+int attr fontProviderFetchStrategy 0x0 -+int attr fontProviderFetchTimeout 0x0 -+int attr fontProviderPackage 0x0 -+int attr fontProviderQuery 0x0 -+int attr fontProviderSystemFontFamily 0x0 -+int attr fontStyle 0x0 -+int attr fontVariationSettings 0x0 -+int attr fontWeight 0x0 -+int attr gapBetweenBars 0x0 -+int attr goIcon 0x0 -+int attr height 0x0 -+int attr hideOnContentScroll 0x0 -+int attr homeAsUpIndicator 0x0 -+int attr homeLayout 0x0 -+int attr icon 0x0 -+int attr iconTint 0x0 -+int attr iconTintMode 0x0 -+int attr iconifiedByDefault 0x0 -+int attr imageButtonStyle 0x0 -+int attr indeterminateProgressStyle 0x0 -+int attr initialActivityCount 0x0 -+int attr isAutofillInlineSuggestionTheme 0x0 -+int attr isLightTheme 0x0 -+int attr itemPadding 0x0 -+int attr lStar 0x0 -+int attr lastBaselineToBottomHeight 0x0 -+int attr layout 0x0 -+int attr lineHeight 0x0 -+int attr listChoiceBackgroundIndicator 0x0 -+int attr listChoiceIndicatorMultipleAnimated 0x0 -+int attr listChoiceIndicatorSingleAnimated 0x0 -+int attr listDividerAlertDialog 0x0 -+int attr listItemLayout 0x0 -+int attr listLayout 0x0 -+int attr listMenuViewStyle 0x0 -+int attr listPopupWindowStyle 0x0 -+int attr listPreferredItemHeight 0x0 -+int attr listPreferredItemHeightLarge 0x0 -+int attr listPreferredItemHeightSmall 0x0 -+int attr listPreferredItemPaddingEnd 0x0 -+int attr listPreferredItemPaddingLeft 0x0 -+int attr listPreferredItemPaddingRight 0x0 -+int attr listPreferredItemPaddingStart 0x0 -+int attr logo 0x0 -+int attr logoDescription 0x0 -+int attr lottieAnimationViewStyle 0x0 -+int attr lottie_asyncUpdates 0x0 -+int attr lottie_autoPlay 0x0 -+int attr lottie_cacheComposition 0x0 -+int attr lottie_clipToCompositionBounds 0x0 -+int attr lottie_colorFilter 0x0 -+int attr lottie_defaultFontFileExtension 0x0 -+int attr lottie_enableMergePathsForKitKatAndAbove 0x0 -+int attr lottie_fallbackRes 0x0 -+int attr lottie_fileName 0x0 -+int attr lottie_ignoreDisabledSystemAnimations 0x0 -+int attr lottie_imageAssetsFolder 0x0 -+int attr lottie_loop 0x0 -+int attr lottie_progress 0x0 -+int attr lottie_rawRes 0x0 -+int attr lottie_renderMode 0x0 -+int attr lottie_repeatCount 0x0 -+int attr lottie_repeatMode 0x0 -+int attr lottie_speed 0x0 -+int attr lottie_url 0x0 -+int attr lottie_useCompositionFrameRate 0x0 -+int attr maxButtonHeight 0x0 -+int attr measureWithLargestChild 0x0 -+int attr menu 0x0 -+int attr multiChoiceItemLayout 0x0 -+int attr navigationContentDescription 0x0 -+int attr navigationIcon 0x0 -+int attr navigationMode 0x0 -+int attr nestedScrollViewStyle 0x0 -+int attr numericModifiers 0x0 -+int attr overlapAnchor 0x0 -+int attr overlayImage 0x0 -+int attr paddingBottomNoButtons 0x0 -+int attr paddingEnd 0x0 -+int attr paddingStart 0x0 -+int attr paddingTopNoTitle 0x0 -+int attr panelBackground 0x0 -+int attr panelMenuListTheme 0x0 -+int attr panelMenuListWidth 0x0 -+int attr placeholderImage 0x0 -+int attr placeholderImageScaleType 0x0 -+int attr popupMenuStyle 0x0 -+int attr popupTheme 0x0 -+int attr popupWindowStyle 0x0 -+int attr preserveIconSpacing 0x0 -+int attr pressedStateOverlayImage 0x0 -+int attr progressBarAutoRotateInterval 0x0 -+int attr progressBarImage 0x0 -+int attr progressBarImageScaleType 0x0 -+int attr progressBarPadding 0x0 -+int attr progressBarStyle 0x0 -+int attr queryBackground 0x0 -+int attr queryHint 0x0 -+int attr queryPatterns 0x0 -+int attr radioButtonStyle 0x0 -+int attr ratingBarStyle 0x0 -+int attr ratingBarStyleIndicator 0x0 -+int attr ratingBarStyleSmall 0x0 -+int attr retryImage 0x0 -+int attr retryImageScaleType 0x0 -+int attr roundAsCircle 0x0 -+int attr roundBottomEnd 0x0 -+int attr roundBottomLeft 0x0 -+int attr roundBottomRight 0x0 -+int attr roundBottomStart 0x0 -+int attr roundTopEnd 0x0 -+int attr roundTopLeft 0x0 -+int attr roundTopRight 0x0 -+int attr roundTopStart 0x0 -+int attr roundWithOverlayColor 0x0 -+int attr roundedCornerRadius 0x0 -+int attr roundingBorderColor 0x0 -+int attr roundingBorderPadding 0x0 -+int attr roundingBorderWidth 0x0 -+int attr searchHintIcon 0x0 -+int attr searchIcon 0x0 -+int attr searchViewStyle 0x0 -+int attr seekBarStyle 0x0 -+int attr selectableItemBackground 0x0 -+int attr selectableItemBackgroundBorderless 0x0 -+int attr shortcutMatchRequired 0x0 -+int attr showAsAction 0x0 -+int attr showDividers 0x0 -+int attr showText 0x0 -+int attr showTitle 0x0 -+int attr singleChoiceItemLayout 0x0 -+int attr spinBars 0x0 -+int attr spinnerDropDownItemStyle 0x0 -+int attr spinnerStyle 0x0 -+int attr splitTrack 0x0 -+int attr srcCompat 0x0 -+int attr state_above_anchor 0x0 -+int attr subMenuArrow 0x0 -+int attr submitBackground 0x0 -+int attr subtitle 0x0 -+int attr subtitleTextAppearance 0x0 -+int attr subtitleTextColor 0x0 -+int attr subtitleTextStyle 0x0 -+int attr suggestionRowLayout 0x0 -+int attr swipeRefreshLayoutProgressSpinnerBackgroundColor 0x0 -+int attr switchMinWidth 0x0 -+int attr switchPadding 0x0 -+int attr switchStyle 0x0 -+int attr switchTextAppearance 0x0 -+int attr textAllCaps 0x0 -+int attr textAppearanceLargePopupMenu 0x0 -+int attr textAppearanceListItem 0x0 -+int attr textAppearanceListItemSecondary 0x0 -+int attr textAppearanceListItemSmall 0x0 -+int attr textAppearancePopupMenuHeader 0x0 -+int attr textAppearanceSearchResultSubtitle 0x0 -+int attr textAppearanceSearchResultTitle 0x0 -+int attr textAppearanceSmallPopupMenu 0x0 -+int attr textColorAlertDialogListItem 0x0 -+int attr textColorSearchUrl 0x0 -+int attr textLocale 0x0 -+int attr theme 0x0 -+int attr thickness 0x0 -+int attr thumbTextPadding 0x0 -+int attr thumbTint 0x0 -+int attr thumbTintMode 0x0 -+int attr tickMark 0x0 -+int attr tickMarkTint 0x0 -+int attr tickMarkTintMode 0x0 -+int attr tint 0x0 -+int attr tintMode 0x0 -+int attr title 0x0 -+int attr titleMargin 0x0 -+int attr titleMarginBottom 0x0 -+int attr titleMarginEnd 0x0 -+int attr titleMarginStart 0x0 -+int attr titleMarginTop 0x0 -+int attr titleMargins 0x0 -+int attr titleTextAppearance 0x0 -+int attr titleTextColor 0x0 -+int attr titleTextStyle 0x0 -+int attr toolbarNavigationButtonStyle 0x0 -+int attr toolbarStyle 0x0 -+int attr tooltipForegroundColor 0x0 -+int attr tooltipFrameBackground 0x0 -+int attr tooltipText 0x0 -+int attr track 0x0 -+int attr trackTint 0x0 -+int attr trackTintMode 0x0 -+int attr ttcIndex 0x0 -+int attr viewAspectRatio 0x0 -+int attr viewInflaterClass 0x0 -+int attr voiceIcon 0x0 -+int attr windowActionBar 0x0 -+int attr windowActionBarOverlay 0x0 -+int attr windowActionModeOverlay 0x0 -+int attr windowFixedHeightMajor 0x0 -+int attr windowFixedHeightMinor 0x0 -+int attr windowFixedWidthMajor 0x0 -+int attr windowFixedWidthMinor 0x0 -+int attr windowMinWidthMajor 0x0 -+int attr windowMinWidthMinor 0x0 -+int attr windowNoTitle 0x0 -+int bool abc_action_bar_embed_tabs 0x0 -+int bool abc_config_actionMenuItemAllCaps 0x0 -+int color abc_background_cache_hint_selector_material_dark 0x0 -+int color abc_background_cache_hint_selector_material_light 0x0 -+int color abc_btn_colored_borderless_text_material 0x0 -+int color abc_btn_colored_text_material 0x0 -+int color abc_color_highlight_material 0x0 -+int color abc_decor_view_status_guard 0x0 -+int color abc_decor_view_status_guard_light 0x0 -+int color abc_hint_foreground_material_dark 0x0 -+int color abc_hint_foreground_material_light 0x0 -+int color abc_primary_text_disable_only_material_dark 0x0 -+int color abc_primary_text_disable_only_material_light 0x0 -+int color abc_primary_text_material_dark 0x0 -+int color abc_primary_text_material_light 0x0 -+int color abc_search_url_text 0x0 -+int color abc_search_url_text_normal 0x0 -+int color abc_search_url_text_pressed 0x0 -+int color abc_search_url_text_selected 0x0 -+int color abc_secondary_text_material_dark 0x0 -+int color abc_secondary_text_material_light 0x0 -+int color abc_tint_btn_checkable 0x0 -+int color abc_tint_default 0x0 -+int color abc_tint_edittext 0x0 -+int color abc_tint_seek_thumb 0x0 -+int color abc_tint_spinner 0x0 -+int color abc_tint_switch_track 0x0 -+int color accent_material_dark 0x0 -+int color accent_material_light 0x0 -+int color androidx_core_ripple_material_light 0x0 -+int color androidx_core_secondary_text_default_material_light 0x0 -+int color background_floating_material_dark 0x0 -+int color background_floating_material_light 0x0 -+int color background_material_dark 0x0 -+int color background_material_light 0x0 -+int color bright_foreground_disabled_material_dark 0x0 -+int color bright_foreground_disabled_material_light 0x0 -+int color bright_foreground_inverse_material_dark 0x0 -+int color bright_foreground_inverse_material_light 0x0 -+int color bright_foreground_material_dark 0x0 -+int color bright_foreground_material_light 0x0 -+int color button_material_dark 0x0 -+int color button_material_light 0x0 -+int color call_notification_answer_color 0x0 -+int color call_notification_decline_color 0x0 -+int color catalyst_logbox_background 0x0 -+int color catalyst_redbox_background 0x0 -+int color dim_foreground_disabled_material_dark 0x0 -+int color dim_foreground_disabled_material_light 0x0 -+int color dim_foreground_material_dark 0x0 -+int color dim_foreground_material_light 0x0 -+int color error_color_material_dark 0x0 -+int color error_color_material_light 0x0 -+int color foreground_material_dark 0x0 -+int color foreground_material_light 0x0 -+int color highlighted_text_material_dark 0x0 -+int color highlighted_text_material_light 0x0 -+int color material_blue_grey_800 0x0 -+int color material_blue_grey_900 0x0 -+int color material_blue_grey_950 0x0 -+int color material_deep_teal_200 0x0 -+int color material_deep_teal_500 0x0 -+int color material_grey_100 0x0 -+int color material_grey_300 0x0 -+int color material_grey_50 0x0 -+int color material_grey_600 0x0 -+int color material_grey_800 0x0 -+int color material_grey_850 0x0 -+int color material_grey_900 0x0 -+int color notification_action_color_filter 0x0 -+int color notification_icon_bg_color 0x0 -+int color primary_dark_material_dark 0x0 -+int color primary_dark_material_light 0x0 -+int color primary_material_dark 0x0 -+int color primary_material_light 0x0 -+int color primary_text_default_material_dark 0x0 -+int color primary_text_default_material_light 0x0 -+int color primary_text_disabled_material_dark 0x0 -+int color primary_text_disabled_material_light 0x0 -+int color ripple_material_dark 0x0 -+int color ripple_material_light 0x0 -+int color secondary_text_default_material_dark 0x0 -+int color secondary_text_default_material_light 0x0 -+int color secondary_text_disabled_material_dark 0x0 -+int color secondary_text_disabled_material_light 0x0 -+int color switch_thumb_disabled_material_dark 0x0 -+int color switch_thumb_disabled_material_light 0x0 -+int color switch_thumb_material_dark 0x0 -+int color switch_thumb_material_light 0x0 -+int color switch_thumb_normal_material_dark 0x0 -+int color switch_thumb_normal_material_light 0x0 -+int color tooltip_background_dark 0x0 -+int color tooltip_background_light 0x0 -+int dimen abc_action_bar_content_inset_material 0x0 -+int dimen abc_action_bar_content_inset_with_nav 0x0 -+int dimen abc_action_bar_default_height_material 0x0 -+int dimen abc_action_bar_default_padding_end_material 0x0 -+int dimen abc_action_bar_default_padding_start_material 0x0 -+int dimen abc_action_bar_elevation_material 0x0 -+int dimen abc_action_bar_icon_vertical_padding_material 0x0 -+int dimen abc_action_bar_overflow_padding_end_material 0x0 -+int dimen abc_action_bar_overflow_padding_start_material 0x0 -+int dimen abc_action_bar_stacked_max_height 0x0 -+int dimen abc_action_bar_stacked_tab_max_width 0x0 -+int dimen abc_action_bar_subtitle_bottom_margin_material 0x0 -+int dimen abc_action_bar_subtitle_top_margin_material 0x0 -+int dimen abc_action_button_min_height_material 0x0 -+int dimen abc_action_button_min_width_material 0x0 -+int dimen abc_action_button_min_width_overflow_material 0x0 -+int dimen abc_alert_dialog_button_bar_height 0x0 -+int dimen abc_alert_dialog_button_dimen 0x0 -+int dimen abc_button_inset_horizontal_material 0x0 -+int dimen abc_button_inset_vertical_material 0x0 -+int dimen abc_button_padding_horizontal_material 0x0 -+int dimen abc_button_padding_vertical_material 0x0 -+int dimen abc_cascading_menus_min_smallest_width 0x0 -+int dimen abc_config_prefDialogWidth 0x0 -+int dimen abc_control_corner_material 0x0 -+int dimen abc_control_inset_material 0x0 -+int dimen abc_control_padding_material 0x0 -+int dimen abc_dialog_corner_radius_material 0x0 -+int dimen abc_dialog_fixed_height_major 0x0 -+int dimen abc_dialog_fixed_height_minor 0x0 -+int dimen abc_dialog_fixed_width_major 0x0 -+int dimen abc_dialog_fixed_width_minor 0x0 -+int dimen abc_dialog_list_padding_bottom_no_buttons 0x0 -+int dimen abc_dialog_list_padding_top_no_title 0x0 -+int dimen abc_dialog_min_width_major 0x0 -+int dimen abc_dialog_min_width_minor 0x0 -+int dimen abc_dialog_padding_material 0x0 -+int dimen abc_dialog_padding_top_material 0x0 -+int dimen abc_dialog_title_divider_material 0x0 -+int dimen abc_disabled_alpha_material_dark 0x0 -+int dimen abc_disabled_alpha_material_light 0x0 -+int dimen abc_dropdownitem_icon_width 0x0 -+int dimen abc_dropdownitem_text_padding_left 0x0 -+int dimen abc_dropdownitem_text_padding_right 0x0 -+int dimen abc_edit_text_inset_bottom_material 0x0 -+int dimen abc_edit_text_inset_horizontal_material 0x0 -+int dimen abc_edit_text_inset_top_material 0x0 -+int dimen abc_floating_window_z 0x0 -+int dimen abc_list_item_height_large_material 0x0 -+int dimen abc_list_item_height_material 0x0 -+int dimen abc_list_item_height_small_material 0x0 -+int dimen abc_list_item_padding_horizontal_material 0x0 -+int dimen abc_panel_menu_list_width 0x0 -+int dimen abc_progress_bar_height_material 0x0 -+int dimen abc_search_view_preferred_height 0x0 -+int dimen abc_search_view_preferred_width 0x0 -+int dimen abc_seekbar_track_background_height_material 0x0 -+int dimen abc_seekbar_track_progress_height_material 0x0 -+int dimen abc_select_dialog_padding_start_material 0x0 -+int dimen abc_star_big 0x0 -+int dimen abc_star_medium 0x0 -+int dimen abc_star_small 0x0 -+int dimen abc_switch_padding 0x0 -+int dimen abc_text_size_body_1_material 0x0 -+int dimen abc_text_size_body_2_material 0x0 -+int dimen abc_text_size_button_material 0x0 -+int dimen abc_text_size_caption_material 0x0 -+int dimen abc_text_size_display_1_material 0x0 -+int dimen abc_text_size_display_2_material 0x0 -+int dimen abc_text_size_display_3_material 0x0 -+int dimen abc_text_size_display_4_material 0x0 -+int dimen abc_text_size_headline_material 0x0 -+int dimen abc_text_size_large_material 0x0 -+int dimen abc_text_size_medium_material 0x0 -+int dimen abc_text_size_menu_header_material 0x0 -+int dimen abc_text_size_menu_material 0x0 -+int dimen abc_text_size_small_material 0x0 -+int dimen abc_text_size_subhead_material 0x0 -+int dimen abc_text_size_subtitle_material_toolbar 0x0 -+int dimen abc_text_size_title_material 0x0 -+int dimen abc_text_size_title_material_toolbar 0x0 -+int dimen autofill_inline_suggestion_icon_size 0x0 -+int dimen compat_button_inset_horizontal_material 0x0 -+int dimen compat_button_inset_vertical_material 0x0 -+int dimen compat_button_padding_horizontal_material 0x0 -+int dimen compat_button_padding_vertical_material 0x0 -+int dimen compat_control_corner_material 0x0 -+int dimen compat_notification_large_icon_max_height 0x0 -+int dimen compat_notification_large_icon_max_width 0x0 -+int dimen disabled_alpha_material_dark 0x0 -+int dimen disabled_alpha_material_light 0x0 -+int dimen highlight_alpha_material_colored 0x0 -+int dimen highlight_alpha_material_dark 0x0 -+int dimen highlight_alpha_material_light 0x0 -+int dimen hint_alpha_material_dark 0x0 -+int dimen hint_alpha_material_light 0x0 -+int dimen hint_pressed_alpha_material_dark 0x0 -+int dimen hint_pressed_alpha_material_light 0x0 -+int dimen notification_action_icon_size 0x0 -+int dimen notification_action_text_size 0x0 -+int dimen notification_big_circle_margin 0x0 -+int dimen notification_content_margin_start 0x0 -+int dimen notification_large_icon_height 0x0 -+int dimen notification_large_icon_width 0x0 -+int dimen notification_main_column_padding_top 0x0 -+int dimen notification_media_narrow_margin 0x0 -+int dimen notification_right_icon_size 0x0 -+int dimen notification_right_side_padding_top 0x0 -+int dimen notification_small_icon_background_padding 0x0 -+int dimen notification_small_icon_size_as_large 0x0 -+int dimen notification_subtext_size 0x0 -+int dimen notification_top_pad 0x0 -+int dimen notification_top_pad_large_text 0x0 -+int dimen tooltip_corner_radius 0x0 -+int dimen tooltip_horizontal_padding 0x0 -+int dimen tooltip_margin 0x0 -+int dimen tooltip_precise_anchor_extra_offset 0x0 -+int dimen tooltip_precise_anchor_threshold 0x0 -+int dimen tooltip_vertical_padding 0x0 -+int dimen tooltip_y_offset_non_touch 0x0 -+int dimen tooltip_y_offset_touch 0x0 -+int drawable abc_ab_share_pack_mtrl_alpha 0x0 -+int drawable abc_action_bar_item_background_material 0x0 -+int drawable abc_btn_borderless_material 0x0 -+int drawable abc_btn_check_material 0x0 -+int drawable abc_btn_check_material_anim 0x0 -+int drawable abc_btn_check_to_on_mtrl_000 0x0 -+int drawable abc_btn_check_to_on_mtrl_015 0x0 -+int drawable abc_btn_colored_material 0x0 -+int drawable abc_btn_default_mtrl_shape 0x0 -+int drawable abc_btn_radio_material 0x0 -+int drawable abc_btn_radio_material_anim 0x0 -+int drawable abc_btn_radio_to_on_mtrl_000 0x0 -+int drawable abc_btn_radio_to_on_mtrl_015 0x0 -+int drawable abc_btn_switch_to_on_mtrl_00001 0x0 -+int drawable abc_btn_switch_to_on_mtrl_00012 0x0 -+int drawable abc_cab_background_internal_bg 0x0 -+int drawable abc_cab_background_top_material 0x0 -+int drawable abc_cab_background_top_mtrl_alpha 0x0 -+int drawable abc_control_background_material 0x0 -+int drawable abc_dialog_material_background 0x0 -+int drawable abc_edit_text_material 0x0 -+int drawable abc_ic_ab_back_material 0x0 -+int drawable abc_ic_arrow_drop_right_black_24dp 0x0 -+int drawable abc_ic_clear_material 0x0 -+int drawable abc_ic_commit_search_api_mtrl_alpha 0x0 -+int drawable abc_ic_go_search_api_material 0x0 -+int drawable abc_ic_menu_copy_mtrl_am_alpha 0x0 -+int drawable abc_ic_menu_cut_mtrl_alpha 0x0 -+int drawable abc_ic_menu_overflow_material 0x0 -+int drawable abc_ic_menu_paste_mtrl_am_alpha 0x0 -+int drawable abc_ic_menu_selectall_mtrl_alpha 0x0 -+int drawable abc_ic_menu_share_mtrl_alpha 0x0 -+int drawable abc_ic_search_api_material 0x0 -+int drawable abc_ic_voice_search_api_material 0x0 -+int drawable abc_item_background_holo_dark 0x0 -+int drawable abc_item_background_holo_light 0x0 -+int drawable abc_list_divider_material 0x0 -+int drawable abc_list_divider_mtrl_alpha 0x0 -+int drawable abc_list_focused_holo 0x0 -+int drawable abc_list_longpressed_holo 0x0 -+int drawable abc_list_pressed_holo_dark 0x0 -+int drawable abc_list_pressed_holo_light 0x0 -+int drawable abc_list_selector_background_transition_holo_dark 0x0 -+int drawable abc_list_selector_background_transition_holo_light 0x0 -+int drawable abc_list_selector_disabled_holo_dark 0x0 -+int drawable abc_list_selector_disabled_holo_light 0x0 -+int drawable abc_list_selector_holo_dark 0x0 -+int drawable abc_list_selector_holo_light 0x0 -+int drawable abc_menu_hardkey_panel_mtrl_mult 0x0 -+int drawable abc_popup_background_mtrl_mult 0x0 -+int drawable abc_ratingbar_indicator_material 0x0 -+int drawable abc_ratingbar_material 0x0 -+int drawable abc_ratingbar_small_material 0x0 -+int drawable abc_scrubber_control_off_mtrl_alpha 0x0 -+int drawable abc_scrubber_control_to_pressed_mtrl_000 0x0 -+int drawable abc_scrubber_control_to_pressed_mtrl_005 0x0 -+int drawable abc_scrubber_primary_mtrl_alpha 0x0 -+int drawable abc_scrubber_track_mtrl_alpha 0x0 -+int drawable abc_seekbar_thumb_material 0x0 -+int drawable abc_seekbar_tick_mark_material 0x0 -+int drawable abc_seekbar_track_material 0x0 -+int drawable abc_spinner_mtrl_am_alpha 0x0 -+int drawable abc_spinner_textfield_background_material 0x0 -+int drawable abc_star_black_48dp 0x0 -+int drawable abc_star_half_black_48dp 0x0 -+int drawable abc_switch_thumb_material 0x0 -+int drawable abc_switch_track_mtrl_alpha 0x0 -+int drawable abc_tab_indicator_material 0x0 -+int drawable abc_tab_indicator_mtrl_alpha 0x0 -+int drawable abc_text_cursor_material 0x0 -+int drawable abc_text_select_handle_left_mtrl 0x0 -+int drawable abc_text_select_handle_middle_mtrl 0x0 -+int drawable abc_text_select_handle_right_mtrl 0x0 -+int drawable abc_textfield_activated_mtrl_alpha 0x0 -+int drawable abc_textfield_default_mtrl_alpha 0x0 -+int drawable abc_textfield_search_activated_mtrl_alpha 0x0 -+int drawable abc_textfield_search_default_mtrl_alpha 0x0 -+int drawable abc_textfield_search_material 0x0 -+int drawable abc_vector_test 0x0 -+int drawable autofill_inline_suggestion_chip_background 0x0 -+int drawable btn_checkbox_checked_mtrl 0x0 -+int drawable btn_checkbox_checked_to_unchecked_mtrl_animation 0x0 -+int drawable btn_checkbox_unchecked_mtrl 0x0 -+int drawable btn_checkbox_unchecked_to_checked_mtrl_animation 0x0 -+int drawable btn_radio_off_mtrl 0x0 -+int drawable btn_radio_off_to_on_mtrl_animation 0x0 -+int drawable btn_radio_on_mtrl 0x0 -+int drawable btn_radio_on_to_off_mtrl_animation 0x0 -+int drawable ic_call_answer 0x0 -+int drawable ic_call_answer_low 0x0 -+int drawable ic_call_answer_video 0x0 -+int drawable ic_call_answer_video_low 0x0 -+int drawable ic_call_decline 0x0 -+int drawable ic_call_decline_low 0x0 -+int drawable ic_resume 0x0 -+int drawable notification_action_background 0x0 -+int drawable notification_bg 0x0 -+int drawable notification_bg_low 0x0 -+int drawable notification_bg_low_normal 0x0 -+int drawable notification_bg_low_pressed 0x0 -+int drawable notification_bg_normal 0x0 -+int drawable notification_bg_normal_pressed 0x0 -+int drawable notification_icon_background 0x0 -+int drawable notification_oversize_large_icon_bg 0x0 -+int drawable notification_template_icon_bg 0x0 -+int drawable notification_template_icon_low_bg 0x0 -+int drawable notification_tile_bg 0x0 -+int drawable notify_panel_notification_icon_bg 0x0 -+int drawable paused_in_debugger_background 0x0 -+int drawable paused_in_debugger_dialog_background 0x0 -+int drawable redbox_top_border_background 0x0 -+int drawable ripple_effect 0x0 -+int drawable test_level_drawable 0x0 -+int drawable tooltip_frame_dark 0x0 -+int drawable tooltip_frame_light 0x0 -+int id accessibility_action_clickable_span 0x0 -+int id accessibility_actions 0x0 -+int id accessibility_collection 0x0 -+int id accessibility_collection_item 0x0 -+int id accessibility_custom_action_0 0x0 -+int id accessibility_custom_action_1 0x0 -+int id accessibility_custom_action_10 0x0 -+int id accessibility_custom_action_11 0x0 -+int id accessibility_custom_action_12 0x0 -+int id accessibility_custom_action_13 0x0 -+int id accessibility_custom_action_14 0x0 -+int id accessibility_custom_action_15 0x0 -+int id accessibility_custom_action_16 0x0 -+int id accessibility_custom_action_17 0x0 -+int id accessibility_custom_action_18 0x0 -+int id accessibility_custom_action_19 0x0 -+int id accessibility_custom_action_2 0x0 -+int id accessibility_custom_action_20 0x0 -+int id accessibility_custom_action_21 0x0 -+int id accessibility_custom_action_22 0x0 -+int id accessibility_custom_action_23 0x0 -+int id accessibility_custom_action_24 0x0 -+int id accessibility_custom_action_25 0x0 -+int id accessibility_custom_action_26 0x0 -+int id accessibility_custom_action_27 0x0 -+int id accessibility_custom_action_28 0x0 -+int id accessibility_custom_action_29 0x0 -+int id accessibility_custom_action_3 0x0 -+int id accessibility_custom_action_30 0x0 -+int id accessibility_custom_action_31 0x0 -+int id accessibility_custom_action_4 0x0 -+int id accessibility_custom_action_5 0x0 -+int id accessibility_custom_action_6 0x0 -+int id accessibility_custom_action_7 0x0 -+int id accessibility_custom_action_8 0x0 -+int id accessibility_custom_action_9 0x0 -+int id accessibility_hint 0x0 -+int id accessibility_label 0x0 -+int id accessibility_links 0x0 -+int id accessibility_order 0x0 -+int id accessibility_order_parent 0x0 -+int id accessibility_role 0x0 -+int id accessibility_state 0x0 -+int id accessibility_state_expanded 0x0 -+int id accessibility_value 0x0 -+int id action_bar 0x0 -+int id action_bar_activity_content 0x0 -+int id action_bar_container 0x0 -+int id action_bar_root 0x0 -+int id action_bar_spinner 0x0 -+int id action_bar_subtitle 0x0 -+int id action_bar_title 0x0 -+int id action_container 0x0 -+int id action_context_bar 0x0 -+int id action_divider 0x0 -+int id action_image 0x0 -+int id action_menu_divider 0x0 -+int id action_menu_presenter 0x0 -+int id action_mode_bar 0x0 -+int id action_mode_bar_stub 0x0 -+int id action_mode_close_button 0x0 -+int id action_text 0x0 -+int id actions 0x0 -+int id activity_chooser_view_content 0x0 -+int id add 0x0 -+int id alertTitle 0x0 -+int id alert_title 0x0 -+int id async 0x0 -+int id autofill_inline_suggestion_end_icon 0x0 -+int id autofill_inline_suggestion_start_icon 0x0 -+int id autofill_inline_suggestion_subtitle 0x0 -+int id autofill_inline_suggestion_title 0x0 -+int id automatic 0x0 -+int id blocking 0x0 -+int id button 0x0 -+int id buttonPanel 0x0 -+int id button_text 0x0 -+int id catalyst_redbox_title 0x0 -+int id center 0x0 -+int id centerCrop 0x0 -+int id centerInside 0x0 -+int id checkbox 0x0 -+int id checked 0x0 -+int id chronometer 0x0 -+int id content 0x0 -+int id contentPanel 0x0 -+int id custom 0x0 -+int id customPanel 0x0 -+int id decor_content_parent 0x0 -+int id default_activity_button 0x0 -+int id dialog_button 0x0 -+int id disabled 0x0 -+int id edit_query 0x0 -+int id edit_text_id 0x0 -+int id enabled 0x0 -+int id expand_activities_button 0x0 -+int id expanded_menu 0x0 -+int id filter 0x0 -+int id fitBottomStart 0x0 -+int id fitCenter 0x0 -+int id fitEnd 0x0 -+int id fitStart 0x0 -+int id fitXY 0x0 -+int id focusCrop 0x0 -+int id forever 0x0 -+int id fps_text 0x0 -+int id fragment_container_view_tag 0x0 -+int id group_divider 0x0 -+int id hardware 0x0 -+int id hide_ime_id 0x0 -+int id home 0x0 -+int id icon 0x0 -+int id icon_group 0x0 -+int id image 0x0 -+int id info 0x0 -+int id invalidate_transform 0x0 -+int id italic 0x0 -+int id labelled_by 0x0 -+int id line1 0x0 -+int id line3 0x0 -+int id listMode 0x0 -+int id list_item 0x0 -+int id lottie_layer_name 0x0 -+int id message 0x0 -+int id mix_blend_mode 0x0 -+int id multiply 0x0 -+int id none 0x0 -+int id normal 0x0 -+int id notification_background 0x0 -+int id notification_main_column 0x0 -+int id notification_main_column_container 0x0 -+int id off 0x0 -+int id on 0x0 -+int id original_focusability 0x0 -+int id parentPanel 0x0 -+int id pointer_events 0x0 -+int id progress_circular 0x0 -+int id progress_horizontal 0x0 -+int id radio 0x0 -+int id react_test_id 0x0 -+int id report_drawn 0x0 -+int id restart 0x0 -+int id reverse 0x0 -+int id right_icon 0x0 -+int id right_side 0x0 -+int id rn_frame_file 0x0 -+int id rn_frame_method 0x0 -+int id rn_redbox_dismiss_button 0x0 -+int id rn_redbox_line_separator 0x0 -+int id rn_redbox_loading_indicator 0x0 -+int id rn_redbox_reload_button 0x0 -+int id rn_redbox_report_button 0x0 -+int id rn_redbox_report_label 0x0 -+int id rn_redbox_stack 0x0 -+int id role 0x0 -+int id screen 0x0 -+int id scrollIndicatorDown 0x0 -+int id scrollIndicatorUp 0x0 -+int id scrollView 0x0 -+int id search_badge 0x0 -+int id search_bar 0x0 -+int id search_button 0x0 -+int id search_close_btn 0x0 -+int id search_edit_frame 0x0 -+int id search_go_btn 0x0 -+int id search_mag_icon 0x0 -+int id search_plate 0x0 -+int id search_src_text 0x0 -+int id search_voice_btn 0x0 -+int id select_dialog_listview 0x0 -+int id shortcut 0x0 -+int id software 0x0 -+int id spacer 0x0 -+int id special_effects_controller_view_tag 0x0 -+int id split_action_bar 0x0 -+int id src_atop 0x0 -+int id src_in 0x0 -+int id src_over 0x0 -+int id submenuarrow 0x0 -+int id submit_area 0x0 -+int id tabMode 0x0 -+int id tag_accessibility_actions 0x0 -+int id tag_accessibility_clickable_spans 0x0 -+int id tag_accessibility_heading 0x0 -+int id tag_accessibility_pane_title 0x0 -+int id tag_on_apply_window_listener 0x0 -+int id tag_on_receive_content_listener 0x0 -+int id tag_on_receive_content_mime_types 0x0 -+int id tag_screen_reader_focusable 0x0 -+int id tag_state_description 0x0 -+int id tag_transition_group 0x0 -+int id tag_unhandled_key_event_manager 0x0 -+int id tag_unhandled_key_listeners 0x0 -+int id tag_window_insets_animation_callback 0x0 -+int id text 0x0 -+int id text2 0x0 -+int id textSpacerNoButtons 0x0 -+int id textSpacerNoTitle 0x0 -+int id time 0x0 -+int id title 0x0 -+int id titleDividerNoCustom 0x0 -+int id title_template 0x0 -+int id topPanel 0x0 -+int id transform 0x0 -+int id transform_origin 0x0 -+int id unchecked 0x0 -+int id uniform 0x0 -+int id up 0x0 -+int id use_hardware_layer 0x0 -+int id view_clipped 0x0 -+int id view_tag_instance_handle 0x0 -+int id view_tag_native_id 0x0 -+int id view_tree_lifecycle_owner 0x0 -+int id view_tree_on_back_pressed_dispatcher_owner 0x0 -+int id view_tree_saved_state_registry_owner 0x0 -+int id view_tree_view_model_store_owner 0x0 -+int id visible_removing_fragment_view_tag 0x0 -+int id wrap_content 0x0 -+int integer abc_config_activityDefaultDur 0x0 -+int integer abc_config_activityShortDur 0x0 -+int integer cancel_button_image_alpha 0x0 -+int integer config_tooltipAnimTime 0x0 -+int integer react_native_dev_server_port 0x0 -+int integer status_bar_notification_info_maxnum 0x0 -+int interpolator btn_checkbox_checked_mtrl_animation_interpolator_0 0x0 -+int interpolator btn_checkbox_checked_mtrl_animation_interpolator_1 0x0 -+int interpolator btn_checkbox_unchecked_mtrl_animation_interpolator_0 0x0 -+int interpolator btn_checkbox_unchecked_mtrl_animation_interpolator_1 0x0 -+int interpolator btn_radio_to_off_mtrl_animation_interpolator_0 0x0 -+int interpolator btn_radio_to_on_mtrl_animation_interpolator_0 0x0 -+int interpolator fast_out_slow_in 0x0 -+int layout abc_action_bar_title_item 0x0 -+int layout abc_action_bar_up_container 0x0 -+int layout abc_action_menu_item_layout 0x0 -+int layout abc_action_menu_layout 0x0 -+int layout abc_action_mode_bar 0x0 -+int layout abc_action_mode_close_item_material 0x0 -+int layout abc_activity_chooser_view 0x0 -+int layout abc_activity_chooser_view_list_item 0x0 -+int layout abc_alert_dialog_button_bar_material 0x0 -+int layout abc_alert_dialog_material 0x0 -+int layout abc_alert_dialog_title_material 0x0 -+int layout abc_cascading_menu_item_layout 0x0 -+int layout abc_dialog_title_material 0x0 -+int layout abc_expanded_menu_layout 0x0 -+int layout abc_list_menu_item_checkbox 0x0 -+int layout abc_list_menu_item_icon 0x0 -+int layout abc_list_menu_item_layout 0x0 -+int layout abc_list_menu_item_radio 0x0 -+int layout abc_popup_menu_header_item_layout 0x0 -+int layout abc_popup_menu_item_layout 0x0 -+int layout abc_screen_content_include 0x0 -+int layout abc_screen_simple 0x0 -+int layout abc_screen_simple_overlay_action_mode 0x0 -+int layout abc_screen_toolbar 0x0 -+int layout abc_search_dropdown_item_icons_2line 0x0 -+int layout abc_search_view 0x0 -+int layout abc_select_dialog_material 0x0 -+int layout abc_tooltip 0x0 -+int layout alert_title_layout 0x0 -+int layout autofill_inline_suggestion 0x0 -+int layout custom_dialog 0x0 -+int layout dev_loading_view 0x0 -+int layout fps_view 0x0 -+int layout ime_base_split_test_activity 0x0 -+int layout ime_secondary_split_test_activity 0x0 -+int layout notification_action 0x0 -+int layout notification_action_tombstone 0x0 -+int layout notification_template_custom_big 0x0 -+int layout notification_template_icon_group 0x0 -+int layout notification_template_part_chronometer 0x0 -+int layout notification_template_part_time 0x0 -+int layout paused_in_debugger_view 0x0 -+int layout redbox_item_frame 0x0 -+int layout redbox_item_title 0x0 -+int layout redbox_view 0x0 -+int layout select_dialog_item_material 0x0 -+int layout select_dialog_multichoice_material 0x0 -+int layout select_dialog_singlechoice_material 0x0 -+int layout support_simple_spinner_dropdown_item 0x0 -+int string abc_action_bar_home_description 0x0 -+int string abc_action_bar_up_description 0x0 -+int string abc_action_menu_overflow_description 0x0 -+int string abc_action_mode_done 0x0 -+int string abc_activity_chooser_view_see_all 0x0 -+int string abc_activitychooserview_choose_application 0x0 -+int string abc_capital_off 0x0 -+int string abc_capital_on 0x0 -+int string abc_menu_alt_shortcut_label 0x0 -+int string abc_menu_ctrl_shortcut_label 0x0 -+int string abc_menu_delete_shortcut_label 0x0 -+int string abc_menu_enter_shortcut_label 0x0 -+int string abc_menu_function_shortcut_label 0x0 -+int string abc_menu_meta_shortcut_label 0x0 -+int string abc_menu_shift_shortcut_label 0x0 -+int string abc_menu_space_shortcut_label 0x0 -+int string abc_menu_sym_shortcut_label 0x0 -+int string abc_prepend_shortcut_label 0x0 -+int string abc_search_hint 0x0 -+int string abc_searchview_description_clear 0x0 -+int string abc_searchview_description_query 0x0 -+int string abc_searchview_description_search 0x0 -+int string abc_searchview_description_submit 0x0 -+int string abc_searchview_description_voice 0x0 -+int string abc_shareactionprovider_share_with 0x0 -+int string abc_shareactionprovider_share_with_application 0x0 -+int string abc_toolbar_collapse_description 0x0 -+int string alert_description 0x0 -+int string call_notification_answer_action 0x0 -+int string call_notification_answer_video_action 0x0 -+int string call_notification_decline_action 0x0 -+int string call_notification_hang_up_action 0x0 -+int string call_notification_incoming_text 0x0 -+int string call_notification_ongoing_text 0x0 -+int string call_notification_screening_text 0x0 -+int string catalyst_change_bundle_location 0x0 -+int string catalyst_change_bundle_location_apply 0x0 -+int string catalyst_change_bundle_location_cancel 0x0 -+int string catalyst_change_bundle_location_input_hint 0x0 -+int string catalyst_change_bundle_location_input_label 0x0 -+int string catalyst_change_bundle_location_instructions 0x0 -+int string catalyst_copy_button 0x0 -+int string catalyst_debug_connecting 0x0 -+int string catalyst_debug_error 0x0 -+int string catalyst_debug_open 0x0 -+int string catalyst_debug_open_disabled 0x0 -+int string catalyst_dev_menu_header 0x0 -+int string catalyst_dev_menu_sub_header 0x0 -+int string catalyst_dismiss_button 0x0 -+int string catalyst_heap_capture 0x0 -+int string catalyst_hot_reloading 0x0 -+int string catalyst_hot_reloading_auto_disable 0x0 -+int string catalyst_hot_reloading_auto_enable 0x0 -+int string catalyst_hot_reloading_stop 0x0 -+int string catalyst_inspector_toggle 0x0 -+int string catalyst_loading_from_url 0x0 -+int string catalyst_open_debugger_error 0x0 -+int string catalyst_perf_monitor 0x0 -+int string catalyst_perf_monitor_stop 0x0 -+int string catalyst_performance_background 0x0 -+int string catalyst_performance_cdp 0x0 -+int string catalyst_performance_disable 0x0 -+int string catalyst_performance_disabled 0x0 -+int string catalyst_performance_enable 0x0 -+int string catalyst_reload 0x0 -+int string catalyst_reload_button 0x0 -+int string catalyst_reload_error 0x0 -+int string catalyst_report_button 0x0 -+int string catalyst_sample_profiler_toggle 0x0 -+int string catalyst_settings 0x0 -+int string catalyst_settings_title 0x0 -+int string combobox_description 0x0 -+int string header_description 0x0 -+int string image_description 0x0 -+int string imagebutton_description 0x0 -+int string link_description 0x0 -+int string menu_description 0x0 -+int string menubar_description 0x0 -+int string menuitem_description 0x0 -+int string progressbar_description 0x0 -+int string radiogroup_description 0x0 -+int string react_native_dev_server_ip 0x0 -+int string rn_tab_description 0x0 -+int string scrollbar_description 0x0 -+int string search_menu_title 0x0 -+int string spinbutton_description 0x0 -+int string state_busy_description 0x0 -+int string state_collapsed_description 0x0 -+int string state_expanded_description 0x0 -+int string state_mixed_description 0x0 -+int string state_off_description 0x0 -+int string state_on_description 0x0 -+int string state_unselected_description 0x0 -+int string status_bar_notification_info_overflow 0x0 -+int string summary_description 0x0 -+int string tablist_description 0x0 -+int string timer_description 0x0 -+int string toolbar_description 0x0 -+int style AlertDialog_AppCompat 0x0 -+int style AlertDialog_AppCompat_Light 0x0 -+int style Animation_AppCompat_Dialog 0x0 -+int style Animation_AppCompat_DropDownUp 0x0 -+int style Animation_AppCompat_Tooltip 0x0 -+int style Animation_Catalyst_LogBox 0x0 -+int style Animation_Catalyst_RedBox 0x0 -+int style Base_AlertDialog_AppCompat 0x0 -+int style Base_AlertDialog_AppCompat_Light 0x0 -+int style Base_Animation_AppCompat_Dialog 0x0 -+int style Base_Animation_AppCompat_DropDownUp 0x0 -+int style Base_Animation_AppCompat_Tooltip 0x0 -+int style Base_DialogWindowTitleBackground_AppCompat 0x0 -+int style Base_DialogWindowTitle_AppCompat 0x0 -+int style Base_TextAppearance_AppCompat 0x0 -+int style Base_TextAppearance_AppCompat_Body1 0x0 -+int style Base_TextAppearance_AppCompat_Body2 0x0 -+int style Base_TextAppearance_AppCompat_Button 0x0 -+int style Base_TextAppearance_AppCompat_Caption 0x0 -+int style Base_TextAppearance_AppCompat_Display1 0x0 -+int style Base_TextAppearance_AppCompat_Display2 0x0 -+int style Base_TextAppearance_AppCompat_Display3 0x0 -+int style Base_TextAppearance_AppCompat_Display4 0x0 -+int style Base_TextAppearance_AppCompat_Headline 0x0 -+int style Base_TextAppearance_AppCompat_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Large 0x0 -+int style Base_TextAppearance_AppCompat_Large_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x0 -+int style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x0 -+int style Base_TextAppearance_AppCompat_Medium 0x0 -+int style Base_TextAppearance_AppCompat_Medium_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Menu 0x0 -+int style Base_TextAppearance_AppCompat_SearchResult 0x0 -+int style Base_TextAppearance_AppCompat_SearchResult_Subtitle 0x0 -+int style Base_TextAppearance_AppCompat_SearchResult_Title 0x0 -+int style Base_TextAppearance_AppCompat_Small 0x0 -+int style Base_TextAppearance_AppCompat_Small_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Subhead 0x0 -+int style Base_TextAppearance_AppCompat_Subhead_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Title 0x0 -+int style Base_TextAppearance_AppCompat_Title_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Tooltip 0x0 -+int style Base_TextAppearance_AppCompat_Widget_ActionBar_Menu 0x0 -+int style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x0 -+int style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Widget_ActionBar_Title 0x0 -+int style Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x0 -+int style Base_TextAppearance_AppCompat_Widget_ActionMode_Title 0x0 -+int style Base_TextAppearance_AppCompat_Widget_Button 0x0 -+int style Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored 0x0 -+int style Base_TextAppearance_AppCompat_Widget_Button_Colored 0x0 -+int style Base_TextAppearance_AppCompat_Widget_Button_Inverse 0x0 -+int style Base_TextAppearance_AppCompat_Widget_DropDownItem 0x0 -+int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Header 0x0 -+int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Large 0x0 -+int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Small 0x0 -+int style Base_TextAppearance_AppCompat_Widget_Switch 0x0 -+int style Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem 0x0 -+int style Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x0 -+int style Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle 0x0 -+int style Base_TextAppearance_Widget_AppCompat_Toolbar_Title 0x0 -+int style Base_ThemeOverlay_AppCompat 0x0 -+int style Base_ThemeOverlay_AppCompat_ActionBar 0x0 -+int style Base_ThemeOverlay_AppCompat_Dark 0x0 -+int style Base_ThemeOverlay_AppCompat_Dark_ActionBar 0x0 -+int style Base_ThemeOverlay_AppCompat_Dialog 0x0 -+int style Base_ThemeOverlay_AppCompat_Dialog_Alert 0x0 -+int style Base_ThemeOverlay_AppCompat_Light 0x0 -+int style Base_Theme_AppCompat 0x0 -+int style Base_Theme_AppCompat_CompactMenu 0x0 -+int style Base_Theme_AppCompat_Dialog 0x0 -+int style Base_Theme_AppCompat_DialogWhenLarge 0x0 -+int style Base_Theme_AppCompat_Dialog_Alert 0x0 -+int style Base_Theme_AppCompat_Dialog_FixedSize 0x0 -+int style Base_Theme_AppCompat_Dialog_MinWidth 0x0 -+int style Base_Theme_AppCompat_Light 0x0 -+int style Base_Theme_AppCompat_Light_DarkActionBar 0x0 -+int style Base_Theme_AppCompat_Light_Dialog 0x0 -+int style Base_Theme_AppCompat_Light_DialogWhenLarge 0x0 -+int style Base_Theme_AppCompat_Light_Dialog_Alert 0x0 -+int style Base_Theme_AppCompat_Light_Dialog_FixedSize 0x0 -+int style Base_Theme_AppCompat_Light_Dialog_MinWidth 0x0 -+int style Base_V21_ThemeOverlay_AppCompat_Dialog 0x0 -+int style Base_V21_Theme_AppCompat 0x0 -+int style Base_V21_Theme_AppCompat_Dialog 0x0 -+int style Base_V21_Theme_AppCompat_Light 0x0 -+int style Base_V21_Theme_AppCompat_Light_Dialog 0x0 -+int style Base_V22_Theme_AppCompat 0x0 -+int style Base_V22_Theme_AppCompat_Light 0x0 -+int style Base_V23_Theme_AppCompat 0x0 -+int style Base_V23_Theme_AppCompat_Light 0x0 -+int style Base_V26_Theme_AppCompat 0x0 -+int style Base_V26_Theme_AppCompat_Light 0x0 -+int style Base_V26_Widget_AppCompat_Toolbar 0x0 -+int style Base_V28_Theme_AppCompat 0x0 -+int style Base_V28_Theme_AppCompat_Light 0x0 -+int style Base_V7_ThemeOverlay_AppCompat_Dialog 0x0 -+int style Base_V7_Theme_AppCompat 0x0 -+int style Base_V7_Theme_AppCompat_Dialog 0x0 -+int style Base_V7_Theme_AppCompat_Light 0x0 -+int style Base_V7_Theme_AppCompat_Light_Dialog 0x0 -+int style Base_V7_Widget_AppCompat_AutoCompleteTextView 0x0 -+int style Base_V7_Widget_AppCompat_EditText 0x0 -+int style Base_V7_Widget_AppCompat_Toolbar 0x0 -+int style Base_Widget_AppCompat_ActionBar 0x0 -+int style Base_Widget_AppCompat_ActionBar_Solid 0x0 -+int style Base_Widget_AppCompat_ActionBar_TabBar 0x0 -+int style Base_Widget_AppCompat_ActionBar_TabText 0x0 -+int style Base_Widget_AppCompat_ActionBar_TabView 0x0 -+int style Base_Widget_AppCompat_ActionButton 0x0 -+int style Base_Widget_AppCompat_ActionButton_CloseMode 0x0 -+int style Base_Widget_AppCompat_ActionButton_Overflow 0x0 -+int style Base_Widget_AppCompat_ActionMode 0x0 -+int style Base_Widget_AppCompat_ActivityChooserView 0x0 -+int style Base_Widget_AppCompat_AutoCompleteTextView 0x0 -+int style Base_Widget_AppCompat_Button 0x0 -+int style Base_Widget_AppCompat_ButtonBar 0x0 -+int style Base_Widget_AppCompat_ButtonBar_AlertDialog 0x0 -+int style Base_Widget_AppCompat_Button_Borderless 0x0 -+int style Base_Widget_AppCompat_Button_Borderless_Colored 0x0 -+int style Base_Widget_AppCompat_Button_ButtonBar_AlertDialog 0x0 -+int style Base_Widget_AppCompat_Button_Colored 0x0 -+int style Base_Widget_AppCompat_Button_Small 0x0 -+int style Base_Widget_AppCompat_CompoundButton_CheckBox 0x0 -+int style Base_Widget_AppCompat_CompoundButton_RadioButton 0x0 -+int style Base_Widget_AppCompat_CompoundButton_Switch 0x0 -+int style Base_Widget_AppCompat_DrawerArrowToggle 0x0 -+int style Base_Widget_AppCompat_DrawerArrowToggle_Common 0x0 -+int style Base_Widget_AppCompat_DropDownItem_Spinner 0x0 -+int style Base_Widget_AppCompat_EditText 0x0 -+int style Base_Widget_AppCompat_ImageButton 0x0 -+int style Base_Widget_AppCompat_Light_ActionBar 0x0 -+int style Base_Widget_AppCompat_Light_ActionBar_Solid 0x0 -+int style Base_Widget_AppCompat_Light_ActionBar_TabBar 0x0 -+int style Base_Widget_AppCompat_Light_ActionBar_TabText 0x0 -+int style Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x0 -+int style Base_Widget_AppCompat_Light_ActionBar_TabView 0x0 -+int style Base_Widget_AppCompat_Light_PopupMenu 0x0 -+int style Base_Widget_AppCompat_Light_PopupMenu_Overflow 0x0 -+int style Base_Widget_AppCompat_ListMenuView 0x0 -+int style Base_Widget_AppCompat_ListPopupWindow 0x0 -+int style Base_Widget_AppCompat_ListView 0x0 -+int style Base_Widget_AppCompat_ListView_DropDown 0x0 -+int style Base_Widget_AppCompat_ListView_Menu 0x0 -+int style Base_Widget_AppCompat_PopupMenu 0x0 -+int style Base_Widget_AppCompat_PopupMenu_Overflow 0x0 -+int style Base_Widget_AppCompat_PopupWindow 0x0 -+int style Base_Widget_AppCompat_ProgressBar 0x0 -+int style Base_Widget_AppCompat_ProgressBar_Horizontal 0x0 -+int style Base_Widget_AppCompat_RatingBar 0x0 -+int style Base_Widget_AppCompat_RatingBar_Indicator 0x0 -+int style Base_Widget_AppCompat_RatingBar_Small 0x0 -+int style Base_Widget_AppCompat_SearchView 0x0 -+int style Base_Widget_AppCompat_SearchView_ActionBar 0x0 -+int style Base_Widget_AppCompat_SeekBar 0x0 -+int style Base_Widget_AppCompat_SeekBar_Discrete 0x0 -+int style Base_Widget_AppCompat_Spinner 0x0 -+int style Base_Widget_AppCompat_Spinner_Underlined 0x0 -+int style Base_Widget_AppCompat_TextView 0x0 -+int style Base_Widget_AppCompat_TextView_SpinnerItem 0x0 -+int style Base_Widget_AppCompat_Toolbar 0x0 -+int style Base_Widget_AppCompat_Toolbar_Button_Navigation 0x0 -+int style CalendarDatePickerDialog 0x0 -+int style CalendarDatePickerStyle 0x0 -+int style DialogAnimationFade 0x0 -+int style DialogAnimationSlide 0x0 -+int style NoAnimationDialog 0x0 -+int style Platform_AppCompat 0x0 -+int style Platform_AppCompat_Light 0x0 -+int style Platform_ThemeOverlay_AppCompat 0x0 -+int style Platform_ThemeOverlay_AppCompat_Dark 0x0 -+int style Platform_ThemeOverlay_AppCompat_Light 0x0 -+int style Platform_V21_AppCompat 0x0 -+int style Platform_V21_AppCompat_Light 0x0 -+int style Platform_V25_AppCompat 0x0 -+int style Platform_V25_AppCompat_Light 0x0 -+int style Platform_Widget_AppCompat_Spinner 0x0 -+int style RtlOverlay_DialogWindowTitle_AppCompat 0x0 -+int style RtlOverlay_Widget_AppCompat_ActionBar_TitleItem 0x0 -+int style RtlOverlay_Widget_AppCompat_DialogTitle_Icon 0x0 -+int style RtlOverlay_Widget_AppCompat_PopupMenuItem 0x0 -+int style RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup 0x0 -+int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut 0x0 -+int style RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow 0x0 -+int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Text 0x0 -+int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Title 0x0 -+int style RtlOverlay_Widget_AppCompat_SearchView_MagIcon 0x0 -+int style RtlOverlay_Widget_AppCompat_Search_DropDown 0x0 -+int style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 0x0 -+int style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 0x0 -+int style RtlOverlay_Widget_AppCompat_Search_DropDown_Query 0x0 -+int style RtlOverlay_Widget_AppCompat_Search_DropDown_Text 0x0 -+int style RtlUnderlay_Widget_AppCompat_ActionButton 0x0 -+int style RtlUnderlay_Widget_AppCompat_ActionButton_Overflow 0x0 -+int style SpinnerDatePickerDialog 0x0 -+int style SpinnerDatePickerStyle 0x0 -+int style TextAppearance_AppCompat 0x0 -+int style TextAppearance_AppCompat_Body1 0x0 -+int style TextAppearance_AppCompat_Body2 0x0 -+int style TextAppearance_AppCompat_Button 0x0 -+int style TextAppearance_AppCompat_Caption 0x0 -+int style TextAppearance_AppCompat_Display1 0x0 -+int style TextAppearance_AppCompat_Display2 0x0 -+int style TextAppearance_AppCompat_Display3 0x0 -+int style TextAppearance_AppCompat_Display4 0x0 -+int style TextAppearance_AppCompat_Headline 0x0 -+int style TextAppearance_AppCompat_Inverse 0x0 -+int style TextAppearance_AppCompat_Large 0x0 -+int style TextAppearance_AppCompat_Large_Inverse 0x0 -+int style TextAppearance_AppCompat_Light_SearchResult_Subtitle 0x0 -+int style TextAppearance_AppCompat_Light_SearchResult_Title 0x0 -+int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x0 -+int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x0 -+int style TextAppearance_AppCompat_Medium 0x0 -+int style TextAppearance_AppCompat_Medium_Inverse 0x0 -+int style TextAppearance_AppCompat_Menu 0x0 -+int style TextAppearance_AppCompat_SearchResult_Subtitle 0x0 -+int style TextAppearance_AppCompat_SearchResult_Title 0x0 -+int style TextAppearance_AppCompat_Small 0x0 -+int style TextAppearance_AppCompat_Small_Inverse 0x0 -+int style TextAppearance_AppCompat_Subhead 0x0 -+int style TextAppearance_AppCompat_Subhead_Inverse 0x0 -+int style TextAppearance_AppCompat_Title 0x0 -+int style TextAppearance_AppCompat_Title_Inverse 0x0 -+int style TextAppearance_AppCompat_Tooltip 0x0 -+int style TextAppearance_AppCompat_Widget_ActionBar_Menu 0x0 -+int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x0 -+int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x0 -+int style TextAppearance_AppCompat_Widget_ActionBar_Title 0x0 -+int style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x0 -+int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x0 -+int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse 0x0 -+int style TextAppearance_AppCompat_Widget_ActionMode_Title 0x0 -+int style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse 0x0 -+int style TextAppearance_AppCompat_Widget_Button 0x0 -+int style TextAppearance_AppCompat_Widget_Button_Borderless_Colored 0x0 -+int style TextAppearance_AppCompat_Widget_Button_Colored 0x0 -+int style TextAppearance_AppCompat_Widget_Button_Inverse 0x0 -+int style TextAppearance_AppCompat_Widget_DropDownItem 0x0 -+int style TextAppearance_AppCompat_Widget_PopupMenu_Header 0x0 -+int style TextAppearance_AppCompat_Widget_PopupMenu_Large 0x0 -+int style TextAppearance_AppCompat_Widget_PopupMenu_Small 0x0 -+int style TextAppearance_AppCompat_Widget_Switch 0x0 -+int style TextAppearance_AppCompat_Widget_TextView_SpinnerItem 0x0 -+int style TextAppearance_Compat_Notification 0x0 -+int style TextAppearance_Compat_Notification_Info 0x0 -+int style TextAppearance_Compat_Notification_Line2 0x0 -+int style TextAppearance_Compat_Notification_Time 0x0 -+int style TextAppearance_Compat_Notification_Title 0x0 -+int style TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x0 -+int style TextAppearance_Widget_AppCompat_Toolbar_Subtitle 0x0 -+int style TextAppearance_Widget_AppCompat_Toolbar_Title 0x0 -+int style Theme 0x0 -+int style ThemeOverlay_AppCompat 0x0 -+int style ThemeOverlay_AppCompat_ActionBar 0x0 -+int style ThemeOverlay_AppCompat_Dark 0x0 -+int style ThemeOverlay_AppCompat_Dark_ActionBar 0x0 -+int style ThemeOverlay_AppCompat_DayNight 0x0 -+int style ThemeOverlay_AppCompat_DayNight_ActionBar 0x0 -+int style ThemeOverlay_AppCompat_Dialog 0x0 -+int style ThemeOverlay_AppCompat_Dialog_Alert 0x0 -+int style ThemeOverlay_AppCompat_Light 0x0 -+int style Theme_AppCompat 0x0 -+int style Theme_AppCompat_CompactMenu 0x0 -+int style Theme_AppCompat_DayNight 0x0 -+int style Theme_AppCompat_DayNight_DarkActionBar 0x0 -+int style Theme_AppCompat_DayNight_Dialog 0x0 -+int style Theme_AppCompat_DayNight_DialogWhenLarge 0x0 -+int style Theme_AppCompat_DayNight_Dialog_Alert 0x0 -+int style Theme_AppCompat_DayNight_Dialog_MinWidth 0x0 -+int style Theme_AppCompat_DayNight_NoActionBar 0x0 -+int style Theme_AppCompat_Dialog 0x0 -+int style Theme_AppCompat_DialogWhenLarge 0x0 -+int style Theme_AppCompat_Dialog_Alert 0x0 -+int style Theme_AppCompat_Dialog_MinWidth 0x0 -+int style Theme_AppCompat_Empty 0x0 -+int style Theme_AppCompat_Light 0x0 -+int style Theme_AppCompat_Light_DarkActionBar 0x0 -+int style Theme_AppCompat_Light_Dialog 0x0 -+int style Theme_AppCompat_Light_DialogWhenLarge 0x0 -+int style Theme_AppCompat_Light_Dialog_Alert 0x0 -+int style Theme_AppCompat_Light_Dialog_MinWidth 0x0 -+int style Theme_AppCompat_Light_NoActionBar 0x0 -+int style Theme_AppCompat_NoActionBar 0x0 -+int style Theme_AutofillInlineSuggestion 0x0 -+int style Theme_Catalyst 0x0 -+int style Theme_Catalyst_LogBox 0x0 -+int style Theme_Catalyst_RedBox 0x0 -+int style Theme_FullScreenDialog 0x0 -+int style Theme_FullScreenDialogAnimatedFade 0x0 -+int style Theme_FullScreenDialogAnimatedSlide 0x0 -+int style Theme_ReactNative_AppCompat_Light 0x0 -+int style Theme_ReactNative_AppCompat_Light_NoActionBar_FullScreen 0x0 -+int style Theme_ReactNative_TextInput_DefaultBackground 0x0 -+int style Widget_AppCompat_ActionBar 0x0 -+int style Widget_AppCompat_ActionBar_Solid 0x0 -+int style Widget_AppCompat_ActionBar_TabBar 0x0 -+int style Widget_AppCompat_ActionBar_TabText 0x0 -+int style Widget_AppCompat_ActionBar_TabView 0x0 -+int style Widget_AppCompat_ActionButton 0x0 -+int style Widget_AppCompat_ActionButton_CloseMode 0x0 -+int style Widget_AppCompat_ActionButton_Overflow 0x0 -+int style Widget_AppCompat_ActionMode 0x0 -+int style Widget_AppCompat_ActivityChooserView 0x0 -+int style Widget_AppCompat_AutoCompleteTextView 0x0 -+int style Widget_AppCompat_Button 0x0 -+int style Widget_AppCompat_ButtonBar 0x0 -+int style Widget_AppCompat_ButtonBar_AlertDialog 0x0 -+int style Widget_AppCompat_Button_Borderless 0x0 -+int style Widget_AppCompat_Button_Borderless_Colored 0x0 -+int style Widget_AppCompat_Button_ButtonBar_AlertDialog 0x0 -+int style Widget_AppCompat_Button_Colored 0x0 -+int style Widget_AppCompat_Button_Small 0x0 -+int style Widget_AppCompat_CompoundButton_CheckBox 0x0 -+int style Widget_AppCompat_CompoundButton_RadioButton 0x0 -+int style Widget_AppCompat_CompoundButton_Switch 0x0 -+int style Widget_AppCompat_DrawerArrowToggle 0x0 -+int style Widget_AppCompat_DropDownItem_Spinner 0x0 -+int style Widget_AppCompat_EditText 0x0 -+int style Widget_AppCompat_ImageButton 0x0 -+int style Widget_AppCompat_Light_ActionBar 0x0 -+int style Widget_AppCompat_Light_ActionBar_Solid 0x0 -+int style Widget_AppCompat_Light_ActionBar_Solid_Inverse 0x0 -+int style Widget_AppCompat_Light_ActionBar_TabBar 0x0 -+int style Widget_AppCompat_Light_ActionBar_TabBar_Inverse 0x0 -+int style Widget_AppCompat_Light_ActionBar_TabText 0x0 -+int style Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x0 -+int style Widget_AppCompat_Light_ActionBar_TabView 0x0 -+int style Widget_AppCompat_Light_ActionBar_TabView_Inverse 0x0 -+int style Widget_AppCompat_Light_ActionButton 0x0 -+int style Widget_AppCompat_Light_ActionButton_CloseMode 0x0 -+int style Widget_AppCompat_Light_ActionButton_Overflow 0x0 -+int style Widget_AppCompat_Light_ActionMode_Inverse 0x0 -+int style Widget_AppCompat_Light_ActivityChooserView 0x0 -+int style Widget_AppCompat_Light_AutoCompleteTextView 0x0 -+int style Widget_AppCompat_Light_DropDownItem_Spinner 0x0 -+int style Widget_AppCompat_Light_ListPopupWindow 0x0 -+int style Widget_AppCompat_Light_ListView_DropDown 0x0 -+int style Widget_AppCompat_Light_PopupMenu 0x0 -+int style Widget_AppCompat_Light_PopupMenu_Overflow 0x0 -+int style Widget_AppCompat_Light_SearchView 0x0 -+int style Widget_AppCompat_Light_Spinner_DropDown_ActionBar 0x0 -+int style Widget_AppCompat_ListMenuView 0x0 -+int style Widget_AppCompat_ListPopupWindow 0x0 -+int style Widget_AppCompat_ListView 0x0 -+int style Widget_AppCompat_ListView_DropDown 0x0 -+int style Widget_AppCompat_ListView_Menu 0x0 -+int style Widget_AppCompat_PopupMenu 0x0 -+int style Widget_AppCompat_PopupMenu_Overflow 0x0 -+int style Widget_AppCompat_PopupWindow 0x0 -+int style Widget_AppCompat_ProgressBar 0x0 -+int style Widget_AppCompat_ProgressBar_Horizontal 0x0 -+int style Widget_AppCompat_RatingBar 0x0 -+int style Widget_AppCompat_RatingBar_Indicator 0x0 -+int style Widget_AppCompat_RatingBar_Small 0x0 -+int style Widget_AppCompat_SearchView 0x0 -+int style Widget_AppCompat_SearchView_ActionBar 0x0 -+int style Widget_AppCompat_SeekBar 0x0 -+int style Widget_AppCompat_SeekBar_Discrete 0x0 -+int style Widget_AppCompat_Spinner 0x0 -+int style Widget_AppCompat_Spinner_DropDown 0x0 -+int style Widget_AppCompat_Spinner_DropDown_ActionBar 0x0 -+int style Widget_AppCompat_Spinner_Underlined 0x0 -+int style Widget_AppCompat_TextView 0x0 -+int style Widget_AppCompat_TextView_SpinnerItem 0x0 -+int style Widget_AppCompat_Toolbar 0x0 -+int style Widget_AppCompat_Toolbar_Button_Navigation 0x0 -+int style Widget_Autofill 0x0 -+int style Widget_Autofill_InlineSuggestionChip 0x0 -+int style Widget_Autofill_InlineSuggestionEndIconStyle 0x0 -+int style Widget_Autofill_InlineSuggestionStartIconStyle 0x0 -+int style Widget_Autofill_InlineSuggestionSubtitle 0x0 -+int style Widget_Autofill_InlineSuggestionTitle 0x0 -+int style Widget_Compat_NotificationActionContainer 0x0 -+int style Widget_Compat_NotificationActionText 0x0 -+int style redboxButton 0x0 -+int[] styleable ActionBar { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable ActionBar_background 0 -+int styleable ActionBar_backgroundSplit 1 -+int styleable ActionBar_backgroundStacked 2 -+int styleable ActionBar_contentInsetEnd 3 -+int styleable ActionBar_contentInsetEndWithActions 4 -+int styleable ActionBar_contentInsetLeft 5 -+int styleable ActionBar_contentInsetRight 6 -+int styleable ActionBar_contentInsetStart 7 -+int styleable ActionBar_contentInsetStartWithNavigation 8 -+int styleable ActionBar_customNavigationLayout 9 -+int styleable ActionBar_displayOptions 10 -+int styleable ActionBar_divider 11 -+int styleable ActionBar_elevation 12 -+int styleable ActionBar_height 13 -+int styleable ActionBar_hideOnContentScroll 14 -+int styleable ActionBar_homeAsUpIndicator 15 -+int styleable ActionBar_homeLayout 16 -+int styleable ActionBar_icon 17 -+int styleable ActionBar_indeterminateProgressStyle 18 -+int styleable ActionBar_itemPadding 19 -+int styleable ActionBar_logo 20 -+int styleable ActionBar_navigationMode 21 -+int styleable ActionBar_popupTheme 22 -+int styleable ActionBar_progressBarPadding 23 -+int styleable ActionBar_progressBarStyle 24 -+int styleable ActionBar_subtitle 25 -+int styleable ActionBar_subtitleTextStyle 26 -+int styleable ActionBar_title 27 -+int styleable ActionBar_titleTextStyle 28 -+int[] styleable ActionBarLayout { 0x10100b3 } -+int styleable ActionBarLayout_android_layout_gravity 0 -+int[] styleable ActionMenuItemView { 0x101013f } -+int styleable ActionMenuItemView_android_minWidth 0 -+int[] styleable ActionMenuView { } -+int[] styleable ActionMode { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable ActionMode_background 0 -+int styleable ActionMode_backgroundSplit 1 -+int styleable ActionMode_closeItemLayout 2 -+int styleable ActionMode_height 3 -+int styleable ActionMode_subtitleTextStyle 4 -+int styleable ActionMode_titleTextStyle 5 -+int[] styleable ActivityChooserView { 0x0, 0x0 } -+int styleable ActivityChooserView_expandActivityOverflowButtonDrawable 0 -+int styleable ActivityChooserView_initialActivityCount 1 -+int[] styleable AlertDialog { 0x10100f2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable AlertDialog_android_layout 0 -+int styleable AlertDialog_buttonIconDimen 1 -+int styleable AlertDialog_buttonPanelSideLayout 2 -+int styleable AlertDialog_listItemLayout 3 -+int styleable AlertDialog_listLayout 4 -+int styleable AlertDialog_multiChoiceItemLayout 5 -+int styleable AlertDialog_showTitle 6 -+int styleable AlertDialog_singleChoiceItemLayout 7 -+int[] styleable AnimatedStateListDrawableCompat { 0x1010196, 0x101011c, 0x101030c, 0x101030d, 0x1010195, 0x1010194 } -+int styleable AnimatedStateListDrawableCompat_android_constantSize 0 -+int styleable AnimatedStateListDrawableCompat_android_dither 1 -+int styleable AnimatedStateListDrawableCompat_android_enterFadeDuration 2 -+int styleable AnimatedStateListDrawableCompat_android_exitFadeDuration 3 -+int styleable AnimatedStateListDrawableCompat_android_variablePadding 4 -+int styleable AnimatedStateListDrawableCompat_android_visible 5 -+int[] styleable AnimatedStateListDrawableItem { 0x1010199, 0x10100d0 } -+int styleable AnimatedStateListDrawableItem_android_drawable 0 -+int styleable AnimatedStateListDrawableItem_android_id 1 -+int[] styleable AnimatedStateListDrawableTransition { 0x1010199, 0x101044a, 0x101044b, 0x1010449 } -+int styleable AnimatedStateListDrawableTransition_android_drawable 0 -+int styleable AnimatedStateListDrawableTransition_android_fromId 1 -+int styleable AnimatedStateListDrawableTransition_android_reversible 2 -+int styleable AnimatedStateListDrawableTransition_android_toId 3 -+int[] styleable AppCompatEmojiHelper { } -+int[] styleable AppCompatImageView { 0x1010119, 0x0, 0x0, 0x0 } -+int styleable AppCompatImageView_android_src 0 -+int styleable AppCompatImageView_srcCompat 1 -+int styleable AppCompatImageView_tint 2 -+int styleable AppCompatImageView_tintMode 3 -+int[] styleable AppCompatSeekBar { 0x1010142, 0x0, 0x0, 0x0 } -+int styleable AppCompatSeekBar_android_thumb 0 -+int styleable AppCompatSeekBar_tickMark 1 -+int styleable AppCompatSeekBar_tickMarkTint 2 -+int styleable AppCompatSeekBar_tickMarkTintMode 3 -+int[] styleable AppCompatTextHelper { 0x101016e, 0x1010393, 0x101016f, 0x1010170, 0x1010392, 0x101016d, 0x1010034 } -+int styleable AppCompatTextHelper_android_drawableBottom 0 -+int styleable AppCompatTextHelper_android_drawableEnd 1 -+int styleable AppCompatTextHelper_android_drawableLeft 2 -+int styleable AppCompatTextHelper_android_drawableRight 3 -+int styleable AppCompatTextHelper_android_drawableStart 4 -+int styleable AppCompatTextHelper_android_drawableTop 5 -+int styleable AppCompatTextHelper_android_textAppearance 6 -+int[] styleable AppCompatTextView { 0x1010034, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable AppCompatTextView_android_textAppearance 0 -+int styleable AppCompatTextView_autoSizeMaxTextSize 1 -+int styleable AppCompatTextView_autoSizeMinTextSize 2 -+int styleable AppCompatTextView_autoSizePresetSizes 3 -+int styleable AppCompatTextView_autoSizeStepGranularity 4 -+int styleable AppCompatTextView_autoSizeTextType 5 -+int styleable AppCompatTextView_drawableBottomCompat 6 -+int styleable AppCompatTextView_drawableEndCompat 7 -+int styleable AppCompatTextView_drawableLeftCompat 8 -+int styleable AppCompatTextView_drawableRightCompat 9 -+int styleable AppCompatTextView_drawableStartCompat 10 -+int styleable AppCompatTextView_drawableTint 11 -+int styleable AppCompatTextView_drawableTintMode 12 -+int styleable AppCompatTextView_drawableTopCompat 13 -+int styleable AppCompatTextView_emojiCompatEnabled 14 -+int styleable AppCompatTextView_firstBaselineToTopHeight 15 -+int styleable AppCompatTextView_fontFamily 16 -+int styleable AppCompatTextView_fontVariationSettings 17 -+int styleable AppCompatTextView_lastBaselineToBottomHeight 18 -+int styleable AppCompatTextView_lineHeight 19 -+int styleable AppCompatTextView_textAllCaps 20 -+int styleable AppCompatTextView_textLocale 21 -+int[] styleable AppCompatTheme { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10100ae, 0x1010057, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable AppCompatTheme_actionBarDivider 0 -+int styleable AppCompatTheme_actionBarItemBackground 1 -+int styleable AppCompatTheme_actionBarPopupTheme 2 -+int styleable AppCompatTheme_actionBarSize 3 -+int styleable AppCompatTheme_actionBarSplitStyle 4 -+int styleable AppCompatTheme_actionBarStyle 5 -+int styleable AppCompatTheme_actionBarTabBarStyle 6 -+int styleable AppCompatTheme_actionBarTabStyle 7 -+int styleable AppCompatTheme_actionBarTabTextStyle 8 -+int styleable AppCompatTheme_actionBarTheme 9 -+int styleable AppCompatTheme_actionBarWidgetTheme 10 -+int styleable AppCompatTheme_actionButtonStyle 11 -+int styleable AppCompatTheme_actionDropDownStyle 12 -+int styleable AppCompatTheme_actionMenuTextAppearance 13 -+int styleable AppCompatTheme_actionMenuTextColor 14 -+int styleable AppCompatTheme_actionModeBackground 15 -+int styleable AppCompatTheme_actionModeCloseButtonStyle 16 -+int styleable AppCompatTheme_actionModeCloseContentDescription 17 -+int styleable AppCompatTheme_actionModeCloseDrawable 18 -+int styleable AppCompatTheme_actionModeCopyDrawable 19 -+int styleable AppCompatTheme_actionModeCutDrawable 20 -+int styleable AppCompatTheme_actionModeFindDrawable 21 -+int styleable AppCompatTheme_actionModePasteDrawable 22 -+int styleable AppCompatTheme_actionModePopupWindowStyle 23 -+int styleable AppCompatTheme_actionModeSelectAllDrawable 24 -+int styleable AppCompatTheme_actionModeShareDrawable 25 -+int styleable AppCompatTheme_actionModeSplitBackground 26 -+int styleable AppCompatTheme_actionModeStyle 27 -+int styleable AppCompatTheme_actionModeTheme 28 -+int styleable AppCompatTheme_actionModeWebSearchDrawable 29 -+int styleable AppCompatTheme_actionOverflowButtonStyle 30 -+int styleable AppCompatTheme_actionOverflowMenuStyle 31 -+int styleable AppCompatTheme_activityChooserViewStyle 32 -+int styleable AppCompatTheme_alertDialogButtonGroupStyle 33 -+int styleable AppCompatTheme_alertDialogCenterButtons 34 -+int styleable AppCompatTheme_alertDialogStyle 35 -+int styleable AppCompatTheme_alertDialogTheme 36 -+int styleable AppCompatTheme_android_windowAnimationStyle 37 -+int styleable AppCompatTheme_android_windowIsFloating 38 -+int styleable AppCompatTheme_autoCompleteTextViewStyle 39 -+int styleable AppCompatTheme_borderlessButtonStyle 40 -+int styleable AppCompatTheme_buttonBarButtonStyle 41 -+int styleable AppCompatTheme_buttonBarNegativeButtonStyle 42 -+int styleable AppCompatTheme_buttonBarNeutralButtonStyle 43 -+int styleable AppCompatTheme_buttonBarPositiveButtonStyle 44 -+int styleable AppCompatTheme_buttonBarStyle 45 -+int styleable AppCompatTheme_buttonStyle 46 -+int styleable AppCompatTheme_buttonStyleSmall 47 -+int styleable AppCompatTheme_checkboxStyle 48 -+int styleable AppCompatTheme_checkedTextViewStyle 49 -+int styleable AppCompatTheme_colorAccent 50 -+int styleable AppCompatTheme_colorBackgroundFloating 51 -+int styleable AppCompatTheme_colorButtonNormal 52 -+int styleable AppCompatTheme_colorControlActivated 53 -+int styleable AppCompatTheme_colorControlHighlight 54 -+int styleable AppCompatTheme_colorControlNormal 55 -+int styleable AppCompatTheme_colorError 56 -+int styleable AppCompatTheme_colorPrimary 57 -+int styleable AppCompatTheme_colorPrimaryDark 58 -+int styleable AppCompatTheme_colorSwitchThumbNormal 59 -+int styleable AppCompatTheme_controlBackground 60 -+int styleable AppCompatTheme_dialogCornerRadius 61 -+int styleable AppCompatTheme_dialogPreferredPadding 62 -+int styleable AppCompatTheme_dialogTheme 63 -+int styleable AppCompatTheme_dividerHorizontal 64 -+int styleable AppCompatTheme_dividerVertical 65 -+int styleable AppCompatTheme_dropDownListViewStyle 66 -+int styleable AppCompatTheme_dropdownListPreferredItemHeight 67 -+int styleable AppCompatTheme_editTextBackground 68 -+int styleable AppCompatTheme_editTextColor 69 -+int styleable AppCompatTheme_editTextStyle 70 -+int styleable AppCompatTheme_homeAsUpIndicator 71 -+int styleable AppCompatTheme_imageButtonStyle 72 -+int styleable AppCompatTheme_listChoiceBackgroundIndicator 73 -+int styleable AppCompatTheme_listChoiceIndicatorMultipleAnimated 74 -+int styleable AppCompatTheme_listChoiceIndicatorSingleAnimated 75 -+int styleable AppCompatTheme_listDividerAlertDialog 76 -+int styleable AppCompatTheme_listMenuViewStyle 77 -+int styleable AppCompatTheme_listPopupWindowStyle 78 -+int styleable AppCompatTheme_listPreferredItemHeight 79 -+int styleable AppCompatTheme_listPreferredItemHeightLarge 80 -+int styleable AppCompatTheme_listPreferredItemHeightSmall 81 -+int styleable AppCompatTheme_listPreferredItemPaddingEnd 82 -+int styleable AppCompatTheme_listPreferredItemPaddingLeft 83 -+int styleable AppCompatTheme_listPreferredItemPaddingRight 84 -+int styleable AppCompatTheme_listPreferredItemPaddingStart 85 -+int styleable AppCompatTheme_panelBackground 86 -+int styleable AppCompatTheme_panelMenuListTheme 87 -+int styleable AppCompatTheme_panelMenuListWidth 88 -+int styleable AppCompatTheme_popupMenuStyle 89 -+int styleable AppCompatTheme_popupWindowStyle 90 -+int styleable AppCompatTheme_radioButtonStyle 91 -+int styleable AppCompatTheme_ratingBarStyle 92 -+int styleable AppCompatTheme_ratingBarStyleIndicator 93 -+int styleable AppCompatTheme_ratingBarStyleSmall 94 -+int styleable AppCompatTheme_searchViewStyle 95 -+int styleable AppCompatTheme_seekBarStyle 96 -+int styleable AppCompatTheme_selectableItemBackground 97 -+int styleable AppCompatTheme_selectableItemBackgroundBorderless 98 -+int styleable AppCompatTheme_spinnerDropDownItemStyle 99 -+int styleable AppCompatTheme_spinnerStyle 100 -+int styleable AppCompatTheme_switchStyle 101 -+int styleable AppCompatTheme_textAppearanceLargePopupMenu 102 -+int styleable AppCompatTheme_textAppearanceListItem 103 -+int styleable AppCompatTheme_textAppearanceListItemSecondary 104 -+int styleable AppCompatTheme_textAppearanceListItemSmall 105 -+int styleable AppCompatTheme_textAppearancePopupMenuHeader 106 -+int styleable AppCompatTheme_textAppearanceSearchResultSubtitle 107 -+int styleable AppCompatTheme_textAppearanceSearchResultTitle 108 -+int styleable AppCompatTheme_textAppearanceSmallPopupMenu 109 -+int styleable AppCompatTheme_textColorAlertDialogListItem 110 -+int styleable AppCompatTheme_textColorSearchUrl 111 -+int styleable AppCompatTheme_toolbarNavigationButtonStyle 112 -+int styleable AppCompatTheme_toolbarStyle 113 -+int styleable AppCompatTheme_tooltipForegroundColor 114 -+int styleable AppCompatTheme_tooltipFrameBackground 115 -+int styleable AppCompatTheme_viewInflaterClass 116 -+int styleable AppCompatTheme_windowActionBar 117 -+int styleable AppCompatTheme_windowActionBarOverlay 118 -+int styleable AppCompatTheme_windowActionModeOverlay 119 -+int styleable AppCompatTheme_windowFixedHeightMajor 120 -+int styleable AppCompatTheme_windowFixedHeightMinor 121 -+int styleable AppCompatTheme_windowFixedWidthMajor 122 -+int styleable AppCompatTheme_windowFixedWidthMinor 123 -+int styleable AppCompatTheme_windowMinWidthMajor 124 -+int styleable AppCompatTheme_windowMinWidthMinor 125 -+int styleable AppCompatTheme_windowNoTitle 126 -+int[] styleable Autofill_InlineSuggestion { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable Autofill_InlineSuggestion_autofillInlineSuggestionChip 0 -+int styleable Autofill_InlineSuggestion_autofillInlineSuggestionEndIconStyle 1 -+int styleable Autofill_InlineSuggestion_autofillInlineSuggestionStartIconStyle 2 -+int styleable Autofill_InlineSuggestion_autofillInlineSuggestionSubtitle 3 -+int styleable Autofill_InlineSuggestion_autofillInlineSuggestionTitle 4 -+int styleable Autofill_InlineSuggestion_isAutofillInlineSuggestionTheme 5 -+int[] styleable ButtonBarLayout { 0x0 } -+int styleable ButtonBarLayout_allowStacking 0 -+int[] styleable Capability { 0x0, 0x0 } -+int styleable Capability_queryPatterns 0 -+int styleable Capability_shortcutMatchRequired 1 -+int[] styleable CheckedTextView { 0x1010108, 0x0, 0x0, 0x0 } -+int styleable CheckedTextView_android_checkMark 0 -+int styleable CheckedTextView_checkMarkCompat 1 -+int styleable CheckedTextView_checkMarkTint 2 -+int styleable CheckedTextView_checkMarkTintMode 3 -+int[] styleable ColorStateListItem { 0x0, 0x101031f, 0x10101a5, 0x1010647, 0x0 } -+int styleable ColorStateListItem_alpha 0 -+int styleable ColorStateListItem_android_alpha 1 -+int styleable ColorStateListItem_android_color 2 -+int styleable ColorStateListItem_android_lStar 3 -+int styleable ColorStateListItem_lStar 4 -+int[] styleable CompoundButton { 0x1010107, 0x0, 0x0, 0x0 } -+int styleable CompoundButton_android_button 0 -+int styleable CompoundButton_buttonCompat 1 -+int styleable CompoundButton_buttonTint 2 -+int styleable CompoundButton_buttonTintMode 3 -+int[] styleable DrawerArrowToggle { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable DrawerArrowToggle_arrowHeadLength 0 -+int styleable DrawerArrowToggle_arrowShaftLength 1 -+int styleable DrawerArrowToggle_barLength 2 -+int styleable DrawerArrowToggle_color 3 -+int styleable DrawerArrowToggle_drawableSize 4 -+int styleable DrawerArrowToggle_gapBetweenBars 5 -+int styleable DrawerArrowToggle_spinBars 6 -+int styleable DrawerArrowToggle_thickness 7 -+int[] styleable FontFamily { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable FontFamily_fontProviderAuthority 0 -+int styleable FontFamily_fontProviderCerts 1 -+int styleable FontFamily_fontProviderFetchStrategy 2 -+int styleable FontFamily_fontProviderFetchTimeout 3 -+int styleable FontFamily_fontProviderPackage 4 -+int styleable FontFamily_fontProviderQuery 5 -+int styleable FontFamily_fontProviderSystemFontFamily 6 -+int[] styleable FontFamilyFont { 0x1010532, 0x101053f, 0x1010570, 0x1010533, 0x101056f, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable FontFamilyFont_android_font 0 -+int styleable FontFamilyFont_android_fontStyle 1 -+int styleable FontFamilyFont_android_fontVariationSettings 2 -+int styleable FontFamilyFont_android_fontWeight 3 -+int styleable FontFamilyFont_android_ttcIndex 4 -+int styleable FontFamilyFont_font 5 -+int styleable FontFamilyFont_fontStyle 6 -+int styleable FontFamilyFont_fontVariationSettings 7 -+int styleable FontFamilyFont_fontWeight 8 -+int styleable FontFamilyFont_ttcIndex 9 -+int[] styleable Fragment { 0x10100d0, 0x1010003, 0x10100d1 } -+int styleable Fragment_android_id 0 -+int styleable Fragment_android_name 1 -+int styleable Fragment_android_tag 2 -+int[] styleable FragmentContainerView { 0x1010003, 0x10100d1 } -+int styleable FragmentContainerView_android_name 0 -+int styleable FragmentContainerView_android_tag 1 -+int[] styleable GenericDraweeHierarchy { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable GenericDraweeHierarchy_actualImageScaleType 0 -+int styleable GenericDraweeHierarchy_backgroundImage 1 -+int styleable GenericDraweeHierarchy_fadeDuration 2 -+int styleable GenericDraweeHierarchy_failureImage 3 -+int styleable GenericDraweeHierarchy_failureImageScaleType 4 -+int styleable GenericDraweeHierarchy_overlayImage 5 -+int styleable GenericDraweeHierarchy_placeholderImage 6 -+int styleable GenericDraweeHierarchy_placeholderImageScaleType 7 -+int styleable GenericDraweeHierarchy_pressedStateOverlayImage 8 -+int styleable GenericDraweeHierarchy_progressBarAutoRotateInterval 9 -+int styleable GenericDraweeHierarchy_progressBarImage 10 -+int styleable GenericDraweeHierarchy_progressBarImageScaleType 11 -+int styleable GenericDraweeHierarchy_retryImage 12 -+int styleable GenericDraweeHierarchy_retryImageScaleType 13 -+int styleable GenericDraweeHierarchy_roundAsCircle 14 -+int styleable GenericDraweeHierarchy_roundBottomEnd 15 -+int styleable GenericDraweeHierarchy_roundBottomLeft 16 -+int styleable GenericDraweeHierarchy_roundBottomRight 17 -+int styleable GenericDraweeHierarchy_roundBottomStart 18 -+int styleable GenericDraweeHierarchy_roundTopEnd 19 -+int styleable GenericDraweeHierarchy_roundTopLeft 20 -+int styleable GenericDraweeHierarchy_roundTopRight 21 -+int styleable GenericDraweeHierarchy_roundTopStart 22 -+int styleable GenericDraweeHierarchy_roundWithOverlayColor 23 -+int styleable GenericDraweeHierarchy_roundedCornerRadius 24 -+int styleable GenericDraweeHierarchy_roundingBorderColor 25 -+int styleable GenericDraweeHierarchy_roundingBorderPadding 26 -+int styleable GenericDraweeHierarchy_roundingBorderWidth 27 -+int styleable GenericDraweeHierarchy_viewAspectRatio 28 -+int[] styleable GradientColor { 0x101020b, 0x10101a2, 0x10101a3, 0x101019e, 0x1010512, 0x1010513, 0x10101a4, 0x101019d, 0x1010510, 0x1010511, 0x1010201, 0x10101a1 } -+int styleable GradientColor_android_centerColor 0 -+int styleable GradientColor_android_centerX 1 -+int styleable GradientColor_android_centerY 2 -+int styleable GradientColor_android_endColor 3 -+int styleable GradientColor_android_endX 4 -+int styleable GradientColor_android_endY 5 -+int styleable GradientColor_android_gradientRadius 6 -+int styleable GradientColor_android_startColor 7 -+int styleable GradientColor_android_startX 8 -+int styleable GradientColor_android_startY 9 -+int styleable GradientColor_android_tileMode 10 -+int styleable GradientColor_android_type 11 -+int[] styleable GradientColorItem { 0x10101a5, 0x1010514 } -+int styleable GradientColorItem_android_color 0 -+int styleable GradientColorItem_android_offset 1 -+int[] styleable LinearLayoutCompat { 0x1010126, 0x1010127, 0x10100af, 0x10100c4, 0x1010128, 0x0, 0x0, 0x0, 0x0 } -+int styleable LinearLayoutCompat_android_baselineAligned 0 -+int styleable LinearLayoutCompat_android_baselineAlignedChildIndex 1 -+int styleable LinearLayoutCompat_android_gravity 2 -+int styleable LinearLayoutCompat_android_orientation 3 -+int styleable LinearLayoutCompat_android_weightSum 4 -+int styleable LinearLayoutCompat_divider 5 -+int styleable LinearLayoutCompat_dividerPadding 6 -+int styleable LinearLayoutCompat_measureWithLargestChild 7 -+int styleable LinearLayoutCompat_showDividers 8 -+int[] styleable LinearLayoutCompat_Layout { 0x10100b3, 0x10100f5, 0x1010181, 0x10100f4 } -+int styleable LinearLayoutCompat_Layout_android_layout_gravity 0 -+int styleable LinearLayoutCompat_Layout_android_layout_height 1 -+int styleable LinearLayoutCompat_Layout_android_layout_weight 2 -+int styleable LinearLayoutCompat_Layout_android_layout_width 3 -+int[] styleable ListPopupWindow { 0x10102ac, 0x10102ad } -+int styleable ListPopupWindow_android_dropDownHorizontalOffset 0 -+int styleable ListPopupWindow_android_dropDownVerticalOffset 1 -+int[] styleable LottieAnimationView { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable LottieAnimationView_lottie_asyncUpdates 0 -+int styleable LottieAnimationView_lottie_autoPlay 1 -+int styleable LottieAnimationView_lottie_cacheComposition 2 -+int styleable LottieAnimationView_lottie_clipToCompositionBounds 3 -+int styleable LottieAnimationView_lottie_colorFilter 4 -+int styleable LottieAnimationView_lottie_defaultFontFileExtension 5 -+int styleable LottieAnimationView_lottie_enableMergePathsForKitKatAndAbove 6 -+int styleable LottieAnimationView_lottie_fallbackRes 7 -+int styleable LottieAnimationView_lottie_fileName 8 -+int styleable LottieAnimationView_lottie_ignoreDisabledSystemAnimations 9 -+int styleable LottieAnimationView_lottie_imageAssetsFolder 10 -+int styleable LottieAnimationView_lottie_loop 11 -+int styleable LottieAnimationView_lottie_progress 12 -+int styleable LottieAnimationView_lottie_rawRes 13 -+int styleable LottieAnimationView_lottie_renderMode 14 -+int styleable LottieAnimationView_lottie_repeatCount 15 -+int styleable LottieAnimationView_lottie_repeatMode 16 -+int styleable LottieAnimationView_lottie_speed 17 -+int styleable LottieAnimationView_lottie_url 18 -+int styleable LottieAnimationView_lottie_useCompositionFrameRate 19 -+int[] styleable MenuGroup { 0x10101e0, 0x101000e, 0x10100d0, 0x10101de, 0x10101df, 0x1010194 } -+int styleable MenuGroup_android_checkableBehavior 0 -+int styleable MenuGroup_android_enabled 1 -+int styleable MenuGroup_android_id 2 -+int styleable MenuGroup_android_menuCategory 3 -+int styleable MenuGroup_android_orderInCategory 4 -+int styleable MenuGroup_android_visible 5 -+int[] styleable MenuItem { 0x0, 0x0, 0x0, 0x0, 0x10101e3, 0x10101e5, 0x1010106, 0x101000e, 0x1010002, 0x10100d0, 0x10101de, 0x10101e4, 0x101026f, 0x10101df, 0x10101e1, 0x10101e2, 0x1010194, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable MenuItem_actionLayout 0 -+int styleable MenuItem_actionProviderClass 1 -+int styleable MenuItem_actionViewClass 2 -+int styleable MenuItem_alphabeticModifiers 3 -+int styleable MenuItem_android_alphabeticShortcut 4 -+int styleable MenuItem_android_checkable 5 -+int styleable MenuItem_android_checked 6 -+int styleable MenuItem_android_enabled 7 -+int styleable MenuItem_android_icon 8 -+int styleable MenuItem_android_id 9 -+int styleable MenuItem_android_menuCategory 10 -+int styleable MenuItem_android_numericShortcut 11 -+int styleable MenuItem_android_onClick 12 -+int styleable MenuItem_android_orderInCategory 13 -+int styleable MenuItem_android_title 14 -+int styleable MenuItem_android_titleCondensed 15 -+int styleable MenuItem_android_visible 16 -+int styleable MenuItem_contentDescription 17 -+int styleable MenuItem_iconTint 18 -+int styleable MenuItem_iconTintMode 19 -+int styleable MenuItem_numericModifiers 20 -+int styleable MenuItem_showAsAction 21 -+int styleable MenuItem_tooltipText 22 -+int[] styleable MenuView { 0x101012f, 0x101012d, 0x1010130, 0x1010131, 0x101012c, 0x101012e, 0x10100ae, 0x0, 0x0 } -+int styleable MenuView_android_headerBackground 0 -+int styleable MenuView_android_horizontalDivider 1 -+int styleable MenuView_android_itemBackground 2 -+int styleable MenuView_android_itemIconDisabledAlpha 3 -+int styleable MenuView_android_itemTextAppearance 4 -+int styleable MenuView_android_verticalDivider 5 -+int styleable MenuView_android_windowAnimationStyle 6 -+int styleable MenuView_preserveIconSpacing 7 -+int styleable MenuView_subMenuArrow 8 -+int[] styleable PopupWindow { 0x10102c9, 0x1010176, 0x0 } -+int styleable PopupWindow_android_popupAnimationStyle 0 -+int styleable PopupWindow_android_popupBackground 1 -+int styleable PopupWindow_overlapAnchor 2 -+int[] styleable PopupWindowBackgroundState { 0x0 } -+int styleable PopupWindowBackgroundState_state_above_anchor 0 -+int[] styleable RecycleListView { 0x0, 0x0 } -+int styleable RecycleListView_paddingBottomNoButtons 0 -+int styleable RecycleListView_paddingTopNoTitle 1 -+int[] styleable SearchView { 0x10100da, 0x1010264, 0x1010220, 0x101011f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable SearchView_android_focusable 0 -+int styleable SearchView_android_imeOptions 1 -+int styleable SearchView_android_inputType 2 -+int styleable SearchView_android_maxWidth 3 -+int styleable SearchView_closeIcon 4 -+int styleable SearchView_commitIcon 5 -+int styleable SearchView_defaultQueryHint 6 -+int styleable SearchView_goIcon 7 -+int styleable SearchView_iconifiedByDefault 8 -+int styleable SearchView_layout 9 -+int styleable SearchView_queryBackground 10 -+int styleable SearchView_queryHint 11 -+int styleable SearchView_searchHintIcon 12 -+int styleable SearchView_searchIcon 13 -+int styleable SearchView_submitBackground 14 -+int styleable SearchView_suggestionRowLayout 15 -+int styleable SearchView_voiceIcon 16 -+int[] styleable SimpleDraweeView { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable SimpleDraweeView_actualImageResource 0 -+int styleable SimpleDraweeView_actualImageUri 1 -+int styleable SimpleDraweeView_backgroundImage 2 -+int styleable SimpleDraweeView_fadeDuration 3 -+int styleable SimpleDraweeView_failureImage 4 -+int styleable SimpleDraweeView_failureImageScaleType 5 -+int styleable SimpleDraweeView_overlayImage 6 -+int styleable SimpleDraweeView_placeholderImage 7 -+int styleable SimpleDraweeView_placeholderImageScaleType 8 -+int styleable SimpleDraweeView_pressedStateOverlayImage 9 -+int styleable SimpleDraweeView_progressBarAutoRotateInterval 10 -+int styleable SimpleDraweeView_progressBarImage 11 -+int styleable SimpleDraweeView_progressBarImageScaleType 12 -+int styleable SimpleDraweeView_retryImage 13 -+int styleable SimpleDraweeView_retryImageScaleType 14 -+int styleable SimpleDraweeView_roundAsCircle 15 -+int styleable SimpleDraweeView_roundBottomEnd 16 -+int styleable SimpleDraweeView_roundBottomLeft 17 -+int styleable SimpleDraweeView_roundBottomRight 18 -+int styleable SimpleDraweeView_roundBottomStart 19 -+int styleable SimpleDraweeView_roundTopEnd 20 -+int styleable SimpleDraweeView_roundTopLeft 21 -+int styleable SimpleDraweeView_roundTopRight 22 -+int styleable SimpleDraweeView_roundTopStart 23 -+int styleable SimpleDraweeView_roundWithOverlayColor 24 -+int styleable SimpleDraweeView_roundedCornerRadius 25 -+int styleable SimpleDraweeView_roundingBorderColor 26 -+int styleable SimpleDraweeView_roundingBorderPadding 27 -+int styleable SimpleDraweeView_roundingBorderWidth 28 -+int styleable SimpleDraweeView_viewAspectRatio 29 -+int[] styleable Spinner { 0x1010262, 0x10100b2, 0x1010176, 0x101017b, 0x0 } -+int styleable Spinner_android_dropDownWidth 0 -+int styleable Spinner_android_entries 1 -+int styleable Spinner_android_popupBackground 2 -+int styleable Spinner_android_prompt 3 -+int styleable Spinner_popupTheme 4 -+int[] styleable StateListDrawable { 0x1010196, 0x101011c, 0x101030c, 0x101030d, 0x1010195, 0x1010194 } -+int styleable StateListDrawable_android_constantSize 0 -+int styleable StateListDrawable_android_dither 1 -+int styleable StateListDrawable_android_enterFadeDuration 2 -+int styleable StateListDrawable_android_exitFadeDuration 3 -+int styleable StateListDrawable_android_variablePadding 4 -+int styleable StateListDrawable_android_visible 5 -+int[] styleable StateListDrawableItem { 0x1010199 } -+int styleable StateListDrawableItem_android_drawable 0 -+int[] styleable SwipeRefreshLayout { 0x0 } -+int styleable SwipeRefreshLayout_swipeRefreshLayoutProgressSpinnerBackgroundColor 0 -+int[] styleable SwitchCompat { 0x1010125, 0x1010124, 0x1010142, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable SwitchCompat_android_textOff 0 -+int styleable SwitchCompat_android_textOn 1 -+int styleable SwitchCompat_android_thumb 2 -+int styleable SwitchCompat_showText 3 -+int styleable SwitchCompat_splitTrack 4 -+int styleable SwitchCompat_switchMinWidth 5 -+int styleable SwitchCompat_switchPadding 6 -+int styleable SwitchCompat_switchTextAppearance 7 -+int styleable SwitchCompat_thumbTextPadding 8 -+int styleable SwitchCompat_thumbTint 9 -+int styleable SwitchCompat_thumbTintMode 10 -+int styleable SwitchCompat_track 11 -+int styleable SwitchCompat_trackTint 12 -+int styleable SwitchCompat_trackTintMode 13 -+int[] styleable TextAppearance { 0x10103ac, 0x1010161, 0x1010162, 0x1010163, 0x1010164, 0x1010098, 0x101009a, 0x101009b, 0x1010585, 0x1010095, 0x1010097, 0x1010096, 0x0, 0x0, 0x0, 0x0 } -+int styleable TextAppearance_android_fontFamily 0 -+int styleable TextAppearance_android_shadowColor 1 -+int styleable TextAppearance_android_shadowDx 2 -+int styleable TextAppearance_android_shadowDy 3 -+int styleable TextAppearance_android_shadowRadius 4 -+int styleable TextAppearance_android_textColor 5 -+int styleable TextAppearance_android_textColorHint 6 -+int styleable TextAppearance_android_textColorLink 7 -+int styleable TextAppearance_android_textFontWeight 8 -+int styleable TextAppearance_android_textSize 9 -+int styleable TextAppearance_android_textStyle 10 -+int styleable TextAppearance_android_typeface 11 -+int styleable TextAppearance_fontFamily 12 -+int styleable TextAppearance_fontVariationSettings 13 -+int styleable TextAppearance_textAllCaps 14 -+int styleable TextAppearance_textLocale 15 -+int[] styleable Toolbar { 0x10100af, 0x1010140, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } -+int styleable Toolbar_android_gravity 0 -+int styleable Toolbar_android_minHeight 1 -+int styleable Toolbar_buttonGravity 2 -+int styleable Toolbar_collapseContentDescription 3 -+int styleable Toolbar_collapseIcon 4 -+int styleable Toolbar_contentInsetEnd 5 -+int styleable Toolbar_contentInsetEndWithActions 6 -+int styleable Toolbar_contentInsetLeft 7 -+int styleable Toolbar_contentInsetRight 8 -+int styleable Toolbar_contentInsetStart 9 -+int styleable Toolbar_contentInsetStartWithNavigation 10 -+int styleable Toolbar_logo 11 -+int styleable Toolbar_logoDescription 12 -+int styleable Toolbar_maxButtonHeight 13 -+int styleable Toolbar_menu 14 -+int styleable Toolbar_navigationContentDescription 15 -+int styleable Toolbar_navigationIcon 16 -+int styleable Toolbar_popupTheme 17 -+int styleable Toolbar_subtitle 18 -+int styleable Toolbar_subtitleTextAppearance 19 -+int styleable Toolbar_subtitleTextColor 20 -+int styleable Toolbar_title 21 -+int styleable Toolbar_titleMargin 22 -+int styleable Toolbar_titleMarginBottom 23 -+int styleable Toolbar_titleMarginEnd 24 -+int styleable Toolbar_titleMarginStart 25 -+int styleable Toolbar_titleMarginTop 26 -+int styleable Toolbar_titleMargins 27 -+int styleable Toolbar_titleTextAppearance 28 -+int styleable Toolbar_titleTextColor 29 -+int[] styleable View { 0x10100da, 0x1010000, 0x0, 0x0, 0x0 } -+int styleable View_android_focusable 0 -+int styleable View_android_theme 1 -+int styleable View_paddingEnd 2 -+int styleable View_paddingStart 3 -+int styleable View_theme 4 -+int[] styleable ViewBackgroundHelper { 0x10100d4, 0x0, 0x0 } -+int styleable ViewBackgroundHelper_android_background 0 -+int styleable ViewBackgroundHelper_backgroundTint 1 -+int styleable ViewBackgroundHelper_backgroundTintMode 2 -+int[] styleable ViewStubCompat { 0x10100d0, 0x10100f3, 0x10100f2 } -+int styleable ViewStubCompat_android_id 0 -+int styleable ViewStubCompat_android_inflatedId 1 -+int styleable ViewStubCompat_android_layout 2 -+int xml rn_dev_preferences 0x0 -diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties b/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties -new file mode 100644 -index 0000000..fd67625 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties -@@ -0,0 +1 @@ -+#Fri Jan 16 17:47:48 CET 2026 -diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml b/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml -new file mode 100644 -index 0000000..640f653 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml -@@ -0,0 +1,2 @@ -+ -+ -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugAssets/merger.xml b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugAssets/merger.xml -new file mode 100644 -index 0000000..7784cd9 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugAssets/merger.xml -@@ -0,0 +1,2 @@ -+ -+ -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml -new file mode 100644 -index 0000000..a2f0db8 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml -@@ -0,0 +1,2 @@ -+ -+ -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugShaders/merger.xml b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugShaders/merger.xml -new file mode 100644 -index 0000000..b36c56b ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/incremental/mergeDebugShaders/merger.xml -@@ -0,0 +1,2 @@ -+ -+ -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt b/node_modules/lottie-react-native/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt -new file mode 100644 -index 0000000..78ac5b8 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt -@@ -0,0 +1,2 @@ -+R_DEF: Internal format may change without notice -+local -diff --git a/node_modules/lottie-react-native/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt b/node_modules/lottie-react-native/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt -new file mode 100644 -index 0000000..37bf81e ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt -@@ -0,0 +1,7 @@ -+1 -+2 -+4 -+5 -+6 -+7 -diff --git a/node_modules/lottie-react-native/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml b/node_modules/lottie-react-native/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml -new file mode 100644 -index 0000000..7ca7cec ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml -@@ -0,0 +1,7 @@ -+ -+ -+ -+ -+ -+ -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json b/node_modules/lottie-react-native/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json -new file mode 100644 -index 0000000..0637a08 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json -@@ -0,0 +1 @@ -+[] -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt b/node_modules/lottie-react-native/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt -new file mode 100644 -index 0000000..08f4ebe ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt -@@ -0,0 +1 @@ -+0 Warning/Error -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt b/node_modules/lottie-react-native/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt -new file mode 100644 -index 0000000..40bea4a ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt -@@ -0,0 +1,1523 @@ -+com.airbnb.android.react.lottie -+anim abc_fade_in -+anim abc_fade_out -+anim abc_grow_fade_in_from_bottom -+anim abc_popup_enter -+anim abc_popup_exit -+anim abc_shrink_fade_out_from_bottom -+anim abc_slide_in_bottom -+anim abc_slide_in_top -+anim abc_slide_out_bottom -+anim abc_slide_out_top -+anim abc_tooltip_enter -+anim abc_tooltip_exit -+anim btn_checkbox_to_checked_box_inner_merged_animation -+anim btn_checkbox_to_checked_box_outer_merged_animation -+anim btn_checkbox_to_checked_icon_null_animation -+anim btn_checkbox_to_unchecked_box_inner_merged_animation -+anim btn_checkbox_to_unchecked_check_path_merged_animation -+anim btn_checkbox_to_unchecked_icon_null_animation -+anim btn_radio_to_off_mtrl_dot_group_animation -+anim btn_radio_to_off_mtrl_ring_outer_animation -+anim btn_radio_to_off_mtrl_ring_outer_path_animation -+anim btn_radio_to_on_mtrl_dot_group_animation -+anim btn_radio_to_on_mtrl_ring_outer_animation -+anim btn_radio_to_on_mtrl_ring_outer_path_animation -+anim catalyst_fade_in -+anim catalyst_fade_out -+anim catalyst_push_up_in -+anim catalyst_push_up_out -+anim catalyst_slide_down -+anim catalyst_slide_up -+anim fragment_fast_out_extra_slow_in -+animator fragment_close_enter -+animator fragment_close_exit -+animator fragment_fade_enter -+animator fragment_fade_exit -+animator fragment_open_enter -+animator fragment_open_exit -+attr actionBarDivider -+attr actionBarItemBackground -+attr actionBarPopupTheme -+attr actionBarSize -+attr actionBarSplitStyle -+attr actionBarStyle -+attr actionBarTabBarStyle -+attr actionBarTabStyle -+attr actionBarTabTextStyle -+attr actionBarTheme -+attr actionBarWidgetTheme -+attr actionButtonStyle -+attr actionDropDownStyle -+attr actionLayout -+attr actionMenuTextAppearance -+attr actionMenuTextColor -+attr actionModeBackground -+attr actionModeCloseButtonStyle -+attr actionModeCloseContentDescription -+attr actionModeCloseDrawable -+attr actionModeCopyDrawable -+attr actionModeCutDrawable -+attr actionModeFindDrawable -+attr actionModePasteDrawable -+attr actionModePopupWindowStyle -+attr actionModeSelectAllDrawable -+attr actionModeShareDrawable -+attr actionModeSplitBackground -+attr actionModeStyle -+attr actionModeTheme -+attr actionModeWebSearchDrawable -+attr actionOverflowButtonStyle -+attr actionOverflowMenuStyle -+attr actionProviderClass -+attr actionViewClass -+attr activityChooserViewStyle -+attr actualImageResource -+attr actualImageScaleType -+attr actualImageUri -+attr alertDialogButtonGroupStyle -+attr alertDialogCenterButtons -+attr alertDialogStyle -+attr alertDialogTheme -+attr allowStacking -+attr alpha -+attr alphabeticModifiers -+attr arrowHeadLength -+attr arrowShaftLength -+attr autoCompleteTextViewStyle -+attr autoSizeMaxTextSize -+attr autoSizeMinTextSize -+attr autoSizePresetSizes -+attr autoSizeStepGranularity -+attr autoSizeTextType -+attr autofillInlineSuggestionChip -+attr autofillInlineSuggestionEndIconStyle -+attr autofillInlineSuggestionStartIconStyle -+attr autofillInlineSuggestionSubtitle -+attr autofillInlineSuggestionTitle -+attr background -+attr backgroundImage -+attr backgroundSplit -+attr backgroundStacked -+attr backgroundTint -+attr backgroundTintMode -+attr barLength -+attr borderlessButtonStyle -+attr buttonBarButtonStyle -+attr buttonBarNegativeButtonStyle -+attr buttonBarNeutralButtonStyle -+attr buttonBarPositiveButtonStyle -+attr buttonBarStyle -+attr buttonCompat -+attr buttonGravity -+attr buttonIconDimen -+attr buttonPanelSideLayout -+attr buttonStyle -+attr buttonStyleSmall -+attr buttonTint -+attr buttonTintMode -+attr checkMarkCompat -+attr checkMarkTint -+attr checkMarkTintMode -+attr checkboxStyle -+attr checkedTextViewStyle -+attr closeIcon -+attr closeItemLayout -+attr collapseContentDescription -+attr collapseIcon -+attr color -+attr colorAccent -+attr colorBackgroundFloating -+attr colorButtonNormal -+attr colorControlActivated -+attr colorControlHighlight -+attr colorControlNormal -+attr colorError -+attr colorPrimary -+attr colorPrimaryDark -+attr colorSwitchThumbNormal -+attr commitIcon -+attr contentDescription -+attr contentInsetEnd -+attr contentInsetEndWithActions -+attr contentInsetLeft -+attr contentInsetRight -+attr contentInsetStart -+attr contentInsetStartWithNavigation -+attr controlBackground -+attr customNavigationLayout -+attr defaultQueryHint -+attr dialogCornerRadius -+attr dialogPreferredPadding -+attr dialogTheme -+attr displayOptions -+attr divider -+attr dividerHorizontal -+attr dividerPadding -+attr dividerVertical -+attr drawableBottomCompat -+attr drawableEndCompat -+attr drawableLeftCompat -+attr drawableRightCompat -+attr drawableSize -+attr drawableStartCompat -+attr drawableTint -+attr drawableTintMode -+attr drawableTopCompat -+attr drawerArrowStyle -+attr dropDownListViewStyle -+attr dropdownListPreferredItemHeight -+attr editTextBackground -+attr editTextColor -+attr editTextStyle -+attr elevation -+attr emojiCompatEnabled -+attr expandActivityOverflowButtonDrawable -+attr fadeDuration -+attr failureImage -+attr failureImageScaleType -+attr firstBaselineToTopHeight -+attr font -+attr fontFamily -+attr fontProviderAuthority -+attr fontProviderCerts -+attr fontProviderFetchStrategy -+attr fontProviderFetchTimeout -+attr fontProviderPackage -+attr fontProviderQuery -+attr fontProviderSystemFontFamily -+attr fontStyle -+attr fontVariationSettings -+attr fontWeight -+attr gapBetweenBars -+attr goIcon -+attr height -+attr hideOnContentScroll -+attr homeAsUpIndicator -+attr homeLayout -+attr icon -+attr iconTint -+attr iconTintMode -+attr iconifiedByDefault -+attr imageButtonStyle -+attr indeterminateProgressStyle -+attr initialActivityCount -+attr isAutofillInlineSuggestionTheme -+attr isLightTheme -+attr itemPadding -+attr lStar -+attr lastBaselineToBottomHeight -+attr layout -+attr lineHeight -+attr listChoiceBackgroundIndicator -+attr listChoiceIndicatorMultipleAnimated -+attr listChoiceIndicatorSingleAnimated -+attr listDividerAlertDialog -+attr listItemLayout -+attr listLayout -+attr listMenuViewStyle -+attr listPopupWindowStyle -+attr listPreferredItemHeight -+attr listPreferredItemHeightLarge -+attr listPreferredItemHeightSmall -+attr listPreferredItemPaddingEnd -+attr listPreferredItemPaddingLeft -+attr listPreferredItemPaddingRight -+attr listPreferredItemPaddingStart -+attr logo -+attr logoDescription -+attr lottieAnimationViewStyle -+attr lottie_asyncUpdates -+attr lottie_autoPlay -+attr lottie_cacheComposition -+attr lottie_clipToCompositionBounds -+attr lottie_colorFilter -+attr lottie_defaultFontFileExtension -+attr lottie_enableMergePathsForKitKatAndAbove -+attr lottie_fallbackRes -+attr lottie_fileName -+attr lottie_ignoreDisabledSystemAnimations -+attr lottie_imageAssetsFolder -+attr lottie_loop -+attr lottie_progress -+attr lottie_rawRes -+attr lottie_renderMode -+attr lottie_repeatCount -+attr lottie_repeatMode -+attr lottie_speed -+attr lottie_url -+attr lottie_useCompositionFrameRate -+attr maxButtonHeight -+attr measureWithLargestChild -+attr menu -+attr multiChoiceItemLayout -+attr navigationContentDescription -+attr navigationIcon -+attr navigationMode -+attr nestedScrollViewStyle -+attr numericModifiers -+attr overlapAnchor -+attr overlayImage -+attr paddingBottomNoButtons -+attr paddingEnd -+attr paddingStart -+attr paddingTopNoTitle -+attr panelBackground -+attr panelMenuListTheme -+attr panelMenuListWidth -+attr placeholderImage -+attr placeholderImageScaleType -+attr popupMenuStyle -+attr popupTheme -+attr popupWindowStyle -+attr preserveIconSpacing -+attr pressedStateOverlayImage -+attr progressBarAutoRotateInterval -+attr progressBarImage -+attr progressBarImageScaleType -+attr progressBarPadding -+attr progressBarStyle -+attr queryBackground -+attr queryHint -+attr queryPatterns -+attr radioButtonStyle -+attr ratingBarStyle -+attr ratingBarStyleIndicator -+attr ratingBarStyleSmall -+attr retryImage -+attr retryImageScaleType -+attr roundAsCircle -+attr roundBottomEnd -+attr roundBottomLeft -+attr roundBottomRight -+attr roundBottomStart -+attr roundTopEnd -+attr roundTopLeft -+attr roundTopRight -+attr roundTopStart -+attr roundWithOverlayColor -+attr roundedCornerRadius -+attr roundingBorderColor -+attr roundingBorderPadding -+attr roundingBorderWidth -+attr searchHintIcon -+attr searchIcon -+attr searchViewStyle -+attr seekBarStyle -+attr selectableItemBackground -+attr selectableItemBackgroundBorderless -+attr shortcutMatchRequired -+attr showAsAction -+attr showDividers -+attr showText -+attr showTitle -+attr singleChoiceItemLayout -+attr spinBars -+attr spinnerDropDownItemStyle -+attr spinnerStyle -+attr splitTrack -+attr srcCompat -+attr state_above_anchor -+attr subMenuArrow -+attr submitBackground -+attr subtitle -+attr subtitleTextAppearance -+attr subtitleTextColor -+attr subtitleTextStyle -+attr suggestionRowLayout -+attr swipeRefreshLayoutProgressSpinnerBackgroundColor -+attr switchMinWidth -+attr switchPadding -+attr switchStyle -+attr switchTextAppearance -+attr textAllCaps -+attr textAppearanceLargePopupMenu -+attr textAppearanceListItem -+attr textAppearanceListItemSecondary -+attr textAppearanceListItemSmall -+attr textAppearancePopupMenuHeader -+attr textAppearanceSearchResultSubtitle -+attr textAppearanceSearchResultTitle -+attr textAppearanceSmallPopupMenu -+attr textColorAlertDialogListItem -+attr textColorSearchUrl -+attr textLocale -+attr theme -+attr thickness -+attr thumbTextPadding -+attr thumbTint -+attr thumbTintMode -+attr tickMark -+attr tickMarkTint -+attr tickMarkTintMode -+attr tint -+attr tintMode -+attr title -+attr titleMargin -+attr titleMarginBottom -+attr titleMarginEnd -+attr titleMarginStart -+attr titleMarginTop -+attr titleMargins -+attr titleTextAppearance -+attr titleTextColor -+attr titleTextStyle -+attr toolbarNavigationButtonStyle -+attr toolbarStyle -+attr tooltipForegroundColor -+attr tooltipFrameBackground -+attr tooltipText -+attr track -+attr trackTint -+attr trackTintMode -+attr ttcIndex -+attr viewAspectRatio -+attr viewInflaterClass -+attr voiceIcon -+attr windowActionBar -+attr windowActionBarOverlay -+attr windowActionModeOverlay -+attr windowFixedHeightMajor -+attr windowFixedHeightMinor -+attr windowFixedWidthMajor -+attr windowFixedWidthMinor -+attr windowMinWidthMajor -+attr windowMinWidthMinor -+attr windowNoTitle -+bool abc_action_bar_embed_tabs -+bool abc_config_actionMenuItemAllCaps -+color abc_background_cache_hint_selector_material_dark -+color abc_background_cache_hint_selector_material_light -+color abc_btn_colored_borderless_text_material -+color abc_btn_colored_text_material -+color abc_color_highlight_material -+color abc_decor_view_status_guard -+color abc_decor_view_status_guard_light -+color abc_hint_foreground_material_dark -+color abc_hint_foreground_material_light -+color abc_primary_text_disable_only_material_dark -+color abc_primary_text_disable_only_material_light -+color abc_primary_text_material_dark -+color abc_primary_text_material_light -+color abc_search_url_text -+color abc_search_url_text_normal -+color abc_search_url_text_pressed -+color abc_search_url_text_selected -+color abc_secondary_text_material_dark -+color abc_secondary_text_material_light -+color abc_tint_btn_checkable -+color abc_tint_default -+color abc_tint_edittext -+color abc_tint_seek_thumb -+color abc_tint_spinner -+color abc_tint_switch_track -+color accent_material_dark -+color accent_material_light -+color androidx_core_ripple_material_light -+color androidx_core_secondary_text_default_material_light -+color background_floating_material_dark -+color background_floating_material_light -+color background_material_dark -+color background_material_light -+color bright_foreground_disabled_material_dark -+color bright_foreground_disabled_material_light -+color bright_foreground_inverse_material_dark -+color bright_foreground_inverse_material_light -+color bright_foreground_material_dark -+color bright_foreground_material_light -+color button_material_dark -+color button_material_light -+color call_notification_answer_color -+color call_notification_decline_color -+color catalyst_logbox_background -+color catalyst_redbox_background -+color dim_foreground_disabled_material_dark -+color dim_foreground_disabled_material_light -+color dim_foreground_material_dark -+color dim_foreground_material_light -+color error_color_material_dark -+color error_color_material_light -+color foreground_material_dark -+color foreground_material_light -+color highlighted_text_material_dark -+color highlighted_text_material_light -+color material_blue_grey_800 -+color material_blue_grey_900 -+color material_blue_grey_950 -+color material_deep_teal_200 -+color material_deep_teal_500 -+color material_grey_100 -+color material_grey_300 -+color material_grey_50 -+color material_grey_600 -+color material_grey_800 -+color material_grey_850 -+color material_grey_900 -+color notification_action_color_filter -+color notification_icon_bg_color -+color primary_dark_material_dark -+color primary_dark_material_light -+color primary_material_dark -+color primary_material_light -+color primary_text_default_material_dark -+color primary_text_default_material_light -+color primary_text_disabled_material_dark -+color primary_text_disabled_material_light -+color ripple_material_dark -+color ripple_material_light -+color secondary_text_default_material_dark -+color secondary_text_default_material_light -+color secondary_text_disabled_material_dark -+color secondary_text_disabled_material_light -+color switch_thumb_disabled_material_dark -+color switch_thumb_disabled_material_light -+color switch_thumb_material_dark -+color switch_thumb_material_light -+color switch_thumb_normal_material_dark -+color switch_thumb_normal_material_light -+color tooltip_background_dark -+color tooltip_background_light -+dimen abc_action_bar_content_inset_material -+dimen abc_action_bar_content_inset_with_nav -+dimen abc_action_bar_default_height_material -+dimen abc_action_bar_default_padding_end_material -+dimen abc_action_bar_default_padding_start_material -+dimen abc_action_bar_elevation_material -+dimen abc_action_bar_icon_vertical_padding_material -+dimen abc_action_bar_overflow_padding_end_material -+dimen abc_action_bar_overflow_padding_start_material -+dimen abc_action_bar_stacked_max_height -+dimen abc_action_bar_stacked_tab_max_width -+dimen abc_action_bar_subtitle_bottom_margin_material -+dimen abc_action_bar_subtitle_top_margin_material -+dimen abc_action_button_min_height_material -+dimen abc_action_button_min_width_material -+dimen abc_action_button_min_width_overflow_material -+dimen abc_alert_dialog_button_bar_height -+dimen abc_alert_dialog_button_dimen -+dimen abc_button_inset_horizontal_material -+dimen abc_button_inset_vertical_material -+dimen abc_button_padding_horizontal_material -+dimen abc_button_padding_vertical_material -+dimen abc_cascading_menus_min_smallest_width -+dimen abc_config_prefDialogWidth -+dimen abc_control_corner_material -+dimen abc_control_inset_material -+dimen abc_control_padding_material -+dimen abc_dialog_corner_radius_material -+dimen abc_dialog_fixed_height_major -+dimen abc_dialog_fixed_height_minor -+dimen abc_dialog_fixed_width_major -+dimen abc_dialog_fixed_width_minor -+dimen abc_dialog_list_padding_bottom_no_buttons -+dimen abc_dialog_list_padding_top_no_title -+dimen abc_dialog_min_width_major -+dimen abc_dialog_min_width_minor -+dimen abc_dialog_padding_material -+dimen abc_dialog_padding_top_material -+dimen abc_dialog_title_divider_material -+dimen abc_disabled_alpha_material_dark -+dimen abc_disabled_alpha_material_light -+dimen abc_dropdownitem_icon_width -+dimen abc_dropdownitem_text_padding_left -+dimen abc_dropdownitem_text_padding_right -+dimen abc_edit_text_inset_bottom_material -+dimen abc_edit_text_inset_horizontal_material -+dimen abc_edit_text_inset_top_material -+dimen abc_floating_window_z -+dimen abc_list_item_height_large_material -+dimen abc_list_item_height_material -+dimen abc_list_item_height_small_material -+dimen abc_list_item_padding_horizontal_material -+dimen abc_panel_menu_list_width -+dimen abc_progress_bar_height_material -+dimen abc_search_view_preferred_height -+dimen abc_search_view_preferred_width -+dimen abc_seekbar_track_background_height_material -+dimen abc_seekbar_track_progress_height_material -+dimen abc_select_dialog_padding_start_material -+dimen abc_star_big -+dimen abc_star_medium -+dimen abc_star_small -+dimen abc_switch_padding -+dimen abc_text_size_body_1_material -+dimen abc_text_size_body_2_material -+dimen abc_text_size_button_material -+dimen abc_text_size_caption_material -+dimen abc_text_size_display_1_material -+dimen abc_text_size_display_2_material -+dimen abc_text_size_display_3_material -+dimen abc_text_size_display_4_material -+dimen abc_text_size_headline_material -+dimen abc_text_size_large_material -+dimen abc_text_size_medium_material -+dimen abc_text_size_menu_header_material -+dimen abc_text_size_menu_material -+dimen abc_text_size_small_material -+dimen abc_text_size_subhead_material -+dimen abc_text_size_subtitle_material_toolbar -+dimen abc_text_size_title_material -+dimen abc_text_size_title_material_toolbar -+dimen autofill_inline_suggestion_icon_size -+dimen compat_button_inset_horizontal_material -+dimen compat_button_inset_vertical_material -+dimen compat_button_padding_horizontal_material -+dimen compat_button_padding_vertical_material -+dimen compat_control_corner_material -+dimen compat_notification_large_icon_max_height -+dimen compat_notification_large_icon_max_width -+dimen disabled_alpha_material_dark -+dimen disabled_alpha_material_light -+dimen highlight_alpha_material_colored -+dimen highlight_alpha_material_dark -+dimen highlight_alpha_material_light -+dimen hint_alpha_material_dark -+dimen hint_alpha_material_light -+dimen hint_pressed_alpha_material_dark -+dimen hint_pressed_alpha_material_light -+dimen notification_action_icon_size -+dimen notification_action_text_size -+dimen notification_big_circle_margin -+dimen notification_content_margin_start -+dimen notification_large_icon_height -+dimen notification_large_icon_width -+dimen notification_main_column_padding_top -+dimen notification_media_narrow_margin -+dimen notification_right_icon_size -+dimen notification_right_side_padding_top -+dimen notification_small_icon_background_padding -+dimen notification_small_icon_size_as_large -+dimen notification_subtext_size -+dimen notification_top_pad -+dimen notification_top_pad_large_text -+dimen tooltip_corner_radius -+dimen tooltip_horizontal_padding -+dimen tooltip_margin -+dimen tooltip_precise_anchor_extra_offset -+dimen tooltip_precise_anchor_threshold -+dimen tooltip_vertical_padding -+dimen tooltip_y_offset_non_touch -+dimen tooltip_y_offset_touch -+drawable abc_ab_share_pack_mtrl_alpha -+drawable abc_action_bar_item_background_material -+drawable abc_btn_borderless_material -+drawable abc_btn_check_material -+drawable abc_btn_check_material_anim -+drawable abc_btn_check_to_on_mtrl_000 -+drawable abc_btn_check_to_on_mtrl_015 -+drawable abc_btn_colored_material -+drawable abc_btn_default_mtrl_shape -+drawable abc_btn_radio_material -+drawable abc_btn_radio_material_anim -+drawable abc_btn_radio_to_on_mtrl_000 -+drawable abc_btn_radio_to_on_mtrl_015 -+drawable abc_btn_switch_to_on_mtrl_00001 -+drawable abc_btn_switch_to_on_mtrl_00012 -+drawable abc_cab_background_internal_bg -+drawable abc_cab_background_top_material -+drawable abc_cab_background_top_mtrl_alpha -+drawable abc_control_background_material -+drawable abc_dialog_material_background -+drawable abc_edit_text_material -+drawable abc_ic_ab_back_material -+drawable abc_ic_arrow_drop_right_black_24dp -+drawable abc_ic_clear_material -+drawable abc_ic_commit_search_api_mtrl_alpha -+drawable abc_ic_go_search_api_material -+drawable abc_ic_menu_copy_mtrl_am_alpha -+drawable abc_ic_menu_cut_mtrl_alpha -+drawable abc_ic_menu_overflow_material -+drawable abc_ic_menu_paste_mtrl_am_alpha -+drawable abc_ic_menu_selectall_mtrl_alpha -+drawable abc_ic_menu_share_mtrl_alpha -+drawable abc_ic_search_api_material -+drawable abc_ic_voice_search_api_material -+drawable abc_item_background_holo_dark -+drawable abc_item_background_holo_light -+drawable abc_list_divider_material -+drawable abc_list_divider_mtrl_alpha -+drawable abc_list_focused_holo -+drawable abc_list_longpressed_holo -+drawable abc_list_pressed_holo_dark -+drawable abc_list_pressed_holo_light -+drawable abc_list_selector_background_transition_holo_dark -+drawable abc_list_selector_background_transition_holo_light -+drawable abc_list_selector_disabled_holo_dark -+drawable abc_list_selector_disabled_holo_light -+drawable abc_list_selector_holo_dark -+drawable abc_list_selector_holo_light -+drawable abc_menu_hardkey_panel_mtrl_mult -+drawable abc_popup_background_mtrl_mult -+drawable abc_ratingbar_indicator_material -+drawable abc_ratingbar_material -+drawable abc_ratingbar_small_material -+drawable abc_scrubber_control_off_mtrl_alpha -+drawable abc_scrubber_control_to_pressed_mtrl_000 -+drawable abc_scrubber_control_to_pressed_mtrl_005 -+drawable abc_scrubber_primary_mtrl_alpha -+drawable abc_scrubber_track_mtrl_alpha -+drawable abc_seekbar_thumb_material -+drawable abc_seekbar_tick_mark_material -+drawable abc_seekbar_track_material -+drawable abc_spinner_mtrl_am_alpha -+drawable abc_spinner_textfield_background_material -+drawable abc_star_black_48dp -+drawable abc_star_half_black_48dp -+drawable abc_switch_thumb_material -+drawable abc_switch_track_mtrl_alpha -+drawable abc_tab_indicator_material -+drawable abc_tab_indicator_mtrl_alpha -+drawable abc_text_cursor_material -+drawable abc_text_select_handle_left_mtrl -+drawable abc_text_select_handle_middle_mtrl -+drawable abc_text_select_handle_right_mtrl -+drawable abc_textfield_activated_mtrl_alpha -+drawable abc_textfield_default_mtrl_alpha -+drawable abc_textfield_search_activated_mtrl_alpha -+drawable abc_textfield_search_default_mtrl_alpha -+drawable abc_textfield_search_material -+drawable abc_vector_test -+drawable autofill_inline_suggestion_chip_background -+drawable btn_checkbox_checked_mtrl -+drawable btn_checkbox_checked_to_unchecked_mtrl_animation -+drawable btn_checkbox_unchecked_mtrl -+drawable btn_checkbox_unchecked_to_checked_mtrl_animation -+drawable btn_radio_off_mtrl -+drawable btn_radio_off_to_on_mtrl_animation -+drawable btn_radio_on_mtrl -+drawable btn_radio_on_to_off_mtrl_animation -+drawable ic_call_answer -+drawable ic_call_answer_low -+drawable ic_call_answer_video -+drawable ic_call_answer_video_low -+drawable ic_call_decline -+drawable ic_call_decline_low -+drawable ic_resume -+drawable notification_action_background -+drawable notification_bg -+drawable notification_bg_low -+drawable notification_bg_low_normal -+drawable notification_bg_low_pressed -+drawable notification_bg_normal -+drawable notification_bg_normal_pressed -+drawable notification_icon_background -+drawable notification_oversize_large_icon_bg -+drawable notification_template_icon_bg -+drawable notification_template_icon_low_bg -+drawable notification_tile_bg -+drawable notify_panel_notification_icon_bg -+drawable paused_in_debugger_background -+drawable paused_in_debugger_dialog_background -+drawable redbox_top_border_background -+drawable ripple_effect -+drawable test_level_drawable -+drawable tooltip_frame_dark -+drawable tooltip_frame_light -+id accessibility_action_clickable_span -+id accessibility_actions -+id accessibility_collection -+id accessibility_collection_item -+id accessibility_custom_action_0 -+id accessibility_custom_action_1 -+id accessibility_custom_action_10 -+id accessibility_custom_action_11 -+id accessibility_custom_action_12 -+id accessibility_custom_action_13 -+id accessibility_custom_action_14 -+id accessibility_custom_action_15 -+id accessibility_custom_action_16 -+id accessibility_custom_action_17 -+id accessibility_custom_action_18 -+id accessibility_custom_action_19 -+id accessibility_custom_action_2 -+id accessibility_custom_action_20 -+id accessibility_custom_action_21 -+id accessibility_custom_action_22 -+id accessibility_custom_action_23 -+id accessibility_custom_action_24 -+id accessibility_custom_action_25 -+id accessibility_custom_action_26 -+id accessibility_custom_action_27 -+id accessibility_custom_action_28 -+id accessibility_custom_action_29 -+id accessibility_custom_action_3 -+id accessibility_custom_action_30 -+id accessibility_custom_action_31 -+id accessibility_custom_action_4 -+id accessibility_custom_action_5 -+id accessibility_custom_action_6 -+id accessibility_custom_action_7 -+id accessibility_custom_action_8 -+id accessibility_custom_action_9 -+id accessibility_hint -+id accessibility_label -+id accessibility_links -+id accessibility_order -+id accessibility_order_parent -+id accessibility_role -+id accessibility_state -+id accessibility_state_expanded -+id accessibility_value -+id action_bar -+id action_bar_activity_content -+id action_bar_container -+id action_bar_root -+id action_bar_spinner -+id action_bar_subtitle -+id action_bar_title -+id action_container -+id action_context_bar -+id action_divider -+id action_image -+id action_menu_divider -+id action_menu_presenter -+id action_mode_bar -+id action_mode_bar_stub -+id action_mode_close_button -+id action_text -+id actions -+id activity_chooser_view_content -+id add -+id alertTitle -+id alert_title -+id async -+id autofill_inline_suggestion_end_icon -+id autofill_inline_suggestion_start_icon -+id autofill_inline_suggestion_subtitle -+id autofill_inline_suggestion_title -+id automatic -+id blocking -+id button -+id buttonPanel -+id button_text -+id catalyst_redbox_title -+id center -+id centerCrop -+id centerInside -+id checkbox -+id checked -+id chronometer -+id content -+id contentPanel -+id custom -+id customPanel -+id decor_content_parent -+id default_activity_button -+id dialog_button -+id disabled -+id edit_query -+id edit_text_id -+id enabled -+id expand_activities_button -+id expanded_menu -+id filter -+id fitBottomStart -+id fitCenter -+id fitEnd -+id fitStart -+id fitXY -+id focusCrop -+id forever -+id fps_text -+id fragment_container_view_tag -+id group_divider -+id hardware -+id hide_ime_id -+id home -+id icon -+id icon_group -+id image -+id info -+id invalidate_transform -+id italic -+id labelled_by -+id line1 -+id line3 -+id listMode -+id list_item -+id lottie_layer_name -+id message -+id mix_blend_mode -+id multiply -+id none -+id normal -+id notification_background -+id notification_main_column -+id notification_main_column_container -+id off -+id on -+id original_focusability -+id parentPanel -+id pointer_events -+id progress_circular -+id progress_horizontal -+id radio -+id react_test_id -+id report_drawn -+id restart -+id reverse -+id right_icon -+id right_side -+id rn_frame_file -+id rn_frame_method -+id rn_redbox_dismiss_button -+id rn_redbox_line_separator -+id rn_redbox_loading_indicator -+id rn_redbox_reload_button -+id rn_redbox_report_button -+id rn_redbox_report_label -+id rn_redbox_stack -+id role -+id screen -+id scrollIndicatorDown -+id scrollIndicatorUp -+id scrollView -+id search_badge -+id search_bar -+id search_button -+id search_close_btn -+id search_edit_frame -+id search_go_btn -+id search_mag_icon -+id search_plate -+id search_src_text -+id search_voice_btn -+id select_dialog_listview -+id shortcut -+id software -+id spacer -+id special_effects_controller_view_tag -+id split_action_bar -+id src_atop -+id src_in -+id src_over -+id submenuarrow -+id submit_area -+id tabMode -+id tag_accessibility_actions -+id tag_accessibility_clickable_spans -+id tag_accessibility_heading -+id tag_accessibility_pane_title -+id tag_on_apply_window_listener -+id tag_on_receive_content_listener -+id tag_on_receive_content_mime_types -+id tag_screen_reader_focusable -+id tag_state_description -+id tag_transition_group -+id tag_unhandled_key_event_manager -+id tag_unhandled_key_listeners -+id tag_window_insets_animation_callback -+id text -+id text2 -+id textSpacerNoButtons -+id textSpacerNoTitle -+id time -+id title -+id titleDividerNoCustom -+id title_template -+id topPanel -+id transform -+id transform_origin -+id unchecked -+id uniform -+id up -+id use_hardware_layer -+id view_clipped -+id view_tag_instance_handle -+id view_tag_native_id -+id view_tree_lifecycle_owner -+id view_tree_on_back_pressed_dispatcher_owner -+id view_tree_saved_state_registry_owner -+id view_tree_view_model_store_owner -+id visible_removing_fragment_view_tag -+id wrap_content -+integer abc_config_activityDefaultDur -+integer abc_config_activityShortDur -+integer cancel_button_image_alpha -+integer config_tooltipAnimTime -+integer react_native_dev_server_port -+integer status_bar_notification_info_maxnum -+interpolator btn_checkbox_checked_mtrl_animation_interpolator_0 -+interpolator btn_checkbox_checked_mtrl_animation_interpolator_1 -+interpolator btn_checkbox_unchecked_mtrl_animation_interpolator_0 -+interpolator btn_checkbox_unchecked_mtrl_animation_interpolator_1 -+interpolator btn_radio_to_off_mtrl_animation_interpolator_0 -+interpolator btn_radio_to_on_mtrl_animation_interpolator_0 -+interpolator fast_out_slow_in -+layout abc_action_bar_title_item -+layout abc_action_bar_up_container -+layout abc_action_menu_item_layout -+layout abc_action_menu_layout -+layout abc_action_mode_bar -+layout abc_action_mode_close_item_material -+layout abc_activity_chooser_view -+layout abc_activity_chooser_view_list_item -+layout abc_alert_dialog_button_bar_material -+layout abc_alert_dialog_material -+layout abc_alert_dialog_title_material -+layout abc_cascading_menu_item_layout -+layout abc_dialog_title_material -+layout abc_expanded_menu_layout -+layout abc_list_menu_item_checkbox -+layout abc_list_menu_item_icon -+layout abc_list_menu_item_layout -+layout abc_list_menu_item_radio -+layout abc_popup_menu_header_item_layout -+layout abc_popup_menu_item_layout -+layout abc_screen_content_include -+layout abc_screen_simple -+layout abc_screen_simple_overlay_action_mode -+layout abc_screen_toolbar -+layout abc_search_dropdown_item_icons_2line -+layout abc_search_view -+layout abc_select_dialog_material -+layout abc_tooltip -+layout alert_title_layout -+layout autofill_inline_suggestion -+layout custom_dialog -+layout dev_loading_view -+layout fps_view -+layout ime_base_split_test_activity -+layout ime_secondary_split_test_activity -+layout notification_action -+layout notification_action_tombstone -+layout notification_template_custom_big -+layout notification_template_icon_group -+layout notification_template_part_chronometer -+layout notification_template_part_time -+layout paused_in_debugger_view -+layout redbox_item_frame -+layout redbox_item_title -+layout redbox_view -+layout select_dialog_item_material -+layout select_dialog_multichoice_material -+layout select_dialog_singlechoice_material -+layout support_simple_spinner_dropdown_item -+string abc_action_bar_home_description -+string abc_action_bar_up_description -+string abc_action_menu_overflow_description -+string abc_action_mode_done -+string abc_activity_chooser_view_see_all -+string abc_activitychooserview_choose_application -+string abc_capital_off -+string abc_capital_on -+string abc_menu_alt_shortcut_label -+string abc_menu_ctrl_shortcut_label -+string abc_menu_delete_shortcut_label -+string abc_menu_enter_shortcut_label -+string abc_menu_function_shortcut_label -+string abc_menu_meta_shortcut_label -+string abc_menu_shift_shortcut_label -+string abc_menu_space_shortcut_label -+string abc_menu_sym_shortcut_label -+string abc_prepend_shortcut_label -+string abc_search_hint -+string abc_searchview_description_clear -+string abc_searchview_description_query -+string abc_searchview_description_search -+string abc_searchview_description_submit -+string abc_searchview_description_voice -+string abc_shareactionprovider_share_with -+string abc_shareactionprovider_share_with_application -+string abc_toolbar_collapse_description -+string alert_description -+string call_notification_answer_action -+string call_notification_answer_video_action -+string call_notification_decline_action -+string call_notification_hang_up_action -+string call_notification_incoming_text -+string call_notification_ongoing_text -+string call_notification_screening_text -+string catalyst_change_bundle_location -+string catalyst_change_bundle_location_apply -+string catalyst_change_bundle_location_cancel -+string catalyst_change_bundle_location_input_hint -+string catalyst_change_bundle_location_input_label -+string catalyst_change_bundle_location_instructions -+string catalyst_copy_button -+string catalyst_debug_connecting -+string catalyst_debug_error -+string catalyst_debug_open -+string catalyst_debug_open_disabled -+string catalyst_dev_menu_header -+string catalyst_dev_menu_sub_header -+string catalyst_dismiss_button -+string catalyst_heap_capture -+string catalyst_hot_reloading -+string catalyst_hot_reloading_auto_disable -+string catalyst_hot_reloading_auto_enable -+string catalyst_hot_reloading_stop -+string catalyst_inspector_toggle -+string catalyst_loading_from_url -+string catalyst_open_debugger_error -+string catalyst_perf_monitor -+string catalyst_perf_monitor_stop -+string catalyst_performance_background -+string catalyst_performance_cdp -+string catalyst_performance_disable -+string catalyst_performance_disabled -+string catalyst_performance_enable -+string catalyst_reload -+string catalyst_reload_button -+string catalyst_reload_error -+string catalyst_report_button -+string catalyst_sample_profiler_toggle -+string catalyst_settings -+string catalyst_settings_title -+string combobox_description -+string header_description -+string image_description -+string imagebutton_description -+string link_description -+string menu_description -+string menubar_description -+string menuitem_description -+string progressbar_description -+string radiogroup_description -+string react_native_dev_server_ip -+string rn_tab_description -+string scrollbar_description -+string search_menu_title -+string spinbutton_description -+string state_busy_description -+string state_collapsed_description -+string state_expanded_description -+string state_mixed_description -+string state_off_description -+string state_on_description -+string state_unselected_description -+string status_bar_notification_info_overflow -+string summary_description -+string tablist_description -+string timer_description -+string toolbar_description -+style AlertDialog_AppCompat -+style AlertDialog_AppCompat_Light -+style Animation_AppCompat_Dialog -+style Animation_AppCompat_DropDownUp -+style Animation_AppCompat_Tooltip -+style Animation_Catalyst_LogBox -+style Animation_Catalyst_RedBox -+style Base_AlertDialog_AppCompat -+style Base_AlertDialog_AppCompat_Light -+style Base_Animation_AppCompat_Dialog -+style Base_Animation_AppCompat_DropDownUp -+style Base_Animation_AppCompat_Tooltip -+style Base_DialogWindowTitleBackground_AppCompat -+style Base_DialogWindowTitle_AppCompat -+style Base_TextAppearance_AppCompat -+style Base_TextAppearance_AppCompat_Body1 -+style Base_TextAppearance_AppCompat_Body2 -+style Base_TextAppearance_AppCompat_Button -+style Base_TextAppearance_AppCompat_Caption -+style Base_TextAppearance_AppCompat_Display1 -+style Base_TextAppearance_AppCompat_Display2 -+style Base_TextAppearance_AppCompat_Display3 -+style Base_TextAppearance_AppCompat_Display4 -+style Base_TextAppearance_AppCompat_Headline -+style Base_TextAppearance_AppCompat_Inverse -+style Base_TextAppearance_AppCompat_Large -+style Base_TextAppearance_AppCompat_Large_Inverse -+style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large -+style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small -+style Base_TextAppearance_AppCompat_Medium -+style Base_TextAppearance_AppCompat_Medium_Inverse -+style Base_TextAppearance_AppCompat_Menu -+style Base_TextAppearance_AppCompat_SearchResult -+style Base_TextAppearance_AppCompat_SearchResult_Subtitle -+style Base_TextAppearance_AppCompat_SearchResult_Title -+style Base_TextAppearance_AppCompat_Small -+style Base_TextAppearance_AppCompat_Small_Inverse -+style Base_TextAppearance_AppCompat_Subhead -+style Base_TextAppearance_AppCompat_Subhead_Inverse -+style Base_TextAppearance_AppCompat_Title -+style Base_TextAppearance_AppCompat_Title_Inverse -+style Base_TextAppearance_AppCompat_Tooltip -+style Base_TextAppearance_AppCompat_Widget_ActionBar_Menu -+style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle -+style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse -+style Base_TextAppearance_AppCompat_Widget_ActionBar_Title -+style Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse -+style Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle -+style Base_TextAppearance_AppCompat_Widget_ActionMode_Title -+style Base_TextAppearance_AppCompat_Widget_Button -+style Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored -+style Base_TextAppearance_AppCompat_Widget_Button_Colored -+style Base_TextAppearance_AppCompat_Widget_Button_Inverse -+style Base_TextAppearance_AppCompat_Widget_DropDownItem -+style Base_TextAppearance_AppCompat_Widget_PopupMenu_Header -+style Base_TextAppearance_AppCompat_Widget_PopupMenu_Large -+style Base_TextAppearance_AppCompat_Widget_PopupMenu_Small -+style Base_TextAppearance_AppCompat_Widget_Switch -+style Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem -+style Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item -+style Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle -+style Base_TextAppearance_Widget_AppCompat_Toolbar_Title -+style Base_ThemeOverlay_AppCompat -+style Base_ThemeOverlay_AppCompat_ActionBar -+style Base_ThemeOverlay_AppCompat_Dark -+style Base_ThemeOverlay_AppCompat_Dark_ActionBar -+style Base_ThemeOverlay_AppCompat_Dialog -+style Base_ThemeOverlay_AppCompat_Dialog_Alert -+style Base_ThemeOverlay_AppCompat_Light -+style Base_Theme_AppCompat -+style Base_Theme_AppCompat_CompactMenu -+style Base_Theme_AppCompat_Dialog -+style Base_Theme_AppCompat_DialogWhenLarge -+style Base_Theme_AppCompat_Dialog_Alert -+style Base_Theme_AppCompat_Dialog_FixedSize -+style Base_Theme_AppCompat_Dialog_MinWidth -+style Base_Theme_AppCompat_Light -+style Base_Theme_AppCompat_Light_DarkActionBar -+style Base_Theme_AppCompat_Light_Dialog -+style Base_Theme_AppCompat_Light_DialogWhenLarge -+style Base_Theme_AppCompat_Light_Dialog_Alert -+style Base_Theme_AppCompat_Light_Dialog_FixedSize -+style Base_Theme_AppCompat_Light_Dialog_MinWidth -+style Base_V21_ThemeOverlay_AppCompat_Dialog -+style Base_V21_Theme_AppCompat -+style Base_V21_Theme_AppCompat_Dialog -+style Base_V21_Theme_AppCompat_Light -+style Base_V21_Theme_AppCompat_Light_Dialog -+style Base_V22_Theme_AppCompat -+style Base_V22_Theme_AppCompat_Light -+style Base_V23_Theme_AppCompat -+style Base_V23_Theme_AppCompat_Light -+style Base_V26_Theme_AppCompat -+style Base_V26_Theme_AppCompat_Light -+style Base_V26_Widget_AppCompat_Toolbar -+style Base_V28_Theme_AppCompat -+style Base_V28_Theme_AppCompat_Light -+style Base_V7_ThemeOverlay_AppCompat_Dialog -+style Base_V7_Theme_AppCompat -+style Base_V7_Theme_AppCompat_Dialog -+style Base_V7_Theme_AppCompat_Light -+style Base_V7_Theme_AppCompat_Light_Dialog -+style Base_V7_Widget_AppCompat_AutoCompleteTextView -+style Base_V7_Widget_AppCompat_EditText -+style Base_V7_Widget_AppCompat_Toolbar -+style Base_Widget_AppCompat_ActionBar -+style Base_Widget_AppCompat_ActionBar_Solid -+style Base_Widget_AppCompat_ActionBar_TabBar -+style Base_Widget_AppCompat_ActionBar_TabText -+style Base_Widget_AppCompat_ActionBar_TabView -+style Base_Widget_AppCompat_ActionButton -+style Base_Widget_AppCompat_ActionButton_CloseMode -+style Base_Widget_AppCompat_ActionButton_Overflow -+style Base_Widget_AppCompat_ActionMode -+style Base_Widget_AppCompat_ActivityChooserView -+style Base_Widget_AppCompat_AutoCompleteTextView -+style Base_Widget_AppCompat_Button -+style Base_Widget_AppCompat_ButtonBar -+style Base_Widget_AppCompat_ButtonBar_AlertDialog -+style Base_Widget_AppCompat_Button_Borderless -+style Base_Widget_AppCompat_Button_Borderless_Colored -+style Base_Widget_AppCompat_Button_ButtonBar_AlertDialog -+style Base_Widget_AppCompat_Button_Colored -+style Base_Widget_AppCompat_Button_Small -+style Base_Widget_AppCompat_CompoundButton_CheckBox -+style Base_Widget_AppCompat_CompoundButton_RadioButton -+style Base_Widget_AppCompat_CompoundButton_Switch -+style Base_Widget_AppCompat_DrawerArrowToggle -+style Base_Widget_AppCompat_DrawerArrowToggle_Common -+style Base_Widget_AppCompat_DropDownItem_Spinner -+style Base_Widget_AppCompat_EditText -+style Base_Widget_AppCompat_ImageButton -+style Base_Widget_AppCompat_Light_ActionBar -+style Base_Widget_AppCompat_Light_ActionBar_Solid -+style Base_Widget_AppCompat_Light_ActionBar_TabBar -+style Base_Widget_AppCompat_Light_ActionBar_TabText -+style Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse -+style Base_Widget_AppCompat_Light_ActionBar_TabView -+style Base_Widget_AppCompat_Light_PopupMenu -+style Base_Widget_AppCompat_Light_PopupMenu_Overflow -+style Base_Widget_AppCompat_ListMenuView -+style Base_Widget_AppCompat_ListPopupWindow -+style Base_Widget_AppCompat_ListView -+style Base_Widget_AppCompat_ListView_DropDown -+style Base_Widget_AppCompat_ListView_Menu -+style Base_Widget_AppCompat_PopupMenu -+style Base_Widget_AppCompat_PopupMenu_Overflow -+style Base_Widget_AppCompat_PopupWindow -+style Base_Widget_AppCompat_ProgressBar -+style Base_Widget_AppCompat_ProgressBar_Horizontal -+style Base_Widget_AppCompat_RatingBar -+style Base_Widget_AppCompat_RatingBar_Indicator -+style Base_Widget_AppCompat_RatingBar_Small -+style Base_Widget_AppCompat_SearchView -+style Base_Widget_AppCompat_SearchView_ActionBar -+style Base_Widget_AppCompat_SeekBar -+style Base_Widget_AppCompat_SeekBar_Discrete -+style Base_Widget_AppCompat_Spinner -+style Base_Widget_AppCompat_Spinner_Underlined -+style Base_Widget_AppCompat_TextView -+style Base_Widget_AppCompat_TextView_SpinnerItem -+style Base_Widget_AppCompat_Toolbar -+style Base_Widget_AppCompat_Toolbar_Button_Navigation -+style CalendarDatePickerDialog -+style CalendarDatePickerStyle -+style DialogAnimationFade -+style DialogAnimationSlide -+style NoAnimationDialog -+style Platform_AppCompat -+style Platform_AppCompat_Light -+style Platform_ThemeOverlay_AppCompat -+style Platform_ThemeOverlay_AppCompat_Dark -+style Platform_ThemeOverlay_AppCompat_Light -+style Platform_V21_AppCompat -+style Platform_V21_AppCompat_Light -+style Platform_V25_AppCompat -+style Platform_V25_AppCompat_Light -+style Platform_Widget_AppCompat_Spinner -+style RtlOverlay_DialogWindowTitle_AppCompat -+style RtlOverlay_Widget_AppCompat_ActionBar_TitleItem -+style RtlOverlay_Widget_AppCompat_DialogTitle_Icon -+style RtlOverlay_Widget_AppCompat_PopupMenuItem -+style RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup -+style RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut -+style RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow -+style RtlOverlay_Widget_AppCompat_PopupMenuItem_Text -+style RtlOverlay_Widget_AppCompat_PopupMenuItem_Title -+style RtlOverlay_Widget_AppCompat_SearchView_MagIcon -+style RtlOverlay_Widget_AppCompat_Search_DropDown -+style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 -+style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 -+style RtlOverlay_Widget_AppCompat_Search_DropDown_Query -+style RtlOverlay_Widget_AppCompat_Search_DropDown_Text -+style RtlUnderlay_Widget_AppCompat_ActionButton -+style RtlUnderlay_Widget_AppCompat_ActionButton_Overflow -+style SpinnerDatePickerDialog -+style SpinnerDatePickerStyle -+style TextAppearance_AppCompat -+style TextAppearance_AppCompat_Body1 -+style TextAppearance_AppCompat_Body2 -+style TextAppearance_AppCompat_Button -+style TextAppearance_AppCompat_Caption -+style TextAppearance_AppCompat_Display1 -+style TextAppearance_AppCompat_Display2 -+style TextAppearance_AppCompat_Display3 -+style TextAppearance_AppCompat_Display4 -+style TextAppearance_AppCompat_Headline -+style TextAppearance_AppCompat_Inverse -+style TextAppearance_AppCompat_Large -+style TextAppearance_AppCompat_Large_Inverse -+style TextAppearance_AppCompat_Light_SearchResult_Subtitle -+style TextAppearance_AppCompat_Light_SearchResult_Title -+style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large -+style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small -+style TextAppearance_AppCompat_Medium -+style TextAppearance_AppCompat_Medium_Inverse -+style TextAppearance_AppCompat_Menu -+style TextAppearance_AppCompat_SearchResult_Subtitle -+style TextAppearance_AppCompat_SearchResult_Title -+style TextAppearance_AppCompat_Small -+style TextAppearance_AppCompat_Small_Inverse -+style TextAppearance_AppCompat_Subhead -+style TextAppearance_AppCompat_Subhead_Inverse -+style TextAppearance_AppCompat_Title -+style TextAppearance_AppCompat_Title_Inverse -+style TextAppearance_AppCompat_Tooltip -+style TextAppearance_AppCompat_Widget_ActionBar_Menu -+style TextAppearance_AppCompat_Widget_ActionBar_Subtitle -+style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse -+style TextAppearance_AppCompat_Widget_ActionBar_Title -+style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse -+style TextAppearance_AppCompat_Widget_ActionMode_Subtitle -+style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse -+style TextAppearance_AppCompat_Widget_ActionMode_Title -+style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse -+style TextAppearance_AppCompat_Widget_Button -+style TextAppearance_AppCompat_Widget_Button_Borderless_Colored -+style TextAppearance_AppCompat_Widget_Button_Colored -+style TextAppearance_AppCompat_Widget_Button_Inverse -+style TextAppearance_AppCompat_Widget_DropDownItem -+style TextAppearance_AppCompat_Widget_PopupMenu_Header -+style TextAppearance_AppCompat_Widget_PopupMenu_Large -+style TextAppearance_AppCompat_Widget_PopupMenu_Small -+style TextAppearance_AppCompat_Widget_Switch -+style TextAppearance_AppCompat_Widget_TextView_SpinnerItem -+style TextAppearance_Compat_Notification -+style TextAppearance_Compat_Notification_Info -+style TextAppearance_Compat_Notification_Line2 -+style TextAppearance_Compat_Notification_Time -+style TextAppearance_Compat_Notification_Title -+style TextAppearance_Widget_AppCompat_ExpandedMenu_Item -+style TextAppearance_Widget_AppCompat_Toolbar_Subtitle -+style TextAppearance_Widget_AppCompat_Toolbar_Title -+style Theme -+style ThemeOverlay_AppCompat -+style ThemeOverlay_AppCompat_ActionBar -+style ThemeOverlay_AppCompat_Dark -+style ThemeOverlay_AppCompat_Dark_ActionBar -+style ThemeOverlay_AppCompat_DayNight -+style ThemeOverlay_AppCompat_DayNight_ActionBar -+style ThemeOverlay_AppCompat_Dialog -+style ThemeOverlay_AppCompat_Dialog_Alert -+style ThemeOverlay_AppCompat_Light -+style Theme_AppCompat -+style Theme_AppCompat_CompactMenu -+style Theme_AppCompat_DayNight -+style Theme_AppCompat_DayNight_DarkActionBar -+style Theme_AppCompat_DayNight_Dialog -+style Theme_AppCompat_DayNight_DialogWhenLarge -+style Theme_AppCompat_DayNight_Dialog_Alert -+style Theme_AppCompat_DayNight_Dialog_MinWidth -+style Theme_AppCompat_DayNight_NoActionBar -+style Theme_AppCompat_Dialog -+style Theme_AppCompat_DialogWhenLarge -+style Theme_AppCompat_Dialog_Alert -+style Theme_AppCompat_Dialog_MinWidth -+style Theme_AppCompat_Empty -+style Theme_AppCompat_Light -+style Theme_AppCompat_Light_DarkActionBar -+style Theme_AppCompat_Light_Dialog -+style Theme_AppCompat_Light_DialogWhenLarge -+style Theme_AppCompat_Light_Dialog_Alert -+style Theme_AppCompat_Light_Dialog_MinWidth -+style Theme_AppCompat_Light_NoActionBar -+style Theme_AppCompat_NoActionBar -+style Theme_AutofillInlineSuggestion -+style Theme_Catalyst -+style Theme_Catalyst_LogBox -+style Theme_Catalyst_RedBox -+style Theme_FullScreenDialog -+style Theme_FullScreenDialogAnimatedFade -+style Theme_FullScreenDialogAnimatedSlide -+style Theme_ReactNative_AppCompat_Light -+style Theme_ReactNative_AppCompat_Light_NoActionBar_FullScreen -+style Theme_ReactNative_TextInput_DefaultBackground -+style Widget_AppCompat_ActionBar -+style Widget_AppCompat_ActionBar_Solid -+style Widget_AppCompat_ActionBar_TabBar -+style Widget_AppCompat_ActionBar_TabText -+style Widget_AppCompat_ActionBar_TabView -+style Widget_AppCompat_ActionButton -+style Widget_AppCompat_ActionButton_CloseMode -+style Widget_AppCompat_ActionButton_Overflow -+style Widget_AppCompat_ActionMode -+style Widget_AppCompat_ActivityChooserView -+style Widget_AppCompat_AutoCompleteTextView -+style Widget_AppCompat_Button -+style Widget_AppCompat_ButtonBar -+style Widget_AppCompat_ButtonBar_AlertDialog -+style Widget_AppCompat_Button_Borderless -+style Widget_AppCompat_Button_Borderless_Colored -+style Widget_AppCompat_Button_ButtonBar_AlertDialog -+style Widget_AppCompat_Button_Colored -+style Widget_AppCompat_Button_Small -+style Widget_AppCompat_CompoundButton_CheckBox -+style Widget_AppCompat_CompoundButton_RadioButton -+style Widget_AppCompat_CompoundButton_Switch -+style Widget_AppCompat_DrawerArrowToggle -+style Widget_AppCompat_DropDownItem_Spinner -+style Widget_AppCompat_EditText -+style Widget_AppCompat_ImageButton -+style Widget_AppCompat_Light_ActionBar -+style Widget_AppCompat_Light_ActionBar_Solid -+style Widget_AppCompat_Light_ActionBar_Solid_Inverse -+style Widget_AppCompat_Light_ActionBar_TabBar -+style Widget_AppCompat_Light_ActionBar_TabBar_Inverse -+style Widget_AppCompat_Light_ActionBar_TabText -+style Widget_AppCompat_Light_ActionBar_TabText_Inverse -+style Widget_AppCompat_Light_ActionBar_TabView -+style Widget_AppCompat_Light_ActionBar_TabView_Inverse -+style Widget_AppCompat_Light_ActionButton -+style Widget_AppCompat_Light_ActionButton_CloseMode -+style Widget_AppCompat_Light_ActionButton_Overflow -+style Widget_AppCompat_Light_ActionMode_Inverse -+style Widget_AppCompat_Light_ActivityChooserView -+style Widget_AppCompat_Light_AutoCompleteTextView -+style Widget_AppCompat_Light_DropDownItem_Spinner -+style Widget_AppCompat_Light_ListPopupWindow -+style Widget_AppCompat_Light_ListView_DropDown -+style Widget_AppCompat_Light_PopupMenu -+style Widget_AppCompat_Light_PopupMenu_Overflow -+style Widget_AppCompat_Light_SearchView -+style Widget_AppCompat_Light_Spinner_DropDown_ActionBar -+style Widget_AppCompat_ListMenuView -+style Widget_AppCompat_ListPopupWindow -+style Widget_AppCompat_ListView -+style Widget_AppCompat_ListView_DropDown -+style Widget_AppCompat_ListView_Menu -+style Widget_AppCompat_PopupMenu -+style Widget_AppCompat_PopupMenu_Overflow -+style Widget_AppCompat_PopupWindow -+style Widget_AppCompat_ProgressBar -+style Widget_AppCompat_ProgressBar_Horizontal -+style Widget_AppCompat_RatingBar -+style Widget_AppCompat_RatingBar_Indicator -+style Widget_AppCompat_RatingBar_Small -+style Widget_AppCompat_SearchView -+style Widget_AppCompat_SearchView_ActionBar -+style Widget_AppCompat_SeekBar -+style Widget_AppCompat_SeekBar_Discrete -+style Widget_AppCompat_Spinner -+style Widget_AppCompat_Spinner_DropDown -+style Widget_AppCompat_Spinner_DropDown_ActionBar -+style Widget_AppCompat_Spinner_Underlined -+style Widget_AppCompat_TextView -+style Widget_AppCompat_TextView_SpinnerItem -+style Widget_AppCompat_Toolbar -+style Widget_AppCompat_Toolbar_Button_Navigation -+style Widget_Autofill -+style Widget_Autofill_InlineSuggestionChip -+style Widget_Autofill_InlineSuggestionEndIconStyle -+style Widget_Autofill_InlineSuggestionStartIconStyle -+style Widget_Autofill_InlineSuggestionSubtitle -+style Widget_Autofill_InlineSuggestionTitle -+style Widget_Compat_NotificationActionContainer -+style Widget_Compat_NotificationActionText -+style redboxButton -+styleable ActionBar background backgroundSplit backgroundStacked contentInsetEnd contentInsetEndWithActions contentInsetLeft contentInsetRight contentInsetStart contentInsetStartWithNavigation customNavigationLayout displayOptions divider elevation height hideOnContentScroll homeAsUpIndicator homeLayout icon indeterminateProgressStyle itemPadding logo navigationMode popupTheme progressBarPadding progressBarStyle subtitle subtitleTextStyle title titleTextStyle -+styleable ActionBarLayout android_layout_gravity -+styleable ActionMenuItemView android_minWidth -+styleable ActionMenuView -+styleable ActionMode background backgroundSplit closeItemLayout height subtitleTextStyle titleTextStyle -+styleable ActivityChooserView expandActivityOverflowButtonDrawable initialActivityCount -+styleable AlertDialog android_layout buttonIconDimen buttonPanelSideLayout listItemLayout listLayout multiChoiceItemLayout showTitle singleChoiceItemLayout -+styleable AnimatedStateListDrawableCompat android_constantSize android_dither android_enterFadeDuration android_exitFadeDuration android_variablePadding android_visible -+styleable AnimatedStateListDrawableItem android_drawable android_id -+styleable AnimatedStateListDrawableTransition android_drawable android_fromId android_reversible android_toId -+styleable AppCompatEmojiHelper -+styleable AppCompatImageView android_src srcCompat tint tintMode -+styleable AppCompatSeekBar android_thumb tickMark tickMarkTint tickMarkTintMode -+styleable AppCompatTextHelper android_drawableBottom android_drawableEnd android_drawableLeft android_drawableRight android_drawableStart android_drawableTop android_textAppearance -+styleable AppCompatTextView android_textAppearance autoSizeMaxTextSize autoSizeMinTextSize autoSizePresetSizes autoSizeStepGranularity autoSizeTextType drawableBottomCompat drawableEndCompat drawableLeftCompat drawableRightCompat drawableStartCompat drawableTint drawableTintMode drawableTopCompat emojiCompatEnabled firstBaselineToTopHeight fontFamily fontVariationSettings lastBaselineToBottomHeight lineHeight textAllCaps textLocale -+styleable AppCompatTheme actionBarDivider actionBarItemBackground actionBarPopupTheme actionBarSize actionBarSplitStyle actionBarStyle actionBarTabBarStyle actionBarTabStyle actionBarTabTextStyle actionBarTheme actionBarWidgetTheme actionButtonStyle actionDropDownStyle actionMenuTextAppearance actionMenuTextColor actionModeBackground actionModeCloseButtonStyle actionModeCloseContentDescription actionModeCloseDrawable actionModeCopyDrawable actionModeCutDrawable actionModeFindDrawable actionModePasteDrawable actionModePopupWindowStyle actionModeSelectAllDrawable actionModeShareDrawable actionModeSplitBackground actionModeStyle actionModeTheme actionModeWebSearchDrawable actionOverflowButtonStyle actionOverflowMenuStyle activityChooserViewStyle alertDialogButtonGroupStyle alertDialogCenterButtons alertDialogStyle alertDialogTheme android_windowAnimationStyle android_windowIsFloating autoCompleteTextViewStyle borderlessButtonStyle buttonBarButtonStyle buttonBarNegativeButtonStyle buttonBarNeutralButtonStyle buttonBarPositiveButtonStyle buttonBarStyle buttonStyle buttonStyleSmall checkboxStyle checkedTextViewStyle colorAccent colorBackgroundFloating colorButtonNormal colorControlActivated colorControlHighlight colorControlNormal colorError colorPrimary colorPrimaryDark colorSwitchThumbNormal controlBackground dialogCornerRadius dialogPreferredPadding dialogTheme dividerHorizontal dividerVertical dropDownListViewStyle dropdownListPreferredItemHeight editTextBackground editTextColor editTextStyle homeAsUpIndicator imageButtonStyle listChoiceBackgroundIndicator listChoiceIndicatorMultipleAnimated listChoiceIndicatorSingleAnimated listDividerAlertDialog listMenuViewStyle listPopupWindowStyle listPreferredItemHeight listPreferredItemHeightLarge listPreferredItemHeightSmall listPreferredItemPaddingEnd listPreferredItemPaddingLeft listPreferredItemPaddingRight listPreferredItemPaddingStart panelBackground panelMenuListTheme panelMenuListWidth popupMenuStyle popupWindowStyle radioButtonStyle ratingBarStyle ratingBarStyleIndicator ratingBarStyleSmall searchViewStyle seekBarStyle selectableItemBackground selectableItemBackgroundBorderless spinnerDropDownItemStyle spinnerStyle switchStyle textAppearanceLargePopupMenu textAppearanceListItem textAppearanceListItemSecondary textAppearanceListItemSmall textAppearancePopupMenuHeader textAppearanceSearchResultSubtitle textAppearanceSearchResultTitle textAppearanceSmallPopupMenu textColorAlertDialogListItem textColorSearchUrl toolbarNavigationButtonStyle toolbarStyle tooltipForegroundColor tooltipFrameBackground viewInflaterClass windowActionBar windowActionBarOverlay windowActionModeOverlay windowFixedHeightMajor windowFixedHeightMinor windowFixedWidthMajor windowFixedWidthMinor windowMinWidthMajor windowMinWidthMinor windowNoTitle -+styleable Autofill_InlineSuggestion autofillInlineSuggestionChip autofillInlineSuggestionEndIconStyle autofillInlineSuggestionStartIconStyle autofillInlineSuggestionSubtitle autofillInlineSuggestionTitle isAutofillInlineSuggestionTheme -+styleable ButtonBarLayout allowStacking -+styleable Capability queryPatterns shortcutMatchRequired -+styleable CheckedTextView android_checkMark checkMarkCompat checkMarkTint checkMarkTintMode -+styleable ColorStateListItem alpha android_alpha android_color android_lStar lStar -+styleable CompoundButton android_button buttonCompat buttonTint buttonTintMode -+styleable DrawerArrowToggle arrowHeadLength arrowShaftLength barLength color drawableSize gapBetweenBars spinBars thickness -+styleable FontFamily fontProviderAuthority fontProviderCerts fontProviderFetchStrategy fontProviderFetchTimeout fontProviderPackage fontProviderQuery fontProviderSystemFontFamily -+styleable FontFamilyFont android_font android_fontStyle android_fontVariationSettings android_fontWeight android_ttcIndex font fontStyle fontVariationSettings fontWeight ttcIndex -+styleable Fragment android_id android_name android_tag -+styleable FragmentContainerView android_name android_tag -+styleable GenericDraweeHierarchy actualImageScaleType backgroundImage fadeDuration failureImage failureImageScaleType overlayImage placeholderImage placeholderImageScaleType pressedStateOverlayImage progressBarAutoRotateInterval progressBarImage progressBarImageScaleType retryImage retryImageScaleType roundAsCircle roundBottomEnd roundBottomLeft roundBottomRight roundBottomStart roundTopEnd roundTopLeft roundTopRight roundTopStart roundWithOverlayColor roundedCornerRadius roundingBorderColor roundingBorderPadding roundingBorderWidth viewAspectRatio -+styleable GradientColor android_centerColor android_centerX android_centerY android_endColor android_endX android_endY android_gradientRadius android_startColor android_startX android_startY android_tileMode android_type -+styleable GradientColorItem android_color android_offset -+styleable LinearLayoutCompat android_baselineAligned android_baselineAlignedChildIndex android_gravity android_orientation android_weightSum divider dividerPadding measureWithLargestChild showDividers -+styleable LinearLayoutCompat_Layout android_layout_gravity android_layout_height android_layout_weight android_layout_width -+styleable ListPopupWindow android_dropDownHorizontalOffset android_dropDownVerticalOffset -+styleable LottieAnimationView lottie_asyncUpdates lottie_autoPlay lottie_cacheComposition lottie_clipToCompositionBounds lottie_colorFilter lottie_defaultFontFileExtension lottie_enableMergePathsForKitKatAndAbove lottie_fallbackRes lottie_fileName lottie_ignoreDisabledSystemAnimations lottie_imageAssetsFolder lottie_loop lottie_progress lottie_rawRes lottie_renderMode lottie_repeatCount lottie_repeatMode lottie_speed lottie_url lottie_useCompositionFrameRate -+styleable MenuGroup android_checkableBehavior android_enabled android_id android_menuCategory android_orderInCategory android_visible -+styleable MenuItem actionLayout actionProviderClass actionViewClass alphabeticModifiers android_alphabeticShortcut android_checkable android_checked android_enabled android_icon android_id android_menuCategory android_numericShortcut android_onClick android_orderInCategory android_title android_titleCondensed android_visible contentDescription iconTint iconTintMode numericModifiers showAsAction tooltipText -+styleable MenuView android_headerBackground android_horizontalDivider android_itemBackground android_itemIconDisabledAlpha android_itemTextAppearance android_verticalDivider android_windowAnimationStyle preserveIconSpacing subMenuArrow -+styleable PopupWindow android_popupAnimationStyle android_popupBackground overlapAnchor -+styleable PopupWindowBackgroundState state_above_anchor -+styleable RecycleListView paddingBottomNoButtons paddingTopNoTitle -+styleable SearchView android_focusable android_imeOptions android_inputType android_maxWidth closeIcon commitIcon defaultQueryHint goIcon iconifiedByDefault layout queryBackground queryHint searchHintIcon searchIcon submitBackground suggestionRowLayout voiceIcon -+styleable SimpleDraweeView actualImageResource actualImageUri backgroundImage fadeDuration failureImage failureImageScaleType overlayImage placeholderImage placeholderImageScaleType pressedStateOverlayImage progressBarAutoRotateInterval progressBarImage progressBarImageScaleType retryImage retryImageScaleType roundAsCircle roundBottomEnd roundBottomLeft roundBottomRight roundBottomStart roundTopEnd roundTopLeft roundTopRight roundTopStart roundWithOverlayColor roundedCornerRadius roundingBorderColor roundingBorderPadding roundingBorderWidth viewAspectRatio -+styleable Spinner android_dropDownWidth android_entries android_popupBackground android_prompt popupTheme -+styleable StateListDrawable android_constantSize android_dither android_enterFadeDuration android_exitFadeDuration android_variablePadding android_visible -+styleable StateListDrawableItem android_drawable -+styleable SwipeRefreshLayout swipeRefreshLayoutProgressSpinnerBackgroundColor -+styleable SwitchCompat android_textOff android_textOn android_thumb showText splitTrack switchMinWidth switchPadding switchTextAppearance thumbTextPadding thumbTint thumbTintMode track trackTint trackTintMode -+styleable TextAppearance android_fontFamily android_shadowColor android_shadowDx android_shadowDy android_shadowRadius android_textColor android_textColorHint android_textColorLink android_textFontWeight android_textSize android_textStyle android_typeface fontFamily fontVariationSettings textAllCaps textLocale -+styleable Toolbar android_gravity android_minHeight buttonGravity collapseContentDescription collapseIcon contentInsetEnd contentInsetEndWithActions contentInsetLeft contentInsetRight contentInsetStart contentInsetStartWithNavigation logo logoDescription maxButtonHeight menu navigationContentDescription navigationIcon popupTheme subtitle subtitleTextAppearance subtitleTextColor title titleMargin titleMarginBottom titleMarginEnd titleMarginStart titleMarginTop titleMargins titleTextAppearance titleTextColor -+styleable View android_focusable android_theme paddingEnd paddingStart theme -+styleable ViewBackgroundHelper android_background backgroundTint backgroundTintMode -+styleable ViewStubCompat android_id android_inflatedId android_layout -+xml rn_dev_preferences -diff --git a/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt b/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt -new file mode 100644 -index 0000000..9c21325 ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt -@@ -0,0 +1,7 @@ -+/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt -+/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFinishEvent.kt -+/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewManagerImpl.kt -+/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/newarch/com/airbnb/android/react/lottie/LottieAnimationViewManager.kt -+/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottiePackage.kt -+/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt -+/Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin b/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin -new file mode 100644 -index 0000000..1eb66dc -Binary files /dev/null and b/node_modules/lottie-react-native/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin differ -diff --git a/node_modules/lottie-react-native/android/build/outputs/logs/manifest-merger-debug-report.txt b/node_modules/lottie-react-native/android/build/outputs/logs/manifest-merger-debug-report.txt -new file mode 100644 -index 0000000..b849b1e ---- /dev/null -+++ b/node_modules/lottie-react-native/android/build/outputs/logs/manifest-merger-debug-report.txt -@@ -0,0 +1,17 @@ -+-- Merging decision tree log --- -+manifest -+ADDED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml:1:1-3:12 -+INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml:1:1-3:12 -+ package -+ ADDED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml:2:5-46 -+ INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml -+ xmlns:android -+ ADDED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml:1:11-69 -+uses-sdk -+INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml reason: use-sdk injection requested -+INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml -+INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml -+ android:targetSdkVersion -+ INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml -+ android:minSdkVersion -+ INJECTED from /Users/war-in/expensify-app-fork/node_modules/lottie-react-native/android/src/main/AndroidManifest.xml -diff --git a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt -index e4bfb4a..f60d7e3 100644 ---- a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt -+++ b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt -@@ -1,5 +1,6 @@ - package com.airbnb.android.react.lottie - -+import android.graphics.Color - import android.graphics.ColorFilter - import android.graphics.Typeface - import android.net.Uri -@@ -18,7 +19,7 @@ import com.facebook.react.bridge.ReadableArray - import com.facebook.react.bridge.ReadableMap - import com.facebook.react.bridge.ReadableType - import com.facebook.react.views.text.ReactFontManager --import com.facebook.react.views.text.TextAttributeProps.UNSET -+import com.facebook.react.common.ReactConstants.UNSET - import com.facebook.react.util.RNLog - import java.lang.ref.WeakReference - import java.util.regex.Pattern -@@ -102,8 +103,8 @@ class LottieAnimationViewPropertyManager(view: LottieAnimationView) { - textFilters?.let { - if (it.size() > 0) { - val textDelegate = TextDelegate(view) -- for (i in 0 until textFilters!!.size()) { -- val current = textFilters!!.getMap(i) -+ for (i in 0 until it.size()) { -+ val current = it.getMap(i) ?: continue - val searchText = current.getString("find") - val replacementText = current.getString("replace") - textDelegate.setText(searchText, replacementText) -@@ -213,7 +214,7 @@ class LottieAnimationViewPropertyManager(view: LottieAnimationView) { - colorFilters?.let { colorFilters -> - if (colorFilters.size() > 0) { - for (i in 0 until colorFilters.size()) { -- val current = colorFilters.getMap(i) -+ val current = colorFilters.getMap(i) ?: continue - parseColorFilter(current, view) - } - } -@@ -225,7 +226,7 @@ class LottieAnimationViewPropertyManager(view: LottieAnimationView) { - view: LottieAnimationView - ) { - val color: Int = if (colorFilter.getType("color") == ReadableType.Map) { -- ColorPropConverter.getColor(colorFilter.getMap("color"), view.context) -+ ColorPropConverter.getColor(colorFilter.getMap("color"), view.context) ?: Color.TRANSPARENT; - } else { - colorFilter.getInt("color") - } -diff --git a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt -index aa538d3..0185eaf 100644 ---- a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt -+++ b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationFailureEvent.kt -@@ -21,6 +21,6 @@ constructor(surfaceId: Int, viewId: Int, private val error: Throwable) : - } - - companion object { -- const val EVENT_NAME = "topAnimationFailureEvent" -+ const val EVENT_NAME = "topAnimationFailure" - } - } -\ No newline at end of file -diff --git a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt -index f17cff9..4ebe3ba 100644 ---- a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt -+++ b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/OnAnimationLoadedEvent.kt -@@ -16,6 +16,6 @@ class OnAnimationLoadedEvent constructor(surfaceId: Int, viewId: Int) : - } - - companion object { -- const val EVENT_NAME = "topAnimationLoadedEvent" -+ const val EVENT_NAME = "topAnimationLoaded" - } - } -diff --git a/node_modules/lottie-react-native/ios/Fabric/LottieAnimationViewComponentView.mm b/node_modules/lottie-react-native/ios/Fabric/LottieAnimationViewComponentView.mm -index a4be628..d8f304e 100644 ---- a/node_modules/lottie-react-native/ios/Fabric/LottieAnimationViewComponentView.mm -+++ b/node_modules/lottie-react-native/ios/Fabric/LottieAnimationViewComponentView.mm -@@ -40,6 +40,11 @@ using namespace facebook::react; - - #pragma mark - RCTComponentViewProtocol - -++ (BOOL)shouldBeRecycled -+{ -+ return NO; -+} -+ - + (ComponentDescriptorProvider)componentDescriptorProvider - { - return concreteComponentDescriptorProvider(); diff --git a/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-83.patch b/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-83.patch new file mode 100644 index 0000000000000..fa44c987ca558 --- /dev/null +++ b/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-83.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt +index 08e0ae9..f60d7e3 100644 +--- a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt ++++ b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt +@@ -19,7 +19,7 @@ import com.facebook.react.bridge.ReadableArray + import com.facebook.react.bridge.ReadableMap + import com.facebook.react.bridge.ReadableType + import com.facebook.react.views.text.ReactFontManager +-import com.facebook.react.views.text.TextAttributeProps.UNSET ++import com.facebook.react.common.ReactConstants.UNSET + import com.facebook.react.util.RNLog + import java.lang.ref.WeakReference + import java.util.regex.Pattern From 10568ff6076faf67023625bb336b9c74c3969e06 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 19 Jan 2026 16:43:43 +0100 Subject: [PATCH 05/56] fix: InteractionManager patch --- .../react-native+0.83.1+024+restore-interaction-manager.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch b/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch index c4c5779c85bb4..67d7ceb057542 100644 --- a/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch +++ b/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch @@ -282,14 +282,14 @@ index 410dfe3..d36fb18 100644 + * https://fburl.com/workplace/6291gfvu */ + /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See + * https://fburl.com/workplace/6291gfvu */ -+ _emitter.emit(InteractionManager.Events.interactionComplete); ++ _emitter.emit(InteractionManagerImpl.Events.interactionComplete); + } else if (interactionCount === 0 && nextInteractionCount !== 0) { + // transition from 0 --> 1+ interactions + /* $FlowFixMe[prop-missing] Natural Inference rollout. See + * https://fburl.com/workplace/6291gfvu */ + /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See + * https://fburl.com/workplace/6291gfvu */ -+ _emitter.emit(InteractionManager.Events.interactionStart); ++ _emitter.emit(InteractionManagerImpl.Events.interactionStart); + } + + // process the queue regardless of a transition From 023cb49f475e1fed1f46518572eafe08c65cc4bc Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 19 Jan 2026 16:51:24 +0100 Subject: [PATCH 06/56] chore: bump rock --- package-lock.json | 367 ++++++------------ package.json | 12 +- ...e-image-size+1.1.3+001+support-RN-83.patch | 13 + rock.config.mjs | 2 +- 4 files changed, 134 insertions(+), 260 deletions(-) create mode 100644 patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch diff --git a/package-lock.json b/package-lock.json index 54efa3d38ed45..673d11388644a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -116,7 +116,7 @@ "react-native-keyboard-controller": "1.18.5", "react-native-launch-arguments": "4.1.1", "react-native-localize": "^3.5.4", - "react-native-nitro-modules": "0.29.4", + "react-native-nitro-modules": "0.33.2", "react-native-nitro-sqlite": "9.2.0", "react-native-onyx": "3.0.29", "react-native-pager-view": "7.0.2", @@ -183,10 +183,10 @@ "@react-native/babel-preset": "0.83.1", "@react-native/metro-config": "0.83.1", "@react-navigation/devtools": "^6.0.10", - "@rock-js/platform-android": "0.12.0", - "@rock-js/platform-ios": "0.12.0", - "@rock-js/plugin-metro": "0.12.0", - "@rock-js/provider-s3": "0.12.0", + "@rock-js/platform-android": "0.12.6", + "@rock-js/platform-ios": "0.12.6", + "@rock-js/plugin-metro": "0.12.6", + "@rock-js/provider-s3": "0.12.6", "@sentry/webpack-plugin": "4.6.0", "@storybook/addon-a11y": "10.1.10", "@storybook/addon-docs": "10.1.10", @@ -276,7 +276,7 @@ "react-refresh": "^0.14.2", "react-test-renderer": "19.2.0", "reassure": "^1.0.0-rc.4", - "rock": "0.12.0", + "rock": "0.12.6", "semver": "7.5.2", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", @@ -5970,15 +5970,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/config/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/@expo/config/node_modules/path-scurry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", @@ -9285,13 +9276,6 @@ "node": ">=18.0.0" } }, - "node_modules/@isaacs/fs-minipass/node_modules/minipass": { - "version": "7.1.2", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/@isaacs/ttlcache": { "version": "1.4.1", "license": "ISC", @@ -12609,28 +12593,28 @@ } }, "node_modules/@rock-js/config": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@rock-js/config/-/config-0.12.0.tgz", - "integrity": "sha512-7tK7UUHlR+dGvjBaaMmzlkJTTPSjdI9pFUFEydcDDuTaUnHMDdz1huuYmjLohKx/NEI/6dwDE5NEN5zWDvy1tQ==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@rock-js/config/-/config-0.12.6.tgz", + "integrity": "sha512-R1qimKnRxjxIH70UF/MqXSJSIME28/1dhcq6JVdopN4m7ivOlqdWbj/FIVnygXPEF4CtdHbLsSc0vTmTprLnqA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@rock-js/provider-github": "^0.12.0", - "@rock-js/tools": "^0.12.0", + "@rock-js/provider-github": "^0.12.6", + "@rock-js/tools": "^0.12.6", "joi": "^17.13.3", "tslib": "^2.3.0" } }, "node_modules/@rock-js/platform-android": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@rock-js/platform-android/-/platform-android-0.12.0.tgz", - "integrity": "sha512-WyAMQtqjB7SPS1oOHq4P1pSOIMMLAq0wpbYKouEGY4ZsIHKBgb4wP8iQ0rBPhZhhIw94e4o2G4BnaxqwdJaL2g==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@rock-js/platform-android/-/platform-android-0.12.6.tgz", + "integrity": "sha512-8oqrKpQeZMmBcrgeEDLOAXuikMrumfP/zqGpj1TR2WMg+kBsZHbny+UcNBDeMje5yQidKjt+40XBE8dcUFaKOg==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-android": "^20.0.0", - "@rock-js/tools": "^0.12.0", + "@rock-js/tools": "^0.12.6", "tslib": "^2.3.0" } }, @@ -12743,31 +12727,31 @@ } }, "node_modules/@rock-js/platform-apple-helpers": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@rock-js/platform-apple-helpers/-/platform-apple-helpers-0.12.0.tgz", - "integrity": "sha512-Y/skmIHt6kPL8D38EZzvLX+7jLg3ZZd+PWlJ278+B3rqDbIAG5qWkw7geAoiz+cIo5niaETxtVYzsU+us6BIgg==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@rock-js/platform-apple-helpers/-/platform-apple-helpers-0.12.6.tgz", + "integrity": "sha512-iDMFsjF4gQRGlxrIe2pdgc+mlxSrC9/IbnYtkwccG8RLeajAFqWGD2BdkyzZLhNBm7SXyLn6PTMyQgZvFRFDXA==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config": "^20.0.0", "@react-native-community/cli-config-apple": "^20.0.0", - "@rock-js/tools": "^0.12.0", + "@rock-js/tools": "^0.12.6", "adm-zip": "^0.5.16", "fast-xml-parser": "^4.5.0", "tslib": "^2.3.0" } }, "node_modules/@rock-js/platform-ios": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@rock-js/platform-ios/-/platform-ios-0.12.0.tgz", - "integrity": "sha512-CDZgHykqdIAP/Sr1lXcfZR7TTPyIIaVYLprP4XhCaOV7In8v78R3HgrjLYijouhMWo00DLR14d1YRe/i5NfJ+A==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@rock-js/platform-ios/-/platform-ios-0.12.6.tgz", + "integrity": "sha512-h7QpDyxdiotHUhMono132Lc7rUxFvwZPjYJnudNuTgFTQWg9YSeyRM5fEVz2JvLMuhwArH94OXAD3f9GKrctqQ==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-apple": "^20.0.0", "@react-native-community/cli-types": "^20.0.0", - "@rock-js/platform-apple-helpers": "^0.12.0", - "@rock-js/tools": "^0.12.0", + "@rock-js/platform-apple-helpers": "^0.12.6", + "@rock-js/tools": "^0.12.6", "tslib": "^2.3.0" } }, @@ -12890,14 +12874,14 @@ } }, "node_modules/@rock-js/plugin-metro": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@rock-js/plugin-metro/-/plugin-metro-0.12.0.tgz", - "integrity": "sha512-T4sk3CI7L4OG3tcdUz788iIzOWpWWTO2ZLOlaoUx9SfYEzJNetCARU+BQySWr6SQAgIh0o39edNyanUSe+h3TA==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@rock-js/plugin-metro/-/plugin-metro-0.12.6.tgz", + "integrity": "sha512-HF7ne7JnuOJuwij2yMz8XGVjOpY1EF/yoN7DWRrlJsJUz5/bUoD8EXKwuMmmwrwccazGPgcEXzFhr6uJmFVBOA==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-server-api": "^20.0.0", - "@rock-js/tools": "^0.12.0", + "@rock-js/tools": "^0.12.6", "metro": "^0.83.3", "metro-config": "^0.83.3", "metro-core": "^0.83.3", @@ -13043,21 +13027,21 @@ } }, "node_modules/@rock-js/provider-github": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@rock-js/provider-github/-/provider-github-0.12.0.tgz", - "integrity": "sha512-0GL/CNe2EDNWUSsTYaHCRO0+ZxSGT8hxDJaO86M6o8m0jSv49UX3xfjk8dxasslY5VxQlhT2gB7K5niH0UNFUw==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@rock-js/provider-github/-/provider-github-0.12.6.tgz", + "integrity": "sha512-ZC3emdyxj5geAMshLaPZTS/7xzS9WX55rbGwAhgfdS53nQTr8Ab/pOpic6OJLWc3BuSvOA8wJwDiShuM/gY/2w==", "dev": true, "license": "MIT", "dependencies": { - "@rock-js/tools": "^0.12.0", + "@rock-js/tools": "^0.12.6", "ts-regex-builder": "^1.8.2", "tslib": "^2.3.0" } }, "node_modules/@rock-js/provider-s3": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@rock-js/provider-s3/-/provider-s3-0.12.0.tgz", - "integrity": "sha512-AoMYzIaq2p9p8QMWihMgK4c1ozqd5BJEEQB7MT0lAKR0suYY3YnTw3e1hSqBZsn6PmMyE+BY/9tNLuACZFluEA==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@rock-js/provider-s3/-/provider-s3-0.12.6.tgz", + "integrity": "sha512-ZWNXFnNAVJj5HZHMqEBtNMXPFI9I4K+a6aacbrGtHrJt1SIhKJV3ODVvuYBDuWIbSlR1TPNYadP5ML5fbPmLjQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13066,14 +13050,14 @@ "@aws-sdk/credential-providers": "^3.830.0", "@aws-sdk/lib-storage": "^3.830.0", "@aws-sdk/s3-request-presigner": "^3.830.0", - "@rock-js/tools": "^0.12.0", + "@rock-js/tools": "^0.12.6", "tslib": "^2.3.0" } }, "node_modules/@rock-js/tools": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@rock-js/tools/-/tools-0.12.0.tgz", - "integrity": "sha512-yXxkAemK2Dc745LMdWIDjO2j8w7mQsW9Nbe+kwjUaTGS6KG57tquoMkkGP5QsVpyg0+2lIFhNMKPJOlcQN58Wg==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@rock-js/tools/-/tools-0.12.6.tgz", + "integrity": "sha512-KwGpC32arTS5D39Gl6ff4U7JV0oioshc43Sq8UqfjYx+pZsyTb9Va0ObzP0Detesnb41GTohBdMyPzB6tABN6w==", "dev": true, "license": "MIT", "dependencies": { @@ -13089,16 +13073,6 @@ "tslib": "^2.3.0" } }, - "node_modules/@rock-js/tools/node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/@rock-js/tools/node_modules/is-unicode-supported": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", @@ -13112,56 +13086,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@rock-js/tools/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@rock-js/tools/node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@rock-js/tools/node_modules/tar": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@rock-js/tools/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -18989,6 +18913,15 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/chrome-launcher": { "version": "0.15.2", "license": "Apache-2.0", @@ -23334,15 +23267,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/expo/node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/expo/node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -23504,27 +23428,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/expo/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/expo/node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/expo/node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", @@ -23677,31 +23580,6 @@ "node": ">=8" } }, - "node_modules/expo/node_modules/tar": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.4.tgz", - "integrity": "sha512-O1z7ajPkjTgEgmTGz0v9X4eqeEXTDREPTO77pVC1Nbs86feBU1Zhdg+edzavPmYW1olxkwsqA2v4uOw6E8LeDg==", - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/expo/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/exponential-backoff": { "version": "3.1.1", "license": "Apache-2.0" @@ -24999,13 +24877,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob/node_modules/minipass": { - "version": "7.1.2", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/global-agent": { "version": "3.0.0", "dev": true, @@ -30703,6 +30574,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "license": "MIT", @@ -30842,6 +30734,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/nitrogen/node_modules/react-native-nitro-modules": { + "version": "0.29.8", + "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.29.8.tgz", + "integrity": "sha512-SyKIR+MmAZadqFEPwD+wiHoG5Lem3EMtAyzLOJ+mU0JB+1+vHxxLLhcV0THoXoxbMSbf5zWOQYVb+JPCEhNtXg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/nitrogen/node_modules/zod": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", @@ -31783,13 +31687,6 @@ "node": "14 || >=16.14" } }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.3", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/path-to-regexp": { "version": "0.1.10", "dev": true, @@ -33231,10 +33128,9 @@ } }, "node_modules/react-native-nitro-modules": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.29.4.tgz", - "integrity": "sha512-AfUMcwFtj9FuEDwDLN5eIVo0lBYTQqDaV7meiFzuoZyRmc8ywykFTKfyZwRN2t8Z/WtTlfCj9Y9yaET33IImsg==", - "hasInstallScript": true, + "version": "0.33.2", + "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.33.2.tgz", + "integrity": "sha512-ZlfOe6abODeHv/eZf8PxeSkrxIUhEKha6jaAAA9oXy7I6VPr7Ff4dUsAq3cyF3kX0L6qt2Dh9nzD2NdSsDwGpA==", "license": "MIT", "peerDependencies": { "react": "*", @@ -34600,15 +34496,15 @@ "license": "BSD-3-Clause" }, "node_modules/rock": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/rock/-/rock-0.12.0.tgz", - "integrity": "sha512-MiHWE5LgVkO93yOt3qcOvBxDH9oJvBiAotsancgoM4fAb5jaAhL/pbufUkqrD0AaEp3HmBz8ZlfLKfZnKDLExA==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/rock/-/rock-0.12.6.tgz", + "integrity": "sha512-Jn42eNkiMS9sKRVQbOWW+8bOb9htO1KZWXHKXwgcz8+ORNmH38adt9bRc836WxbGkLG6Pqq1qFY3ipN9Uf9mBw==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config": "^20.0.0", - "@rock-js/config": "^0.12.0", - "@rock-js/tools": "^0.12.0", + "@rock-js/config": "^0.12.6", + "@rock-js/tools": "^0.12.6", "adm-zip": "^0.5.16", "commander": "^12.1.0", "tar": "^7.5.1", @@ -34618,66 +34514,6 @@ "rock": "dist/src/bin.js" } }, - "node_modules/rock/node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/rock/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/rock/node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/rock/node_modules/tar": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/rock/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/run-applescript": { "version": "7.0.0", "dev": true, @@ -36342,6 +36178,22 @@ "node": ">=6" } }, + "node_modules/tar": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.3.tgz", + "integrity": "sha512-ENg5JUHUm2rDD7IvKNFGzyElLXNjachNLp6RaGf4+JOgxXHkqA+gq81ZAMCUmtMtqBsoU62lcp6S27g1LCYGGQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/tar-fs": { "version": "2.1.2", "license": "MIT", @@ -36386,6 +36238,15 @@ "node": ">= 6" } }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/temp": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", diff --git a/package.json b/package.json index 4542bb6757919..2b9dab73de1af 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "react-native-keyboard-controller": "1.18.5", "react-native-launch-arguments": "4.1.1", "react-native-localize": "^3.5.4", - "react-native-nitro-modules": "0.29.4", + "react-native-nitro-modules": "0.33.2", "react-native-nitro-sqlite": "9.2.0", "react-native-onyx": "3.0.29", "react-native-pager-view": "7.0.2", @@ -252,10 +252,10 @@ "@react-native/babel-preset": "0.83.1", "@react-native/metro-config": "0.83.1", "@react-navigation/devtools": "^6.0.10", - "@rock-js/platform-android": "0.12.0", - "@rock-js/platform-ios": "0.12.0", - "@rock-js/plugin-metro": "0.12.0", - "@rock-js/provider-s3": "0.12.0", + "@rock-js/platform-android": "0.12.6", + "@rock-js/platform-ios": "0.12.6", + "@rock-js/plugin-metro": "0.12.6", + "@rock-js/provider-s3": "0.12.6", "@sentry/webpack-plugin": "4.6.0", "@storybook/addon-a11y": "10.1.10", "@storybook/addon-docs": "10.1.10", @@ -345,7 +345,7 @@ "react-refresh": "^0.14.2", "react-test-renderer": "19.2.0", "reassure": "^1.0.0-rc.4", - "rock": "0.12.0", + "rock": "0.12.6", "semver": "7.5.2", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", diff --git a/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch b/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch new file mode 100644 index 0000000000000..3ad39afadeb9a --- /dev/null +++ b/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native-image-size/android/build.gradle b/node_modules/react-native-image-size/android/build.gradle +index cc2d50a..877577b 100644 +--- a/node_modules/react-native-image-size/android/build.gradle ++++ b/node_modules/react-native-image-size/android/build.gradle +@@ -1,7 +1,7 @@ + buildscript { + repositories { + mavenCentral() +- jcenter() ++ google() + } + + dependencies { diff --git a/rock.config.mjs b/rock.config.mjs index 9e78e6320abe0..da68428100dd1 100644 --- a/rock.config.mjs +++ b/rock.config.mjs @@ -26,5 +26,5 @@ export default { ignorePaths: ['Mobile-Expensify/Android/assets/app/shared/bundle.js'], }, // Forces React Native to build from source to include our custom patches - usePrebuiltRNCore: 0, + usePrebuiltRNCore: false, }; From e1670252e46b35ec0d77ba25feff702e5fc3e1ef Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 19 Jan 2026 17:56:48 +0100 Subject: [PATCH 07/56] first steps into iOS --- ...-native+0.83.1+004+iOSFontResolution.patch | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch b/patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch index 0b7cc618e00db..3d37febb94ad3 100644 --- a/patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch +++ b/patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm -index 9b04cad..de84d2f 100644 +index 9b04cad..407ef5d 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +++ b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm @@ -40,9 +40,6 @@ static RCTFontProperties RCTResolveFontProperties( @@ -12,17 +12,7 @@ index 9b04cad..de84d2f 100644 fontProperties.variant = fontProperties.variant != RCTFontVariantUndefined ? fontProperties.variant : baseFontProperties.variant; return fontProperties; -@@ -288,6 +285,9 @@ static UIFont *RCTDefaultFontWithFontProperties(const RCTFontProperties &fontPro - if (font == nil) { - font = [UIFont systemFontOfSize:effectiveFontSize weight:fontProperties.weight]; - } -+ fontNames = [UIFont fontNamesForFamilyName:font.familyName]; -+ fontWeight = isnan(fontWeight) ? RCTGetFontWeight(font) : fontWeight; -+ fontStyle = fontStyle == RCTFontStyleUndefined ? RCTGetFontStyle(font) : fontStyle; - - BOOL isItalicFont = fontProperties.style == RCTFontStyleItalic; - BOOL isCondensedFont = [fontProperties.family isEqualToString:@"SystemCondensed"]; -@@ -350,10 +350,14 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) +@@ -350,10 +347,14 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) } else if ([fontProperties.family isEqualToString:defaultFontProperties.family]) { // Handle system font as special case. This ensures that we preserve // the specific metrics of the standard system font as closely as possible. @@ -37,8 +27,13 @@ index 9b04cad..de84d2f 100644 if (fontNames.count == 0) { // Gracefully handle being given a font name rather than font family, for -@@ -368,13 +372,13 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) +@@ -366,15 +367,18 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) + // Failback to system font. + font = RCTDefaultFontWithFontProperties(fontProperties); } ++ fontNames = [UIFont fontNamesForFamilyName:font.familyName]; ++ fontWeight = isnan(fontWeight) ? RCTGetFontWeight(font) : fontWeight; ++ fontStyle = fontStyle == RCTFontStyleUndefined ? RCTGetFontStyle(font) : fontStyle; } - if (fontNames.count > 0) { From 5a5566bb66b6646c4a73c270f70fe9f2c7dc28b4 Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 27 Jan 2026 17:08:06 +0100 Subject: [PATCH 08/56] fix: android build --- package-lock.json | 3714 ++++++++++++++++++++++++++++++--------------- package.json | 32 +- 2 files changed, 2490 insertions(+), 1256 deletions(-) diff --git a/package-lock.json b/package-lock.json index e65f2f4920a32..f84dbae88c2c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -64,14 +64,14 @@ "dom-serializer": "^0.2.2", "domhandler": "^5.0.3", "expensify-common": "2.0.169", - "expo": "54.0.10", - "expo-asset": "12.0.8", + "expo": "55.0.0-preview.6", + "expo-asset": "55.0.2", "expo-av": "15.1.7", "expo-font": "14.0.8", "expo-image": "3.0.8", - "expo-image-manipulator": "^13.1.5", + "expo-image-manipulator": "55.0.2", "expo-location": "^19.0.7", - "expo-modules-core": "3.0.18", + "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", "expo-task-manager": "~14.0.9", @@ -183,6 +183,7 @@ "@react-native-community/cli-platform-ios": "20.0.0", "@react-native/babel-preset": "0.83.1", "@react-native/metro-config": "0.83.1", + "@react-navigation/core": "7.10.0", "@react-navigation/devtools": "^6.0.10", "@rock-js/platform-android": "0.12.6", "@rock-js/platform-ios": "0.12.6", @@ -2243,14 +2244,14 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz", - "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.6.tgz", + "integrity": "sha512-RVdFPPyY9fCRAX68haPmOk2iyKW8PKJFthmm8NeSI3paNxKWGZIn99+VbIf0FrtCpFnPgnpF/L48tadi617ULg==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-decorators": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2365,12 +2366,12 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", - "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3852,7 +3853,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@blakeembrey/deque": { @@ -5642,13 +5643,12 @@ } }, "node_modules/@expo/code-signing-certificates": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", - "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", + "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", "license": "MIT", "dependencies": { - "node-forge": "^1.2.1", - "nullthrows": "^1.1.1" + "node-forge": "^1.3.3" } }, "node_modules/@expo/config": { @@ -6013,14 +6013,13 @@ } }, "node_modules/@expo/devcert": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.0.tgz", - "integrity": "sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz", + "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==", "license": "MIT", "dependencies": { "@expo/sudo-prompt": "^9.3.1", - "debug": "^3.1.0", - "glob": "^10.4.2" + "debug": "^3.1.0" } }, "node_modules/@expo/devcert/node_modules/debug": { @@ -6033,9 +6032,9 @@ } }, "node_modules/@expo/devtools": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-0.1.7.tgz", - "integrity": "sha512-dfIa9qMyXN+0RfU6SN4rKeXZyzKWsnz6xBSDccjL4IRiE+fQ0t84zg0yxgN4t/WK2JU5v6v4fby7W7Crv9gJvA==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-55.0.2.tgz", + "integrity": "sha512-4VsFn9MUriocyuhyA+ycJP3TJhUsOFHDc270l9h3LhNpXMf6wvIdGcA0QzXkZtORXmlDybWXRP2KT1k36HcQkA==", "license": "MIT", "dependencies": { "chalk": "^4.1.2" @@ -6123,10 +6122,21 @@ "node": ">=8" } }, + "node_modules/@expo/dom-webview": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-55.0.2.tgz", + "integrity": "sha512-U+0tHSplJ+R+Uj3/wPtm82lzptOhKEPse5A+hKHrUIEt+1tPDxwAuxBZMi8xs8UqByMAz7C18BzS58LuWphA3A==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/@expo/env": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.7.tgz", - "integrity": "sha512-BNETbLEohk3HQ2LxwwezpG8pq+h7Fs7/vAMP3eAtFT1BCpprLYoBBFZH7gW4aqGfqOcVP4Lc91j014verrYNGg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.11.tgz", + "integrity": "sha512-xV+ps6YCW7XIPVUwFVCRN2nox09dnRwy8uIjwHWTODu0zFw4kp4omnVkl0OOjuu2XOe7tdgAHxikrkJt9xB/7Q==", "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -6194,25 +6204,29 @@ "node": ">=8" } }, - "node_modules/@expo/image-utils": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.7.tgz", - "integrity": "sha512-SXOww4Wq3RVXLyOaXiCCuQFguCDh8mmaHBv54h/R29wGl4jRY8GEyQEx8SypV/iHt1FbzsU/X3Qbcd9afm2W2w==", + "node_modules/@expo/fingerprint": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.2.tgz", + "integrity": "sha512-+iP2giAnN70VKRgZcc2mUcIF0Nn3P10qpxim9u5Q5RfF+Adl3tAPzQzY0KVi35twMvCLmKb4dG2vgN7IbtPYbg==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", - "chalk": "^4.0.0", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "debug": "^4.3.4", "getenv": "^2.0.0", - "jimp-compact": "0.16.1", - "parse-png": "^2.1.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "minimatch": "^9.0.0", + "p-limit": "^3.1.0", "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0", - "semver": "^7.6.0", - "temp-dir": "~2.0.0", - "unique-string": "~2.0.0" + "semver": "^7.6.0" + }, + "bin": { + "fingerprint": "bin/cli.js" } }, - "node_modules/@expo/image-utils/node_modules/ansi-styles": { + "node_modules/@expo/fingerprint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -6227,7 +6241,22 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@expo/image-utils/node_modules/chalk": { + "node_modules/@expo/fingerprint/node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/@expo/fingerprint/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@expo/fingerprint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -6243,7 +6272,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@expo/image-utils/node_modules/color-convert": { + "node_modules/@expo/fingerprint/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -6255,13 +6284,45 @@ "node": ">=7.0.0" } }, - "node_modules/@expo/image-utils/node_modules/color-name": { + "node_modules/@expo/fingerprint/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/@expo/image-utils/node_modules/has-flag": { + "node_modules/@expo/fingerprint/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -6270,10 +6331,50 @@ "node": ">=8" } }, - "node_modules/@expo/image-utils/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/@expo/fingerprint/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/fingerprint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6282,7 +6383,7 @@ "node": ">=10" } }, - "node_modules/@expo/image-utils/node_modules/supports-color": { + "node_modules/@expo/fingerprint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -6294,102 +6395,23 @@ "node": ">=8" } }, - "node_modules/@expo/json-file": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.8.tgz", - "integrity": "sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.3" - } - }, - "node_modules/@expo/json-file/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@expo/mcp-tunnel": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@expo/mcp-tunnel/-/mcp-tunnel-0.0.8.tgz", - "integrity": "sha512-6261obzt6h9TQb6clET7Fw4Ig4AY2hfTNKI3gBt0gcTNxZipwMg8wER7ssDYieA9feD/FfPTuCPYFcR280aaWA==", - "license": "MIT", - "dependencies": { - "ws": "^8.18.3", - "zod": "^3.25.76", - "zod-to-json-schema": "^3.24.6" - }, - "peerDependencies": { - "@modelcontextprotocol/sdk": "^1.13.2" - }, - "peerDependenciesMeta": { - "@modelcontextprotocol/sdk": { - "optional": true - } - } - }, - "node_modules/@expo/metro": { - "version": "54.0.0", - "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.0.0.tgz", - "integrity": "sha512-x2HlliepLJVLSe0Fl/LuPT83Mn2EXpPlb1ngVtcawlz4IfbkYJo16/Zfsfrn1t9d8LpN5dD44Dc55Q1/fO05Nw==", - "license": "MIT", - "dependencies": { - "metro": "0.83.1", - "metro-babel-transformer": "0.83.1", - "metro-cache": "0.83.1", - "metro-cache-key": "0.83.1", - "metro-config": "0.83.1", - "metro-core": "0.83.1", - "metro-file-map": "0.83.1", - "metro-resolver": "0.83.1", - "metro-runtime": "0.83.1", - "metro-source-map": "0.83.1", - "metro-transform-plugins": "0.83.1", - "metro-transform-worker": "0.83.1" - } - }, - "node_modules/@expo/metro-config": { - "version": "54.0.5", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.5.tgz", - "integrity": "sha512-Y+oYtLg8b3L4dHFImfu8+yqO+KOcBpLLjxN7wGbs7miP/BjntBQ6tKbPxyKxHz5UUa1s+buBzZlZhsFo9uqKMg==", + "node_modules/@expo/image-utils": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.11.tgz", + "integrity": "sha512-/lW5b20C4YHhSzGSSbRzvuKZJ3VZ43FRstFvRCAsGOGLYgZJ3wPrHRQRi/nmbHw++TTMnnQTPrqRjyfNE7Tm1g==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.20.0", - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.5", - "@expo/config": "~12.0.9", - "@expo/env": "~2.0.7", - "@expo/json-file": "~10.0.7", - "@expo/metro": "~54.0.0", "@expo/spawn-async": "^1.7.2", - "browserslist": "^4.25.0", - "chalk": "^4.1.0", - "debug": "^4.3.2", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", + "chalk": "^4.0.0", "getenv": "^2.0.0", - "glob": "^10.4.2", - "hermes-parser": "^0.29.1", - "jsc-safe-url": "^0.2.4", - "lightningcss": "^1.30.1", - "minimatch": "^9.0.0", - "postcss": "~8.4.32", - "resolve-from": "^5.0.0" - }, - "peerDependencies": { - "expo": "*" - }, - "peerDependenciesMeta": { - "expo": { - "optional": true - } + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0", + "semver": "^7.6.0" } }, - "node_modules/@expo/metro-config/node_modules/ansi-styles": { + "node_modules/@expo/image-utils/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -6404,16 +6426,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@expo/metro-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@expo/metro-config/node_modules/chalk": { + "node_modules/@expo/image-utils/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -6429,7 +6442,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@expo/metro-config/node_modules/color-convert": { + "node_modules/@expo/image-utils/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -6441,13 +6454,13 @@ "node": ">=7.0.0" } }, - "node_modules/@expo/metro-config/node_modules/color-name": { + "node_modules/@expo/image-utils/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/@expo/metro-config/node_modules/has-flag": { + "node_modules/@expo/image-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -6456,37 +6469,19 @@ "node": ">=8" } }, - "node_modules/@expo/metro-config/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/@expo/metro-config/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, - "node_modules/@expo/metro-config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@expo/image-utils/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/@expo/metro-config/node_modules/supports-color": { + "node_modules/@expo/image-utils/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -6498,39 +6493,104 @@ "node": ">=8" } }, - "node_modules/@expo/metro-runtime": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-6.1.2.tgz", - "integrity": "sha512-nvM+Qv45QH7pmYvP8JB1G8JpScrWND3KrMA6ZKe62cwwNiX/BjHU28Ear0v/4bQWXlOY0mv6B8CDIm8JxXde9g==", + "node_modules/@expo/json-file": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.11.tgz", + "integrity": "sha512-FIW+qivnFi9ey+Gxj30x1mU9aFpAv8jXLDMecijYw8E6K/Lx6PLmg7ppWZVuxhF5QDMbaNXxIfNu78+Zpt/4Ig==", "license": "MIT", "dependencies": { - "anser": "^1.4.9", - "pretty-format": "^29.7.0", - "stacktrace-parser": "^0.1.10", - "whatwg-fetch": "^3.0.0" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-dom": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.3" } }, - "node_modules/@expo/metro/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "license": "MIT", - "engines": { - "node": ">= 14" + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/local-build-cache-provider": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.2.tgz", + "integrity": "sha512-Wfdo/Levqw+quDKO1GxpAZkVQ/iMphoK4qJBdsdm4ksSBzCo9WPq/EnQPj5k8zmZ1xnDcT4kBy0kilszgJ9RCA==", + "license": "MIT", + "dependencies": { + "@expo/config": "~55.0.3", + "chalk": "^4.1.2" + } + }, + "node_modules/@expo/local-build-cache-provider/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", + "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~55.0.3", + "@expo/config-types": "^55.0.3", + "@expo/json-file": "^10.0.11", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" + } + }, + "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config-plugins": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", + "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^55.0.3", + "@expo/json-file": "~10.0.11", + "@expo/plist": "^0.5.2", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config-types": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", + "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "license": "MIT" + }, + "node_modules/@expo/local-build-cache-provider/node_modules/@expo/plist": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" } }, - "node_modules/@expo/metro/node_modules/ansi-styles": { + "node_modules/@expo/local-build-cache-provider/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -6545,7 +6605,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@expo/metro/node_modules/chalk": { + "node_modules/@expo/local-build-cache-provider/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -6561,13 +6621,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@expo/metro/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "license": "MIT" - }, - "node_modules/@expo/metro/node_modules/color-convert": { + "node_modules/@expo/local-build-cache-provider/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -6579,28 +6633,30 @@ "node": ">=7.0.0" } }, - "node_modules/@expo/metro/node_modules/color-name": { + "node_modules/@expo/local-build-cache-provider/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/@expo/metro/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "license": "MIT", + "node_modules/@expo/local-build-cache-provider/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": ">=4" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro/node_modules/has-flag": { + "node_modules/@expo/local-build-cache-provider/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -6609,399 +6665,383 @@ "node": ">=8" } }, - "node_modules/@expo/metro/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/@expo/metro/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" + "node_modules/@expo/local-build-cache-provider/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "node_modules/@expo/metro/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", + "node_modules/@expo/local-build-cache-provider/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">= 14" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "license": "MIT", + "node_modules/@expo/local-build-cache-provider/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=4" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro/node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "node_modules/@expo/local-build-cache-provider/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@expo/metro/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@expo/local-build-cache-provider/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, - "node_modules/@expo/metro/node_modules/metro": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.1.tgz", - "integrity": "sha512-UGKepmTxoGD4HkQV8YWvpvwef7fUujNtTgG4Ygf7m/M0qjvb9VuDmAsEU+UdriRX7F61pnVK/opz89hjKlYTXA==", + "node_modules/@expo/log-box": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.2.tgz", + "integrity": "sha512-CbOt2fGRxRTnOjU1svPZQFIJAH5QLnJqC59X1MnXkkJi8sDoFwVKeyX7K5Lpwd21kchdgg74N/N389EY1yAQmA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "error-stack-parser": "^2.0.6", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.29.1", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.1", - "metro-cache": "0.83.1", - "metro-cache-key": "0.83.1", - "metro-config": "0.83.1", - "metro-core": "0.83.1", - "metro-file-map": "0.83.1", - "metro-resolver": "0.83.1", - "metro-runtime": "0.83.1", - "metro-source-map": "0.83.1", - "metro-symbolicate": "0.83.1", - "metro-transform-plugins": "0.83.1", - "metro-transform-worker": "0.83.1", - "mime-types": "^2.1.27", - "nullthrows": "^1.1.1", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "throat": "^5.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" + "@expo/dom-webview": "55.0.2", + "anser": "^1.4.9", + "stacktrace-parser": "^0.1.10" }, - "engines": { - "node": ">=20.19.4" + "peerDependencies": { + "@expo/dom-webview": "*", + "expo": "*", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-web": "*" } }, - "node_modules/@expo/metro/node_modules/metro-babel-transformer": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.1.tgz", - "integrity": "sha512-r3xAD3964E8dwDBaZNSO2aIIvWXjIK80uO2xo0/pi3WI8XWT9h5SCjtGWtMtE5PRWw+t20TN0q1WMRsjvhC1rQ==", + "node_modules/@expo/metro": { + "version": "54.2.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", + "integrity": "sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==", "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.29.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3" } }, - "node_modules/@expo/metro/node_modules/metro-cache": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.1.tgz", - "integrity": "sha512-7N/Ad1PHa1YMWDNiyynTPq34Op2qIE68NWryGEQ4TSE3Zy6a8GpsYnEEZE4Qi6aHgsE+yZHKkRczeBgxhnFIxQ==", + "node_modules/@expo/metro-config": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.3.tgz", + "integrity": "sha512-nTDo8F6d6oY9hqOijULwZpTkSpgkq4JzjU0uqX2ha/4fw7kVuz/qd5TyXYZJ/mQ3dVtkl0HN64JafODgU8+UCw==", "license": "MIT", "dependencies": { - "exponential-backoff": "^3.1.1", - "flow-enums-runtime": "^0.0.6", - "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.1" + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@expo/config": "~55.0.3", + "@expo/env": "~2.0.11", + "@expo/json-file": "~10.0.11", + "@expo/metro": "~54.2.0", + "@expo/spawn-async": "^1.7.2", + "browserslist": "^4.25.0", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "hermes-parser": "^0.29.1", + "jsc-safe-url": "^0.2.4", + "lightningcss": "^1.30.1", + "minimatch": "^9.0.0", + "postcss": "~8.4.32", + "resolve-from": "^5.0.0" }, - "engines": { - "node": ">=20.19.4" + "peerDependencies": { + "expo": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } } }, - "node_modules/@expo/metro/node_modules/metro-cache-key": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.1.tgz", - "integrity": "sha512-ZUs+GD5CNeDLxx5UUWmfg26IL+Dnbryd+TLqTlZnDEgehkIa11kUSvgF92OFfJhONeXzV4rZDRGNXoo6JT+8Gg==", + "node_modules/@expo/metro-config/node_modules/@expo/config": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", + "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~55.0.3", + "@expo/config-types": "^55.0.3", + "@expo/json-file": "^10.0.11", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" } }, - "node_modules/@expo/metro/node_modules/metro-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.1.tgz", - "integrity": "sha512-HJhpZx3wyOkux/jeF1o7akFJzZFdbn6Zf7UQqWrvp7gqFqNulQ8Mju09raBgPmmSxKDl4LbbNeigkX0/nKY1QA==", + "node_modules/@expo/metro-config/node_modules/@expo/config-plugins": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", + "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", "license": "MIT", "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.83.1", - "metro-cache": "0.83.1", - "metro-core": "0.83.1", - "metro-runtime": "0.83.1" - }, - "engines": { - "node": ">=20.19.4" + "@expo/config-types": "^55.0.3", + "@expo/json-file": "~10.0.11", + "@expo/plist": "^0.5.2", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, - "node_modules/@expo/metro/node_modules/metro-core": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.1.tgz", - "integrity": "sha512-uVL1eAJcMFd2o2Q7dsbpg8COaxjZBBGaXqO2OHnivpCdfanraVL8dPmY6It9ZeqWLOihUKZ2yHW4b6soVCzH/Q==", + "node_modules/@expo/metro-config/node_modules/@expo/config-types": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", + "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "license": "MIT" + }, + "node_modules/@expo/metro-config/node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.1" - }, - "engines": { - "node": ">=20.19.4" + "@babel/highlight": "^7.10.4" } }, - "node_modules/@expo/metro/node_modules/metro-file-map": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.1.tgz", - "integrity": "sha512-Yu429lnexKl44PttKw3nhqgmpBR+6UQ/tRaYcxPeEShtcza9DWakCn7cjqDTQZtWR2A8xSNv139izJMyQ4CG+w==", + "node_modules/@expo/metro-config/node_modules/@expo/plist": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "fb-watchman": "^2.0.0", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" - }, - "engines": { - "node": ">=20.19.4" + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" } }, - "node_modules/@expo/metro/node_modules/metro-minify-terser": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.1.tgz", - "integrity": "sha512-kmooOxXLvKVxkh80IVSYO4weBdJDhCpg5NSPkjzzAnPJP43u6+usGXobkTWxxrAlq900bhzqKek4pBsUchlX6A==", + "node_modules/@expo/metro-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6", - "terser": "^5.15.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=20.19.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@expo/metro/node_modules/metro-resolver": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.1.tgz", - "integrity": "sha512-t8j46kiILAqqFS5RNa+xpQyVjULxRxlvMidqUswPEk5nQVNdlJslqizDm/Et3v/JKwOtQGkYAQCHxP1zGStR/g==", + "node_modules/@expo/metro-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" + "balanced-match": "^1.0.0" } }, - "node_modules/@expo/metro/node_modules/metro-runtime": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.1.tgz", - "integrity": "sha512-3Ag8ZS4IwafL/JUKlaeM6/CbkooY+WcVeqdNlBG0m4S0Qz0om3rdFdy1y6fYBpl6AwXJwWeMuXrvZdMuByTcRA==", + "node_modules/@expo/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.0", - "flow-enums-runtime": "^0.0.6" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=20.19.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@expo/metro/node_modules/metro-source-map": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.1.tgz", - "integrity": "sha512-De7Vbeo96fFZ2cqmI0fWwVJbtHIwPZv++LYlWSwzTiCzxBDJORncN0LcT48Vi2UlQLzXJg+/CuTAcy7NBVh69A==", + "node_modules/@expo/metro-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-symbolicate": "0.83.1", - "nullthrows": "^1.1.1", - "ob1": "0.83.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=20.19.4" + "node": ">=7.0.0" } }, - "node_modules/@expo/metro/node_modules/metro-symbolicate": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.1.tgz", - "integrity": "sha512-wPxYkONlq/Sv8Ji7vHEx5OzFouXAMQJjpcPW41ySKMLP/Ir18SsiJK2h4YkdKpYrTS1+0xf8oqF6nxCsT3uWtg==", - "license": "MIT", + "node_modules/@expo/metro-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@expo/metro-config/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", "dependencies": { - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-source-map": "0.83.1", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": ">=20.19.4" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro/node_modules/metro-transform-plugins": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.1.tgz", - "integrity": "sha512-1Y+I8oozXwhuS0qwC+ezaHXBf0jXW4oeYn4X39XWbZt9X2HfjodqY9bH9r6RUTsoiK7S4j8Ni2C91bUC+sktJQ==", - "license": "MIT", + "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=20.19.4" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro/node_modules/metro-transform-worker": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.1.tgz", - "integrity": "sha512-owCrhPyUxdLgXEEEAL2b14GWTPZ2zYuab1VQXcfEy0sJE71iciD7fuMcrngoufh7e7UHDZ56q4ktXg8wgiYA1Q==", + "node_modules/@expo/metro-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "metro": "0.83.1", - "metro-babel-transformer": "0.83.1", - "metro-cache": "0.83.1", - "metro-cache-key": "0.83.1", - "metro-minify-terser": "0.83.1", - "metro-source-map": "0.83.1", - "metro-transform-plugins": "0.83.1", - "nullthrows": "^1.1.1" - }, "engines": { - "node": ">=20.19.4" + "node": ">=8" } }, - "node_modules/@expo/metro/node_modules/ob1": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.1.tgz", - "integrity": "sha512-ngwqewtdUzFyycomdbdIhFLjePPSOt1awKMUXQ0L7iLHgWEPF3DsCerblzjzfAUHaXuvE9ccJymWQ/4PNNqvnQ==", + "node_modules/@expo/metro-config/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "license": "MIT" + }, + "node_modules/@expo/metro-config/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" + "hermes-estree": "0.29.1" } }, - "node_modules/@expo/metro/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, + "node_modules/@expo/metro-config/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=4" + "node": "20 || >=22" } }, - "node_modules/@expo/metro/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "license": "MIT", + "node_modules/@expo/metro-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro/node_modules/serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "license": "MIT", + "node_modules/@expo/metro-config/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", + "node_modules/@expo/metro-config/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/@expo/metro/node_modules/supports-color": { + "node_modules/@expo/metro-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7013,26 +7053,48 @@ "node": ">=8" } }, + "node_modules/@expo/metro-runtime": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-6.1.2.tgz", + "integrity": "sha512-nvM+Qv45QH7pmYvP8JB1G8JpScrWND3KrMA6ZKe62cwwNiX/BjHU28Ear0v/4bQWXlOY0mv6B8CDIm8JxXde9g==", + "license": "MIT", + "dependencies": { + "anser": "^1.4.9", + "pretty-format": "^29.7.0", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-dom": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, "node_modules/@expo/osascript": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.3.7.tgz", - "integrity": "sha512-IClSOXxR0YUFxIriUJVqyYki7lLMIHrrzOaP01yxAL1G8pj2DWV5eW1y5jSzIcIfSCNhtGsshGd1tU/AYup5iQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.4.2.tgz", + "integrity": "sha512-/XP7PSYF2hzOZzqfjgkoWtllyeTN8dW3aM4P6YgKcmmPikKL5FdoyQhti4eh6RK5a5VrUXJTOlTNIpIHsfB5Iw==", "license": "MIT", "dependencies": { - "@expo/spawn-async": "^1.7.2", - "exec-async": "^2.2.0" + "@expo/spawn-async": "^1.7.2" }, "engines": { "node": ">=12" } }, "node_modules/@expo/package-manager": { - "version": "1.9.8", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.9.8.tgz", - "integrity": "sha512-4/I6OWquKXYnzo38pkISHCOCOXxfeEmu4uDoERq1Ei/9Ur/s9y3kLbAamEkitUkDC7gHk1INxRWEfFNzGbmOrA==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.10.2.tgz", + "integrity": "sha512-l6uSpmG/igVcEsWIB38vc3gL+pIwwP14aj4aJSnjKTZJpDtGHR4l33HVHPN0SGHSIfGJ7HBuB6fDdlbhOwEslQ==", "license": "MIT", "dependencies": { - "@expo/json-file": "^10.0.7", + "@expo/json-file": "^10.0.11", "@expo/spawn-async": "^1.7.2", "chalk": "^4.0.0", "npm-package-arg": "^11.0.0", @@ -7342,17 +7404,17 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "54.0.5", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-54.0.5.tgz", - "integrity": "sha512-eCvbVUf01j1nSrs4mG/rWwY+SfgE30LM6JcElLrnNgNnaDWzt09E/c8n3ZeTLNKENwJaQQ1KIn2VE461/4VnWQ==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.3.tgz", + "integrity": "sha512-LP6zu9sPSkm0h+HStCB3PBu2htrKX0YB/2fUQ/NDg/UHeHi0dFjPhVVih5f3GpIZV11SpyOm4AKegYKJWGJvkw==", "license": "MIT", "dependencies": { - "@expo/config": "~12.0.10", - "@expo/config-plugins": "~54.0.2", - "@expo/config-types": "^54.0.8", - "@expo/image-utils": "^0.8.7", - "@expo/json-file": "^10.0.7", - "@react-native/normalize-colors": "0.81.4", + "@expo/config": "~55.0.3", + "@expo/config-plugins": "~55.0.3", + "@expo/config-types": "^55.0.3", + "@expo/image-utils": "^0.8.11", + "@expo/json-file": "^10.0.11", + "@react-native/normalize-colors": "0.83.1", "debug": "^4.3.1", "resolve-from": "^5.0.0", "semver": "^7.6.0", @@ -7362,32 +7424,78 @@ "expo": "*" } }, + "node_modules/@expo/prebuild-config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", + "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~55.0.3", + "@expo/config-types": "^55.0.3", + "@expo/json-file": "^10.0.11", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" + } + }, "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { - "version": "54.0.2", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.2.tgz", - "integrity": "sha512-jD4qxFcURQUVsUFGMcbo63a/AnviK8WUGard+yrdQE3ZrB/aurn68SlApjirQQLEizhjI5Ar2ufqflOBlNpyPg==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", + "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", "license": "MIT", "dependencies": { - "@expo/config-types": "^54.0.8", - "@expo/json-file": "~10.0.7", - "@expo/plist": "^0.4.7", + "@expo/config-types": "^55.0.3", + "@expo/json-file": "~10.0.11", + "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", - "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config-types": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", + "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "license": "MIT" + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/plist": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, "node_modules/@expo/prebuild-config/node_modules/@react-native/normalize-colors": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.4.tgz", - "integrity": "sha512-9nRRHO1H+tcFqjb9gAM105Urtgcanbta2tuqCVY0NATHeFPDEAB7gPyiLxCHKMi1NbhP6TH0kxgSWXKZl1cyRg==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", + "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", "license": "MIT" }, "node_modules/@expo/prebuild-config/node_modules/ansi-styles": { @@ -7439,6 +7547,23 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/@expo/prebuild-config/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@expo/prebuild-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -7448,6 +7573,46 @@ "node": ">=8" } }, + "node_modules/@expo/prebuild-config/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/prebuild-config/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/prebuild-config/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@expo/prebuild-config/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -7473,9 +7638,9 @@ } }, "node_modules/@expo/schema-utils": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.7.tgz", - "integrity": "sha512-jWHoSuwRb5ZczjahrychMJ3GWZu54jK9ulNdh1d4OzAEq672K9E5yOlnlBsfIHWHGzUAT+0CL7Yt1INiXTz68g==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-55.0.2.tgz", + "integrity": "sha512-QZ5WKbJOWkCrMq0/kfhV9ry8te/OaS34YgLVpG8u9y2gix96TlpRTbxM/YATjNcUR2s4fiQmPCOxkGtog4i37g==", "license": "MIT" }, "node_modules/@expo/sdk-runtime-versions": { @@ -7484,19 +7649,6 @@ "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", "license": "MIT" }, - "node_modules/@expo/server": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.7.5.tgz", - "integrity": "sha512-aNVcerBSJEcUspvXRWChEgFhix1gTNIcgFDevaU/A1+TkfbejNIjGX4rfLEpfyRzzdLIRuOkBNjD+uTYMzohyg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">=20.16.0" - } - }, "node_modules/@expo/spawn-async": { "version": "1.7.2", "license": "MIT", @@ -7619,9 +7771,9 @@ } }, "node_modules/@expo/xcpretty/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -9368,7 +9520,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -9386,7 +9538,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9402,7 +9554,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -9419,7 +9571,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -9432,14 +9584,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -9449,7 +9601,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9462,7 +9614,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -9510,7 +9662,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9526,7 +9678,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -9543,7 +9695,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -9556,14 +9708,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -9573,7 +9725,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9607,7 +9759,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -9619,7 +9771,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -9645,7 +9797,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -9661,7 +9813,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -9705,7 +9857,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9721,7 +9873,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -9738,7 +9890,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -9751,7 +9903,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/glob": { @@ -9759,7 +9911,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -9780,7 +9932,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -9790,7 +9942,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -9807,7 +9959,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -9823,7 +9975,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9839,7 +9991,7 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -9852,7 +10004,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9875,7 +10027,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -9890,7 +10042,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -9906,7 +10058,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -10882,6 +11034,517 @@ "react-native": "*" } }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT", + "peer": true + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", + "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@react-native-camera-roll/camera-roll": { "version": "7.4.0", "license": "MIT", @@ -12001,7 +12664,6 @@ "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", - "devOptional": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", @@ -12015,7 +12677,6 @@ "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", - "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -12075,7 +12736,6 @@ "version": "0.32.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", - "devOptional": true, "license": "MIT", "dependencies": { "hermes-parser": "0.32.0" @@ -12153,7 +12813,7 @@ } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": { + "node_modules/@react-native/debugger-frontend": { "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", @@ -12162,7 +12822,20 @@ "node": ">= 20.19.4" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": { + "node_modules/@react-native/debugger-shell": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", + "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@react-native/dev-middleware": { "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", @@ -12185,7 +12858,7 @@ "node": ">= 20.19.4" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/encodeurl": { + "node_modules/@react-native/dev-middleware/node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", @@ -12194,7 +12867,7 @@ "node": ">= 0.8" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/serve-static": { + "node_modules/@react-native/dev-middleware/node_modules/serve-static": { "version": "1.16.3", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", @@ -12209,74 +12882,6 @@ "node": ">= 0.8.0" } }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.4.tgz", - "integrity": "sha512-SU05w1wD0nKdQFcuNC9D6De0ITnINCi8MEnx9RsTD2e4wN83ukoC7FpXaPCYyP6+VjFt5tUKDPgP1O7iaNXCqg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.6", - "fb-dotslash": "0.5.8" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/dev-middleware": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.4.tgz", - "integrity": "sha512-hu1Wu5R28FT7nHXs2wWXvQ++7W7zq5GPY83llajgPlYKznyPLAY/7bArc5rAzNB7b0kwnlaoPQKlvD/VP9LZug==", - "license": "MIT", - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.81.4", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^6.2.3" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@react-native/dev-middleware/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/@react-native/gradle-plugin": { "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", @@ -12363,6 +12968,8 @@ }, "node_modules/@react-navigation/core": { "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.10.0.tgz", + "integrity": "sha512-qZBA5gGm+9liT4+EHk+kl9apwvqh7HqhLF1XeX6SQRmC/n2QI0u1B8OevKc+EPUDEM9Od15IuwT/GRbSs7/Umw==", "license": "MIT", "dependencies": { "@react-navigation/routers": "^7.4.0", @@ -12381,13 +12988,6 @@ "version": "19.1.0", "license": "MIT" }, - "node_modules/@react-navigation/core/node_modules/use-latest-callback": { - "version": "0.2.3", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8" - } - }, "node_modules/@react-navigation/devtools": { "version": "6.0.10", "dev": true, @@ -12466,15 +13066,10 @@ "react-native-screens": ">= 4.0.0" } }, - "node_modules/@react-navigation/native/node_modules/use-latest-callback": { - "version": "0.2.3", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8" - } - }, "node_modules/@react-navigation/routers": { - "version": "7.4.0", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", + "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", "license": "MIT", "dependencies": { "nanoid": "^3.3.11" @@ -15394,7 +15989,7 @@ }, "node_modules/@testing-library/react-native": { "version": "13.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2", @@ -15419,7 +16014,7 @@ }, "node_modules/@testing-library/react-native/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -15433,7 +16028,7 @@ }, "node_modules/@testing-library/react-native/node_modules/chalk": { "version": "4.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -15448,7 +16043,7 @@ }, "node_modules/@testing-library/react-native/node_modules/color-convert": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15459,12 +16054,12 @@ }, "node_modules/@testing-library/react-native/node_modules/color-name": { "version": "1.1.4", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@testing-library/react-native/node_modules/has-flag": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -15472,7 +16067,7 @@ }, "node_modules/@testing-library/react-native/node_modules/supports-color": { "version": "7.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -17388,6 +17983,19 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", @@ -18131,9 +18739,9 @@ } }, "node_modules/babel-preset-expo": { - "version": "54.0.6", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.6.tgz", - "integrity": "sha512-GxJfwnuOPQJbzDe5WASJZdNQiukLw7i9z+Lh6JQWkUHXsShHyQrqgiKE55MD/KaP9VqJ70yZm7bYqOu8zwcWqQ==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.2.tgz", + "integrity": "sha512-fkjwB1Pg9gOqzaQl5TWpo9lAh4E3h8TqWup1PB4sgb88Re/h7CjU5FSo9J75jOisXO5gwPn58BTKUpEXIVxG4g==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", @@ -18151,7 +18759,7 @@ "@babel/plugin-transform-runtime": "^7.24.7", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.81.5", + "@react-native/babel-preset": "0.83.1", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "~0.21.0", "babel-plugin-syntax-hermes-parser": "^0.29.1", @@ -18173,141 +18781,12 @@ } } }, - "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.5.tgz", - "integrity": "sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.81.5" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.5.tgz", - "integrity": "sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.4", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.25.4", - "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-react-display-name": "^7.24.7", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.25.2", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.81.5", - "babel-plugin-syntax-hermes-parser": "0.29.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", - "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/parser": "^7.25.3", - "glob": "^7.1.1", - "hermes-parser": "0.29.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, "node_modules/babel-preset-expo/node_modules/babel-plugin-react-native-web": { "version": "0.21.2", "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", "license": "MIT" }, - "node_modules/babel-preset-expo/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/babel-preset-expo/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/babel-preset-expo/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, "node_modules/babel-preset-jest": { "version": "29.6.3", "license": "MIT", @@ -18403,6 +18882,8 @@ }, "node_modules/better-opn": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "license": "MIT", "dependencies": { "open": "^8.0.4" @@ -18413,6 +18894,8 @@ }, "node_modules/better-opn/node_modules/open": { "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", @@ -18791,33 +19274,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/callsites": { "version": "3.1.0", "devOptional": true, @@ -18973,7 +19429,7 @@ }, "node_modules/char-regex": { "version": "1.0.2", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -19087,7 +19543,7 @@ }, "node_modules/cjs-module-lexer": { "version": "1.2.3", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/classnames": { @@ -19281,6 +19737,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT", + "peer": true + }, "node_modules/clipboard": { "version": "2.0.11", "license": "MIT", @@ -19344,7 +19807,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -19369,7 +19832,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/color": { @@ -19996,7 +20459,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -20018,7 +20481,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -20034,7 +20497,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -20051,7 +20514,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -20064,14 +20527,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -20081,7 +20544,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -20149,15 +20612,6 @@ "version": "4.2.0", "license": "MIT" }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/cspell": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/cspell/-/cspell-9.4.0.tgz", @@ -20874,6 +21328,8 @@ }, "node_modules/define-lazy-prop": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "license": "MIT", "engines": { "node": ">=8" @@ -21053,7 +21509,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -21064,6 +21520,13 @@ "dev": true, "license": "MIT" }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT", + "peer": true + }, "node_modules/diff": { "version": "4.0.2", "devOptional": true, @@ -21074,7 +21537,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -21114,6 +21577,12 @@ "node": ">=6" } }, + "node_modules/dnssd-advertise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.1.tgz", + "integrity": "sha512-5lwwxSitFrESlnv0JQhmhFlBAD6I97ghwo/xfNio1SajbZgsqq3OQY4kELcJiK/j38fgJFbeIDotAjSGcI85eg==", + "license": "MIT" + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -21303,7 +21772,7 @@ }, "node_modules/emittery": { "version": "0.13.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=12" @@ -21408,6 +21877,7 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "devOptional": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -22802,12 +23272,6 @@ "node": ">=0.8.x" } }, - "node_modules/exec-async": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", - "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", - "license": "MIT" - }, "node_modules/execa": { "version": "5.1.1", "devOptional": true, @@ -22834,7 +23298,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.8.0" } @@ -22849,7 +23313,7 @@ }, "node_modules/expect": { "version": "29.7.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -22919,29 +23383,31 @@ } }, "node_modules/expo": { - "version": "54.0.10", - "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.10.tgz", - "integrity": "sha512-49+IginEoKC+g125ZlRvUYNl9jKjjHcDiDnQvejNWlMQ0LtcFIWiFad/PLjmi7YqF/0rj9u3FNxqM6jNP16O0w==", + "version": "55.0.0-preview.6", + "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.6.tgz", + "integrity": "sha512-vw8UNxKZl16FS428jsnKe0txuTbj/zMpMV6CAzzaMaAVNMYxYVnh7iabvhUM4MEqocXKwtGLg45E2h1hhZzbqQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "54.0.8", - "@expo/config": "~12.0.9", - "@expo/config-plugins": "~54.0.1", - "@expo/devtools": "0.1.7", - "@expo/fingerprint": "0.15.1", - "@expo/metro": "~54.0.0", - "@expo/metro-config": "54.0.5", + "@expo/cli": "55.0.3", + "@expo/config": "~55.0.3", + "@expo/config-plugins": "~55.0.3", + "@expo/devtools": "55.0.2", + "@expo/fingerprint": "0.16.2", + "@expo/local-build-cache-provider": "55.0.2", + "@expo/log-box": "55.0.2", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "55.0.3", "@expo/vector-icons": "^15.0.2", "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~54.0.3", - "expo-asset": "~12.0.9", - "expo-constants": "~18.0.9", - "expo-file-system": "~19.0.15", - "expo-font": "~14.0.8", - "expo-keep-awake": "~15.0.7", - "expo-modules-autolinking": "3.0.13", - "expo-modules-core": "3.0.18", + "babel-preset-expo": "~55.0.2", + "expo-asset": "~55.0.2", + "expo-constants": "~55.0.2", + "expo-file-system": "~55.0.2", + "expo-font": "~55.0.2", + "expo-keep-awake": "~55.0.2", + "expo-modules-autolinking": "55.0.2", + "expo-modules-core": "55.0.4", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", "whatwg-url-without-unicode": "8.0.0-3" @@ -22971,13 +23437,13 @@ } }, "node_modules/expo-asset": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.8.tgz", - "integrity": "sha512-jj2U8zw9+7orST2rlQGULYiqPoECOuUyffs2NguGrq84bYbkM041T7TOMXH2raPVJnM9lEAP54ezI6XL+GVYqw==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.2.tgz", + "integrity": "sha512-6GNPOGG8q+oqgbsGMDjBuXcfa4UlviNihpICgVonIaanREhd3f7QFKBmYyN7gTLIfEJ610qpLckAC0+al5lx0w==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.8.7", - "expo-constants": "~18.0.8" + "@expo/image-utils": "^0.8.11", + "expo-constants": "~55.0.2" }, "peerDependencies": { "expo": "*", @@ -22985,6 +23451,227 @@ "react-native": "*" } }, + "node_modules/expo-asset/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/expo-asset/node_modules/@expo/config": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", + "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~55.0.3", + "@expo/config-types": "^55.0.3", + "@expo/json-file": "^10.0.11", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" + } + }, + "node_modules/expo-asset/node_modules/@expo/config-plugins": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", + "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^55.0.3", + "@expo/json-file": "~10.0.11", + "@expo/plist": "^0.5.2", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/expo-asset/node_modules/@expo/config-types": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", + "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "license": "MIT" + }, + "node_modules/expo-asset/node_modules/@expo/plist": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/expo-asset/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-asset/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo-asset/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo-asset/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/expo-asset/node_modules/expo-constants": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.2.tgz", + "integrity": "sha512-tTQznRuE3od2aAnAzXc0LzrhM58WcqB5XLC3/7yeWibOoVx23f6yJQf+p1WUiovJieCxJTaKl7bJmc/BDsrvQw==", + "license": "MIT", + "dependencies": { + "@expo/config": "~55.0.3", + "@expo/env": "~2.0.11" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-asset/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-asset/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-asset/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/expo-asset/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-asset/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-asset/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-asset/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/expo-av": { "version": "15.1.7", "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-15.1.7.tgz", @@ -23003,13 +23690,14 @@ } }, "node_modules/expo-constants": { - "version": "18.0.10", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.10.tgz", - "integrity": "sha512-Rhtv+X974k0Cahmvx6p7ER5+pNhBC0XbP1lRviL2J1Xl4sT2FBaIuIxF/0I0CbhOsySf0ksqc5caFweAy9Ewiw==", + "version": "18.0.13", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", + "integrity": "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==", "license": "MIT", + "peer": true, "dependencies": { - "@expo/config": "~12.0.10", - "@expo/env": "~2.0.7" + "@expo/config": "~12.0.13", + "@expo/env": "~2.0.8" }, "peerDependencies": { "expo": "*", @@ -23017,9 +23705,9 @@ } }, "node_modules/expo-file-system": { - "version": "19.0.15", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.15.tgz", - "integrity": "sha512-sRLW+3PVJDiuoCE2LuteHhC7OxPjh1cfqLylf1YG1TDEbbQXnzwjfsKeRm6dslEPZLkMWfSLYIrVbnuq5mF7kQ==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.2.tgz", + "integrity": "sha512-eFRpieCin6I+0pjODKHBoNk5q7YRc3Z/ys5VLCrQpOpAzJGAKt2mwJ5hLfdyr8KylJM9PfxIvBGPM8NBGmy2YQ==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -23058,32 +23746,51 @@ } }, "node_modules/expo-image-loader": { - "version": "5.1.0", + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-55.0.0.tgz", + "integrity": "sha512-NOjp56wDrfuA5aiNAybBIjqIn1IxKeGJ8CECWZncQ/GzjZfyTYAHTCyeApYkdKkMBLHINzI4BbTGSlbCa0fXXQ==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-image-manipulator": { - "version": "13.1.5", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-image-manipulator/-/expo-image-manipulator-55.0.2.tgz", + "integrity": "sha512-IHcki4GdoaipKulw4X7W1XSTdpmsg6NN6Ijt0ZkuDOPDiCRyQoYEsX09wGDkgZZFymSQ5PUcMwUDOMBMSkNWzQ==", "license": "MIT", "dependencies": { - "expo-image-loader": "~5.1.0" + "expo-image-loader": "~55.0.0" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-keep-awake": { - "version": "15.0.7", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.7.tgz", - "integrity": "sha512-CgBNcWVPnrIVII5G54QDqoE125l+zmqR4HR8q+MQaCfHet+dYpS5vX5zii/RMayzGN4jPgA4XYIQ28ePKFjHoA==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", + "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", "license": "MIT", "peerDependencies": { "expo": "*", "react": "*" } }, + "node_modules/expo-linking": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.11.tgz", + "integrity": "sha512-+VSaNL5om3kOp/SSKO5qe6cFgfSIWnnQDSbA7XLs3ECkYzXRquk5unxNS3pg7eK5kNUmQ4kgLI7MhTggAEUBLA==", + "license": "MIT", + "peer": true, + "dependencies": { + "expo-constants": "~18.0.12", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-location": { "version": "19.0.7", "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-19.0.7.tgz", @@ -23094,15 +23801,14 @@ } }, "node_modules/expo-modules-autolinking": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.13.tgz", - "integrity": "sha512-58WnM15ESTyT2v93Rba7jplXtGvh5cFbxqUCi2uTSpBf3nndDRItLzBQaoWBzAvNUhpC2j1bye7Dn/E+GJFXmw==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.2.tgz", + "integrity": "sha512-4GKGkvuRWQ940AVuusva6QOaF8Y9042iMOlRXk3OpVdUDoVtKrRmU0JIGkMMU8IdWfYa85ZgYrObExNcIOy8/Q==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", "commander": "^7.2.0", - "glob": "^10.4.2", "require-from-string": "^2.0.2", "resolve-from": "^5.0.0" }, @@ -23190,9 +23896,9 @@ } }, "node_modules/expo-modules-core": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.18.tgz", - "integrity": "sha512-9JPnjlXEFaq/uACZ7I4wb/RkgPYCEsfG75UKMvfl7P7rkymtpRGYj8/gTL2KId8Xt1fpmIPOF57U8tKamjtjXg==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.4.tgz", + "integrity": "sha512-H2tm1YSsdyOtcJ6gueE7mAWmcqlHYcrrAZOVOIKvNLAeuTnT7RkFnkvDCAIohzbM9dBTNs23F5KyPOoVDZUNGg==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -23211,6 +23917,15 @@ "expo": "*" } }, + "node_modules/expo-server": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.2.tgz", + "integrity": "sha512-tphdvclcniRTKdKx9DSVdpVK3Q5IaMXc5E1AZ4Twd7DlzlrcQ6lOT0PtiUuMi1tip9mSzXQzfFLqfdCnnSz4tw==", + "license": "MIT", + "engines": { + "node": ">=20.16.0" + } + }, "node_modules/expo-store-review": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/expo-store-review/-/expo-store-review-9.0.9.tgz", @@ -23234,33 +23949,42 @@ "react-native": "*" } }, + "node_modules/expo/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, "node_modules/expo/node_modules/@expo/cli": { - "version": "54.0.8", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.8.tgz", - "integrity": "sha512-bRJXvtjgxpyElmJuKLotWyIW5j9a2K3rGUjd2A8LRcFimrZp0wwuKPQjlUK0sFNbU7zHWfxubNq/B+UkUNkCxw==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.3.tgz", + "integrity": "sha512-6GZhzTK5OGAvE4GTjLoB41DUG/2r4fPG9hz2uo0ANoKUjgU2N9BhMzVw8wbxF47ekQRkTqxtPVPJy6cv/aVGVQ==", "license": "MIT", "dependencies": { "@0no-co/graphql.web": "^1.0.8", - "@expo/code-signing-certificates": "^0.0.5", - "@expo/config": "~12.0.9", - "@expo/config-plugins": "~54.0.1", - "@expo/devcert": "^1.1.2", - "@expo/env": "~2.0.7", - "@expo/image-utils": "^0.8.7", - "@expo/json-file": "^10.0.7", - "@expo/mcp-tunnel": "~0.0.7", - "@expo/metro": "~54.0.0", - "@expo/metro-config": "~54.0.5", - "@expo/osascript": "^2.3.7", - "@expo/package-manager": "^1.9.8", - "@expo/plist": "^0.4.7", - "@expo/prebuild-config": "^54.0.3", - "@expo/schema-utils": "^0.1.7", - "@expo/server": "^0.7.5", + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~55.0.3", + "@expo/config-plugins": "~55.0.3", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.0.11", + "@expo/image-utils": "^0.8.11", + "@expo/json-file": "^10.0.11", + "@expo/log-box": "55.0.2", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "~55.0.3", + "@expo/osascript": "^2.4.2", + "@expo/package-manager": "^1.10.2", + "@expo/plist": "^0.5.2", + "@expo/prebuild-config": "^55.0.3", + "@expo/router-server": "^55.0.2", + "@expo/schema-utils": "^55.0.2", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", "@expo/xcpretty": "^4.3.0", - "@react-native/dev-middleware": "0.81.4", + "@react-native/dev-middleware": "0.83.1", "@urql/core": "^5.0.6", "@urql/exchange-retry": "^1.3.0", "accepts": "^1.3.8", @@ -23273,37 +23997,36 @@ "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", + "dnssd-advertise": "^1.1.1", "env-editor": "^0.4.1", - "freeport-async": "^2.0.0", + "expo-server": "^55.0.2", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", "lan-network": "^0.1.6", "minimatch": "^9.0.0", - "node-forge": "^1.3.1", + "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", "picomatch": "^3.0.1", - "pretty-bytes": "^5.6.0", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", "qrcode-terminal": "0.11.0", "require-from-string": "^2.0.2", "requireg": "^0.2.2", - "resolve": "^1.22.2", "resolve-from": "^5.0.0", - "resolve.exports": "^2.0.3", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", "source-map-support": "~0.5.21", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", - "tar": "^7.4.3", + "tar": "^7.5.2", "terminal-link": "^2.1.1", "undici": "^6.18.2", "wrap-ansi": "^7.0.0", - "ws": "^8.12.1" + "ws": "^8.12.1", + "zod": "^3.25.76" }, "bin": { "expo-internal": "build/bin/cli" @@ -23322,48 +24045,220 @@ } } }, + "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/metro-runtime": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.2.tgz", + "integrity": "sha512-wXoKXGzt2k7bzgUCYuY7M57GL6E9RKcg41cPqvbN2/NZQNSt9QgoNw+mwEXpDI/8RxfA7lVeAn4DQUWZrtkaiA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@expo/log-box": "55.0.2", + "anser": "^1.4.9", + "pretty-format": "^29.7.0", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-dom": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/router-server": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.2.tgz", + "integrity": "sha512-Om9CZNDG2olnYMLjkJ40p6RZjI9ihcavLrgS59CUmXMLHjNVb0bH4TdhS4ug86ougxGAJG3hFywFFpHfKFkysA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "@expo/metro-runtime": "^55.0.1", + "expo": "*", + "expo-constants": "^55.0.1", + "expo-font": "*", + "expo-router": "*", + "expo-server": "*", + "react": "*", + "react-dom": "*", + "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/config": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", + "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~55.0.3", + "@expo/config-types": "^55.0.3", + "@expo/json-file": "^10.0.11", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" + } + }, "node_modules/expo/node_modules/@expo/config-plugins": { - "version": "54.0.2", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.2.tgz", - "integrity": "sha512-jD4qxFcURQUVsUFGMcbo63a/AnviK8WUGard+yrdQE3ZrB/aurn68SlApjirQQLEizhjI5Ar2ufqflOBlNpyPg==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", + "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", "license": "MIT", "dependencies": { - "@expo/config-types": "^54.0.8", - "@expo/json-file": "~10.0.7", - "@expo/plist": "^0.4.7", + "@expo/config-types": "^55.0.3", + "@expo/json-file": "~10.0.11", + "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", - "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, - "node_modules/expo/node_modules/@expo/fingerprint": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.15.1.tgz", - "integrity": "sha512-U1S9DwiapCHQjHdHDDyO/oXsl/1oEHSHZRRkWDDrHgXRUDiAVIySw9Unvvcr118Ee6/x4NmKSZY1X0VagrqmFg==", + "node_modules/expo/node_modules/@expo/config-types": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", + "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "license": "MIT" + }, + "node_modules/expo/node_modules/@expo/plist": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", "license": "MIT", "dependencies": { - "@expo/spawn-async": "^1.7.2", - "arg": "^5.0.2", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "getenv": "^2.0.0", - "glob": "^10.4.2", - "ignore": "^5.3.1", - "minimatch": "^9.0.0", - "p-limit": "^3.1.0", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/expo/node_modules/@react-navigation/bottom-tabs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", + "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" }, - "bin": { - "fingerprint": "bin/cli.js" + "peerDependencies": { + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/expo/node_modules/@react-navigation/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", + "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@react-navigation/routers": "^7.5.3", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "query-string": "^7.1.3", + "react-is": "^19.1.0", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "react": ">= 18.2.0" + } + }, + "node_modules/expo/node_modules/@react-navigation/elements": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", + "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", + "license": "MIT", + "peer": true, + "dependencies": { + "color": "^4.2.3", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@react-navigation/native": { + "version": "7.1.28", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", + "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@react-navigation/core": "^7.14.0", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "use-latest-callback": "^0.2.4" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*" + } + }, + "node_modules/expo/node_modules/@react-navigation/native-stack": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.11.0.tgz", + "integrity": "sha512-yNx9Wr4dfpOHpqjf2sGog4eH6KCYwTAEPlUPrKbvWlQbCRm5bglwPmaTXw9hTovX9v3HIa42yo7bXpbYfq4jzg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0", + "warn-once": "^0.1.1" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" } }, "node_modules/expo/node_modules/ansi-styles": { @@ -23442,23 +24337,27 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/expo/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/expo/node_modules/expo-constants": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.2.tgz", + "integrity": "sha512-tTQznRuE3od2aAnAzXc0LzrhM58WcqB5XLC3/7yeWibOoVx23f6yJQf+p1WUiovJieCxJTaKl7bJmc/BDsrvQw==", "license": "MIT", - "engines": { - "node": ">=0.8.0" + "dependencies": { + "@expo/config": "~55.0.3", + "@expo/env": "~2.0.11" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" } }, - "node_modules/expo/node_modules/expo-asset": { - "version": "12.0.9", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.9.tgz", - "integrity": "sha512-vrdRoyhGhBmd0nJcssTSk1Ypx3Mbn/eXaaBCQVkL0MJ8IOZpAObAjfD5CTy8+8RofcHEQdh3wwZVCs7crvfOeg==", + "node_modules/expo/node_modules/expo-font": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.2.tgz", + "integrity": "sha512-C7F0U4VLdEeuqcnu3KkA1HyyEIFLRpr8uTY1FAIMMKyjwDuIlAKnsLPgfWMXTEpNaaGSGDlkOPdnbD1Dpo7GCw==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.8.7", - "expo-constants": "~18.0.9" + "fontfaceobserver": "^2.1.0" }, "peerDependencies": { "expo": "*", @@ -23466,6 +24365,140 @@ "react-native": "*" } }, + "node_modules/expo/node_modules/expo-router": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-6.0.22.tgz", + "integrity": "sha512-6eOwobaVZQRsSQv0IoWwVlPbJru1zbreVsuPFIWwk7HApENStU2MggrceHXJqXjGho+FKeXxUop/gqOFDzpOMg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@expo/metro-runtime": "^6.1.2", + "@expo/schema-utils": "^0.1.8", + "@radix-ui/react-slot": "1.2.0", + "@radix-ui/react-tabs": "^1.1.12", + "@react-navigation/bottom-tabs": "^7.4.0", + "@react-navigation/native": "^7.1.8", + "@react-navigation/native-stack": "^7.3.16", + "client-only": "^0.0.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "expo-server": "^1.0.5", + "fast-deep-equal": "^3.1.3", + "invariant": "^2.2.4", + "nanoid": "^3.3.8", + "query-string": "^7.1.3", + "react-fast-compare": "^3.2.2", + "react-native-is-edge-to-edge": "^1.1.6", + "semver": "~7.6.3", + "server-only": "^0.0.1", + "sf-symbols-typescript": "^2.1.0", + "shallowequal": "^1.1.0", + "use-latest-callback": "^0.2.1", + "vaul": "^1.1.2" + }, + "peerDependencies": { + "@expo/metro-runtime": "^6.1.2", + "@react-navigation/drawer": "^7.5.0", + "@testing-library/react-native": ">= 12.0.0", + "expo": "*", + "expo-constants": "^18.0.13", + "expo-linking": "^8.0.11", + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-gesture-handler": "*", + "react-native-reanimated": "*", + "react-native-safe-area-context": ">= 5.4.0", + "react-native-screens": "*", + "react-native-web": "*", + "react-server-dom-webpack": "~19.0.3 || ~19.1.4 || ~19.2.3" + }, + "peerDependenciesMeta": { + "@react-navigation/drawer": { + "optional": true + }, + "@testing-library/react-native": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native-gesture-handler": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/expo-router/node_modules/@expo/schema-utils": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.8.tgz", + "integrity": "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==", + "license": "MIT", + "peer": true + }, + "node_modules/expo/node_modules/expo-router/node_modules/expo-server": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-1.0.5.tgz", + "integrity": "sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/expo/node_modules/expo-router/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/expo/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -23528,6 +24561,15 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, + "node_modules/expo/node_modules/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/expo/node_modules/log-symbols/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -23549,6 +24591,15 @@ "node": ">=4" } }, + "node_modules/expo/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/expo/node_modules/mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -23643,6 +24694,15 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, + "node_modules/expo/node_modules/ora/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/expo/node_modules/ora/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -23664,6 +24724,22 @@ "node": ">=4" } }, + "node_modules/expo/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/expo/node_modules/picomatch": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", @@ -23676,6 +24752,13 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/expo/node_modules/react-is": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "license": "MIT", + "peer": true + }, "node_modules/expo/node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -23690,9 +24773,9 @@ } }, "node_modules/expo/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -24622,15 +25705,6 @@ "url": "https://github.com/sponsors/rawify" } }, - "node_modules/freeport-async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", - "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/fresh": { "version": "0.5.2", "license": "MIT", @@ -24893,6 +25967,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/get-package-type": { "version": "0.1.0", "license": "MIT", @@ -25384,6 +26468,24 @@ "version": "16.13.1", "license": "MIT" }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, "node_modules/howler": { "version": "2.2.4", "license": "MIT" @@ -25426,7 +26528,7 @@ }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/html-minifier-terser": { @@ -25884,7 +26986,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -25920,7 +27022,7 @@ }, "node_modules/indent-string": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -26020,6 +27122,7 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", + "devOptional": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -26157,13 +27260,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.2.1", "license": "MIT", @@ -26231,7 +27327,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -26614,7 +27710,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -26629,7 +27725,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -26639,7 +27735,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -26655,7 +27751,7 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -26668,7 +27764,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -26681,7 +27777,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -26696,7 +27792,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -26706,7 +27802,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -26756,7 +27852,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -26783,7 +27879,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -26798,7 +27894,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -26830,7 +27926,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -26846,7 +27942,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -26863,7 +27959,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -26876,14 +27972,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/dedent": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", - "dev": true, + "devOptional": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -26898,7 +27994,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -26908,7 +28004,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -26921,7 +28017,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -26955,7 +28051,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -26971,7 +28067,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -26988,7 +28084,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -27001,14 +28097,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -27018,7 +28114,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -27031,7 +28127,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -27077,7 +28173,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -27093,7 +28189,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -27110,7 +28206,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -27123,7 +28219,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-config/node_modules/glob": { @@ -27131,7 +28227,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -27152,7 +28248,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -27162,7 +28258,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -27173,7 +28269,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -27187,7 +28283,7 @@ }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -27201,7 +28297,7 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -27216,7 +28312,7 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -27227,12 +28323,12 @@ }, "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -27240,7 +28336,7 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -27253,7 +28349,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -27266,7 +28362,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -27283,7 +28379,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -27299,7 +28395,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -27316,7 +28412,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -27329,14 +28425,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -27346,7 +28442,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -27854,7 +28950,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -27866,7 +28962,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -27880,7 +28976,7 @@ }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -27894,7 +28990,7 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -27909,7 +29005,7 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -27920,12 +29016,12 @@ }, "node_modules/jest-matcher-utils/node_modules/color-name": { "version": "1.1.4", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -27933,7 +29029,7 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28034,7 +29130,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -28059,7 +29155,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -28080,7 +29176,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -28094,7 +29190,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28110,7 +29206,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28127,7 +29223,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28140,14 +29236,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -28157,7 +29253,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28170,7 +29266,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -28203,7 +29299,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28219,7 +29315,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28236,7 +29332,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28249,14 +29345,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -28266,7 +29362,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -28282,7 +29378,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28298,7 +29394,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -28308,7 +29404,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -28319,7 +29415,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28332,7 +29428,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -28366,7 +29462,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28382,7 +29478,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28399,7 +29495,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28412,7 +29508,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/glob": { @@ -28420,7 +29516,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -28441,7 +29537,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -28451,7 +29547,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28462,7 +29558,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -28492,7 +29588,7 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28506,7 +29602,7 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28521,7 +29617,7 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28532,12 +29628,12 @@ }, "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -28545,7 +29641,7 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.3", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -28556,7 +29652,7 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28795,7 +29891,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -28815,7 +29911,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28831,7 +29927,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28848,7 +29944,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28861,14 +29957,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -28878,7 +29974,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -29121,10 +30217,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "license": "MIT" - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "license": "MIT" @@ -29368,9 +30460,9 @@ "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", - "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -29383,22 +30475,43 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.30.1", - "lightningcss-darwin-x64": "1.30.1", - "lightningcss-freebsd-x64": "1.30.1", - "lightningcss-linux-arm-gnueabihf": "1.30.1", - "lightningcss-linux-arm64-gnu": "1.30.1", - "lightningcss-linux-arm64-musl": "1.30.1", - "lightningcss-linux-x64-gnu": "1.30.1", - "lightningcss-linux-x64-musl": "1.30.1", - "lightningcss-win32-arm64-msvc": "1.30.1", - "lightningcss-win32-x64-msvc": "1.30.1" + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", - "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", "cpu": [ "arm64" ], @@ -29416,9 +30529,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", - "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", "cpu": [ "x64" ], @@ -29436,9 +30549,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", - "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", "cpu": [ "x64" ], @@ -29456,9 +30569,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", - "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", "cpu": [ "arm" ], @@ -29476,9 +30589,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", - "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", "cpu": [ "arm64" ], @@ -29496,9 +30609,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", - "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", "cpu": [ "arm64" ], @@ -29516,9 +30629,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", - "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", "cpu": [ "x64" ], @@ -29536,9 +30649,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", - "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", "cpu": [ "x64" ], @@ -29556,9 +30669,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", - "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", "cpu": [ "arm64" ], @@ -29576,9 +30689,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", - "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", "cpu": [ "x64" ], @@ -30659,7 +31772,7 @@ }, "node_modules/min-indent": { "version": "1.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -30847,7 +31960,7 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/negotiator": { @@ -30989,7 +32102,9 @@ } }, "node_modules/node-forge": { - "version": "1.3.1", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -31041,24 +32156,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, "node_modules/npm-run-path": { "version": "4.0.1", "devOptional": true, @@ -31990,7 +33087,7 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -32001,7 +33098,7 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -32013,7 +33110,7 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -32024,7 +33121,7 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -32038,7 +33135,7 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -32049,7 +33146,7 @@ }, "node_modules/pkg-dir/node_modules/path-exists": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -32374,18 +33471,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pretty-error": { "version": "4.0.0", "dev": true, @@ -32544,7 +33629,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "individual", @@ -32930,6 +34015,13 @@ "react": ">=16.13.1" } }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT", + "peer": true + }, "node_modules/react-fast-pdf": { "version": "1.0.29", "license": "MIT", @@ -33871,13 +34963,6 @@ "react-native-pager-view": ">= 6.0.0" } }, - "node_modules/react-native-tab-view/node_modules/use-latest-callback": { - "version": "0.2.3", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8" - } - }, "node_modules/react-native-url-polyfill": { "version": "2.0.0", "license": "MIT", @@ -34098,11 +35183,83 @@ "node": ">=0.10.0" } }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-test-renderer": { "version": "19.2.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "react-is": "^19.2.0", @@ -34116,7 +35273,7 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.3.tgz", "integrity": "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/react-web-config": { @@ -34251,7 +35408,7 @@ }, "node_modules/redent": { "version": "3.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "indent-string": "^4.0.0", @@ -34519,7 +35676,7 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -34572,6 +35729,7 @@ }, "node_modules/resolve.exports": { "version": "2.0.3", + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -35057,7 +36215,6 @@ }, "node_modules/server-only": { "version": "0.0.1", - "dev": true, "license": "MIT" }, "node_modules/set-function-length": { @@ -35150,6 +36307,16 @@ "version": "1.2.0", "license": "ISC" }, + "node_modules/sf-symbols-typescript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", + "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/sha.js": { "version": "2.4.11", "license": "(MIT AND BSD-3-Clause)", @@ -35172,6 +36339,13 @@ "node": ">=8" } }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT", + "peer": true + }, "node_modules/sharp": { "version": "0.33.5", "hasInstallScript": true, @@ -35889,7 +37063,7 @@ }, "node_modules/string-length": { "version": "4.0.2", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "char-regex": "^1.0.2", @@ -36084,7 +37258,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -36100,7 +37274,7 @@ }, "node_modules/strip-indent": { "version": "3.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "min-indent": "^1.0.0" @@ -36111,7 +37285,7 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -36423,15 +37597,6 @@ "node": ">=6.0.0" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/temp/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -37302,9 +38467,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", - "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "license": "MIT", "engines": { "node": ">=18.17" @@ -37382,18 +38547,6 @@ "node": ">=0.10.0" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/universal-user-agent": { "version": "6.0.0", "dev": true, @@ -37503,6 +38656,60 @@ "extraneous": true, "license": "MIT" }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest-callback": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", + "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-sync-external-store": { "version": "1.5.0", "license": "MIT", @@ -37554,7 +38761,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -37585,6 +38792,20 @@ "node": ">= 0.8" } }, + "node_modules/vaul": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", + "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, "node_modules/vlq": { "version": "1.0.1", "license": "MIT" @@ -38666,15 +39887,6 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.24.1" - } - }, "node_modules/zod-validation-error": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.3.tgz", diff --git a/package.json b/package.json index 9fa90ea9c7bc0..2920ddf822ea8 100644 --- a/package.json +++ b/package.json @@ -133,14 +133,14 @@ "dom-serializer": "^0.2.2", "domhandler": "^5.0.3", "expensify-common": "2.0.169", - "expo": "54.0.10", - "expo-asset": "12.0.8", + "expo": "55.0.0-preview.6", + "expo-asset": "55.0.2", "expo-av": "15.1.7", "expo-font": "14.0.8", "expo-image": "3.0.8", - "expo-image-manipulator": "^13.1.5", + "expo-image-manipulator": "55.0.2", "expo-location": "^19.0.7", - "expo-modules-core": "3.0.18", + "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", "expo-task-manager": "~14.0.9", @@ -252,6 +252,7 @@ "@react-native-community/cli-platform-ios": "20.0.0", "@react-native/babel-preset": "0.83.1", "@react-native/metro-config": "0.83.1", + "@react-navigation/core": "7.10.0", "@react-navigation/devtools": "^6.0.10", "@rock-js/platform-android": "0.12.6", "@rock-js/platform-ios": "0.12.6", @@ -400,7 +401,28 @@ "eslint-plugin-react-native-a11y": { "eslint": "^9.36.0" }, - "node-abi": "^3.78.0" + "node-abi": "^3.78.0", + "@fullstory/react-native": { + "expo": "55.0.0-preview.6" + }, + "@react-native-firebase/app": { + "expo": "55.0.0-preview.6" + }, + "@react-native-firebase/crashlytics": { + "expo": "55.0.0-preview.6" + }, + "@react-native-firebase/perf": { + "expo": "55.0.0-preview.6" + }, + "@react-native-google-signin/google-signin": { + "expo": "55.0.0-preview.6" + }, + "@rnmapbox/maps": { + "expo": "55.0.0-preview.6" + }, + "@sentry/react-native": { + "expo": "55.0.0-preview.6" + } }, "expo": { "autolinking": { From 3fdbd5e430dc2023b6840951fd1992d2f36950cb Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 27 Jan 2026 17:51:22 +0100 Subject: [PATCH 09/56] fix: ios build --- package-lock.json | 45 ++-- package.json | 5 +- patches/expo-av/details.md | 26 --- ...+15.1.7+001+fix-blank-screen-android.patch | 221 ------------------ ....7+002+handle-unsupported-videos-ios.patch | 22 -- ...ore+55.0.4+001+disableViewRecycling.patch} | 4 +- patches/expo/details.md | 14 -- ...+001+fix-missing-blob-variable-error.patch | 13 -- 8 files changed, 19 insertions(+), 331 deletions(-) delete mode 100644 patches/expo-av/details.md delete mode 100644 patches/expo-av/expo-av+15.1.7+001+fix-blank-screen-android.patch delete mode 100644 patches/expo-av/expo-av+15.1.7+002+handle-unsupported-videos-ios.patch rename patches/expo-modules-core/{expo-modules-core+3.0.18+001+disableViewRecycling.patch => expo-modules-core+55.0.4+001+disableViewRecycling.patch} (77%) delete mode 100644 patches/expo/details.md delete mode 100644 patches/expo/expo+54.0.10+001+fix-missing-blob-variable-error.patch diff --git a/package-lock.json b/package-lock.json index f84dbae88c2c4..93e5357ae881c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,15 +66,14 @@ "expensify-common": "2.0.169", "expo": "55.0.0-preview.6", "expo-asset": "55.0.2", - "expo-av": "15.1.7", "expo-font": "14.0.8", "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", - "expo-location": "^19.0.7", + "expo-location": "55.0.3", "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", - "expo-task-manager": "~14.0.9", + "expo-task-manager": "55.0.2", "fast-equals": "^5.2.2", "focus-trap-react": "^11.0.3", "group-ib-fp": "file:modules/group-ib-fp", @@ -23672,23 +23671,6 @@ "node": ">=8" } }, - "node_modules/expo-av": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-15.1.7.tgz", - "integrity": "sha512-NC+JR+65sxXfQN1mOHp3QBaXTL2J+BzNwVO27XgUEc5s9NaoBTdHWElYXrfxvik6xwytZ+a7abrqfNNgsbQzsA==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native-web": { - "optional": true - } - } - }, "node_modules/expo-constants": { "version": "18.0.13", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", @@ -23792,10 +23774,13 @@ } }, "node_modules/expo-location": { - "version": "19.0.7", - "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-19.0.7.tgz", - "integrity": "sha512-YNkh4r9E6ECbPkBCAMG5A5yHDgS0pw+Rzyd0l2ZQlCtjkhlODB55nMCKr5CZnUI0mXTkaSm8CwfoCO8n2MpYfg==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-55.0.3.tgz", + "integrity": "sha512-jzmSCZLQTpIGOUiq+3KAGP7H+ZwJaY/2bcSjtfF3vYvuB1RCNcapfCRtDKBmb5K1qWb0DXJm6PqNFs8tTQhJxw==", "license": "MIT", + "dependencies": { + "@expo/image-utils": "^0.8.11" + }, "peerDependencies": { "expo": "*" } @@ -23937,12 +23922,12 @@ } }, "node_modules/expo-task-manager": { - "version": "14.0.9", - "resolved": "https://registry.npmjs.org/expo-task-manager/-/expo-task-manager-14.0.9.tgz", - "integrity": "sha512-GKWtXrkedr4XChHfTm5IyTcSfMtCPxzx89y4CMVqKfyfROATibrE/8UI5j7UC/pUOfFoYlQvulQEvECMreYuUA==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-task-manager/-/expo-task-manager-55.0.2.tgz", + "integrity": "sha512-cF98rpnn8DQsUbBgPJuU3S5hzHZ72MK4B+6VRXSYoMKVCOYDUfs6dgbzf+jZX3F6LlLRznVhg5cSN+PZPI65jg==", "license": "MIT", "dependencies": { - "unimodules-app-loader": "~6.0.8" + "unimodules-app-loader": "~55.0.2" }, "peerDependencies": { "expo": "*", @@ -38512,9 +38497,9 @@ } }, "node_modules/unimodules-app-loader": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/unimodules-app-loader/-/unimodules-app-loader-6.0.8.tgz", - "integrity": "sha512-fqS8QwT/MC/HAmw1NKCHdzsPA6WaLm0dNmoC5Pz6lL+cDGYeYCNdHMO9fy08aL2ZD7cVkNM0pSR/AoNRe+rslA==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/unimodules-app-loader/-/unimodules-app-loader-55.0.2.tgz", + "integrity": "sha512-SarK/0fxceV3mpP26+0mlwDbHOn98OkHEMAifrRU0+uhAnAuZkEJKNPL/QKBFhwNCaeQGiL9s3XAQ9ZMtkJ47g==", "license": "MIT" }, "node_modules/union": { diff --git a/package.json b/package.json index 2920ddf822ea8..d8825de7aeac7 100644 --- a/package.json +++ b/package.json @@ -135,15 +135,14 @@ "expensify-common": "2.0.169", "expo": "55.0.0-preview.6", "expo-asset": "55.0.2", - "expo-av": "15.1.7", "expo-font": "14.0.8", "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", - "expo-location": "^19.0.7", + "expo-location": "55.0.3", "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", - "expo-task-manager": "~14.0.9", + "expo-task-manager": "55.0.2", "fast-equals": "^5.2.2", "focus-trap-react": "^11.0.3", "group-ib-fp": "file:modules/group-ib-fp", diff --git a/patches/expo-av/details.md b/patches/expo-av/details.md deleted file mode 100644 index e24511e138a1d..0000000000000 --- a/patches/expo-av/details.md +++ /dev/null @@ -1,26 +0,0 @@ -# `expo-av` patches - -### [expo-av+15.1.7+001+fix-blank-screen-android.patch](expo-av+15.1.7+001+fix-blank-screen-android.patch) - -- Reason: - - ``` - This patch fixes blank modal after fullscreen video ends on Android. - ``` - -- Upstream PR/issue: The maintainer of the upstream lib isn't willing to accept fix for the lib because it's going to be replaced by another lib `expo-video`, see comment https://github.com/expo/expo/issues/19039#issuecomment-2688369708 -- E/App issue: https://github.com/Expensify/App/issues/53904 -- PR introducing patch: https://github.com/Expensify/App/pull/56302 - - -### [expo-av+15.1.7+002+handle-unsupported-videos-ios.patch](expo-av+15.1.7+002+handle-unsupported-videos-ios.patch) - -- Reason: - - ``` - This patch handles unsupported videos in iOS. - ``` - -- Upstream PR/issue: Probably same reason as the first patch. -- E/App issue: https://github.com/Expensify/App/issues/52673 -- PR introducing patch: https://github.com/Expensify/App/pull/57353 \ No newline at end of file diff --git a/patches/expo-av/expo-av+15.1.7+001+fix-blank-screen-android.patch b/patches/expo-av/expo-av+15.1.7+001+fix-blank-screen-android.patch deleted file mode 100644 index 3b3f307062509..0000000000000 --- a/patches/expo-av/expo-av+15.1.7+001+fix-blank-screen-android.patch +++ /dev/null @@ -1,221 +0,0 @@ -diff --git a/node_modules/expo-av/android/src/main/java/expo/modules/av/player/SimpleExoPlayerData.java b/node_modules/expo-av/android/src/main/java/expo/modules/av/player/SimpleExoPlayerData.java -index 8835a39..87e1964 100644 ---- a/node_modules/expo-av/android/src/main/java/expo/modules/av/player/SimpleExoPlayerData.java -+++ b/node_modules/expo-av/android/src/main/java/expo/modules/av/player/SimpleExoPlayerData.java -@@ -2,6 +2,7 @@ package expo.modules.av.player; - - import android.content.Context; - import android.net.Uri; -+import android.os.Build; - import android.os.Bundle; - import android.os.Looper; - -@@ -63,6 +64,8 @@ class SimpleExoPlayerData extends PlayerData - private boolean mIsLoading = true; - private final Context mReactContext; - -+ private Surface mSurface = null; -+ - SimpleExoPlayerData(final AVManagerInterface avModule, final Context context, final Uri uri, final String overridingExtension, final Map requestHeaders) { - super(avModule, uri, requestHeaders); - mReactContext = context; -@@ -228,6 +231,13 @@ class SimpleExoPlayerData extends PlayerData - - @Override - public void tryUpdateVideoSurface(final Surface surface) { -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ if (mSimpleExoPlayer != null && mSurface != surface) { -+ mSimpleExoPlayer.setVideoSurface(surface); -+ mSurface = surface; -+ } -+ return; -+ } - if (mSimpleExoPlayer != null) { - mSimpleExoPlayer.setVideoSurface(surface); - } -diff --git a/node_modules/expo-av/android/src/main/java/expo/modules/av/video/VideoTextureView.java b/node_modules/expo-av/android/src/main/java/expo/modules/av/video/VideoTextureView.java -index 41a5979..b378bf4 100644 ---- a/node_modules/expo-av/android/src/main/java/expo/modules/av/video/VideoTextureView.java -+++ b/node_modules/expo-av/android/src/main/java/expo/modules/av/video/VideoTextureView.java -@@ -4,6 +4,7 @@ import android.annotation.SuppressLint; - import android.content.Context; - import android.graphics.Matrix; - import android.graphics.SurfaceTexture; -+import android.os.Build; - import android.util.Pair; - import android.util.Size; - import android.view.Surface; -@@ -20,6 +21,10 @@ public class VideoTextureView extends TextureView implements TextureView.Surface - private boolean mIsAttachedToWindow = false; - private Surface mSurface = null; - private boolean mVisible = true; -+ private int mBufferWidth = 0; -+ private int mBufferHeight = 0; -+ private int mPositionX = 0; -+ private int mPositionY = 0; - - public VideoTextureView(final Context themedReactContext, VideoView videoView) { - super(themedReactContext, null, 0); -@@ -55,6 +60,15 @@ public class VideoTextureView extends TextureView implements TextureView.Surface - setTransform(matrix); - invalidate(); - } -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ float[] values = new float[9]; -+ matrix.getValues(values); -+ mBufferWidth = (int)(getWidth() * values[Matrix.MSCALE_X]); -+ mBufferHeight = (int)(getHeight() * values[Matrix.MSCALE_Y]); -+ mPositionX = (int)(values[Matrix.MTRANS_X]); -+ mPositionY = (int)(values[Matrix.MTRANS_Y]); -+ mVideoView.updateSurfaceView(mVisible, mBufferWidth, mBufferHeight, mPositionX, mPositionY); -+ } - } - } - -@@ -69,6 +83,9 @@ public class VideoTextureView extends TextureView implements TextureView.Surface - onVisibilityChanged(this, View.INVISIBLE); - onVisibilityChanged(this, View.VISIBLE); - } -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ mVideoView.updateSurfaceView(mVisible, mBufferWidth, mBufferHeight, mPositionX, mPositionY); -+ } - } - - // TextureView -@@ -76,7 +93,12 @@ public class VideoTextureView extends TextureView implements TextureView.Surface - @Override - public void onSurfaceTextureAvailable(final SurfaceTexture surfaceTexture, final int width, final int height) { - mSurface = new Surface(surfaceTexture); -- mVideoView.tryUpdateVideoSurface(mSurface); -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ mVideoView.tryUpdateVideoSurface(); -+ mVideoView.updateSurfaceView(mVisible, mBufferWidth, mBufferHeight, mPositionX, mPositionY); -+ } else { -+ mVideoView.tryUpdateVideoSurface(mSurface); -+ } - } - - @Override -@@ -86,13 +108,17 @@ public class VideoTextureView extends TextureView implements TextureView.Surface - - @Override - public void onSurfaceTextureUpdated(final SurfaceTexture surfaceTexture) { -- // no-op -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ mVideoView.updateSurfaceView(mVisible, mBufferWidth, mBufferHeight, mPositionX, mPositionY); -+ } - } - - @Override - public boolean onSurfaceTextureDestroyed(final SurfaceTexture surfaceTexture) { - mSurface = null; -- mVideoView.tryUpdateVideoSurface(null); -+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { -+ mVideoView.tryUpdateVideoSurface(null); -+ } - return true; - } - -@@ -108,11 +134,19 @@ public class VideoTextureView extends TextureView implements TextureView.Surface - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - mIsAttachedToWindow = true; -- mVideoView.tryUpdateVideoSurface(mSurface); -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ mVideoView.tryUpdateVideoSurface(); -+ mVideoView.updateSurfaceView(mVisible, mBufferWidth, mBufferHeight, mPositionX, mPositionY); -+ } else { -+ mVideoView.tryUpdateVideoSurface(mSurface); -+ } - } - - protected void onVisibilityChanged(View changedView, int visibility) { - super.onVisibilityChanged(changedView, visibility); - mVisible = visibility == View.VISIBLE; -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ mVideoView.updateSurfaceView(mVisible, mBufferWidth, mBufferHeight, mPositionX, mPositionY); -+ } - } - } -diff --git a/node_modules/expo-av/android/src/main/java/expo/modules/av/video/VideoView.java b/node_modules/expo-av/android/src/main/java/expo/modules/av/video/VideoView.java -index 1acb32b..6bac2bf 100644 ---- a/node_modules/expo-av/android/src/main/java/expo/modules/av/video/VideoView.java -+++ b/node_modules/expo-av/android/src/main/java/expo/modules/av/video/VideoView.java -@@ -2,10 +2,14 @@ package expo.modules.av.video; - - import android.annotation.SuppressLint; - import android.content.Context; -+import android.os.Build; - import android.os.Bundle; - import android.util.Pair; -+import android.view.Gravity; - import android.view.MotionEvent; - import android.view.Surface; -+import android.view.SurfaceControl; -+import android.view.SurfaceView; - import android.widget.FrameLayout; - - import androidx.annotation.NonNull; -@@ -62,6 +66,10 @@ public class VideoView extends FrameLayout implements AudioEventHandler, Fullscr - private boolean mShouldShowFullscreenPlayerOnLoad = false; - private FullscreenVideoPlayerPresentationChangeProgressListener mFullscreenVideoPlayerPresentationOnLoadChangeListener = null; - -+ private Surface mSurface; -+ private SurfaceControl mSurfaceControl; -+ private SurfaceView mSurfaceView; -+ - public VideoView(@NonNull Context context, VideoViewWrapper videoViewWrapper, AppContext appContext) { - super(context); - -@@ -70,6 +78,13 @@ public class VideoView extends FrameLayout implements AudioEventHandler, Fullscr - mAVModule = appContext.getLegacyModuleRegistry().getModule(AVManagerInterface.class); - mAVModule.registerVideoViewForAudioLifecycle(this); - -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ mSurfaceView = new SurfaceView(context); -+ mSurfaceControl = new SurfaceControl.Builder().setName("ExpoAVSurfaceControl").setBufferSize(0, 0).build(); -+ mSurface = new Surface(mSurfaceControl); -+ addView(mSurfaceView); -+ } -+ - mVideoTextureView = new VideoTextureView(context, this); - addView(mVideoTextureView, generateDefaultLayoutParams()); - -@@ -387,7 +402,11 @@ public class VideoView extends FrameLayout implements AudioEventHandler, Fullscr - mVideoTextureView.scaleVideoSize(mPlayerData.getVideoWidthHeight(), mResizeMode); - - if (mVideoTextureView.isAttachedToWindow()) { -- mPlayerData.tryUpdateVideoSurface(mVideoTextureView.getSurface()); -+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { -+ mPlayerData.tryUpdateVideoSurface(mSurface); -+ } else { -+ mPlayerData.tryUpdateVideoSurface(mVideoTextureView.getSurface()); -+ } - } - - if (promise != null) { -@@ -477,6 +496,24 @@ public class VideoView extends FrameLayout implements AudioEventHandler, Fullscr - } - } - -+ public void tryUpdateVideoSurface() { -+ if (mPlayerData != null) { -+ mPlayerData.tryUpdateVideoSurface(mSurface); -+ } -+ } -+ -+ public void updateSurfaceView(boolean visible, int bufferWidth, int bufferHeight, int positionX, int positionY) { -+ new SurfaceControl.Transaction() -+ .reparent(mSurfaceControl, mSurfaceView.getSurfaceControl()) -+ .setBufferSize(mSurfaceControl, bufferWidth, bufferHeight) -+ .setPosition(mSurfaceControl, 0, 0) -+ .setVisibility(mSurfaceControl, visible && bufferWidth > 0 && bufferHeight > 0) -+ .apply(); -+ mSurfaceView.layout(positionX, positionY, positionX + Math.max(bufferWidth, 1), positionY + Math.max(bufferHeight, 1)); -+ mSurfaceView.setLayoutParams(new FrameLayout.LayoutParams(Math.max(bufferWidth, 1), Math.max(bufferHeight, 1), Gravity.CENTER)); -+ mSurfaceView.requestLayout(); -+ } -+ - // AudioEventHandler - - @Override diff --git a/patches/expo-av/expo-av+15.1.7+002+handle-unsupported-videos-ios.patch b/patches/expo-av/expo-av+15.1.7+002+handle-unsupported-videos-ios.patch deleted file mode 100644 index b5e27e027e351..0000000000000 --- a/patches/expo-av/expo-av+15.1.7+002+handle-unsupported-videos-ios.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/node_modules/expo-av/ios/EXAV/EXAVPlayerData.m b/node_modules/expo-av/ios/EXAV/EXAVPlayerData.m -index 99dc808..01e4bb9 100644 ---- a/node_modules/expo-av/ios/EXAV/EXAVPlayerData.m -+++ b/node_modules/expo-av/ios/EXAV/EXAVPlayerData.m -@@ -158,8 +158,16 @@ NSString *const EXAVPlayerDataObserverMetadataKeyPath = @"timedMetadata"; - // unless we preload, the asset will not necessarily load the duration by the time we try to play it. - // http://stackoverflow.com/questions/20581567/avplayer-and-avfoundationerrordomain-code-11819 - EX_WEAKIFY(self); -- [avAsset loadValuesAsynchronouslyForKeys:@[ @"duration" ] completionHandler:^{ -+ [avAsset loadValuesAsynchronouslyForKeys:@[ @"isPlayable", @"duration" ] completionHandler:^{ - EX_ENSURE_STRONGIFY(self); -+ NSError *error = nil; -+ AVKeyValueStatus status = [avAsset statusOfValueForKey:@"isPlayable" error:&error]; -+ -+ if (status == AVKeyValueStatusLoaded && !avAsset.isPlayable) { -+ NSString *errorMessage = @"Load encountered an error: [AVAsset isPlayable:] returned false. The asset does not contains a playable content or is not supported by the device."; -+ [self _finishLoadWithError:errorMessage]; -+ return; -+ } - - // We prepare three items for AVQueuePlayer, so when the first finishes playing, - // second can start playing and the third can start preparing to play. diff --git a/patches/expo-modules-core/expo-modules-core+3.0.18+001+disableViewRecycling.patch b/patches/expo-modules-core/expo-modules-core+55.0.4+001+disableViewRecycling.patch similarity index 77% rename from patches/expo-modules-core/expo-modules-core+3.0.18+001+disableViewRecycling.patch rename to patches/expo-modules-core/expo-modules-core+55.0.4+001+disableViewRecycling.patch index f638a14bb0e83..ec48aa6419c2f 100644 --- a/patches/expo-modules-core/expo-modules-core+3.0.18+001+disableViewRecycling.patch +++ b/patches/expo-modules-core/expo-modules-core+55.0.4+001+disableViewRecycling.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm b/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm -index 2eacddf..346bbb9 100644 +index 5dd4ba7..04396bb 100644 --- a/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm +++ b/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm -@@ -138,6 +138,11 @@ - (void)finalizeUpdates:(RNComponentViewUpdateMask)updateMask +@@ -140,6 +140,11 @@ static std::unordered_map _com } } diff --git a/patches/expo/details.md b/patches/expo/details.md deleted file mode 100644 index ef31810410c7f..0000000000000 --- a/patches/expo/details.md +++ /dev/null @@ -1,14 +0,0 @@ -# `expo` patches - -### [expo+54.0.10+001+fix-missing-blob-variable-error.patch](expo+54.0.10+001+fix-missing-blob-variable-error.patch) - -- Reason: - - ``` - This patch fixes error when submitting receipt to smart scan. Expo has a bug that caued issues when sending receipt - in the request - `Property 'blob' doesn't exist` - ``` - -- Upstream PR/issue: https://github.com/expo/expo/issues/40059 -- E/App issue: -- PR introducing patch: https://github.com/Expensify/App/pull/69535 diff --git a/patches/expo/expo+54.0.10+001+fix-missing-blob-variable-error.patch b/patches/expo/expo+54.0.10+001+fix-missing-blob-variable-error.patch deleted file mode 100644 index 530546ac13c13..0000000000000 --- a/patches/expo/expo+54.0.10+001+fix-missing-blob-variable-error.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/expo/src/winter/FormData.ts b/node_modules/expo/src/winter/FormData.ts -index 8f86d9c..2df9be4 100644 ---- a/node_modules/expo/src/winter/FormData.ts -+++ b/node_modules/expo/src/winter/FormData.ts -@@ -74,7 +74,7 @@ function normalizeArgs( - ): [string, File | string] { - if (value instanceof Blob) { - // @ts-expect-error: `Blob.data.blobId` is react-native's proprietary property. -- value.name = blobFilename ?? blob.name ?? 'blob'; -+ value.name = blobFilename ?? value.name ?? 'blob'; - } else if (typeof value !== 'object') { - value = String(value); - } From 984177807cc4979b95952d59745bdd8100db21f3 Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 27 Jan 2026 17:55:42 +0100 Subject: [PATCH 10/56] chore: revert unnecessary rock bump --- package-lock.json | 54 +++++++++++++++++++++++------------------------ package.json | 10 ++++----- rock.config.mjs | 2 +- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 93e5357ae881c..1ebbd0e62ebd2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -184,10 +184,10 @@ "@react-native/metro-config": "0.83.1", "@react-navigation/core": "7.10.0", "@react-navigation/devtools": "^6.0.10", - "@rock-js/platform-android": "0.12.6", - "@rock-js/platform-ios": "0.12.6", - "@rock-js/plugin-metro": "0.12.6", - "@rock-js/provider-s3": "0.12.6", + "@rock-js/platform-android": "0.12.0", + "@rock-js/platform-ios": "0.12.0", + "@rock-js/plugin-metro": "0.12.0", + "@rock-js/provider-s3": "0.12.0", "@sentry/webpack-plugin": "4.6.0", "@storybook/addon-a11y": "10.1.10", "@storybook/addon-docs": "10.1.10", @@ -278,7 +278,7 @@ "react-refresh": "^0.14.2", "react-test-renderer": "19.2.0", "reassure": "^1.0.0-rc.4", - "rock": "0.12.6", + "rock": "0.12.0", "semver": "7.5.2", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", @@ -13239,14 +13239,14 @@ } }, "node_modules/@rock-js/platform-android": { - "version": "0.12.6", - "resolved": "https://registry.npmjs.org/@rock-js/platform-android/-/platform-android-0.12.6.tgz", - "integrity": "sha512-8oqrKpQeZMmBcrgeEDLOAXuikMrumfP/zqGpj1TR2WMg+kBsZHbny+UcNBDeMje5yQidKjt+40XBE8dcUFaKOg==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@rock-js/platform-android/-/platform-android-0.12.0.tgz", + "integrity": "sha512-WyAMQtqjB7SPS1oOHq4P1pSOIMMLAq0wpbYKouEGY4ZsIHKBgb4wP8iQ0rBPhZhhIw94e4o2G4BnaxqwdJaL2g==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-android": "^20.0.0", - "@rock-js/tools": "^0.12.6", + "@rock-js/tools": "^0.12.0", "tslib": "^2.3.0" } }, @@ -13374,16 +13374,16 @@ } }, "node_modules/@rock-js/platform-ios": { - "version": "0.12.6", - "resolved": "https://registry.npmjs.org/@rock-js/platform-ios/-/platform-ios-0.12.6.tgz", - "integrity": "sha512-h7QpDyxdiotHUhMono132Lc7rUxFvwZPjYJnudNuTgFTQWg9YSeyRM5fEVz2JvLMuhwArH94OXAD3f9GKrctqQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@rock-js/platform-ios/-/platform-ios-0.12.0.tgz", + "integrity": "sha512-CDZgHykqdIAP/Sr1lXcfZR7TTPyIIaVYLprP4XhCaOV7In8v78R3HgrjLYijouhMWo00DLR14d1YRe/i5NfJ+A==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config-apple": "^20.0.0", "@react-native-community/cli-types": "^20.0.0", - "@rock-js/platform-apple-helpers": "^0.12.6", - "@rock-js/tools": "^0.12.6", + "@rock-js/platform-apple-helpers": "^0.12.0", + "@rock-js/tools": "^0.12.0", "tslib": "^2.3.0" } }, @@ -13506,14 +13506,14 @@ } }, "node_modules/@rock-js/plugin-metro": { - "version": "0.12.6", - "resolved": "https://registry.npmjs.org/@rock-js/plugin-metro/-/plugin-metro-0.12.6.tgz", - "integrity": "sha512-HF7ne7JnuOJuwij2yMz8XGVjOpY1EF/yoN7DWRrlJsJUz5/bUoD8EXKwuMmmwrwccazGPgcEXzFhr6uJmFVBOA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@rock-js/plugin-metro/-/plugin-metro-0.12.0.tgz", + "integrity": "sha512-T4sk3CI7L4OG3tcdUz788iIzOWpWWTO2ZLOlaoUx9SfYEzJNetCARU+BQySWr6SQAgIh0o39edNyanUSe+h3TA==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-server-api": "^20.0.0", - "@rock-js/tools": "^0.12.6", + "@rock-js/tools": "^0.12.0", "metro": "^0.83.3", "metro-config": "^0.83.3", "metro-core": "^0.83.3", @@ -13671,9 +13671,9 @@ } }, "node_modules/@rock-js/provider-s3": { - "version": "0.12.6", - "resolved": "https://registry.npmjs.org/@rock-js/provider-s3/-/provider-s3-0.12.6.tgz", - "integrity": "sha512-ZWNXFnNAVJj5HZHMqEBtNMXPFI9I4K+a6aacbrGtHrJt1SIhKJV3ODVvuYBDuWIbSlR1TPNYadP5ML5fbPmLjQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@rock-js/provider-s3/-/provider-s3-0.12.0.tgz", + "integrity": "sha512-AoMYzIaq2p9p8QMWihMgK4c1ozqd5BJEEQB7MT0lAKR0suYY3YnTw3e1hSqBZsn6PmMyE+BY/9tNLuACZFluEA==", "dev": true, "license": "MIT", "dependencies": { @@ -13682,7 +13682,7 @@ "@aws-sdk/credential-providers": "^3.830.0", "@aws-sdk/lib-storage": "^3.830.0", "@aws-sdk/s3-request-presigner": "^3.830.0", - "@rock-js/tools": "^0.12.6", + "@rock-js/tools": "^0.12.0", "tslib": "^2.3.0" } }, @@ -35802,15 +35802,15 @@ "license": "BSD-3-Clause" }, "node_modules/rock": { - "version": "0.12.6", - "resolved": "https://registry.npmjs.org/rock/-/rock-0.12.6.tgz", - "integrity": "sha512-Jn42eNkiMS9sKRVQbOWW+8bOb9htO1KZWXHKXwgcz8+ORNmH38adt9bRc836WxbGkLG6Pqq1qFY3ipN9Uf9mBw==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/rock/-/rock-0.12.0.tgz", + "integrity": "sha512-MiHWE5LgVkO93yOt3qcOvBxDH9oJvBiAotsancgoM4fAb5jaAhL/pbufUkqrD0AaEp3HmBz8ZlfLKfZnKDLExA==", "dev": true, "license": "MIT", "dependencies": { "@react-native-community/cli-config": "^20.0.0", - "@rock-js/config": "^0.12.6", - "@rock-js/tools": "^0.12.6", + "@rock-js/config": "^0.12.0", + "@rock-js/tools": "^0.12.0", "adm-zip": "^0.5.16", "commander": "^12.1.0", "tar": "^7.5.1", diff --git a/package.json b/package.json index d8825de7aeac7..4456e4084f5f3 100644 --- a/package.json +++ b/package.json @@ -253,10 +253,10 @@ "@react-native/metro-config": "0.83.1", "@react-navigation/core": "7.10.0", "@react-navigation/devtools": "^6.0.10", - "@rock-js/platform-android": "0.12.6", - "@rock-js/platform-ios": "0.12.6", - "@rock-js/plugin-metro": "0.12.6", - "@rock-js/provider-s3": "0.12.6", + "@rock-js/platform-android": "0.12.0", + "@rock-js/platform-ios": "0.12.0", + "@rock-js/plugin-metro": "0.12.0", + "@rock-js/provider-s3": "0.12.0", "@sentry/webpack-plugin": "4.6.0", "@storybook/addon-a11y": "10.1.10", "@storybook/addon-docs": "10.1.10", @@ -347,7 +347,7 @@ "react-refresh": "^0.14.2", "react-test-renderer": "19.2.0", "reassure": "^1.0.0-rc.4", - "rock": "0.12.6", + "rock": "0.12.0", "semver": "7.5.2", "setimmediate": "^1.0.5", "shellcheck": "^1.1.0", diff --git a/rock.config.mjs b/rock.config.mjs index da68428100dd1..9e78e6320abe0 100644 --- a/rock.config.mjs +++ b/rock.config.mjs @@ -26,5 +26,5 @@ export default { ignorePaths: ['Mobile-Expensify/Android/assets/app/shared/bundle.js'], }, // Forces React Native to build from source to include our custom patches - usePrebuiltRNCore: false, + usePrebuiltRNCore: 0, }; From 7cc263ca5c87a05351ed306c70c51d56f49e5b8f Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 27 Jan 2026 18:18:28 +0100 Subject: [PATCH 11/56] chore: rename patches --- ...rk.patch => expo-asset+55.0.2+001+make-storybook-work.patch} | 0 ...o-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch} | 0 ...ters+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch} | 0 rock.config.mjs | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) rename patches/expo-asset/{expo-asset+12.0.8+001+make-storybook-work.patch => expo-asset+55.0.2+001+make-storybook-work.patch} (100%) rename patches/expo-image-manipulator/{expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch => expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch} (100%) rename patches/react-navigation/{@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch => @react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch} (100%) diff --git a/patches/expo-asset/expo-asset+12.0.8+001+make-storybook-work.patch b/patches/expo-asset/expo-asset+55.0.2+001+make-storybook-work.patch similarity index 100% rename from patches/expo-asset/expo-asset+12.0.8+001+make-storybook-work.patch rename to patches/expo-asset/expo-asset+55.0.2+001+make-storybook-work.patch diff --git a/patches/expo-image-manipulator/expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch b/patches/expo-image-manipulator/expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch similarity index 100% rename from patches/expo-image-manipulator/expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch rename to patches/expo-image-manipulator/expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch diff --git a/patches/react-navigation/@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch diff --git a/rock.config.mjs b/rock.config.mjs index 9e78e6320abe0..da68428100dd1 100644 --- a/rock.config.mjs +++ b/rock.config.mjs @@ -26,5 +26,5 @@ export default { ignorePaths: ['Mobile-Expensify/Android/assets/app/shared/bundle.js'], }, // Forces React Native to build from source to include our custom patches - usePrebuiltRNCore: 0, + usePrebuiltRNCore: false, }; From 4fe581ec38b02f0459c51aa83059ae305942246d Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 28 Jan 2026 11:15:36 +0100 Subject: [PATCH 12/56] fix: remove unnecessary `react-native-nitro-modules` bump --- package-lock.json | 9 +++++---- package.json | 2 +- ...react-native-image-size+1.1.3+001+support-RN-83.patch | 5 ++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ebbd0e62ebd2..ba165667dcd1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -116,7 +116,7 @@ "react-native-keyboard-controller": "1.18.5", "react-native-launch-arguments": "4.1.1", "react-native-localize": "^3.5.4", - "react-native-nitro-modules": "0.33.2", + "react-native-nitro-modules": "0.29.4", "react-native-nitro-sqlite": "9.2.0", "react-native-onyx": "3.0.31", "react-native-pager-view": "7.0.2", @@ -34369,9 +34369,10 @@ } }, "node_modules/react-native-nitro-modules": { - "version": "0.33.2", - "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.33.2.tgz", - "integrity": "sha512-ZlfOe6abODeHv/eZf8PxeSkrxIUhEKha6jaAAA9oXy7I6VPr7Ff4dUsAq3cyF3kX0L6qt2Dh9nzD2NdSsDwGpA==", + "version": "0.29.4", + "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.29.4.tgz", + "integrity": "sha512-AfUMcwFtj9FuEDwDLN5eIVo0lBYTQqDaV7meiFzuoZyRmc8ywykFTKfyZwRN2t8Z/WtTlfCj9Y9yaET33IImsg==", + "hasInstallScript": true, "license": "MIT", "peerDependencies": { "react": "*", diff --git a/package.json b/package.json index 4456e4084f5f3..8f4b98f445422 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "react-native-keyboard-controller": "1.18.5", "react-native-launch-arguments": "4.1.1", "react-native-localize": "^3.5.4", - "react-native-nitro-modules": "0.33.2", + "react-native-nitro-modules": "0.29.4", "react-native-nitro-sqlite": "9.2.0", "react-native-onyx": "3.0.31", "react-native-pager-view": "7.0.2", diff --git a/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch b/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch index 3ad39afadeb9a..8ee3af342666e 100644 --- a/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch +++ b/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch @@ -1,13 +1,12 @@ diff --git a/node_modules/react-native-image-size/android/build.gradle b/node_modules/react-native-image-size/android/build.gradle -index cc2d50a..877577b 100644 +index cc2d50a..bb21239 100644 --- a/node_modules/react-native-image-size/android/build.gradle +++ b/node_modules/react-native-image-size/android/build.gradle -@@ -1,7 +1,7 @@ +@@ -1,7 +1,6 @@ buildscript { repositories { mavenCentral() - jcenter() -+ google() } dependencies { From 1a2a4d9aa29ee42fc9df3d2093fefe9475c9c84f Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 28 Jan 2026 11:26:04 +0100 Subject: [PATCH 13/56] chore: post-merge fixes --- package-lock.json | 18 +++++++++--------- patches/react-native/details.md | 4 ++-- ...+025+perf-increase-initial-heap-size.patch} | 0 ...e-hermes-young-gc-before-tti-reached.patch} | 0 4 files changed, 11 insertions(+), 11 deletions(-) rename patches/react-native/{react-native+0.81.4+026+perf-increase-initial-heap-size.patch => react-native+0.83.1+025+perf-increase-initial-heap-size.patch} (100%) rename patches/react-native/{react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch => react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch} (100%) diff --git a/package-lock.json b/package-lock.json index 10c8b571ea435..a448275ec69d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23935,15 +23935,6 @@ "react-native": "*" } }, - "node_modules/expo/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/expo-video": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/expo-video/-/expo-video-3.0.12.tgz", @@ -23955,6 +23946,15 @@ "react-native": "*" } }, + "node_modules/expo/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, "node_modules/expo/node_modules/@expo/cli": { "version": "55.0.3", "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.3.tgz", diff --git a/patches/react-native/details.md b/patches/react-native/details.md index 93c014913f383..a40617ca078ec 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -190,14 +190,14 @@ - E/App issue: https://github.com/Expensify/App/issues/71913 - PR introducing patch: https://github.com/Expensify/App/pull/69535 -### [react-native+0.81.4+026+perf-increase-initial-heap-size.patch](react-native+0.81.4+026+perf-increase-initial-heap-size.patch) +### [react-native+0.83.1+025+perf-increase-initial-heap-size.patch](react-native+0.83.1+025+perf-increase-initial-heap-size.patch) - Reason: This patch increases the initial heap size of the Hermes runtime. This allows us to disable Hermes Young-Gen Garbage Collection (GC) in a separate patch, which improves initial TTI and app startup time. - Upstream PR/issue: This is not intended to be upstreamed, since this is a low-level fix very specific to the Expensify app's requirements. - E/App issue: [#76859](https://github.com/Expensify/App/issues/76859) - PR introducing patch: [#76154](https://github.com/Expensify/App/pull/76154) -### [react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch](react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch) +### [react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch](react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch) - Reason: This patch disables Hermes Young-Gen Garbage Collection (GC), which improves initial TTI and app startup time, by delaying GC for early allocated memory to the first Old-Gen GC run. - Upstream PR/issue: This is not intended to be upstreamed, since this is a low-level fix very specific to the Expensify app's requirements. diff --git a/patches/react-native/react-native+0.81.4+026+perf-increase-initial-heap-size.patch b/patches/react-native/react-native+0.83.1+025+perf-increase-initial-heap-size.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+026+perf-increase-initial-heap-size.patch rename to patches/react-native/react-native+0.83.1+025+perf-increase-initial-heap-size.patch diff --git a/patches/react-native/react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch b/patches/react-native/react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch rename to patches/react-native/react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch From 64a081ac73ad59d7b67f1662c700ffcc8b908ee0 Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 28 Jan 2026 12:57:13 +0100 Subject: [PATCH 14/56] fix: standalone builds --- .../com/expensify/chat/MainApplication.kt | 2 - android/settings.gradle | 14 +- ios/AppDelegate.swift | 1 - ios/NewExpensify.xcodeproj/project.pbxproj | 6 +- ios/Podfile.lock | 929 +++++++++++------- package-lock.json | 8 +- package.json | 2 +- patches/expo-video/details.md | 13 - ...ideo+3.0.12+001+prevent_double_pause.patch | 24 - 9 files changed, 605 insertions(+), 394 deletions(-) delete mode 100644 patches/expo-video/details.md delete mode 100644 patches/expo-video/expo-video+3.0.12+001+prevent_double_pause.patch diff --git a/android/app/src/main/java/com/expensify/chat/MainApplication.kt b/android/app/src/main/java/com/expensify/chat/MainApplication.kt index 081ea924771c9..8fadc6782c09a 100644 --- a/android/app/src/main/java/com/expensify/chat/MainApplication.kt +++ b/android/app/src/main/java/com/expensify/chat/MainApplication.kt @@ -13,7 +13,6 @@ import com.expensify.chat.shortcutManagerModule.ShortcutManagerPackage import com.facebook.react.PackageList import com.facebook.react.ReactApplication import com.facebook.react.ReactHost -import com.facebook.react.ReactNativeHost import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost @@ -24,7 +23,6 @@ import com.facebook.soloader.SoLoader import com.google.firebase.crashlytics.FirebaseCrashlytics import com.oblador.performance.RNPerformance import expo.modules.ApplicationLifecycleDispatcher -import expo.modules.ReactNativeHostWrapper import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative class MainApplication : MultiDexApplication(), ReactApplication { diff --git a/android/settings.gradle b/android/settings.gradle index 7353cc4985af8..8dbb83a9a867a 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,5 +1,11 @@ -pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } -plugins { id("com.facebook.react.settings") } +pluginManagement { + includeBuild("../node_modules/@react-native/gradle-plugin") + includeBuild("../node_modules/expo-modules-autolinking/android/expo-gradle-plugin") +} +plugins { + id("com.facebook.react.settings") + id("expo-autolinking-settings") +} apply from: "${rootDir}/../gradleUtils/PatchedArtifactsSettings.gradle" extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand(['npx', 'rock', 'config', '-p', 'android']) } @@ -33,3 +39,7 @@ if(settings.extensions.patchedArtifacts.buildFromSource) { apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle") useExpoModules() +expoAutolinking { + projectRoot = file(rootDir) + useExpoModules() +} diff --git a/ios/AppDelegate.swift b/ios/AppDelegate.swift index 3c69cc7b70c33..84c786a048127 100644 --- a/ios/AppDelegate.swift +++ b/ios/AppDelegate.swift @@ -26,7 +26,6 @@ class AppDelegate: ExpoAppDelegate, UNUserNotificationCenterDelegate { reactNativeDelegate = delegate reactNativeFactory = factory - bindReactNativeFactory(factory) window = UIWindow(frame: UIScreen.main.bounds) factory.startReactNative( diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index 9f605a6763899..e48ea68865686 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -623,7 +623,7 @@ "${PODS_XCFRAMEWORKS_BUILD_DIR}/group-ib-fp/GIBMobileSdk.framework/GIBMobileSdk", "${PODS_XCFRAMEWORKS_BUILD_DIR}/group-ib-fp/FPAppsCapability.framework/FPAppsCapability", "${PODS_XCFRAMEWORKS_BUILD_DIR}/group-ib-fp/FPCallCapability.framework/FPCallCapability", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermesvm.framework/hermesvm", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -638,7 +638,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GIBMobileSdk.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FPAppsCapability.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FPCallCapability.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermesvm.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -704,6 +704,7 @@ "${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuthCore_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ExpoTaskManager/ExpoTaskManager_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting/FirebaseABTesting_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreExtension/FirebaseCoreExtension_Privacy.bundle", @@ -738,6 +739,7 @@ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AppAuthCore_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoTaskManager_privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FirebaseABTesting_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FirebaseCore_Privacy.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FirebaseCoreExtension_Privacy.bundle", diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 05e5f76a981ce..018533fdd8050 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -29,14 +29,8 @@ PODS: - AppLogs (0.1.0) - boost (1.84.0) - DoubleConversion (1.1.6) - - EXAV (15.1.7): + - EXConstants (55.0.2): - ExpoModulesCore - - ReactCommon/turbomodule/core - - EXConstants (18.0.9): - - ExpoModulesCore - - EXImageLoader (5.1.0): - - ExpoModulesCore - - React-Core - expensify-react-native-background-task (0.0.0): - boost - DoubleConversion @@ -94,7 +88,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - Expo (54.0.10): + - Expo (55.0.0-preview.6): - boost - DoubleConversion - ExpoModulesCore @@ -125,7 +119,9 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoAsset (12.0.8): + - ExpoAsset (55.0.2): + - ExpoModulesCore + - ExpoDomWebView (55.0.2): - ExpoModulesCore - ExpoFont (14.0.8): - ExpoModulesCore @@ -136,15 +132,17 @@ PODS: - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - ExpoImageManipulator (13.1.5): - - EXImageLoader + - ExpoImageManipulator (55.0.2): - ExpoModulesCore - SDWebImageWebPCoder - - ExpoLocation (19.0.7): + - ExpoLocation (55.0.3): - ExpoModulesCore - - ExpoModulesCore (3.0.18): + - ExpoLogBox (55.0.2): + - React-Core + - ExpoModulesCore (55.0.4): - boost - DoubleConversion + - ExpoModulesJSI - fast_float - fmt - glog @@ -169,16 +167,24 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - RNWorklets - SocketRocket - Yoga + - ExpoModulesJSI (55.0.4): + - hermes-engine + - React-Core + - ReactCommon - ExpoSecureStore (14.2.4): - ExpoModulesCore - - ExpoVideo (3.0.12): + - ExpoStoreReview (9.0.9): - ExpoModulesCore - - ExpoStoreReview (9.0.8): + - ExpoTaskManager (55.0.2): + - ExpoModulesCore + - UMAppLoader + - ExpoVideo (55.0.3): - ExpoModulesCore - fast_float (8.0.0) - - FBLazyVector (0.81.4) + - FBLazyVector (0.83.1) - Firebase/Analytics (11.13.0): - Firebase/Core - Firebase/Core (11.13.0): @@ -266,7 +272,7 @@ PODS: - fmt (11.0.2) - ForkInputMask (7.3.3) - FullStory (1.64.2) - - fullstory_react-native (1.7.8): + - fullstory_react-native (1.8.0): - boost - DoubleConversion - fast_float @@ -362,9 +368,9 @@ PODS: - GTMSessionFetcher/Core (< 4.0, >= 3.3) - GTMSessionFetcher/Core (3.5.0) - GzipSwift (5.1.1) - - hermes-engine (0.81.4): - - hermes-engine/Pre-built (= 0.81.4) - - hermes-engine/Pre-built (0.81.4) + - hermes-engine (0.14.0): + - hermes-engine/Pre-built (= 0.14.0) + - hermes-engine/Pre-built (0.14.0) - libavif/core (0.11.1) - libavif/libdav1d (0.11.1): - libavif/core @@ -489,28 +495,31 @@ PODS: - fast_float (= 8.0.0) - fmt (= 11.0.2) - glog - - RCTDeprecation (0.81.4) - - RCTRequired (0.81.4) - - RCTTypeSafety (0.81.4): - - FBLazyVector (= 0.81.4) - - RCTRequired (= 0.81.4) - - React-Core (= 0.81.4) - - React (0.81.4): - - React-Core (= 0.81.4) - - React-Core/DevSupport (= 0.81.4) - - React-Core/RCTWebSocket (= 0.81.4) - - React-RCTActionSheet (= 0.81.4) - - React-RCTAnimation (= 0.81.4) - - React-RCTBlob (= 0.81.4) - - React-RCTImage (= 0.81.4) - - React-RCTLinking (= 0.81.4) - - React-RCTNetwork (= 0.81.4) - - React-RCTSettings (= 0.81.4) - - React-RCTText (= 0.81.4) - - React-RCTVibration (= 0.81.4) - - React-callinvoker (0.81.4) + - RCTDeprecation (0.83.1) + - RCTRequired (0.83.1) + - RCTSwiftUI (0.83.1) + - RCTSwiftUIWrapper (0.83.1): + - RCTSwiftUI + - RCTTypeSafety (0.83.1): + - FBLazyVector (= 0.83.1) + - RCTRequired (= 0.83.1) + - React-Core (= 0.83.1) + - React (0.83.1): + - React-Core (= 0.83.1) + - React-Core/DevSupport (= 0.83.1) + - React-Core/RCTWebSocket (= 0.83.1) + - React-RCTActionSheet (= 0.83.1) + - React-RCTAnimation (= 0.83.1) + - React-RCTBlob (= 0.83.1) + - React-RCTImage (= 0.83.1) + - React-RCTLinking (= 0.83.1) + - React-RCTNetwork (= 0.83.1) + - React-RCTSettings (= 0.83.1) + - React-RCTText (= 0.83.1) + - React-RCTVibration (= 0.83.1) + - React-callinvoker (0.83.1) - React-Codegen (0.1.0) - - React-Core (0.81.4): + - React-Core (0.83.1): - boost - DoubleConversion - fast_float @@ -520,7 +529,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) + - React-Core/Default (= 0.83.1) - React-cxxreact - React-featureflags - React-hermes @@ -535,7 +544,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/CoreModulesHeaders (0.81.4): + - React-Core/CoreModulesHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -560,7 +569,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/Default (0.81.4): + - React-Core/Default (0.83.1): - boost - DoubleConversion - fast_float @@ -584,7 +593,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/DevSupport (0.81.4): + - React-Core/DevSupport (0.83.1): - boost - DoubleConversion - fast_float @@ -594,8 +603,8 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) - - React-Core/RCTWebSocket (= 0.81.4) + - React-Core/Default (= 0.83.1) + - React-Core/RCTWebSocket (= 0.83.1) - React-cxxreact - React-featureflags - React-hermes @@ -610,7 +619,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTActionSheetHeaders (0.81.4): + - React-Core/RCTActionSheetHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -635,7 +644,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTAnimationHeaders (0.81.4): + - React-Core/RCTAnimationHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -660,7 +669,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTBlobHeaders (0.81.4): + - React-Core/RCTBlobHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -685,7 +694,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTImageHeaders (0.81.4): + - React-Core/RCTImageHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -710,7 +719,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTLinkingHeaders (0.81.4): + - React-Core/RCTLinkingHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -735,7 +744,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTNetworkHeaders (0.81.4): + - React-Core/RCTNetworkHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -760,7 +769,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTSettingsHeaders (0.81.4): + - React-Core/RCTSettingsHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -785,7 +794,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTTextHeaders (0.81.4): + - React-Core/RCTTextHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -810,7 +819,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTVibrationHeaders (0.81.4): + - React-Core/RCTVibrationHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -835,7 +844,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTWebSocket (0.81.4): + - React-Core/RCTWebSocket (0.83.1): - boost - DoubleConversion - fast_float @@ -845,7 +854,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) + - React-Core/Default (= 0.83.1) - React-cxxreact - React-featureflags - React-hermes @@ -860,7 +869,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-CoreModules (0.81.4): + - React-CoreModules (0.83.1): - boost - DoubleConversion - fast_float @@ -868,20 +877,22 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - RCTTypeSafety (= 0.81.4) - - React-Core/CoreModulesHeaders (= 0.81.4) - - React-jsi (= 0.81.4) + - RCTTypeSafety (= 0.83.1) + - React-Core/CoreModulesHeaders (= 0.83.1) + - React-debug + - React-jsi (= 0.83.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.81.4) + - React-RCTImage (= 0.83.1) - React-runtimeexecutor + - React-utils - ReactCommon - SocketRocket - - React-cxxreact (0.81.4): + - React-cxxreact (0.83.1): - boost - DoubleConversion - fast_float @@ -890,19 +901,20 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-debug (= 0.81.4) - - React-jsi (= 0.81.4) + - React-callinvoker (= 0.83.1) + - React-debug (= 0.83.1) + - React-jsi (= 0.83.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) + - React-logger (= 0.83.1) + - React-perflogger (= 0.83.1) - React-runtimeexecutor - - React-timing (= 0.81.4) + - React-timing (= 0.83.1) + - React-utils - SocketRocket - - React-debug (0.81.4) - - React-defaultsnativemodule (0.81.4): + - React-debug (0.83.1) + - React-defaultsnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -912,14 +924,18 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-domnativemodule + - React-featureflags - React-featureflagsnativemodule - React-idlecallbacksnativemodule + - React-intersectionobservernativemodule - React-jsi - React-jsiexecutor - React-microtasksnativemodule - React-RCTFBReactNativeSpec + - React-webperformancenativemodule - SocketRocket - - React-domnativemodule (0.81.4): + - Yoga + - React-domnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -939,7 +955,76 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-Fabric (0.81.4): + - React-Fabric (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animated (= 0.83.1) + - React-Fabric/animationbackend (= 0.83.1) + - React-Fabric/animations (= 0.83.1) + - React-Fabric/attributedstring (= 0.83.1) + - React-Fabric/bridging (= 0.83.1) + - React-Fabric/componentregistry (= 0.83.1) + - React-Fabric/componentregistrynative (= 0.83.1) + - React-Fabric/components (= 0.83.1) + - React-Fabric/consistency (= 0.83.1) + - React-Fabric/core (= 0.83.1) + - React-Fabric/dom (= 0.83.1) + - React-Fabric/imagemanager (= 0.83.1) + - React-Fabric/leakchecker (= 0.83.1) + - React-Fabric/mounting (= 0.83.1) + - React-Fabric/observers (= 0.83.1) + - React-Fabric/scheduler (= 0.83.1) + - React-Fabric/telemetry (= 0.83.1) + - React-Fabric/templateprocessor (= 0.83.1) + - React-Fabric/uimanager (= 0.83.1) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/animated (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/animationbackend (0.83.1): - boost - DoubleConversion - fast_float @@ -953,23 +1038,6 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.81.4) - - React-Fabric/attributedstring (= 0.81.4) - - React-Fabric/bridging (= 0.81.4) - - React-Fabric/componentregistry (= 0.81.4) - - React-Fabric/componentregistrynative (= 0.81.4) - - React-Fabric/components (= 0.81.4) - - React-Fabric/consistency (= 0.81.4) - - React-Fabric/core (= 0.81.4) - - React-Fabric/dom (= 0.81.4) - - React-Fabric/imagemanager (= 0.81.4) - - React-Fabric/leakchecker (= 0.81.4) - - React-Fabric/mounting (= 0.81.4) - - React-Fabric/observers (= 0.81.4) - - React-Fabric/scheduler (= 0.81.4) - - React-Fabric/telemetry (= 0.81.4) - - React-Fabric/templateprocessor (= 0.81.4) - - React-Fabric/uimanager (= 0.81.4) - React-featureflags - React-graphics - React-jsi @@ -981,7 +1049,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/animations (0.81.4): + - React-Fabric/animations (0.83.1): - boost - DoubleConversion - fast_float @@ -1006,7 +1074,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/attributedstring (0.81.4): + - React-Fabric/attributedstring (0.83.1): - boost - DoubleConversion - fast_float @@ -1031,7 +1099,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/bridging (0.81.4): + - React-Fabric/bridging (0.83.1): - boost - DoubleConversion - fast_float @@ -1056,7 +1124,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/componentregistry (0.81.4): + - React-Fabric/componentregistry (0.83.1): - boost - DoubleConversion - fast_float @@ -1081,7 +1149,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/componentregistrynative (0.81.4): + - React-Fabric/componentregistrynative (0.83.1): - boost - DoubleConversion - fast_float @@ -1106,7 +1174,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components (0.81.4): + - React-Fabric/components (0.83.1): - boost - DoubleConversion - fast_float @@ -1120,10 +1188,10 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.81.4) - - React-Fabric/components/root (= 0.81.4) - - React-Fabric/components/scrollview (= 0.81.4) - - React-Fabric/components/view (= 0.81.4) + - React-Fabric/components/legacyviewmanagerinterop (= 0.83.1) + - React-Fabric/components/root (= 0.83.1) + - React-Fabric/components/scrollview (= 0.83.1) + - React-Fabric/components/view (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1135,7 +1203,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/legacyviewmanagerinterop (0.81.4): + - React-Fabric/components/legacyviewmanagerinterop (0.83.1): - boost - DoubleConversion - fast_float @@ -1160,7 +1228,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/root (0.81.4): + - React-Fabric/components/root (0.83.1): - boost - DoubleConversion - fast_float @@ -1185,7 +1253,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/scrollview (0.81.4): + - React-Fabric/components/scrollview (0.83.1): - boost - DoubleConversion - fast_float @@ -1210,7 +1278,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/view (0.81.4): + - React-Fabric/components/view (0.83.1): - boost - DoubleConversion - fast_float @@ -1237,7 +1305,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-Fabric/consistency (0.81.4): + - React-Fabric/consistency (0.83.1): - boost - DoubleConversion - fast_float @@ -1262,7 +1330,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/core (0.81.4): + - React-Fabric/core (0.83.1): - boost - DoubleConversion - fast_float @@ -1287,7 +1355,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/dom (0.81.4): + - React-Fabric/dom (0.83.1): - boost - DoubleConversion - fast_float @@ -1312,7 +1380,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/imagemanager (0.81.4): + - React-Fabric/imagemanager (0.83.1): - boost - DoubleConversion - fast_float @@ -1337,7 +1405,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/leakchecker (0.81.4): + - React-Fabric/leakchecker (0.83.1): - boost - DoubleConversion - fast_float @@ -1362,7 +1430,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/mounting (0.81.4): + - React-Fabric/mounting (0.83.1): - boost - DoubleConversion - fast_float @@ -1387,7 +1455,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers (0.81.4): + - React-Fabric/observers (0.83.1): - boost - DoubleConversion - fast_float @@ -1401,7 +1469,8 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.81.4) + - React-Fabric/observers/events (= 0.83.1) + - React-Fabric/observers/intersection (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1413,7 +1482,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers/events (0.81.4): + - React-Fabric/observers/events (0.83.1): - boost - DoubleConversion - fast_float @@ -1438,7 +1507,32 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/scheduler (0.81.4): + - React-Fabric/observers/intersection (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/scheduler (0.83.1): - boost - DoubleConversion - fast_float @@ -1458,6 +1552,7 @@ PODS: - React-jsi - React-jsiexecutor - React-logger + - React-performancecdpmetrics - React-performancetimeline - React-rendererdebug - React-runtimeexecutor @@ -1465,7 +1560,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/telemetry (0.81.4): + - React-Fabric/telemetry (0.83.1): - boost - DoubleConversion - fast_float @@ -1490,7 +1585,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/templateprocessor (0.81.4): + - React-Fabric/templateprocessor (0.83.1): - boost - DoubleConversion - fast_float @@ -1515,7 +1610,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/uimanager (0.81.4): + - React-Fabric/uimanager (0.83.1): - boost - DoubleConversion - fast_float @@ -1529,7 +1624,7 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.81.4) + - React-Fabric/uimanager/consistency (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1542,7 +1637,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/uimanager/consistency (0.81.4): + - React-Fabric/uimanager/consistency (0.83.1): - boost - DoubleConversion - fast_float @@ -1568,7 +1663,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-FabricComponents (0.81.4): + - React-FabricComponents (0.83.1): - boost - DoubleConversion - fast_float @@ -1583,8 +1678,8 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 0.81.4) - - React-FabricComponents/textlayoutmanager (= 0.81.4) + - React-FabricComponents/components (= 0.83.1) + - React-FabricComponents/textlayoutmanager (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1597,7 +1692,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components (0.81.4): + - React-FabricComponents/components (0.83.1): - boost - DoubleConversion - fast_float @@ -1612,17 +1707,18 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.81.4) - - React-FabricComponents/components/iostextinput (= 0.81.4) - - React-FabricComponents/components/modal (= 0.81.4) - - React-FabricComponents/components/rncore (= 0.81.4) - - React-FabricComponents/components/safeareaview (= 0.81.4) - - React-FabricComponents/components/scrollview (= 0.81.4) - - React-FabricComponents/components/switch (= 0.81.4) - - React-FabricComponents/components/text (= 0.81.4) - - React-FabricComponents/components/textinput (= 0.81.4) - - React-FabricComponents/components/unimplementedview (= 0.81.4) - - React-FabricComponents/components/virtualview (= 0.81.4) + - React-FabricComponents/components/inputaccessory (= 0.83.1) + - React-FabricComponents/components/iostextinput (= 0.83.1) + - React-FabricComponents/components/modal (= 0.83.1) + - React-FabricComponents/components/rncore (= 0.83.1) + - React-FabricComponents/components/safeareaview (= 0.83.1) + - React-FabricComponents/components/scrollview (= 0.83.1) + - React-FabricComponents/components/switch (= 0.83.1) + - React-FabricComponents/components/text (= 0.83.1) + - React-FabricComponents/components/textinput (= 0.83.1) + - React-FabricComponents/components/unimplementedview (= 0.83.1) + - React-FabricComponents/components/virtualview (= 0.83.1) + - React-FabricComponents/components/virtualviewexperimental (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1635,7 +1731,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/inputaccessory (0.81.4): + - React-FabricComponents/components/inputaccessory (0.83.1): - boost - DoubleConversion - fast_float @@ -1662,7 +1758,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/iostextinput (0.81.4): + - React-FabricComponents/components/iostextinput (0.83.1): - boost - DoubleConversion - fast_float @@ -1689,7 +1785,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/modal (0.81.4): + - React-FabricComponents/components/modal (0.83.1): - boost - DoubleConversion - fast_float @@ -1716,7 +1812,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/rncore (0.81.4): + - React-FabricComponents/components/rncore (0.83.1): - boost - DoubleConversion - fast_float @@ -1743,7 +1839,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/safeareaview (0.81.4): + - React-FabricComponents/components/safeareaview (0.83.1): - boost - DoubleConversion - fast_float @@ -1770,7 +1866,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/scrollview (0.81.4): + - React-FabricComponents/components/scrollview (0.83.1): - boost - DoubleConversion - fast_float @@ -1797,7 +1893,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/switch (0.81.4): + - React-FabricComponents/components/switch (0.83.1): - boost - DoubleConversion - fast_float @@ -1824,7 +1920,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/text (0.81.4): + - React-FabricComponents/components/text (0.83.1): - boost - DoubleConversion - fast_float @@ -1851,7 +1947,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/textinput (0.81.4): + - React-FabricComponents/components/textinput (0.83.1): - boost - DoubleConversion - fast_float @@ -1878,7 +1974,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/unimplementedview (0.81.4): + - React-FabricComponents/components/unimplementedview (0.83.1): - boost - DoubleConversion - fast_float @@ -1905,7 +2001,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/virtualview (0.81.4): + - React-FabricComponents/components/virtualview (0.83.1): - boost - DoubleConversion - fast_float @@ -1932,7 +2028,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/textlayoutmanager (0.81.4): + - React-FabricComponents/components/virtualviewexperimental (0.83.1): - boost - DoubleConversion - fast_float @@ -1959,7 +2055,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricImage (0.81.4): + - React-FabricComponents/textlayoutmanager (0.83.1): - boost - DoubleConversion - fast_float @@ -1968,21 +2064,48 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - RCTRequired (= 0.81.4) - - RCTTypeSafety (= 0.81.4) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricImage (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired (= 0.83.1) + - RCTTypeSafety (= 0.83.1) - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.81.4) + - React-jsiexecutor (= 0.83.1) - React-logger - React-rendererdebug - React-utils - ReactCommon - SocketRocket - Yoga - - React-featureflags (0.81.4): + - React-featureflags (0.83.1): - boost - DoubleConversion - fast_float @@ -1991,7 +2114,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-featureflagsnativemodule (0.81.4): + - React-featureflagsnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -2006,7 +2129,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - SocketRocket - - React-graphics (0.81.4): + - React-graphics (0.83.1): - boost - DoubleConversion - fast_float @@ -2019,7 +2142,7 @@ PODS: - React-jsiexecutor - React-utils - SocketRocket - - React-hermes (0.81.4): + - React-hermes (0.83.1): - boost - DoubleConversion - fast_float @@ -2028,16 +2151,17 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) + - React-cxxreact (= 0.83.1) - React-jsi - - React-jsiexecutor (= 0.81.4) + - React-jsiexecutor (= 0.83.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 0.81.4) + - React-oscompat + - React-perflogger (= 0.83.1) - React-runtimeexecutor - SocketRocket - - React-idlecallbacksnativemodule (0.81.4): + - React-idlecallbacksnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -2053,7 +2177,7 @@ PODS: - React-runtimescheduler - ReactCommon/turbomodule/core - SocketRocket - - React-ImageManager (0.81.4): + - React-ImageManager (0.83.1): - boost - DoubleConversion - fast_float @@ -2068,7 +2192,28 @@ PODS: - React-rendererdebug - React-utils - SocketRocket - - React-jserrorhandler (0.81.4): + - React-intersectionobservernativemodule (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact + - React-Fabric + - React-Fabric/bridging + - React-graphics + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - React-runtimescheduler + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-jserrorhandler (0.83.1): - boost - DoubleConversion - fast_float @@ -2083,7 +2228,7 @@ PODS: - React-jsi - ReactCommon/turbomodule/bridging - SocketRocket - - React-jsi (0.81.4): + - React-jsi (0.83.1): - boost - DoubleConversion - fast_float @@ -2093,7 +2238,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-jsiexecutor (0.81.4): + - React-jsiexecutor (0.83.1): - boost - DoubleConversion - fast_float @@ -2102,15 +2247,17 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) + - React-cxxreact + - React-debug + - React-jsi - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 0.81.4) + - React-perflogger - React-runtimeexecutor + - React-utils - SocketRocket - - React-jsinspector (0.81.4): + - React-jsinspector (0.83.1): - boost - DoubleConversion - fast_float @@ -2125,10 +2272,11 @@ PODS: - React-jsinspectornetwork - React-jsinspectortracing - React-oscompat - - React-perflogger (= 0.81.4) + - React-perflogger (= 0.83.1) - React-runtimeexecutor + - React-utils - SocketRocket - - React-jsinspectorcdp (0.81.4): + - React-jsinspectorcdp (0.83.1): - boost - DoubleConversion - fast_float @@ -2137,7 +2285,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-jsinspectornetwork (0.81.4): + - React-jsinspectornetwork (0.83.1): - boost - DoubleConversion - fast_float @@ -2145,23 +2293,23 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - React-featureflags - React-jsinspectorcdp - - React-performancetimeline - - React-timing - SocketRocket - - React-jsinspectortracing (0.81.4): + - React-jsinspectortracing (0.83.1): - boost - DoubleConversion - fast_float - fmt - glog + - hermes-engine - RCT-Folly - RCT-Folly/Fabric + - React-jsi + - React-jsinspectornetwork - React-oscompat - React-timing - SocketRocket - - React-jsitooling (0.81.4): + - React-jsitooling (0.83.1): - boost - DoubleConversion - fast_float @@ -2169,16 +2317,18 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) + - React-cxxreact (= 0.83.1) + - React-debug + - React-jsi (= 0.83.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor + - React-utils - SocketRocket - - React-jsitracing (0.81.4): + - React-jsitracing (0.83.1): - React-jsi - - React-logger (0.81.4): + - React-logger (0.83.1): - boost - DoubleConversion - fast_float @@ -2187,7 +2337,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-Mapbuffer (0.81.4): + - React-Mapbuffer (0.83.1): - boost - DoubleConversion - fast_float @@ -2197,7 +2347,7 @@ PODS: - RCT-Folly/Fabric - React-debug - SocketRocket - - React-microtasksnativemodule (0.81.4): + - React-microtasksnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -2526,7 +2676,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - react-native-launch-arguments (4.0.2): + - react-native-launch-arguments (4.1.1): - React - react-native-netinfo (11.4.1): - boost @@ -2868,7 +3018,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-NativeModulesApple (0.81.4): + - React-NativeModulesApple (0.83.1): - boost - DoubleConversion - fast_float @@ -2880,6 +3030,7 @@ PODS: - React-callinvoker - React-Core - React-cxxreact + - React-debug - React-featureflags - React-jsi - React-jsinspector @@ -2888,8 +3039,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - SocketRocket - - React-oscompat (0.81.4) - - React-perflogger (0.81.4): + - React-networking (0.83.1): - boost - DoubleConversion - fast_float @@ -2897,8 +3047,37 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric + - React-featureflags + - React-jsinspectornetwork + - React-jsinspectortracing + - React-performancetimeline + - React-timing - SocketRocket - - React-performancetimeline (0.81.4): + - React-oscompat (0.83.1) + - React-perflogger (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-performancecdpmetrics (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-jsi + - React-performancetimeline + - React-runtimeexecutor + - React-timing + - SocketRocket + - React-performancetimeline (0.83.1): - boost - DoubleConversion - fast_float @@ -2911,9 +3090,9 @@ PODS: - React-perflogger - React-timing - SocketRocket - - React-RCTActionSheet (0.81.4): - - React-Core/RCTActionSheetHeaders (= 0.81.4) - - React-RCTAnimation (0.81.4): + - React-RCTActionSheet (0.83.1): + - React-Core/RCTActionSheetHeaders (= 0.83.1) + - React-RCTAnimation (0.83.1): - boost - DoubleConversion - fast_float @@ -2929,7 +3108,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTAppDelegate (0.81.4): + - React-RCTAppDelegate (0.83.1): - boost - DoubleConversion - fast_float @@ -2963,7 +3142,7 @@ PODS: - React-utils - ReactCommon - SocketRocket - - React-RCTBlob (0.81.4): + - React-RCTBlob (0.83.1): - boost - DoubleConversion - fast_float @@ -2982,7 +3161,7 @@ PODS: - React-RCTNetwork - ReactCommon - SocketRocket - - React-RCTFabric (0.81.4): + - React-RCTFabric (0.83.1): - boost - DoubleConversion - fast_float @@ -2991,6 +3170,7 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric + - RCTSwiftUIWrapper - React-Core - React-debug - React-Fabric @@ -3002,8 +3182,9 @@ PODS: - React-jsi - React-jsinspector - React-jsinspectorcdp - - React-jsinspectornetwork - React-jsinspectortracing + - React-networking + - React-performancecdpmetrics - React-performancetimeline - React-RCTAnimation - React-RCTFBReactNativeSpec @@ -3017,7 +3198,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-RCTFBReactNativeSpec (0.81.4): + - React-RCTFBReactNativeSpec (0.83.1): - boost - DoubleConversion - fast_float @@ -3031,10 +3212,10 @@ PODS: - React-Core - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.81.4) + - React-RCTFBReactNativeSpec/components (= 0.83.1) - ReactCommon - SocketRocket - - React-RCTFBReactNativeSpec/components (0.81.4): + - React-RCTFBReactNativeSpec/components (0.83.1): - boost - DoubleConversion - fast_float @@ -3057,7 +3238,7 @@ PODS: - ReactCommon - SocketRocket - Yoga - - React-RCTImage (0.81.4): + - React-RCTImage (0.83.1): - boost - DoubleConversion - fast_float @@ -3073,14 +3254,14 @@ PODS: - React-RCTNetwork - ReactCommon - SocketRocket - - React-RCTLinking (0.81.4): - - React-Core/RCTLinkingHeaders (= 0.81.4) - - React-jsi (= 0.81.4) + - React-RCTLinking (0.83.1): + - React-Core/RCTLinkingHeaders (= 0.83.1) + - React-jsi (= 0.83.1) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.81.4) - - React-RCTNetwork (0.81.4): + - ReactCommon/turbomodule/core (= 0.83.1) + - React-RCTNetwork (0.83.1): - boost - DoubleConversion - fast_float @@ -3090,15 +3271,17 @@ PODS: - RCT-Folly/Fabric - RCTTypeSafety - React-Core/RCTNetworkHeaders + - React-debug - React-featureflags - React-jsi - React-jsinspectorcdp - React-jsinspectornetwork - React-NativeModulesApple + - React-networking - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTRuntime (0.81.4): + - React-RCTRuntime (0.83.1): - boost - DoubleConversion - fast_float @@ -3108,6 +3291,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-Core + - React-debug - React-jsi - React-jsinspector - React-jsinspectorcdp @@ -3117,8 +3301,9 @@ PODS: - React-RuntimeCore - React-runtimeexecutor - React-RuntimeHermes + - React-utils - SocketRocket - - React-RCTSettings (0.81.4): + - React-RCTSettings (0.83.1): - boost - DoubleConversion - fast_float @@ -3133,10 +3318,10 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTText (0.81.4): - - React-Core/RCTTextHeaders (= 0.81.4) + - React-RCTText (0.83.1): + - React-Core/RCTTextHeaders (= 0.83.1) - Yoga - - React-RCTVibration (0.81.4): + - React-RCTVibration (0.83.1): - boost - DoubleConversion - fast_float @@ -3150,11 +3335,11 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-rendererconsistency (0.81.4) - - React-renderercss (0.81.4): + - React-rendererconsistency (0.83.1) + - React-renderercss (0.83.1): - React-debug - React-utils - - React-rendererdebug (0.81.4): + - React-rendererdebug (0.83.1): - boost - DoubleConversion - fast_float @@ -3164,7 +3349,7 @@ PODS: - RCT-Folly/Fabric - React-debug - SocketRocket - - React-RuntimeApple (0.81.4): + - React-RuntimeApple (0.83.1): - boost - DoubleConversion - fast_float @@ -3193,7 +3378,7 @@ PODS: - React-runtimescheduler - React-utils - SocketRocket - - React-RuntimeCore (0.81.4): + - React-RuntimeCore (0.83.1): - boost - DoubleConversion - fast_float @@ -3215,7 +3400,7 @@ PODS: - React-runtimescheduler - React-utils - SocketRocket - - React-runtimeexecutor (0.81.4): + - React-runtimeexecutor (0.83.1): - boost - DoubleConversion - fast_float @@ -3225,10 +3410,10 @@ PODS: - RCT-Folly/Fabric - React-debug - React-featureflags - - React-jsi (= 0.81.4) + - React-jsi (= 0.83.1) - React-utils - SocketRocket - - React-RuntimeHermes (0.81.4): + - React-RuntimeHermes (0.83.1): - boost - DoubleConversion - fast_float @@ -3249,7 +3434,7 @@ PODS: - React-runtimeexecutor - React-utils - SocketRocket - - React-runtimescheduler (0.81.4): + - React-runtimescheduler (0.83.1): - boost - DoubleConversion - fast_float @@ -3271,9 +3456,9 @@ PODS: - React-timing - React-utils - SocketRocket - - React-timing (0.81.4): + - React-timing (0.83.1): - React-debug - - React-utils (0.81.4): + - React-utils (0.83.1): - boost - DoubleConversion - fast_float @@ -3283,11 +3468,28 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-debug - - React-jsi (= 0.81.4) + - React-jsi (= 0.83.1) - SocketRocket - - ReactAppDependencyProvider (0.81.4): + - React-webperformancenativemodule (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact + - React-jsi + - React-jsiexecutor + - React-performancetimeline + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core + - SocketRocket + - ReactAppDependencyProvider (0.83.1): - ReactCodegen - - ReactCodegen (0.81.4): + - ReactCodegen (0.83.1): - boost - DoubleConversion - fast_float @@ -3313,7 +3515,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - SocketRocket - - ReactCommon (0.81.4): + - ReactCommon (0.83.1): - boost - DoubleConversion - fast_float @@ -3321,9 +3523,9 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - ReactCommon/turbomodule (= 0.81.4) + - ReactCommon/turbomodule (= 0.83.1) - SocketRocket - - ReactCommon/turbomodule (0.81.4): + - ReactCommon/turbomodule (0.83.1): - boost - DoubleConversion - fast_float @@ -3332,15 +3534,15 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) - - ReactCommon/turbomodule/bridging (= 0.81.4) - - ReactCommon/turbomodule/core (= 0.81.4) + - React-callinvoker (= 0.83.1) + - React-cxxreact (= 0.83.1) + - React-jsi (= 0.83.1) + - React-logger (= 0.83.1) + - React-perflogger (= 0.83.1) + - ReactCommon/turbomodule/bridging (= 0.83.1) + - ReactCommon/turbomodule/core (= 0.83.1) - SocketRocket - - ReactCommon/turbomodule/bridging (0.81.4): + - ReactCommon/turbomodule/bridging (0.83.1): - boost - DoubleConversion - fast_float @@ -3349,13 +3551,13 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) + - React-callinvoker (= 0.83.1) + - React-cxxreact (= 0.83.1) + - React-jsi (= 0.83.1) + - React-logger (= 0.83.1) + - React-perflogger (= 0.83.1) - SocketRocket - - ReactCommon/turbomodule/core (0.81.4): + - ReactCommon/turbomodule/core (0.83.1): - boost - DoubleConversion - fast_float @@ -3364,14 +3566,14 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-debug (= 0.81.4) - - React-featureflags (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) - - React-utils (= 0.81.4) + - React-callinvoker (= 0.83.1) + - React-cxxreact (= 0.83.1) + - React-debug (= 0.83.1) + - React-featureflags (= 0.83.1) + - React-jsi (= 0.83.1) + - React-logger (= 0.83.1) + - React-perflogger (= 0.83.1) + - React-utils (= 0.83.1) - SocketRocket - ReactNativeHybridApp (0.0.0): - boost @@ -4111,6 +4313,7 @@ PODS: - SocketRocket (0.7.1) - Turf (2.8.0) - TweetNacl (1.0.2) + - UMAppLoader (55.0.2) - VisionCamera (4.7.2): - VisionCamera/Core (= 4.7.2) - VisionCamera/React (= 4.7.2) @@ -4124,21 +4327,23 @@ DEPENDENCIES: - AppLogs (from `../node_modules/react-native-app-logs/AppLogsPod`) - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - - EXAV (from `../node_modules/expo-av/ios`) - - EXConstants (from `../node_modules/expo-constants/ios`) - - EXImageLoader (from `../node_modules/expo-image-loader/ios`) + - EXConstants (from `../node_modules/expo/node_modules/expo-constants/ios`) - "expensify-react-native-background-task (from `../node_modules/@expensify/react-native-background-task`)" - "ExpensifyNitroUtils (from `../node_modules/@expensify/nitro-utils`)" - Expo (from `../node_modules/expo`) - ExpoAsset (from `../node_modules/expo-asset/ios`) + - "ExpoDomWebView (from `../node_modules/@expo/dom-webview/ios`)" - ExpoFont (from `../node_modules/expo-font/ios`) - ExpoImage (from `../node_modules/expo-image/ios`) - ExpoImageManipulator (from `../node_modules/expo-image-manipulator/ios`) - ExpoLocation (from `../node_modules/expo-location/ios`) + - "ExpoLogBox (from `../node_modules/@expo/log-box`)" - ExpoModulesCore (from `../node_modules/expo-modules-core`) + - ExpoModulesJSI (from `../node_modules/expo-modules-core`) - ExpoSecureStore (from `../node_modules/expo-secure-store/ios`) - - ExpoVideo (from `../node_modules/expo-video/ios`) - ExpoStoreReview (from `../node_modules/expo-store-review/ios`) + - ExpoTaskManager (from `../node_modules/expo-task-manager/ios`) + - ExpoVideo (from `../node_modules/expo-video/ios`) - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) @@ -4155,6 +4360,8 @@ DEPENDENCIES: - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) - RCTRequired (from `../node_modules/react-native/Libraries/Required`) + - RCTSwiftUI (from `../node_modules/react-native/ReactApple/RCTSwiftUI`) + - RCTSwiftUIWrapper (from `../node_modules/react-native/ReactApple/RCTSwiftUIWrapper`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) @@ -4174,6 +4381,7 @@ DEPENDENCIES: - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-intersectionobservernativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/intersectionobserver`) - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) @@ -4209,8 +4417,10 @@ DEPENDENCIES: - "react-native-wallet (from `../node_modules/@expensify/react-native-wallet`)" - react-native-webview (from `../node_modules/react-native-webview`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-networking (from `../node_modules/react-native/ReactCommon/react/networking`) - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancecdpmetrics (from `../node_modules/react-native/ReactCommon/react/performance/cdpmetrics`) - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) @@ -4235,8 +4445,9 @@ DEPENDENCIES: - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - - ReactAppDependencyProvider (from `build/generated/ios`) - - ReactCodegen (from `build/generated/ios`) + - React-webperformancenativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/webperformance`) + - ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`) + - ReactCodegen (from `build/generated/ios/ReactCodegen`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - "ReactNativeHybridApp (from `../node_modules/@expensify/react-native-hybrid-app`)" - "RNAppleAuthentication (from `../node_modules/@invertase/react-native-apple-authentication`)" @@ -4264,6 +4475,7 @@ DEPENDENCIES: - RNSVG (from `../node_modules/react-native-svg`) - RNWorklets (from `../node_modules/react-native-worklets`) - SocketRocket (~> 0.7.1) + - UMAppLoader (from `../node_modules/unimodules-app-loader/ios`) - VisionCamera (from `../node_modules/react-native-vision-camera`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -4326,12 +4538,8 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" - EXAV: - :path: "../node_modules/expo-av/ios" EXConstants: - :path: "../node_modules/expo-constants/ios" - EXImageLoader: - :path: "../node_modules/expo-image-loader/ios" + :path: "../node_modules/expo/node_modules/expo-constants/ios" expensify-react-native-background-task: :path: "../node_modules/@expensify/react-native-background-task" ExpensifyNitroUtils: @@ -4340,6 +4548,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo" ExpoAsset: :path: "../node_modules/expo-asset/ios" + ExpoDomWebView: + :path: "../node_modules/@expo/dom-webview/ios" ExpoFont: :path: "../node_modules/expo-font/ios" ExpoImage: @@ -4348,14 +4558,20 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-image-manipulator/ios" ExpoLocation: :path: "../node_modules/expo-location/ios" + ExpoLogBox: + :path: "../node_modules/@expo/log-box" ExpoModulesCore: :path: "../node_modules/expo-modules-core" + ExpoModulesJSI: + :path: "../node_modules/expo-modules-core" ExpoSecureStore: :path: "../node_modules/expo-secure-store/ios" - ExpoVideo: - :path: "../node_modules/expo-video/ios" ExpoStoreReview: :path: "../node_modules/expo-store-review/ios" + ExpoTaskManager: + :path: "../node_modules/expo-task-manager/ios" + ExpoVideo: + :path: "../node_modules/expo-video/ios" fast_float: :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: @@ -4372,7 +4588,7 @@ EXTERNAL SOURCES: :path: "../node_modules/group-ib-fp" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2025-07-07-RNv0.81.0-e0fc67142ec0763c6b6153ca2bf96df815539782 + :tag: hermes-v0.14.0 lottie-react-native: :path: "../node_modules/lottie-react-native" NitroModules: @@ -4387,6 +4603,10 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: :path: "../node_modules/react-native/Libraries/Required" + RCTSwiftUI: + :path: "../node_modules/react-native/ReactApple/RCTSwiftUI" + RCTSwiftUIWrapper: + :path: "../node_modules/react-native/ReactApple/RCTSwiftUIWrapper" RCTTypeSafety: :path: "../node_modules/react-native/Libraries/TypeSafety" React: @@ -4423,6 +4643,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" React-ImageManager: :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-intersectionobservernativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/intersectionobserver" React-jserrorhandler: :path: "../node_modules/react-native/ReactCommon/jserrorhandler" React-jsi: @@ -4493,10 +4715,14 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-webview" React-NativeModulesApple: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-networking: + :path: "../node_modules/react-native/ReactCommon/react/networking" React-oscompat: :path: "../node_modules/react-native/ReactCommon/oscompat" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-performancecdpmetrics: + :path: "../node_modules/react-native/ReactCommon/react/performance/cdpmetrics" React-performancetimeline: :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: @@ -4545,10 +4771,12 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/timing" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" + React-webperformancenativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/webperformance" ReactAppDependencyProvider: - :path: build/generated/ios + :path: build/generated/ios/ReactAppDependencyProvider ReactCodegen: - :path: build/generated/ios + :path: build/generated/ios/ReactCodegen ReactCommon: :path: "../node_modules/react-native/ReactCommon" ReactNativeHybridApp: @@ -4601,6 +4829,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-svg" RNWorklets: :path: "../node_modules/react-native-worklets" + UMAppLoader: + :path: "../node_modules/unimodules-app-loader/ios" VisionCamera: :path: "../node_modules/react-native-vision-camera" Yoga: @@ -4618,23 +4848,25 @@ SPEC CHECKSUMS: AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0 boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - EXAV: ae28256069c4cdde93d185c007d8f68d92902c2e - EXConstants: a95804601ee4a6aa7800645f9b070d753b1142b3 - EXImageLoader: 4d3d3284141f1a45006cc4d0844061c182daf7ee + EXConstants: eca5ffaef862c3f0884b189393a3da58b0e7f8dd expensify-react-native-background-task: 03c640e1f5649692d058cba48c0a138f024a6dd3 ExpensifyNitroUtils: 86109fe1ab88351ed63ffe11b760d537c70019d7 - Expo: b2748512b0df06c1e569f93372b53c488f02ffe7 - ExpoAsset: 84810d6fed8179f04d4a7a4a6b37028bbd726e26 + Expo: 30852d5a870bc51e23dd224fed2dbac49b50392d + ExpoAsset: afaa23466e93da462b918bff8d6a9fe15c646dc8 + ExpoDomWebView: c0343b93dabed758db1e14ef1d1e570a1498562a ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 ExpoImage: e88f500585913969b930e13a4be47277eb7c6de8 - ExpoImageManipulator: 7cb78b082bcc767b97867d833ce614ace424cd97 - ExpoLocation: 93d7faa0c2adbd5a04686af0c1a61bc6ed3ee2f7 - ExpoModulesCore: e1b5401a7af4c7dbf4fe26b535918a72c6ed8a7b + ExpoImageManipulator: ae244131e2c3da68a030332fcbd87287fbdd8f97 + ExpoLocation: fec7703a4922c4748b380723669f771376ffbd05 + ExpoLogBox: e768750bd029c3fa90a5c43a093ad089dd73a8c0 + ExpoModulesCore: 1158e7941ddcff1677846dfdec27630e036e3904 + ExpoModulesJSI: 455acaa72cb963ceb247df889c8e8cce3e6bbfe6 ExpoSecureStore: 3f1b632d6d40bcc62b4983ef9199cd079592a50a - ExpoVideo: 6907c4872886dce2720d3af20782eb6ee7734110 - ExpoStoreReview: 15f19e0d6cb6e00330ba1b356485bf47ef19c39a + ExpoStoreReview: 32bb43b6fae9c8db3e33cad69996dff3785eef5f + ExpoTaskManager: 23d8ea66d21da98ddcef977f258d1fd62359c2db + ExpoVideo: 17748c0ee95e746b6ec75d8522a714cb3e614fa1 fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 - FBLazyVector: 941bef1c8eeabd9fe1f501e30a5220beee913886 + FBLazyVector: 309703e71d3f2f1ed7dc7889d58309c9d77a95a4 Firebase: 3435bc66b4d494c2f22c79fd3aae4c1db6662327 FirebaseABTesting: 4048f61cc10d2fad064d3089ace6bd5fb910169b FirebaseAnalytics: 630349facf4a114a0977e5d7570e104261973287 @@ -4651,7 +4883,7 @@ SPEC CHECKSUMS: fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd ForkInputMask: 55e3fbab504b22da98483e9f9a6514b98fdd2f3c FullStory: c381e701f709f5185471800bbb626f079d93fc0d - fullstory_react-native: 590db55c04e728f483667487f833a8e487112520 + fullstory_react-native: 0b0d83b6765beec52856f7f628d5e1ab98944f47 glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 GoogleAppMeasurement: 0dfca1a4b534d123de3945e28f77869d10d0d600 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 @@ -4661,7 +4893,7 @@ SPEC CHECKSUMS: GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 GzipSwift: 893f3e48e597a1a4f62fafcb6514220fcf8287fa - hermes-engine: 35c763d57c9832d0eef764316ca1c4d043581394 + hermes-engine: 843645b51c329c98a1b61df2e32c10be463486fe libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 @@ -4682,39 +4914,42 @@ SPEC CHECKSUMS: pusher-websocket-react-native: 31b5fdd632bfa6d417f9ad0bceefe403ab41825d PusherSwift: fa3d5f6587c20ad5790de87a5c9b150367b5f0f5 RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 - RCTDeprecation: c0ed3249a97243002615517dff789bf4666cf585 - RCTRequired: 58719f5124f9267b5f9649c08bf23d9aea845b23 - RCTTypeSafety: 4aefa8328ab1f86da273f08517f1f6b343f6c2cc - React: 2073376f47c71b7e9a0af7535986a77522ce1049 - React-callinvoker: 751b6f2c83347a0486391c3f266f291f0f53b27e + RCTDeprecation: a41bbdd9af30bf2e5715796b313e44ec43eefff1 + RCTRequired: 7be34aabb0b77c3cefe644528df0fa0afad4e4d0 + RCTSwiftUI: a6c7271c39098bf00dbdad8f8ed997a59bbfbe44 + RCTSwiftUIWrapper: ff9098ccf7727e58218f2f8ea110349863f43438 + RCTTypeSafety: 27927d0ca04e419ed9467578b3e6297e37210b5c + React: 4bc1f928568ad4bcfd147260f907b4ea5873a03b + React-callinvoker: 87f8728235a0dc62e9dc19b3851c829d9347d015 React-Codegen: 4b8b4817cea7a54b83851d4c1f91f79aa73de30a - React-Core: dff5d29973349b11dd6631c9498456d75f846d5e - React-CoreModules: c0ae04452e4c5d30e06f8e94692a49107657f537 - React-cxxreact: 376fd672c95dfb64ad5cc246e6a1e9edb78dec4c - React-debug: d4955c86870792887ed695df6ebf0e94e39dc7e1 - React-defaultsnativemodule: bd2b805c6daa85d430d034aa748544b377ada152 - React-domnativemodule: b5c04a4a74ed9c3cb25adc72583b017868600464 - React-Fabric: 93a9ff378f1edf29e9a22a24ad55a1be061e7985 - React-FabricComponents: 83bd54366d4ecb8bec563aa1a78d49915763d503 - React-FabricImage: 8bcd88e553047d4ed5c7ea3def8d6c0e3dd88cfc - React-featureflags: 4ea691ab154d505277859416aa226ae32edeef5f - React-featureflagsnativemodule: b8f00b01436294a30dc62fb5e50b70aa3910309c - React-graphics: d6207795fe822668daeb9c6e1f1470a8500d9eec - React-hermes: fcbdc45ecf38259fe3b12642bd0757c52270a107 - React-idlecallbacksnativemodule: f390a518e1a862453f45f86a1bc248350634d858 - React-ImageManager: acb99e093632b7fc2953dd45f2abaeeea2d9588e - React-jserrorhandler: 958ab9afbe7acdbfe8ca225f7503313409b1319a - React-jsi: 59ec3190dd364cca86a58869e7755477d2468948 - React-jsiexecutor: b87d78a2e8dd7a6f56e9cdac038da45de98c944f - React-jsinspector: 9c33e0c4eeeb10a23b61c4501947b57977980e0e - React-jsinspectorcdp: d7b2c3feddd3669f0eaad2ac1e0f7afbc1d1cf18 - React-jsinspectornetwork: 696d0cf07016e69c053deffba30003fa448904a3 - React-jsinspectortracing: 05d49cd8795db15a279eab6f7604dfa9fe9622f1 - React-jsitooling: 0f9894c3656c3c13d4fcfe6e1dc964fd340acf49 - React-jsitracing: dc11027f9e4e829d32bf17626ec831581ea05223 - React-logger: a3cb5b29c32b8e447b5a96919340e89334062b48 - React-Mapbuffer: e4a65db5f4df53369f39558c0cf2f480f6d3d6c7 - React-microtasksnativemodule: 86334c5c06315e0bccb7b6e6f2c905e92f98b615 + React-Core: 76bed73b02821e5630e7f2cb2e82432ee964695d + React-CoreModules: 752dbfdaeb096658aa0adc4a03ba6214815a08df + React-cxxreact: b6798528aa601c6db66e6adc7e2da2b059c8be74 + React-debug: b2c9f60a9b7a81cefd737cb61e31c2bc39fdfe17 + React-defaultsnativemodule: d9eb6790253633d37bab0dfd46994d772968be51 + React-domnativemodule: eee0fbeb6828e86ad1d1a0f8d2d89bc604a62cc4 + React-Fabric: 5eec4db4e42bbb55308900ee2aeb395d641f63b1 + React-FabricComponents: 556077c756a43b0c0ab719b07a282bc0bb081fc6 + React-FabricImage: 2ebf436bfe52bc6d9d2ae37a3d643280c8266e4e + React-featureflags: d3a2bd36b3763547e7887a30257191192ee789e6 + React-featureflagsnativemodule: 9c06fad6d4f1def2dc7a45b56da2b96a0b7853a5 + React-graphics: b116d3926d6c159565ea9ee96504d8c1d9cfbcdc + React-hermes: 32fc9c231c1aa5c2fcfe851b0d19ee9269f88f4c + React-idlecallbacksnativemodule: d8034c2adb86c8ff3c03be505cb9a20c8ced1737 + React-ImageManager: 6c5cd273187a1f3ccf68f6d6bf57e06647baf50e + React-intersectionobservernativemodule: 1d8f1fe45ab8d45a82b08562ff412b6f128d41d3 + React-jserrorhandler: c1455b7243cf6fed0a8fd82bfbb2ef7637372304 + React-jsi: adf8527fec197ad9d0480cc5b8945eb56de627f0 + React-jsiexecutor: 315fa2f879b43e3a9ca08f5f4b733472f7e4e8a4 + React-jsinspector: 31fa81ccb390c1369acd545c3710ab6169ee77ff + React-jsinspectorcdp: 2d80f6c2d69b9b1809c272d999730dcc5b21a973 + React-jsinspectornetwork: 3aed0076638835994bfce74ea3f05a901d3ab110 + React-jsinspectortracing: 9f5ff99c584ae25d71ba158f852219e62dba8afc + React-jsitooling: 4e41ef5710527621ab85f2ee5a9c8ea05791aeee + React-jsitracing: f7f0e13dfa856460817b7f74f36c883dd0eb89b6 + React-logger: b8483fa08e0d62e430c76d864309d90576ca2f68 + React-Mapbuffer: d0c5f3793332ebec11bfbbbd962ea526ee85efff + React-microtasksnativemodule: 1a7d806e2ec20df1c6d88b29e72787fb48aeab70 react-native-advanced-input-mask: 9c2b52e8d7b09d5df6a6d0f6aafaa46926e39df5 react-native-airship: 9968fae5afb9b18aa9e01e96c8c77a9a7ad7d1e7 react-native-app-logs: 8609315e85ebedb9da47120e5c0bcea5bd6e9d75 @@ -4726,8 +4961,8 @@ SPEC CHECKSUMS: react-native-image-picker: 1722f5d3dc5de5039d423e290dc31a717ba9605e react-native-key-command: 7538df85ed26502b2a929c0584235459b26c7a91 react-native-keyboard-controller: c4ca61f44d66c2f8987a7e67e9b78e80dc965c45 - react-native-launch-arguments: d4759f7591e2766e6c5ec746b7032429edaf7058 - react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 + react-native-launch-arguments: eab68037b01ea7c78a0b3b55da3a5e967e9aaf92 + react-native-netinfo: f94b3a0fc305e812f3f615989d99299d7110c2ae react-native-pager-view: b93d2fcd4dc06c519b8ad0ceddaf183fb5fa32e7 react-native-pdf: 6a09a9be0e7ee954ea671437483316f9a28f8572 react-native-performance: a7a65d0b0f3055c5db33e1433e4345143ef6a100 @@ -4737,36 +4972,39 @@ SPEC CHECKSUMS: react-native-view-shot: 28aca10c6c6e5331959ba4b6cb2fced572f88af3 react-native-wallet: 4e3cc1f48ca653ad4a96df8da7e6bd9c8987b3e3 react-native-webview: cdce419e8022d0ef6f07db21890631258e7a9e6e - React-NativeModulesApple: 8c7eb6057b00c191a11ad5ced41826ec5a0e4d78 - React-oscompat: 93b5535ea7f7dff46aaee4f78309a70979bdde9d - React-perflogger: 5536d2df3d18fe0920263466f7b46a56351c0510 - React-performancetimeline: c6c9393c1a0453a51e1852e3531defe60790b36c - React-RCTActionSheet: 42195ae666e6d79b4af2346770f765b7c29435b9 - React-RCTAnimation: fa103ccc3503b1ed8dedca7e62e7823937748843 - React-RCTAppDelegate: 665d4baf19424cef08276e9ac0d8771eec4519f9 - React-RCTBlob: 0fa9530c255644db095f2c4fd8d89738d9d9ecc0 - React-RCTFabric: 95eb4a92c5c166e21bae07231d327174e56f202d - React-RCTFBReactNativeSpec: fd66225b71f902a8bfa939fb5f7ec743958298df - React-RCTImage: ba824e61ce2e920a239a65d130b83c3a1d426dff - React-RCTLinking: d2dc199c37e71e6f505d9eca3e5c33be930014d4 - React-RCTNetwork: 87137d4b9bd77e5068f854dd5c1f30d4b072faf6 - React-RCTRuntime: b10bd5e5506af0d6205c4101dd1560fe7beead95 - React-RCTSettings: 71f5c7fd7b5f4e725a4e2114a4b4373d0e46048f - React-RCTText: b94d4699b49285bee22b8ebf768924d607eccee3 - React-RCTVibration: 6e3993c4f6c36a3899059f9a9ead560ddaf5a7d7 - React-rendererconsistency: 612d0f6603d9837bb1236d7fd5194203b35c8799 - React-renderercss: e5c2c3b84976f7a587cde8423c671db07a6a77da - React-rendererdebug: cc7a6131733605b8897754f72c0c35c79f77da9e - React-RuntimeApple: 3f96102fc1ebf738d36719cdce5422a5769293fb - React-RuntimeCore: f05563107927f155180dfa008fed2ac1316a6aec - React-runtimeexecutor: dd3ec3b76761b43e7b37d07a70de91fc1dd24e7e - React-RuntimeHermes: 7fcb384acc111ea21bcffe2e4a15f31b58bb702e - React-runtimescheduler: 7d2eaa4e7d652a391f47df7ff510260413429bd9 - React-timing: f5d4ba74be96a24b9b2a1a910142ed14e03013d9 - React-utils: eb92d1db56a9bb5911b2c77fb4c2e8d331c8b9dd - ReactAppDependencyProvider: 433ddfb4536948630aadd5bd925aff8a632d2fe3 - ReactCodegen: 2cfa890e84ecf7f3a708f1ed9c0f2c0b22a23c9a - ReactCommon: e9ab32f1d1482d207867b4fdd139361302b9dcc6 + React-NativeModulesApple: e554252d69442010807867cc7d70c0008048ad20 + React-networking: 669cb54cc7e5b65d7dafeeb36970a1421adc8bb3 + React-oscompat: 80166b66da22e7af7fad94474e9997bd52d4c8c6 + React-perflogger: d6797918d2b1031e91a9d8f5e7fdd2c8728fb390 + React-performancecdpmetrics: 7706707d5dd49d708518a91abe456dcb585a5865 + React-performancetimeline: c9807b559901c4298a92f6bcb069f49f518b7020 + React-RCTActionSheet: 3bd5f5db9f983cf38d51bb9a7a198e2ebea94821 + React-RCTAnimation: 46a9978f27dc434dbeed16afa7b82619b690a9af + React-RCTAppDelegate: 62ecd60a2b2a8cae26ce6a066bfa59cfde97af01 + React-RCTBlob: 8285c859513023ee3cc8c806d9b59d4da078c4ba + React-RCTFabric: ab7096fa22eea969efe8947c6296d3c5e03bf51a + React-RCTFBReactNativeSpec: 7bddf0751b44174a60921dc680fa6396a0873de1 + React-RCTImage: a5364d0f098692cfbf5bef1e8a63e7712ecb14b7 + React-RCTLinking: 34b63b0aa0e92d30f5d7aa2c255a8f95fa75ee8f + React-RCTNetwork: 1ef88b7a5310b8f915d3556b5b247def113191ed + React-RCTRuntime: 5217917c3c456268a029c09af419b3c6d93bf6d4 + React-RCTSettings: 2c45623d6c0f30851a123f621eb9d32298bcbb0c + React-RCTText: 0ee70f5dc18004b4d81b2c214267c6cbec058587 + React-RCTVibration: 88557e21e7cc3fe76b5b174cba28ff45c6def997 + React-rendererconsistency: ac8a9e9ee3eb299458cc848944133ff4be46cc41 + React-renderercss: f04cbe3b06ee071c6ca724f41a3c3aa31332601e + React-rendererdebug: 2a2e4f7d42abcbec2047e989a1afda5d62905679 + React-RuntimeApple: ce2ae0ea88316a7c708be1e6601e4ec5f6febdce + React-RuntimeCore: 55b3dcac1c0e7acf98aaebb9b4c6a793bdc332e0 + React-runtimeexecutor: e4bf693c55393af5c4c62ac775c7212552ccde7a + React-RuntimeHermes: a9e2538786653648830a0efb278d51237c1a8c27 + React-runtimescheduler: 0142588a3aad9a8607f0de743330d6e459f604b8 + React-timing: 95d4939cbcd64d05c94d7c18b9cfba7c931340fd + React-utils: 28158276c67b375d1b7546a342571cfffbea9770 + React-webperformancenativemodule: 3aa0693c4d19898831317e17b005fad3444d2c99 + ReactAppDependencyProvider: 0eb286cc274abb059ee601b862ebddac2e681d01 + ReactCodegen: d663254bf59e57e5ed7c65638bd45f358a373bba + ReactCommon: 15e1e727fa34f760beb7dd52928687fda8edf8dc ReactNativeHybridApp: 16ebccf5382436fcb9303ab5f4b50d9942bccf5c RNAppleAuthentication: 9027af8aa92b4719ef1b6030a8e954d37079473a RNCClipboard: e560338bf6cc4656a09ff90610b62ddc0dbdad65 @@ -4777,21 +5015,21 @@ SPEC CHECKSUMS: RNFBCrashlytics: 9dd481075a9bb5d95b56a567f4da33eb7707e766 RNFBPerf: 6e1baea50b7dbd576a3463b0e9879b302d4d1110 RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8 - RNGestureHandler: b8d2e75c2e88fc2a1f6be3b3beeeed80b88fa37d + RNGestureHandler: 4db26426b6098e3d87bd26d8c9a9afa3b6674123 RNGoogleSignin: 89877c73f0fbf6af2038fbdb7b73b5a25b8330cc - RNLiveMarkdown: 93e71e9e8623139368e0e9a8d9c54a2beb67e731 + RNLiveMarkdown: d9dba4a5f172a4d332680d6c4712d9773c8d884a RNLocalize: 05e367a873223683f0e268d0af9a8a8e6aed3b26 rnmapbox-maps: 392ac61c42a9ff01a51d4c2f6775d9131b5951fb RNNitroSQLite: fb251387cfbee73b100cd484a3c886fda681b3b5 RNPermissions: 518f0a0c439acc74e2b9937e0e7d29e5031ae949 RNReactNativeHapticFeedback: 5f1542065f0b24c9252bd8cf3e83bc9c548182e4 - RNReanimated: e79d7f42b76ba026e7dc5fb3e3f81991c590d3af + RNReanimated: fbcb7fd8da5b0b088401542c58fb5d266388f1cf RNScreens: 4f2aed147a2775017923789d8a0a2d377712ec2e RNSentry: 4832a7acd1fe48982149f585e1802f4d9fc7b00a RNShare: 1c1fde2c4134b9cf220ffebbd6df9c414036d382 RNSound: 80f864773ff8f670fc8f052a3e478cec201d9b43 - RNSVG: 94a1be05fab4043354bcf7104f0f9b0e2231ef05 - RNWorklets: 5dd32e6d649594b9a938cdd75673dffb2266e119 + RNSVG: 74eb75bd44d62ba9969941e80d8f9832971c681f + RNWorklets: 01efdd402d236a13651ea5ea5437ca85a44e7afa SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c @@ -4800,8 +5038,9 @@ SPEC CHECKSUMS: SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Turf: aa2ede4298009639d10db36aba1a7ebaad072a5e TweetNacl: 3abf4d1d2082b0114e7a67410e300892448951e6 + UMAppLoader: 71b50bcc31d86495e52c0b4cd17e2708bf297be3 VisionCamera: 30b358b807324c692064f78385e9a732ce1bebfe - Yoga: 9b30b783a17681321b52ac507a37219d7d795ace + Yoga: 33b53536a0500d039f2cd78caf1d5d68712d3af7 PODFILE CHECKSUM: 7b7e42d39b30be7ca4c68c5272e2cbf2a740695b diff --git a/package-lock.json b/package-lock.json index a448275ec69d8..2dab7e3d5c6bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -74,7 +74,7 @@ "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", "expo-task-manager": "55.0.2", - "expo-video": "^3.0.12", + "expo-video": "55.0.3", "fast-equals": "^5.2.2", "focus-trap-react": "^11.0.3", "group-ib-fp": "file:modules/group-ib-fp", @@ -23936,9 +23936,9 @@ } }, "node_modules/expo-video": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/expo-video/-/expo-video-3.0.12.tgz", - "integrity": "sha512-L+E+zmNp3RxUBk2ugMSjxVposP70uIgGCZio5PiiUXme2KQ1eAEta2vcUPWrf4a+udrp6Xzr7bO1H9vkUXF3pg==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-video/-/expo-video-55.0.3.tgz", + "integrity": "sha512-i6cMDyk/se+eBgl3aZrZpoVy+4TTBQwte0fUBbCZLbx4oi8uRftYvloDCybGfvDAWvt1H1v3kfmIOpcfwcI+Ug==", "license": "MIT", "peerDependencies": { "expo": "*", diff --git a/package.json b/package.json index bf7f372f8037c..324203e0da200 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "expo-location": "55.0.3", "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", - "expo-video": "^3.0.12", + "expo-video": "55.0.3", "expo-store-review": "~9.0.8", "expo-task-manager": "55.0.2", "fast-equals": "^5.2.2", diff --git a/patches/expo-video/details.md b/patches/expo-video/details.md deleted file mode 100644 index ede6026ad2a92..0000000000000 --- a/patches/expo-video/details.md +++ /dev/null @@ -1,13 +0,0 @@ -# `expo-video` patches - -### [expo-video+3.0.12+001+prevent_double_pause.patch](expo-video+3.0.12+001+prevent_double_pause.patch) - -- Reason: - - ``` - This patch edits the onPause eventListener in expo-video's videoPlayer. It still pauses all mounted videos, but now excludes the video that invoked the listener, preventing it from being paused twice. - ``` - -- Upstream PR/issue: https://github.com/expo/expo/issues/40743 -- E/App issue: 🛑 -- PR Introducing Patch: https://github.com/Expensify/App/pull/66793 diff --git a/patches/expo-video/expo-video+3.0.12+001+prevent_double_pause.patch b/patches/expo-video/expo-video+3.0.12+001+prevent_double_pause.patch deleted file mode 100644 index d1a996d780519..0000000000000 --- a/patches/expo-video/expo-video+3.0.12+001+prevent_double_pause.patch +++ /dev/null @@ -1,24 +0,0 @@ - -diff --git a/node_modules/expo-video/build/VideoPlayer.web.js b/node_modules/expo-video/build/VideoPlayer.web.js -index 2c7224a..16df18b 100644 ---- a/node_modules/expo-video/build/VideoPlayer.web.js -+++ b/node_modules/expo-video/build/VideoPlayer.web.js -@@ -305,14 +305,16 @@ export default class VideoPlayerWeb extends globalThis.expo.SharedObject { - mountedVideo.play(); - }); - }; -- video.onpause = () => { -+ video.onpause = (e) => { - this._emitOnce(video, 'playingChange', { - isPlaying: false, - oldIsPlaying: this.playing, - }); - this.playing = false; - this._mountedVideos.forEach((mountedVideo) => { -- mountedVideo.pause(); -+ if (e.target !== mountedVideo) { -+ mountedVideo.pause(); -+ } - }); - }; - video.onvolumechange = () => { From 97f608d4428fd357524587b46cb1e818cf232907 Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 4 Feb 2026 17:29:49 +0100 Subject: [PATCH 15/56] chore: post-merge fixes --- package-lock.json | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 19a9d4ee20563..f68d1eee3523b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "expensify-common": "2.0.169", "expo": "55.0.0-preview.6", "expo-asset": "55.0.2", - "expo-audio": "1.1.1", + "expo-audio": "1.1.1", "expo-font": "14.0.8", "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", @@ -23912,6 +23912,18 @@ "node": ">=8" } }, + "node_modules/expo-audio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-1.1.1.tgz", + "integrity": "sha512-CPCpJ+0AEHdzWROc0f00Zh6e+irLSl2ALos/LPvxEeIcJw1APfBa4DuHPkL4CQCWsVe7EnUjFpdwpqsEUWcP0g==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "expo-asset": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-constants": { "version": "18.0.13", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", @@ -34277,8 +34289,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/react-fast-pdf": { "version": "1.0.29", @@ -39062,6 +39073,20 @@ "node": ">= 0.8" } }, + "node_modules/vaul": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", + "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, "node_modules/victory-native": { "version": "41.20.2", "resolved": "https://registry.npmjs.org/victory-native/-/victory-native-41.20.2.tgz", @@ -39082,20 +39107,6 @@ "react-native-reanimated": ">=3.0.0" } }, - "node_modules/vaul": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", - "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-dialog": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" - } - }, "node_modules/vlq": { "version": "1.0.1", "license": "MIT" From 8cd82ace5b590f3d772387c4906e7a2faddd130d Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 4 Feb 2026 18:09:31 +0100 Subject: [PATCH 16/56] fix: android build --- ios/NewExpensify/RCTBootSplash.mm | 3 ++- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ios/NewExpensify/RCTBootSplash.mm b/ios/NewExpensify/RCTBootSplash.mm index fe2dcd9ba646e..75c10b49feb23 100644 --- a/ios/NewExpensify/RCTBootSplash.mm +++ b/ios/NewExpensify/RCTBootSplash.mm @@ -137,10 +137,11 @@ + (void)onJavaScriptDidFailToLoad { } - (NSDictionary *)constantsToExport { - UIWindow *window = RCTKeyWindow(); + __block UIWindow *window = nil; __block bool darkModeEnabled = false; RCTUnsafeExecuteOnMainQueueSync(^{ + window = RCTKeyWindow(); darkModeEnabled = window != nil && window.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark; }); diff --git a/package-lock.json b/package-lock.json index f68d1eee3523b..f040d4ede3adc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "expensify-common": "2.0.169", "expo": "55.0.0-preview.6", "expo-asset": "55.0.2", - "expo-audio": "1.1.1", + "expo-audio": "55.0.4", "expo-font": "14.0.8", "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", @@ -23913,9 +23913,9 @@ } }, "node_modules/expo-audio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-1.1.1.tgz", - "integrity": "sha512-CPCpJ+0AEHdzWROc0f00Zh6e+irLSl2ALos/LPvxEeIcJw1APfBa4DuHPkL4CQCWsVe7EnUjFpdwpqsEUWcP0g==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.4.tgz", + "integrity": "sha512-NFGHyj78G0iS4AsnPm4REKbQ+ms6SndJlFDAsNaydwf+8LY0xH2XGOlR0WSHql7njX4KAPT2I6sHfyPeUPAYUA==", "license": "MIT", "peerDependencies": { "expo": "*", diff --git a/package.json b/package.json index d1b8ee4f8155e..dde31e0065f7e 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "expensify-common": "2.0.169", "expo": "55.0.0-preview.6", "expo-asset": "55.0.2", - "expo-audio": "1.1.1", + "expo-audio": "55.0.4", "expo-font": "14.0.8", "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", From 76c1f78a2db13f920f86b60576f226626844d348 Mon Sep 17 00:00:00 2001 From: war-in Date: Fri, 6 Feb 2026 18:00:57 +0100 Subject: [PATCH 17/56] fix: make iOS work --- ios/NewExpensify/RCTBootSplash.mm | 3 +- package-lock.json | 2193 ++++++++--------------------- package.json | 50 +- 3 files changed, 616 insertions(+), 1630 deletions(-) diff --git a/ios/NewExpensify/RCTBootSplash.mm b/ios/NewExpensify/RCTBootSplash.mm index 75c10b49feb23..fe2dcd9ba646e 100644 --- a/ios/NewExpensify/RCTBootSplash.mm +++ b/ios/NewExpensify/RCTBootSplash.mm @@ -137,11 +137,10 @@ + (void)onJavaScriptDidFailToLoad { } - (NSDictionary *)constantsToExport { - __block UIWindow *window = nil; + UIWindow *window = RCTKeyWindow(); __block bool darkModeEnabled = false; RCTUnsafeExecuteOnMainQueueSync(^{ - window = RCTKeyWindow(); darkModeEnabled = window != nil && window.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark; }); diff --git a/package-lock.json b/package-lock.json index 14668ea47d831..e1fe94157664c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,14 +65,14 @@ "dom-serializer": "^0.2.2", "domhandler": "^5.0.3", "expensify-common": "2.0.171", - "expo": "55.0.0-preview.6", + "expo": "55.0.0-preview.9", "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", - "expo-modules-core": "55.0.4", + "expo-modules-core": "^55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", "expo-task-manager": "55.0.2", @@ -342,20 +342,6 @@ "version": "0.0.0", "license": "UNLICENSED" }, - "node_modules/@0no-co/graphql.web": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.2.0.tgz", - "integrity": "sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==", - "license": "MIT", - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - }, - "peerDependenciesMeta": { - "graphql": { - "optional": true - } - } - }, "node_modules/@actions/core": { "version": "1.10.0", "dev": true, @@ -2131,6 +2117,7 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", @@ -2247,9 +2234,9 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.6.tgz", - "integrity": "sha512-RVdFPPyY9fCRAX68haPmOk2iyKW8PKJFthmm8NeSI3paNxKWGZIn99+VbIf0FrtCpFnPgnpF/L48tadi617ULg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", + "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", @@ -3856,7 +3843,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@blakeembrey/deque": { @@ -5658,6 +5645,7 @@ "version": "12.0.13", "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "~7.10.4", @@ -5843,12 +5831,14 @@ "version": "54.0.10", "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", + "dev": true, "license": "MIT" }, "node_modules/@expo/config/node_modules/@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" @@ -5858,6 +5848,7 @@ "version": "54.0.4", "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "dev": true, "license": "MIT", "dependencies": { "@expo/config-types": "^54.0.10", @@ -5880,6 +5871,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -5895,6 +5887,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -5911,6 +5904,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -5923,12 +5917,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/@expo/config/node_modules/glob": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "minimatch": "^10.1.1", @@ -5946,6 +5942,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5955,6 +5952,7 @@ "version": "11.2.4", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -5964,6 +5962,7 @@ "version": "10.1.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/brace-expansion": "^5.0.0" @@ -5979,6 +5978,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", @@ -5995,6 +5995,7 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6007,6 +6008,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6208,9 +6210,9 @@ } }, "node_modules/@expo/fingerprint": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.2.tgz", - "integrity": "sha512-+iP2giAnN70VKRgZcc2mUcIF0Nn3P10qpxim9u5Q5RfF+Adl3tAPzQzY0KVi35twMvCLmKb4dG2vgN7IbtPYbg==", + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.3.tgz", + "integrity": "sha512-abm2rm/3Tg1gPihTyDcy7kOWnjPdtpWHSI/VpWwLaAmqqa5hFASBcr8ge58ZEWsNiozUJbfflqOp5oTQqoumAA==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -6221,7 +6223,6 @@ "glob": "^13.0.0", "ignore": "^5.3.1", "minimatch": "^9.0.0", - "p-limit": "^3.1.0", "resolve-from": "^5.0.0", "semver": "^7.6.0" }, @@ -6294,12 +6295,12 @@ "license": "MIT" }, "node_modules/@expo/fingerprint/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", + "minimatch": "^10.1.2", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -6311,12 +6312,12 @@ } }, "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { "node": "20 || >=22" @@ -6375,9 +6376,9 @@ } }, "node_modules/@expo/fingerprint/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6399,9 +6400,9 @@ } }, "node_modules/@expo/image-utils": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.11.tgz", - "integrity": "sha512-/lW5b20C4YHhSzGSSbRzvuKZJ3VZ43FRstFvRCAsGOGLYgZJ3wPrHRQRi/nmbHw++TTMnnQTPrqRjyfNE7Tm1g==", + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.12.tgz", + "integrity": "sha512-3KguH7kyKqq7pNwLb9j6BBdD/bjmNwXZG/HPWT6GWIXbwrvAJt2JNyYTP5agWJ8jbbuys1yuCzmkX+TU6rmI7A==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -6410,7 +6411,6 @@ "jimp-compact": "0.16.1", "parse-png": "^2.1.0", "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0", "semver": "^7.6.0" } }, @@ -6497,53 +6497,35 @@ } }, "node_modules/@expo/json-file": { - "version": "10.0.11", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.11.tgz", - "integrity": "sha512-FIW+qivnFi9ey+Gxj30x1mU9aFpAv8jXLDMecijYw8E6K/Lx6PLmg7ppWZVuxhF5QDMbaNXxIfNu78+Zpt/4Ig==", + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.12.tgz", + "integrity": "sha512-inbDycp1rMAelAofg7h/mMzIe+Owx6F7pur3XdQ3EPTy00tme+4P6FWgHKUcjN8dBSrnbRNpSyh5/shzHyVCyQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", + "@babel/code-frame": "^7.20.0", "json5": "^2.2.3" } }, - "node_modules/@expo/json-file/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/@expo/local-build-cache-provider": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.2.tgz", - "integrity": "sha512-Wfdo/Levqw+quDKO1GxpAZkVQ/iMphoK4qJBdsdm4ksSBzCo9WPq/EnQPj5k8zmZ1xnDcT4kBy0kilszgJ9RCA==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.3.tgz", + "integrity": "sha512-wdpqOSpaqsY5CZ4rnC49U3jsdRaOfzbl6MlD7oSRH2slKmVoD/CiHH+9x9uuLsp65mGTp0a+FMUL6JfuvxRPIw==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.3", + "@expo/config": "~55.0.4", "chalk": "^4.1.2" } }, - "node_modules/@expo/local-build-cache-provider/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", - "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", + "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~55.0.3", - "@expo/config-types": "^55.0.3", - "@expo/json-file": "^10.0.11", + "@babel/code-frame": "^7.20.0", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "^10.0.12", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", @@ -6556,13 +6538,13 @@ } }, "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config-plugins": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", - "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", + "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", "license": "MIT", "dependencies": { - "@expo/config-types": "^55.0.3", - "@expo/json-file": "~10.0.11", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "~10.0.12", "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", @@ -6577,9 +6559,9 @@ } }, "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config-types": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", - "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", + "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", "license": "MIT" }, "node_modules/@expo/local-build-cache-provider/node_modules/@expo/plist": { @@ -6643,12 +6625,12 @@ "license": "MIT" }, "node_modules/@expo/local-build-cache-provider/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", + "minimatch": "^10.1.2", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -6678,12 +6660,12 @@ } }, "node_modules/@expo/local-build-cache-provider/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { "node": "20 || >=22" @@ -6709,9 +6691,9 @@ } }, "node_modules/@expo/local-build-cache-provider/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6733,22 +6715,20 @@ } }, "node_modules/@expo/log-box": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.2.tgz", - "integrity": "sha512-CbOt2fGRxRTnOjU1svPZQFIJAH5QLnJqC59X1MnXkkJi8sDoFwVKeyX7K5Lpwd21kchdgg74N/N389EY1yAQmA==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.5.tgz", + "integrity": "sha512-u0TV3mjCbBDClsk0PdZxLpZGov2LC93mMI+mXktomi1vbFr1xbOwkxFcy9dVAynC7ddv5F2g8DxR1MjIOK0QAw==", "license": "MIT", "dependencies": { - "@expo/dom-webview": "55.0.2", + "@expo/dom-webview": "^55.0.2", "anser": "^1.4.9", "stacktrace-parser": "^0.1.10" }, "peerDependencies": { - "@expo/dom-webview": "*", + "@expo/dom-webview": "^55.0.2", "expo": "*", "react": "*", - "react-dom": "*", - "react-native": "*", - "react-native-web": "*" + "react-native": "*" } }, "node_modules/@expo/metro": { @@ -6774,17 +6754,17 @@ } }, "node_modules/@expo/metro-config": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.3.tgz", - "integrity": "sha512-nTDo8F6d6oY9hqOijULwZpTkSpgkq4JzjU0uqX2ha/4fw7kVuz/qd5TyXYZJ/mQ3dVtkl0HN64JafODgU8+UCw==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.4.tgz", + "integrity": "sha512-cN5LqwvLtLUwvEkboZvWFYUZjAZheoJcqWzFQ/YCF9DG2eUVBfQHlcdws/rvGxQKhCwT0tu1eqJKxUVSid09jA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.20.0", "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", - "@expo/config": "~55.0.3", + "@expo/config": "~55.0.4", "@expo/env": "~2.0.11", - "@expo/json-file": "~10.0.11", + "@expo/json-file": "~10.0.12", "@expo/metro": "~54.2.0", "@expo/spawn-async": "^1.7.2", "browserslist": "^4.25.0", @@ -6811,15 +6791,15 @@ } }, "node_modules/@expo/metro-config/node_modules/@expo/config": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", - "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", + "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~55.0.3", - "@expo/config-types": "^55.0.3", - "@expo/json-file": "^10.0.11", + "@babel/code-frame": "^7.20.0", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "^10.0.12", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", @@ -6832,13 +6812,13 @@ } }, "node_modules/@expo/metro-config/node_modules/@expo/config-plugins": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", - "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", + "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", "license": "MIT", "dependencies": { - "@expo/config-types": "^55.0.3", - "@expo/json-file": "~10.0.11", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "~10.0.12", "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", @@ -6853,20 +6833,11 @@ } }, "node_modules/@expo/metro-config/node_modules/@expo/config-types": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", - "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", + "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", "license": "MIT" }, - "node_modules/@expo/metro-config/node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/@expo/metro-config/node_modules/@expo/plist": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", @@ -6937,12 +6908,12 @@ "license": "MIT" }, "node_modules/@expo/metro-config/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", + "minimatch": "^10.1.2", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -6954,12 +6925,12 @@ } }, "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { "node": "20 || >=22" @@ -7033,9 +7004,9 @@ } }, "node_modules/@expo/metro-config/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -7092,12 +7063,12 @@ } }, "node_modules/@expo/package-manager": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.10.2.tgz", - "integrity": "sha512-l6uSpmG/igVcEsWIB38vc3gL+pIwwP14aj4aJSnjKTZJpDtGHR4l33HVHPN0SGHSIfGJ7HBuB6fDdlbhOwEslQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.10.3.tgz", + "integrity": "sha512-ZuXiK/9fCrIuLjPSe1VYmfp0Sa85kCMwd8QQpgyi5ufppYKRtLBg14QOgUqj8ZMbJTxE0xqzd0XR7kOs3vAK9A==", "license": "MIT", "dependencies": { - "@expo/json-file": "^10.0.11", + "@expo/json-file": "^10.0.12", "@expo/spawn-async": "^1.7.2", "chalk": "^4.0.0", "npm-package-arg": "^11.0.0", @@ -7399,6 +7370,7 @@ "version": "0.4.8", "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", + "dev": true, "license": "MIT", "dependencies": { "@xmldom/xmldom": "^0.8.8", @@ -7407,16 +7379,16 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.3.tgz", - "integrity": "sha512-LP6zu9sPSkm0h+HStCB3PBu2htrKX0YB/2fUQ/NDg/UHeHi0dFjPhVVih5f3GpIZV11SpyOm4AKegYKJWGJvkw==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.4.tgz", + "integrity": "sha512-1bp/S+w7KRRjegN6u0/jn2cHwzcAP1QbnA8DxW3ts1EdTIZee1X8bmR57JzRzGLuU3pTPV+gLYdUoycTiYtPHg==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.3", - "@expo/config-plugins": "~55.0.3", - "@expo/config-types": "^55.0.3", - "@expo/image-utils": "^0.8.11", - "@expo/json-file": "^10.0.11", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/image-utils": "^0.8.12", + "@expo/json-file": "^10.0.12", "@react-native/normalize-colors": "0.83.1", "debug": "^4.3.1", "resolve-from": "^5.0.0", @@ -7427,25 +7399,16 @@ "expo": "*" } }, - "node_modules/@expo/prebuild-config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/@expo/prebuild-config/node_modules/@expo/config": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", - "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", + "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~55.0.3", - "@expo/config-types": "^55.0.3", - "@expo/json-file": "^10.0.11", + "@babel/code-frame": "^7.20.0", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "^10.0.12", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", @@ -7458,13 +7421,13 @@ } }, "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", - "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", + "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", "license": "MIT", "dependencies": { - "@expo/config-types": "^55.0.3", - "@expo/json-file": "~10.0.11", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "~10.0.12", "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", @@ -7479,9 +7442,9 @@ } }, "node_modules/@expo/prebuild-config/node_modules/@expo/config-types": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", - "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", + "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", "license": "MIT" }, "node_modules/@expo/prebuild-config/node_modules/@expo/plist": { @@ -7551,12 +7514,12 @@ "license": "MIT" }, "node_modules/@expo/prebuild-config/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", + "minimatch": "^10.1.2", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -7586,12 +7549,12 @@ } }, "node_modules/@expo/prebuild-config/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { "node": "20 || >=22" @@ -7617,9 +7580,9 @@ } }, "node_modules/@expo/prebuild-config/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -7686,29 +7649,19 @@ "license": "MIT" }, "node_modules/@expo/xcpretty": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.2.tgz", - "integrity": "sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.4.0.tgz", + "integrity": "sha512-o2qDlTqJ606h4xR36H2zWTywmZ3v3842K6TU8Ik2n1mfW0S580VHlt3eItVYdLYz+klaPp7CXqanja8eASZjRw==", "license": "BSD-3-Clause", "dependencies": { - "@babel/code-frame": "7.10.4", + "@babel/code-frame": "^7.20.0", "chalk": "^4.1.0", - "find-up": "^5.0.0", "js-yaml": "^4.1.0" }, "bin": { "excpretty": "build/cli.js" } }, - "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/@expo/xcpretty/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -9330,9 +9283,9 @@ } }, "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", "license": "MIT", "dependencies": { "@isaacs/balanced-match": "^4.0.1" @@ -9425,6 +9378,7 @@ }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", + "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.4" @@ -9523,7 +9477,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -9541,7 +9495,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9557,7 +9511,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -9574,7 +9528,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -9587,14 +9541,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9604,7 +9558,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9617,7 +9571,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -9665,7 +9619,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9681,7 +9635,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -9698,7 +9652,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -9711,14 +9665,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9728,7 +9682,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9762,7 +9716,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -9774,7 +9728,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -9800,7 +9754,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -9816,7 +9770,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -9860,7 +9814,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9876,7 +9830,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -9893,7 +9847,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -9906,7 +9860,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/glob": { @@ -9914,7 +9868,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -9935,7 +9889,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -9945,7 +9899,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -9962,7 +9916,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -9978,7 +9932,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9994,7 +9948,7 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -10007,7 +9961,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -10030,7 +9984,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -10045,7 +9999,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -10061,7 +10015,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -11037,517 +10991,6 @@ "react-native": "*" } }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", - "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", - "license": "MIT", - "peer": true - }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", - "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", - "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.11", - "@radix-ui/react-focus-guards": "1.1.3", - "@radix-ui/react-focus-scope": "1.1.7", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-portal": "1.1.9", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-slot": "1.2.3", - "@radix-ui/react-use-controllable-state": "1.2.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", - "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", - "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-escape-keydown": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", - "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", - "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", - "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", - "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", - "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-slot": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", - "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-collection": "1.1.7", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz", - "integrity": "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", - "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/primitive": "1.1.3", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.5", - "@radix-ui/react-primitive": "2.1.3", - "@radix-ui/react-roving-focus": "1.1.11", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", - "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", - "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", - "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@react-native-camera-roll/camera-roll": { "version": "7.4.0", "license": "MIT", @@ -16019,7 +15462,7 @@ }, "node_modules/@testing-library/react-native": { "version": "13.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2", @@ -16044,7 +15487,7 @@ }, "node_modules/@testing-library/react-native/node_modules/ansi-styles": { "version": "4.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -16058,7 +15501,7 @@ }, "node_modules/@testing-library/react-native/node_modules/chalk": { "version": "4.1.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -16073,7 +15516,7 @@ }, "node_modules/@testing-library/react-native/node_modules/color-convert": { "version": "2.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -16084,12 +15527,12 @@ }, "node_modules/@testing-library/react-native/node_modules/color-name": { "version": "1.1.4", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@testing-library/react-native/node_modules/has-flag": { "version": "4.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -16097,7 +15540,7 @@ }, "node_modules/@testing-library/react-native/node_modules/supports-color": { "version": "7.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -17388,29 +16831,6 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, - "node_modules/@urql/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.2.0.tgz", - "integrity": "sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==", - "license": "MIT", - "dependencies": { - "@0no-co/graphql.web": "^1.0.13", - "wonka": "^6.3.2" - } - }, - "node_modules/@urql/exchange-retry": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.2.tgz", - "integrity": "sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==", - "license": "MIT", - "dependencies": { - "@urql/core": "^5.1.2", - "wonka": "^6.3.2" - }, - "peerDependencies": { - "@urql/core": "^5.0.0" - } - }, "node_modules/@vercel/ncc": { "version": "0.38.1", "dev": true, @@ -17988,6 +17408,7 @@ }, "node_modules/ansi-styles": { "version": "3.2.1", + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -18045,19 +17466,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/aria-hidden": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", - "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", @@ -18801,9 +18209,9 @@ } }, "node_modules/babel-preset-expo": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.2.tgz", - "integrity": "sha512-fkjwB1Pg9gOqzaQl5TWpo9lAh4E3h8TqWup1PB4sgb88Re/h7CjU5FSo9J75jOisXO5gwPn58BTKUpEXIVxG4g==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.3.tgz", + "integrity": "sha512-aad7zQVoWfk5vgNPlKQQV5EXVC2H7uOPXKXbTnU3IMd6rV98SawoL38c7LwOYln728jcOPpHi6fpMXbFnJENlA==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", @@ -19445,6 +18853,7 @@ }, "node_modules/chalk": { "version": "2.4.2", + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -19486,6 +18895,7 @@ }, "node_modules/chalk/node_modules/escape-string-regexp": { "version": "1.0.5", + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8.0" @@ -19500,7 +18910,7 @@ }, "node_modules/char-regex": { "version": "1.0.2", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -19559,6 +18969,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -19614,7 +19025,7 @@ }, "node_modules/cjs-module-lexer": { "version": "1.2.3", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/classnames": { @@ -19810,13 +19221,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT", - "peer": true - }, "node_modules/clipboard": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", @@ -19882,7 +19286,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -19907,7 +19311,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/color": { @@ -19923,6 +19327,7 @@ }, "node_modules/color-convert": { "version": "1.9.3", + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -20534,7 +19939,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -20556,7 +19961,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -20572,7 +19977,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -20589,7 +19994,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -20602,14 +20007,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -20619,7 +20024,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -21521,6 +20926,7 @@ "node_modules/deep-extend": { "version": "0.6.0", "license": "MIT", + "optional": true, "engines": { "node": ">=4.0.0" } @@ -21773,7 +21179,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -21784,13 +21190,6 @@ "dev": true, "license": "MIT" }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT", - "peer": true - }, "node_modules/diff": { "version": "4.0.2", "devOptional": true, @@ -21801,7 +21200,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -21842,9 +21241,9 @@ } }, "node_modules/dnssd-advertise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.1.tgz", - "integrity": "sha512-5lwwxSitFrESlnv0JQhmhFlBAD6I97ghwo/xfNio1SajbZgsqq3OQY4kELcJiK/j38fgJFbeIDotAjSGcI85eg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", + "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", "license": "MIT" }, "node_modules/doctrine": { @@ -22036,7 +21435,7 @@ }, "node_modules/emittery": { "version": "0.13.1", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -22539,9 +21938,9 @@ }, "node_modules/eslint-config-airbnb-typescript/node_modules/eslint-config-airbnb-base": { "name": "eslint-config-expensify", - "version": "2.0.89", - "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.89.tgz", - "integrity": "sha512-fI57deNANpTwvq8LMKet7M/D1zGAnzzmsOsQ9m55Psun6MRK9lj1hhFZhV0Q1GGfC8la6adAoGJ7aQz96aWShg==", + "version": "2.0.91", + "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.91.tgz", + "integrity": "sha512-sdVa7o7Cl9JIV2UiENQTue9nlt8sc45B7SyiKdtDizajY7tMK402PEa9ngPIkRt/0xzKOFC+jtPy8pMXg6OSeg==", "dev": true, "license": "ISC", "dependencies": { @@ -22558,10 +21957,24 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-rulesdir": "^0.2.2", + "globals": "^15.14.0", "lodash": "^4.17.21", "underscore": "^1.13.6" } }, + "node_modules/eslint-config-airbnb-typescript/node_modules/eslint-config-airbnb-base/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-config-airbnb-typescript/node_modules/eslint-plugin-react-hooks": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", @@ -23562,7 +22975,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -23577,7 +22990,7 @@ }, "node_modules/expect": { "version": "29.7.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -23651,34 +23064,34 @@ } }, "node_modules/expo": { - "version": "55.0.0-preview.6", - "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.6.tgz", - "integrity": "sha512-vw8UNxKZl16FS428jsnKe0txuTbj/zMpMV6CAzzaMaAVNMYxYVnh7iabvhUM4MEqocXKwtGLg45E2h1hhZzbqQ==", + "version": "55.0.0-preview.9", + "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.9.tgz", + "integrity": "sha512-/JtS2+U8Yq6wziNXIpG4tFpI4xLYtizlHrDe0biuZTY2UirtDSaCI3fBuGHQXKleUJpKArC9INEzXWLLFOPj+w==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "55.0.3", - "@expo/config": "~55.0.3", - "@expo/config-plugins": "~55.0.3", + "@expo/cli": "55.0.6", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", "@expo/devtools": "55.0.2", - "@expo/fingerprint": "0.16.2", - "@expo/local-build-cache-provider": "55.0.2", - "@expo/log-box": "55.0.2", + "@expo/fingerprint": "0.16.3", + "@expo/local-build-cache-provider": "55.0.3", + "@expo/log-box": "55.0.5", "@expo/metro": "~54.2.0", - "@expo/metro-config": "55.0.3", + "@expo/metro-config": "55.0.4", "@expo/vector-icons": "^15.0.2", "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~55.0.2", - "expo-asset": "~55.0.2", - "expo-constants": "~55.0.2", - "expo-file-system": "~55.0.2", - "expo-font": "~55.0.2", + "babel-preset-expo": "~55.0.3", + "expo-asset": "~55.0.3", + "expo-constants": "~55.0.3", + "expo-file-system": "~55.0.4", + "expo-font": "~55.0.3", "expo-keep-awake": "~55.0.2", - "expo-modules-autolinking": "55.0.2", - "expo-modules-core": "55.0.4", + "expo-modules-autolinking": "55.0.3", + "expo-modules-core": "55.0.7", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", - "whatwg-url-without-unicode": "8.0.0-3" + "whatwg-url-minimum": "^0.1.1" }, "bin": { "expo": "bin/cli", @@ -23719,25 +23132,42 @@ "react-native": "*" } }, - "node_modules/expo-asset/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "node_modules/expo-audio": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.4.tgz", + "integrity": "sha512-NFGHyj78G0iS4AsnPm4REKbQ+ms6SndJlFDAsNaydwf+8LY0xH2XGOlR0WSHql7njX4KAPT2I6sHfyPeUPAYUA==", "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" + "peerDependencies": { + "expo": "*", + "expo-asset": "*", + "react": "*", + "react-native": "*" } }, - "node_modules/expo-asset/node_modules/@expo/config": { + "node_modules/expo-constants": { "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", - "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.3.tgz", + "integrity": "sha512-sIOWYnipMpgwz4X5lh7qBYW8pTgyn4ElylbVcUHaXWr9MTG7qEO2fwYGun/UxMMHPtcg8KDaBcdKlsL+sIfU3g==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~55.0.3", - "@expo/config-types": "^55.0.3", - "@expo/json-file": "^10.0.11", + "@expo/config": "~55.0.4", + "@expo/env": "~2.0.11" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-constants/node_modules/@expo/config": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", + "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "^10.0.12", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", @@ -23749,14 +23179,14 @@ "sucrase": "~3.35.1" } }, - "node_modules/expo-asset/node_modules/@expo/config-plugins": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", - "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", + "node_modules/expo-constants/node_modules/@expo/config-plugins": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", + "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", "license": "MIT", "dependencies": { - "@expo/config-types": "^55.0.3", - "@expo/json-file": "~10.0.11", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "~10.0.12", "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", @@ -23770,13 +23200,13 @@ "xml2js": "0.6.0" } }, - "node_modules/expo-asset/node_modules/@expo/config-types": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", - "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "node_modules/expo-constants/node_modules/@expo/config-types": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", + "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", "license": "MIT" }, - "node_modules/expo-asset/node_modules/@expo/plist": { + "node_modules/expo-constants/node_modules/@expo/plist": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", @@ -23787,7 +23217,7 @@ "xmlbuilder": "^15.1.1" } }, - "node_modules/expo-asset/node_modules/ansi-styles": { + "node_modules/expo-constants/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -23802,7 +23232,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expo-asset/node_modules/chalk": { + "node_modules/expo-constants/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -23818,7 +23248,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/expo-asset/node_modules/color-convert": { + "node_modules/expo-constants/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -23830,33 +23260,19 @@ "node": ">=7.0.0" } }, - "node_modules/expo-asset/node_modules/color-name": { + "node_modules/expo-constants/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/expo-asset/node_modules/expo-constants": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.2.tgz", - "integrity": "sha512-tTQznRuE3od2aAnAzXc0LzrhM58WcqB5XLC3/7yeWibOoVx23f6yJQf+p1WUiovJieCxJTaKl7bJmc/BDsrvQw==", - "license": "MIT", - "dependencies": { - "@expo/config": "~55.0.3", - "@expo/env": "~2.0.11" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*" - } - }, - "node_modules/expo-asset/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "node_modules/expo-constants/node_modules/glob": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", + "minimatch": "^10.1.2", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -23867,7 +23283,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/expo-asset/node_modules/has-flag": { + "node_modules/expo-constants/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -23876,7 +23292,7 @@ "node": ">=8" } }, - "node_modules/expo-asset/node_modules/lru-cache": { + "node_modules/expo-constants/node_modules/lru-cache": { "version": "11.2.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", @@ -23885,13 +23301,13 @@ "node": "20 || >=22" } }, - "node_modules/expo-asset/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "node_modules/expo-constants/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { "node": "20 || >=22" @@ -23900,7 +23316,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/expo-asset/node_modules/path-scurry": { + "node_modules/expo-constants/node_modules/path-scurry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", @@ -23916,10 +23332,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/expo-asset/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/expo-constants/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -23928,7 +23344,7 @@ "node": ">=10" } }, - "node_modules/expo-asset/node_modules/supports-color": { + "node_modules/expo-constants/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -23940,37 +23356,10 @@ "node": ">=8" } }, - "node_modules/expo-audio": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.4.tgz", - "integrity": "sha512-NFGHyj78G0iS4AsnPm4REKbQ+ms6SndJlFDAsNaydwf+8LY0xH2XGOlR0WSHql7njX4KAPT2I6sHfyPeUPAYUA==", - "license": "MIT", - "peerDependencies": { - "expo": "*", - "expo-asset": "*", - "react": "*", - "react-native": "*" - } - }, - "node_modules/expo-constants": { - "version": "18.0.13", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", - "integrity": "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@expo/config": "~12.0.13", - "@expo/env": "~2.0.8" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*" - } - }, "node_modules/expo-file-system": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.2.tgz", - "integrity": "sha512-eFRpieCin6I+0pjODKHBoNk5q7YRc3Z/ys5VLCrQpOpAzJGAKt2mwJ5hLfdyr8KylJM9PfxIvBGPM8NBGmy2YQ==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.4.tgz", + "integrity": "sha512-RdVqk2TZS3xfA13MI3GPzlvo435IS+y+po7B8lXA/3heWGqKgADPN3TOE/kAmeaDPaKoR4W3C3/IK3vbsSWu6g==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -24039,21 +23428,6 @@ "react": "*" } }, - "node_modules/expo-linking": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.11.tgz", - "integrity": "sha512-+VSaNL5om3kOp/SSKO5qe6cFgfSIWnnQDSbA7XLs3ECkYzXRquk5unxNS3pg7eK5kNUmQ4kgLI7MhTggAEUBLA==", - "license": "MIT", - "peer": true, - "dependencies": { - "expo-constants": "~18.0.12", - "invariant": "^2.2.4" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, "node_modules/expo-location": { "version": "55.0.3", "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-55.0.3.tgz", @@ -24067,9 +23441,9 @@ } }, "node_modules/expo-modules-autolinking": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.2.tgz", - "integrity": "sha512-4GKGkvuRWQ940AVuusva6QOaF8Y9042iMOlRXk3OpVdUDoVtKrRmU0JIGkMMU8IdWfYa85ZgYrObExNcIOy8/Q==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", + "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -24184,9 +23558,9 @@ } }, "node_modules/expo-server": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.2.tgz", - "integrity": "sha512-tphdvclcniRTKdKx9DSVdpVK3Q5IaMXc5E1AZ4Twd7DlzlrcQ6lOT0PtiUuMi1tip9mSzXQzfFLqfdCnnSz4tw==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", + "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", "license": "MIT", "engines": { "node": ">=20.16.0" @@ -24226,44 +23600,32 @@ "react-native": "*" } }, - "node_modules/expo/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/expo/node_modules/@expo/cli": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.3.tgz", - "integrity": "sha512-6GZhzTK5OGAvE4GTjLoB41DUG/2r4fPG9hz2uo0ANoKUjgU2N9BhMzVw8wbxF47ekQRkTqxtPVPJy6cv/aVGVQ==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.6.tgz", + "integrity": "sha512-8FwxYr3Kqsdf+28iascenHZOf9VOEcqGk6e6jYg8YaG0C/ibIMpg/fL59cYOtOHiGNnjQAFTg3NW37qJNG656Q==", "license": "MIT", "dependencies": { - "@0no-co/graphql.web": "^1.0.8", "@expo/code-signing-certificates": "^0.0.6", - "@expo/config": "~55.0.3", - "@expo/config-plugins": "~55.0.3", + "@expo/config": "~55.0.4", + "@expo/config-plugins": "~55.0.4", "@expo/devcert": "^1.2.1", "@expo/env": "~2.0.11", - "@expo/image-utils": "^0.8.11", - "@expo/json-file": "^10.0.11", - "@expo/log-box": "55.0.2", + "@expo/image-utils": "^0.8.12", + "@expo/json-file": "^10.0.12", + "@expo/log-box": "55.0.5", "@expo/metro": "~54.2.0", - "@expo/metro-config": "~55.0.3", + "@expo/metro-config": "~55.0.4", "@expo/osascript": "^2.4.2", - "@expo/package-manager": "^1.10.2", + "@expo/package-manager": "^1.10.3", "@expo/plist": "^0.5.2", - "@expo/prebuild-config": "^55.0.3", - "@expo/router-server": "^55.0.2", + "@expo/prebuild-config": "^55.0.4", + "@expo/router-server": "^55.0.5", "@expo/schema-utils": "^55.0.2", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", - "@expo/xcpretty": "^4.3.0", + "@expo/xcpretty": "^4.4.0", "@react-native/dev-middleware": "0.83.1", - "@urql/core": "^5.0.6", - "@urql/exchange-retry": "^1.3.0", "accepts": "^1.3.8", "arg": "^5.0.2", "better-opn": "~3.0.2", @@ -24276,11 +23638,13 @@ "debug": "^4.3.4", "dnssd-advertise": "^1.1.1", "env-editor": "^0.4.1", - "expo-server": "^55.0.2", + "expo-server": "^55.0.3", + "fetch-nodeshim": "^0.4.4", "getenv": "^2.0.0", "glob": "^13.0.0", "lan-network": "^0.1.6", "minimatch": "^9.0.0", + "multitars": "^0.2.3", "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", @@ -24290,7 +23654,6 @@ "prompts": "^2.3.2", "qrcode-terminal": "0.11.0", "require-from-string": "^2.0.2", - "requireg": "^0.2.2", "resolve-from": "^5.0.0", "semver": "^7.6.0", "send": "^0.19.0", @@ -24298,9 +23661,7 @@ "source-map-support": "~0.5.21", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", - "tar": "^7.5.2", "terminal-link": "^2.1.1", - "undici": "^6.18.2", "wrap-ansi": "^7.0.0", "ws": "^8.12.1", "zod": "^3.25.76" @@ -24323,13 +23684,14 @@ } }, "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/metro-runtime": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.2.tgz", - "integrity": "sha512-wXoKXGzt2k7bzgUCYuY7M57GL6E9RKcg41cPqvbN2/NZQNSt9QgoNw+mwEXpDI/8RxfA7lVeAn4DQUWZrtkaiA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.4.tgz", + "integrity": "sha512-WdZLtcOBqIiCWpuhWgH32VwjtqLn08VUxwJrYMPPtL3c19m9PnCANMhclctRTv4OStTo1xlKqSLdwDeJdd//ag==", "license": "MIT", + "optional": true, "peer": true, "dependencies": { - "@expo/log-box": "55.0.2", + "@expo/log-box": "55.0.4", "anser": "^1.4.9", "pretty-format": "^29.7.0", "stacktrace-parser": "^0.1.10", @@ -24347,30 +23709,52 @@ } } }, + "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/metro-runtime/node_modules/@expo/log-box": { + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.4.tgz", + "integrity": "sha512-H/PQ3hmueB20QXJ89pBG5Em1bcId0tJNjd8gELFRVzhye2Zl89hy7ezVOx2nBEpfexrvkPtnGtoIsfa7l9KrYQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@expo/dom-webview": "55.0.2", + "anser": "^1.4.9", + "stacktrace-parser": "^0.1.10" + }, + "peerDependencies": { + "@expo/dom-webview": "^55.0.2", + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/router-server": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.2.tgz", - "integrity": "sha512-Om9CZNDG2olnYMLjkJ40p6RZjI9ihcavLrgS59CUmXMLHjNVb0bH4TdhS4ug86ougxGAJG3hFywFFpHfKFkysA==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.5.tgz", + "integrity": "sha512-b23SgYujpeA0qHu2lZ/H1XXuvc4TaBo92VikPUZ48YtETXMlRnccPv5Rp7N2rS7Na51wOqBEv9auPihk3d8N+A==", "license": "MIT", "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { - "@expo/metro-runtime": "^55.0.1", + "@expo/metro-runtime": "^55.0.4", "expo": "*", - "expo-constants": "^55.0.1", - "expo-font": "*", + "expo-constants": "^55.0.3", + "expo-font": "^55.0.3", "expo-router": "*", - "expo-server": "*", + "expo-server": "^55.0.3", "react": "*", "react-dom": "*", "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" }, "peerDependenciesMeta": { - "react-dom": { + "@expo/metro-runtime": { "optional": true }, - "react-native-web": { + "expo-router": { + "optional": true + }, + "react-dom": { "optional": true }, "react-server-dom-webpack": { @@ -24379,15 +23763,15 @@ } }, "node_modules/expo/node_modules/@expo/config": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.3.tgz", - "integrity": "sha512-x9E4TttdekcX4Q+NFguLukK4MLhRfGbCw/ELPhk43yTV7uviv27ghs3mtU43uEZvmuxk4AYUfXYDTJSIra8ETQ==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", + "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~55.0.3", - "@expo/config-types": "^55.0.3", - "@expo/json-file": "^10.0.11", + "@babel/code-frame": "^7.20.0", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "^10.0.12", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", @@ -24400,13 +23784,13 @@ } }, "node_modules/expo/node_modules/@expo/config-plugins": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.3.tgz", - "integrity": "sha512-66VbfzWZ0nqqwMwOMkLo8rVJ/xN1zk+bIe2rRH1tkXrIhU8NXJoBIOj+eWTsWsX8uy4XAETBrqawcOypE4Ac0Q==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", + "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", "license": "MIT", "dependencies": { - "@expo/config-types": "^55.0.3", - "@expo/json-file": "~10.0.11", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "~10.0.12", "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", @@ -24421,9 +23805,9 @@ } }, "node_modules/expo/node_modules/@expo/config-types": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.3.tgz", - "integrity": "sha512-lz9XXC32BHDgAOAcUf4DMLMSc04WDLFxKaMIDV+uAnupY1BJ8rL8WTAJcEnMlKvzT/MCRS+vv37aVkmorbZIwA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", + "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", "license": "MIT" }, "node_modules/expo/node_modules/@expo/plist": { @@ -24437,107 +23821,6 @@ "xmlbuilder": "^15.1.1" } }, - "node_modules/expo/node_modules/@react-navigation/bottom-tabs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz", - "integrity": "sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0" - }, - "peerDependencies": { - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0", - "react-native-screens": ">= 4.0.0" - } - }, - "node_modules/expo/node_modules/@react-navigation/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", - "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-navigation/routers": "^7.5.3", - "escape-string-regexp": "^4.0.0", - "fast-deep-equal": "^3.1.3", - "nanoid": "^3.3.11", - "query-string": "^7.1.3", - "react-is": "^19.1.0", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" - }, - "peerDependencies": { - "react": ">= 18.2.0" - } - }, - "node_modules/expo/node_modules/@react-navigation/elements": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", - "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", - "license": "MIT", - "peer": true, - "dependencies": { - "color": "^4.2.3", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" - }, - "peerDependencies": { - "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0" - }, - "peerDependenciesMeta": { - "@react-native-masked-view/masked-view": { - "optional": true - } - } - }, - "node_modules/expo/node_modules/@react-navigation/native": { - "version": "7.1.28", - "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", - "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-navigation/core": "^7.14.0", - "escape-string-regexp": "^4.0.0", - "fast-deep-equal": "^3.1.3", - "nanoid": "^3.3.11", - "use-latest-callback": "^0.2.4" - }, - "peerDependencies": { - "react": ">= 18.2.0", - "react-native": "*" - } - }, - "node_modules/expo/node_modules/@react-navigation/native-stack": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.11.0.tgz", - "integrity": "sha512-yNx9Wr4dfpOHpqjf2sGog4eH6KCYwTAEPlUPrKbvWlQbCRm5bglwPmaTXw9hTovX9v3HIa42yo7bXpbYfq4jzg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0", - "warn-once": "^0.1.1" - }, - "peerDependencies": { - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0", - "react-native-screens": ">= 4.0.0" - } - }, "node_modules/expo/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -24614,24 +23897,34 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/expo/node_modules/expo-constants": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.2.tgz", - "integrity": "sha512-tTQznRuE3od2aAnAzXc0LzrhM58WcqB5XLC3/7yeWibOoVx23f6yJQf+p1WUiovJieCxJTaKl7bJmc/BDsrvQw==", + "node_modules/expo/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/expo/node_modules/expo-asset": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.3.tgz", + "integrity": "sha512-24orrYwSJuMvB8BfF+fPexe+Ily2wcgtUgLvb+izuANkP83iECXTXspzRVqo8uPB2EDF3uglnO3b04XQhjUpTQ==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.3", - "@expo/env": "~2.0.11" + "@expo/image-utils": "^0.8.12", + "expo-constants": "~55.0.3" }, "peerDependencies": { "expo": "*", + "react": "*", "react-native": "*" } }, "node_modules/expo/node_modules/expo-font": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.2.tgz", - "integrity": "sha512-C7F0U4VLdEeuqcnu3KkA1HyyEIFLRpr8uTY1FAIMMKyjwDuIlAKnsLPgfWMXTEpNaaGSGDlkOPdnbD1Dpo7GCw==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", + "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" @@ -24642,115 +23935,26 @@ "react-native": "*" } }, - "node_modules/expo/node_modules/expo-router": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-6.0.22.tgz", - "integrity": "sha512-6eOwobaVZQRsSQv0IoWwVlPbJru1zbreVsuPFIWwk7HApENStU2MggrceHXJqXjGho+FKeXxUop/gqOFDzpOMg==", + "node_modules/expo/node_modules/expo-modules-core": { + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.7.tgz", + "integrity": "sha512-eoW4mfE4nXZQya1TuMbBGSvudqlSA/cg52tw7Mpmdu6WhZ2WQAmt8o/ltuHZRH19FFnoMtacClwcUgi6+z1LMg==", "license": "MIT", - "peer": true, "dependencies": { - "@expo/metro-runtime": "^6.1.2", - "@expo/schema-utils": "^0.1.8", - "@radix-ui/react-slot": "1.2.0", - "@radix-ui/react-tabs": "^1.1.12", - "@react-navigation/bottom-tabs": "^7.4.0", - "@react-navigation/native": "^7.1.8", - "@react-navigation/native-stack": "^7.3.16", - "client-only": "^0.0.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "expo-server": "^1.0.5", - "fast-deep-equal": "^3.1.3", - "invariant": "^2.2.4", - "nanoid": "^3.3.8", - "query-string": "^7.1.3", - "react-fast-compare": "^3.2.2", - "react-native-is-edge-to-edge": "^1.1.6", - "semver": "~7.6.3", - "server-only": "^0.0.1", - "sf-symbols-typescript": "^2.1.0", - "shallowequal": "^1.1.0", - "use-latest-callback": "^0.2.1", - "vaul": "^1.1.2" + "invariant": "^2.2.4" }, "peerDependencies": { - "@expo/metro-runtime": "^6.1.2", - "@react-navigation/drawer": "^7.5.0", - "@testing-library/react-native": ">= 12.0.0", - "expo": "*", - "expo-constants": "^18.0.13", - "expo-linking": "^8.0.11", "react": "*", - "react-dom": "*", - "react-native": "*", - "react-native-gesture-handler": "*", - "react-native-reanimated": "*", - "react-native-safe-area-context": ">= 5.4.0", - "react-native-screens": "*", - "react-native-web": "*", - "react-server-dom-webpack": "~19.0.3 || ~19.1.4 || ~19.2.3" - }, - "peerDependenciesMeta": { - "@react-navigation/drawer": { - "optional": true - }, - "@testing-library/react-native": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-native-gesture-handler": { - "optional": true - }, - "react-native-reanimated": { - "optional": true - }, - "react-native-web": { - "optional": true - }, - "react-server-dom-webpack": { - "optional": true - } - } - }, - "node_modules/expo/node_modules/expo-router/node_modules/@expo/schema-utils": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.8.tgz", - "integrity": "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==", - "license": "MIT", - "peer": true - }, - "node_modules/expo/node_modules/expo-router/node_modules/expo-server": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-1.0.5.tgz", - "integrity": "sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=20.16.0" - } - }, - "node_modules/expo/node_modules/expo-router/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "react-native": "*" } }, "node_modules/expo/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", + "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", + "minimatch": "^10.1.2", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -24762,12 +23966,12 @@ } }, "node_modules/expo/node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { "node": "20 || >=22" @@ -24838,15 +24042,6 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, - "node_modules/expo/node_modules/log-symbols/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/expo/node_modules/log-symbols/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -24971,15 +24166,6 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, - "node_modules/expo/node_modules/ora/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/expo/node_modules/ora/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -25029,13 +24215,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/expo/node_modules/react-is": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", - "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", - "license": "MIT", - "peer": true - }, "node_modules/expo/node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -25050,9 +24229,9 @@ } }, "node_modules/expo/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -25341,6 +24520,12 @@ "version": "1.0.2", "license": "MIT" }, + "node_modules/fetch-nodeshim": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", + "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", + "license": "MIT" + }, "node_modules/fflate": { "version": "0.8.2", "license": "MIT" @@ -25459,6 +24644,7 @@ }, "node_modules/find-up": { "version": "5.0.0", + "devOptional": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -25486,6 +24672,7 @@ }, "node_modules/find-up/node_modules/path-exists": { "version": "4.0.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -26244,16 +25431,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/get-package-type": { "version": "0.1.0", "license": "MIT", @@ -26434,18 +25611,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", - "license": "MIT", - "dependencies": { - "ini": "^1.3.4" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/globals": { "version": "11.12.0", "license": "MIT", @@ -26633,6 +25798,7 @@ }, "node_modules/has-flag": { "version": "3.0.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -26807,7 +25973,7 @@ }, "node_modules/html-escaper": { "version": "2.0.2", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/html-minifier-terser": { @@ -27265,7 +26431,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -27301,7 +26467,7 @@ }, "node_modules/indent-string": { "version": "4.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -27321,7 +26487,8 @@ }, "node_modules/ini": { "version": "1.3.8", - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/inline-style-prefixer": { "version": "7.0.1", @@ -27615,7 +26782,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -27998,7 +27165,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -28013,7 +27180,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -28023,7 +27190,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -28039,7 +27206,7 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -28052,7 +27219,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28065,7 +27232,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -28080,7 +27247,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -28090,7 +27257,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -28152,7 +27319,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -28179,7 +27346,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -28194,7 +27361,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -28226,7 +27393,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28242,7 +27409,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28259,7 +27426,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28272,14 +27439,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/dedent": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", - "devOptional": true, + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -28294,7 +27461,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -28304,7 +27471,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28317,7 +27484,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -28351,7 +27518,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28367,7 +27534,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28384,7 +27551,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28397,14 +27564,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -28414,7 +27581,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28427,7 +27594,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -28473,7 +27640,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28489,7 +27656,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28506,7 +27673,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28519,7 +27686,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/glob": { @@ -28527,7 +27694,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -28548,7 +27715,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -28558,7 +27725,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28569,7 +27736,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -28583,7 +27750,7 @@ }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28597,7 +27764,7 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28612,7 +27779,7 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28623,12 +27790,12 @@ }, "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -28636,7 +27803,7 @@ }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -28649,7 +27816,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -28662,7 +27829,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -28679,7 +27846,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -28695,7 +27862,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -28712,7 +27879,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -28725,14 +27892,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -28742,7 +27909,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -29250,7 +28417,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -29262,7 +28429,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -29276,7 +28443,7 @@ }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -29290,7 +28457,7 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -29305,7 +28472,7 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -29316,12 +28483,12 @@ }, "node_modules/jest-matcher-utils/node_modules/color-name": { "version": "1.1.4", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -29329,7 +28496,7 @@ }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -29430,7 +28597,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -29455,7 +28622,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -29476,7 +28643,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -29490,7 +28657,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -29506,7 +28673,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -29523,7 +28690,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -29536,14 +28703,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -29553,7 +28720,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -29566,7 +28733,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -29599,7 +28766,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -29615,7 +28782,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -29632,7 +28799,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -29645,14 +28812,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -29662,7 +28829,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -29678,7 +28845,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -29694,7 +28861,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -29704,7 +28871,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -29715,7 +28882,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -29728,7 +28895,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -29762,7 +28929,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -29778,7 +28945,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -29795,7 +28962,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -29808,7 +28975,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/glob": { @@ -29816,7 +28983,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -29837,7 +29004,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -29847,7 +29014,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -29858,7 +29025,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -29888,7 +29055,7 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -29902,7 +29069,7 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -29917,7 +29084,7 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -29928,12 +29095,12 @@ }, "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -29941,7 +29108,7 @@ }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.6.3", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -29952,7 +29119,7 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -30191,7 +29358,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -30211,7 +29378,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -30227,7 +29394,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -30244,7 +29411,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -30257,14 +29424,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -30274,7 +29441,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -31051,6 +30218,7 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "devOptional": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -32080,7 +31248,7 @@ }, "node_modules/min-indent": { "version": "1.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -32162,6 +31330,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.1.2" @@ -32209,6 +31378,12 @@ "multicast-dns": "cli.js" } }, + "node_modules/multitars": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/multitars/-/multitars-0.2.4.tgz", + "integrity": "sha512-XgLbg1HHchFauMCQPRwMj6MSyDd5koPlTA1hM3rUFkeXzGpjU/I9fP3to7yrObE9jcN8ChIOQGrM0tV0kUZaKg==", + "license": "MIT" + }, "node_modules/murmurhash-js": { "version": "1.0.0", "license": "MIT" @@ -32268,7 +31443,7 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/negotiator": { @@ -32282,12 +31457,6 @@ "version": "2.6.2", "license": "MIT" }, - "node_modules/nested-error-stacks": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", - "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", - "license": "MIT" - }, "node_modules/nitrogen": { "version": "0.29.4", "resolved": "https://registry.npmjs.org/nitrogen/-/nitrogen-0.29.4.tgz", @@ -32903,6 +32072,7 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "devOptional": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -32916,6 +32086,7 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "devOptional": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -33395,7 +32566,7 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -33406,7 +32577,7 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -33418,7 +32589,7 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -33429,7 +32600,7 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -33443,7 +32614,7 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -33454,7 +32625,7 @@ }, "node_modules/pkg-dir/node_modules/path-exists": { "version": "4.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -33937,7 +33108,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "individual", @@ -34118,6 +33289,7 @@ "node_modules/rc": { "version": "1.2.8", "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -34131,6 +33303,7 @@ "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } @@ -35502,83 +34675,11 @@ "node": ">=0.10.0" } }, - "node_modules/react-remove-scroll": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", - "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.3", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "react-style-singleton": "^2.2.2", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-style-singleton": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "get-nonce": "^1.0.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/react-test-renderer": { "version": "19.2.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "react-is": "^19.2.0", @@ -35592,7 +34693,7 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.3.tgz", "integrity": "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/react-web-config": { @@ -35727,7 +34828,7 @@ }, "node_modules/redent": { "version": "3.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "indent-string": "^4.0.0", @@ -35946,28 +35047,6 @@ "node": ">=0.10.0" } }, - "node_modules/requireg": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", - "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", - "dependencies": { - "nested-error-stacks": "~2.0.1", - "rc": "~1.2.7", - "resolve": "~1.7.1" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/requireg/node_modules/resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.5" - } - }, "node_modules/requires-port": { "version": "1.0.0", "dev": true, @@ -35995,7 +35074,7 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -36011,18 +35090,6 @@ "node": ">=8" } }, - "node_modules/resolve-global": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", - "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", - "license": "MIT", - "dependencies": { - "global-dirs": "^0.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -36048,7 +35115,7 @@ }, "node_modules/resolve.exports": { "version": "2.0.3", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -36536,6 +35603,7 @@ }, "node_modules/server-only": { "version": "0.0.1", + "dev": true, "license": "MIT" }, "node_modules/set-function-length": { @@ -36628,16 +35696,6 @@ "version": "1.2.0", "license": "ISC" }, - "node_modules/sf-symbols-typescript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", - "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/sha.js": { "version": "2.4.11", "license": "(MIT AND BSD-3-Clause)", @@ -36660,13 +35718,6 @@ "node": ">=8" } }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "license": "MIT", - "peer": true - }, "node_modules/sharp": { "version": "0.33.5", "hasInstallScript": true, @@ -37384,7 +36435,7 @@ }, "node_modules/string-length": { "version": "4.0.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "char-regex": "^1.0.2", @@ -37579,7 +36630,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -37595,7 +36646,7 @@ }, "node_modules/strip-indent": { "version": "3.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "min-indent": "^1.0.0" @@ -37606,7 +36657,7 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -37706,6 +36757,7 @@ }, "node_modules/supports-color": { "version": "5.5.0", + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -37840,6 +36892,7 @@ "version": "7.5.6", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.6.tgz", "integrity": "sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -37900,6 +36953,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -38787,15 +37841,6 @@ "version": "1.13.6", "license": "MIT" }, - "node_modules/undici": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", - "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, "node_modules/undici-types": { "version": "6.21.0", "license": "MIT" @@ -38977,28 +38022,6 @@ "extraneous": true, "license": "MIT" }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/use-latest-callback": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", @@ -39008,29 +38031,6 @@ "react": ">=16.8" } }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/use-sync-external-store": { "version": "1.5.0", "license": "MIT", @@ -39082,7 +38082,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -39113,20 +38113,6 @@ "node": ">= 0.8" } }, - "node_modules/vaul": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", - "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/react-dialog": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" - } - }, "node_modules/victory-native": { "version": "41.20.2", "resolved": "https://registry.npmjs.org/victory-native/-/victory-native-41.20.2.tgz", @@ -39728,6 +38714,12 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/whatwg-url-minimum": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/whatwg-url-minimum/-/whatwg-url-minimum-0.1.1.tgz", + "integrity": "sha512-u2FNVjFVFZhdjb502KzXy1gKn1mEisQRJssmSJT8CPhZdZa0AP6VCbWlXERKyGu0l09t0k50FiDiralpGhBxgA==", + "license": "MIT" + }, "node_modules/whatwg-url-without-unicode": { "version": "8.0.0-3", "license": "MIT", @@ -39863,12 +38855,6 @@ "node": ">=0.8" } }, - "node_modules/wonka": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", - "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", - "license": "MIT" - }, "node_modules/word": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", @@ -40211,6 +39197,7 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" diff --git a/package.json b/package.json index 4f05b8be3ef78..e7d2b2a2122d1 100644 --- a/package.json +++ b/package.json @@ -134,18 +134,18 @@ "dom-serializer": "^0.2.2", "domhandler": "^5.0.3", "expensify-common": "2.0.171", - "expo": "55.0.0-preview.6", + "expo": "55.0.0-preview.9", "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", - "expo-modules-core": "55.0.4", + "expo-modules-core": "^55.0.4", "expo-secure-store": "~14.2.4", - "expo-video": "55.0.3", "expo-store-review": "~9.0.8", "expo-task-manager": "55.0.2", + "expo-video": "55.0.3", "fast-equals": "^5.2.2", "focus-trap-react": "^11.0.3", "group-ib-fp": "file:modules/group-ib-fp", @@ -254,7 +254,7 @@ "@react-native-community/cli-platform-ios": "20.0.0", "@react-native/babel-preset": "0.83.1", "@react-native/metro-config": "0.83.1", - "@react-navigation/core": "7.10.0", + "@react-navigation/core": "7.10.0", "@react-navigation/devtools": "^6.0.10", "@rock-js/platform-android": "0.12.6", "@rock-js/platform-ios": "0.12.6", @@ -405,27 +405,27 @@ "eslint": "^9.36.0" }, "node-abi": "^3.78.0", - "@fullstory/react-native": { - "expo": "55.0.0-preview.6" - }, - "@react-native-firebase/app": { - "expo": "55.0.0-preview.6" - }, - "@react-native-firebase/crashlytics": { - "expo": "55.0.0-preview.6" - }, - "@react-native-firebase/perf": { - "expo": "55.0.0-preview.6" - }, - "@react-native-google-signin/google-signin": { - "expo": "55.0.0-preview.6" - }, - "@rnmapbox/maps": { - "expo": "55.0.0-preview.6" - }, - "@sentry/react-native": { - "expo": "55.0.0-preview.6" - } + "@fullstory/react-native": { + "expo": "55.0.0-preview.9" + }, + "@react-native-firebase/app": { + "expo": "55.0.0-preview.9" + }, + "@react-native-firebase/crashlytics": { + "expo": "55.0.0-preview.9" + }, + "@react-native-firebase/perf": { + "expo": "55.0.0-preview.9" + }, + "@react-native-google-signin/google-signin": { + "expo": "55.0.0-preview.9" + }, + "@rnmapbox/maps": { + "expo": "55.0.0-preview.9" + }, + "@sentry/react-native": { + "expo": "55.0.0-preview.9" + } }, "expo": { "autolinking": { From c8d2797b93d31b7dcbd1a04b0cb85d50fe85f3f1 Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 12 Feb 2026 16:45:33 +0100 Subject: [PATCH 18/56] chore: remove outdated patch --- ...t-native-image-size+1.1.3+001+support-RN-83.patch | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch diff --git a/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch b/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch deleted file mode 100644 index 8ee3af342666e..0000000000000 --- a/patches/react-native-image-size/react-native-image-size+1.1.3+001+support-RN-83.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/node_modules/react-native-image-size/android/build.gradle b/node_modules/react-native-image-size/android/build.gradle -index cc2d50a..bb21239 100644 ---- a/node_modules/react-native-image-size/android/build.gradle -+++ b/node_modules/react-native-image-size/android/build.gradle -@@ -1,7 +1,6 @@ - buildscript { - repositories { - mavenCentral() -- jcenter() - } - - dependencies { From 91262cb4144e15d11c90ad7cc119d5500f697d8b Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 12 Feb 2026 17:08:02 +0100 Subject: [PATCH 19/56] fix: iOS crash when switching experiences --- modules/group-ib-fp/ios/FPEventEmitter.swift | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/modules/group-ib-fp/ios/FPEventEmitter.swift b/modules/group-ib-fp/ios/FPEventEmitter.swift index 779da3f195a42..588a985275395 100644 --- a/modules/group-ib-fp/ios/FPEventEmitter.swift +++ b/modules/group-ib-fp/ios/FPEventEmitter.swift @@ -4,6 +4,7 @@ import GIBMobileSdk @objc(FPEventEmitter) class FPEventEmitter: RCTEventEmitter, GIBSessionListener { static var shared: FPEventEmitter? + private var hasListeners = false override init() { super.init() @@ -19,15 +20,25 @@ class FPEventEmitter: RCTEventEmitter, GIBSessionListener { return [Constants.onSessionOpened, Constants.onReceiveSession] } + override func startObserving() { + hasListeners = true + } + + override func stopObserving() { + hasListeners = false + } + func sessionDidOpen(withID sessionId: String) { DispatchQueue.main.async { [weak self] in - self?.sendEvent(withName: Constants.onSessionOpened, body: sessionId) + guard let self, self.hasListeners else { return } + self.sendEvent(withName: Constants.onSessionOpened, body: sessionId) } } - + func sessionDidGetId(_ sessionId: String) { DispatchQueue.main.async { [weak self] in - self?.sendEvent(withName: Constants.onReceiveSession, body: sessionId) + guard let self, self.hasListeners else { return } + self.sendEvent(withName: Constants.onReceiveSession, body: sessionId) } } } From 107729deaca4ef88198a61a121bf1f48106c21ad Mon Sep 17 00:00:00 2001 From: war-in Date: Fri, 13 Feb 2026 14:19:28 +0100 Subject: [PATCH 20/56] fix: add patches to details --- patches/@react-native/virtualized-lists/details.md | 2 +- patches/expo-asset/details.md | 2 +- patches/expo-image-manipulator/details.md | 4 ++-- patches/expo-modules-core/details.md | 2 +- patches/lottie-react-native/details.md | 12 ++++++++++++ patches/react-navigation/details.md | 4 ++-- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/patches/@react-native/virtualized-lists/details.md b/patches/@react-native/virtualized-lists/details.md index 241d8a2b78af5..60666219e7983 100644 --- a/patches/@react-native/virtualized-lists/details.md +++ b/patches/@react-native/virtualized-lists/details.md @@ -1,7 +1,7 @@ # `@react-native/virtualized-lists` patches -### [@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch](@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch) +### [@react-native+virtualized-lists+0.83.1+001+osr-improvement.patch](@react-native+virtualized-lists+0.83.1+001+osr-improvement.patch) - Reason: diff --git a/patches/expo-asset/details.md b/patches/expo-asset/details.md index e509f3733e4cd..f1ed3715d7bba 100644 --- a/patches/expo-asset/details.md +++ b/patches/expo-asset/details.md @@ -1,6 +1,6 @@ # `expo-asset` patches -### [expo-asset+12.0.8+001+make-storybook-work.patch](expo-asset+12.0.8+001+make-storybook-work.patch) +### [expo-asset+55.0.2+001+make-storybook-work.patch](expo-asset+55.0.2+001+make-storybook-work.patch) - Reason: diff --git a/patches/expo-image-manipulator/details.md b/patches/expo-image-manipulator/details.md index 7b59e1581d5d1..df46565eefdc9 100644 --- a/patches/expo-image-manipulator/details.md +++ b/patches/expo-image-manipulator/details.md @@ -1,6 +1,6 @@ # `expo-image-manipulator` patches -### [expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch](expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch) +### [expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch](expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch) - Reason: @@ -10,4 +10,4 @@ - Upstream PR/issue: 🛑, there's no upstream PR/issue found. There's a related comment from App PR https://github.com/Expensify/App/pull/45448#issuecomment-2263252274 - E/App issue: https://github.com/Expensify/App/issues/44084 -- PR introducing patch: https://github.com/Expensify/App/pull/45448 \ No newline at end of file +- PR introducing patch: https://github.com/Expensify/App/pull/45448 diff --git a/patches/expo-modules-core/details.md b/patches/expo-modules-core/details.md index 053a1f43dc122..797db6b6c17cf 100644 --- a/patches/expo-modules-core/details.md +++ b/patches/expo-modules-core/details.md @@ -1,6 +1,6 @@ # `expo-modules-core` patches -### [expo-modules-core+3.0.18+001+disableViewRecycling.patch](expo-modules-core+3.0.18+001+disableViewRecycling.patch) +### [expo-modules-core+55.0.4+001+disableViewRecycling.patch](expo-modules-core+55.0.4+001+disableViewRecycling.patch) - Reason: Opt-out from RN Fabric view recycling - Upstream PR/issue: https://expo.canny.io/feature-requests/p/opt-out-of-react-native-fabric-view-recycling-for-expofabricviewobjc diff --git a/patches/lottie-react-native/details.md b/patches/lottie-react-native/details.md index 6fdb1dbce8504..dac52c20c3e59 100644 --- a/patches/lottie-react-native/details.md +++ b/patches/lottie-react-native/details.md @@ -47,3 +47,15 @@ - Upstream PR/issue: https://github.com/lottie-react-native/lottie-react-native/pull/1351 - E/App issue: - PR introducing patch: https://github.com/Expensify/App/pull/69535 + +### [lottie-react-native+6.5.1+005+support-RN-83.patch](lottie-react-native+6.5.1+005+support-RN-83.patch) + +- Reason: + + ``` + React Native v0.83.0 support + ``` + +- Upstream PR/issue: https://github.com/lottie-react-native/lottie-react-native/pull/1374 +- E/App issue: +- PR introducing patch: https://github.com/Expensify/App/pull/79962 diff --git a/patches/react-navigation/details.md b/patches/react-navigation/details.md index 353fac20ab40b..95d9fc0fcf6ed 100644 --- a/patches/react-navigation/details.md +++ b/patches/react-navigation/details.md @@ -6,7 +6,7 @@ #### [@react-navigation+material-top-tabs+7.2.13+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+material-top-tabs+7.2.13+001+fix-failing-jest-by-disabling-esmodule.patch) #### [@react-navigation+native-stack+7.3.14+002+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+native-stack+7.3.14+002+fix-failing-jest-by-disabling-esmodule.patch) #### [@react-navigation+native+7.1.10+002+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+native+7.1.10+002+fix-failing-jest-by-disabling-esmodule.patch) -#### [@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch) #### [@react-navigation+stack+7.3.3+004+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+stack+7.3.3+004+fix-failing-jest-by-disabling-esmodule.patch) - Reason: Necessary to run Jest with the obligatory `--experimental-vm-modules` flag. Currently we transpile all the code to `commonjs`, but Jest looks up to individual `package.jsons` to see whether the package is `commonjs` or `ESModule`. That causes a conflict, which can be solved by removing `{"type":"module"}` from `lib/module/package.json`. This might be an issue with Jest, but it would require much more investigation. More: https://github.com/react-navigation/react-navigation/issues/12637 @@ -75,4 +75,4 @@ - Upstream PR/issue: N/A - E/App issue: [#65709](https://github.com/Expensify/App/issues/65211) - PR Introducing Patch: [#65836](https://github.com/Expensify/App/pull/66890) -- PR Updating Patch: N/A \ No newline at end of file +- PR Updating Patch: N/A From c22f69606a93b9aaabaa884502466e33a5bc3474 Mon Sep 17 00:00:00 2001 From: war-in Date: Fri, 13 Feb 2026 14:23:59 +0100 Subject: [PATCH 21/56] chore: update podfile --- ios/Podfile.lock | 55 +++++++++++++++++------------------------------- 1 file changed, 19 insertions(+), 36 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 79b7621e8afc5..ae9ca6434d809 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -29,7 +29,7 @@ PODS: - AppLogs (0.1.0) - boost (1.84.0) - DoubleConversion (1.1.6) - - EXConstants (55.0.2): + - EXConstants (55.0.3): - ExpoModulesCore - expensify-react-native-background-task (0.0.0): - boost @@ -88,7 +88,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - Expo (55.0.0-preview.6): + - Expo (55.0.0-preview.9): - boost - DoubleConversion - ExpoModulesCore @@ -121,9 +121,9 @@ PODS: - Yoga - ExpoAsset (55.0.2): - ExpoModulesCore - - ExpoDomWebView (55.0.2): + - ExpoAudio (55.0.4): - ExpoModulesCore - - ExpoAudio (1.1.1): + - ExpoDomWebView (55.0.2): - ExpoModulesCore - ExpoFont (14.0.8): - ExpoModulesCore @@ -139,7 +139,7 @@ PODS: - SDWebImageWebPCoder - ExpoLocation (55.0.3): - ExpoModulesCore - - ExpoLogBox (55.0.2): + - ExpoLogBox (55.0.5): - React-Core - ExpoModulesCore (55.0.4): - boost @@ -185,7 +185,6 @@ PODS: - UMAppLoader - ExpoVideo (55.0.3): - ExpoModulesCore - - UMAppLoader - fast_float (8.0.0) - FBLazyVector (0.83.1) - Firebase/Analytics (11.13.0): @@ -518,7 +517,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -544,7 +542,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -569,7 +566,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -596,7 +592,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -622,7 +617,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -648,7 +642,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -674,7 +667,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -700,7 +692,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -726,7 +717,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -752,7 +742,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -778,7 +767,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -804,7 +792,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -830,7 +817,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -856,7 +842,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -4320,14 +4305,13 @@ DEPENDENCIES: - AppLogs (from `../node_modules/react-native-app-logs/AppLogsPod`) - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - - EXConstants (from `../node_modules/expo/node_modules/expo-constants/ios`) - - EXImageLoader (from `../node_modules/expo-image-loader/ios`) + - EXConstants (from `../node_modules/expo-constants/ios`) - "expensify-react-native-background-task (from `../node_modules/@expensify/react-native-background-task`)" - "ExpensifyNitroUtils (from `../node_modules/@expensify/nitro-utils`)" - Expo (from `../node_modules/expo`) - ExpoAsset (from `../node_modules/expo-asset/ios`) - - "ExpoDomWebView (from `../node_modules/@expo/dom-webview/ios`)" - ExpoAudio (from `../node_modules/expo-audio/ios`) + - "ExpoDomWebView (from `../node_modules/@expo/dom-webview/ios`)" - ExpoFont (from `../node_modules/expo-font/ios`) - ExpoImage (from `../node_modules/expo-image/ios`) - ExpoImageManipulator (from `../node_modules/expo-image-manipulator/ios`) @@ -4530,7 +4514,7 @@ EXTERNAL SOURCES: DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" EXConstants: - :path: "../node_modules/expo/node_modules/expo-constants/ios" + :path: "../node_modules/expo-constants/ios" expensify-react-native-background-task: :path: "../node_modules/@expensify/react-native-background-task" ExpensifyNitroUtils: @@ -4539,10 +4523,10 @@ EXTERNAL SOURCES: :path: "../node_modules/expo" ExpoAsset: :path: "../node_modules/expo-asset/ios" - ExpoDomWebView: - :path: "../node_modules/@expo/dom-webview/ios" ExpoAudio: :path: "../node_modules/expo-audio/ios" + ExpoDomWebView: + :path: "../node_modules/@expo/dom-webview/ios" ExpoFont: :path: "../node_modules/expo-font/ios" ExpoImage: @@ -4837,21 +4821,20 @@ SPEC CHECKSUMS: AirshipServiceExtension: 50d11b2f62c4a490d4e81a1c36f70e2ecb70a27e AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0 - boost: 659a89341ea4ab3df8259733813b52f26d8be9a5 + boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - EXConstants: eca5ffaef862c3f0884b189393a3da58b0e7f8dd - EXImageLoader: 4d3d3284141f1a45006cc4d0844061c182daf7ee + EXConstants: 9b0ceaa3eb81fc2501ba4f857c1c108a5148c792 expensify-react-native-background-task: 03c640e1f5649692d058cba48c0a138f024a6dd3 ExpensifyNitroUtils: 86109fe1ab88351ed63ffe11b760d537c70019d7 - Expo: 30852d5a870bc51e23dd224fed2dbac49b50392d + Expo: 62d99b907188b1cef8c4386d7b75eec50d103119 ExpoAsset: afaa23466e93da462b918bff8d6a9fe15c646dc8 - ExpoAudio: e4cfe3a2f3317b8487460685385a9867a07fb4fb + ExpoAudio: 14c5909ec48267bfc514bb44c546fcf6fac93837 ExpoDomWebView: c0343b93dabed758db1e14ef1d1e570a1498562a ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 ExpoImage: e88f500585913969b930e13a4be47277eb7c6de8 ExpoImageManipulator: ae244131e2c3da68a030332fcbd87287fbdd8f97 ExpoLocation: fec7703a4922c4748b380723669f771376ffbd05 - ExpoLogBox: e768750bd029c3fa90a5c43a093ad089dd73a8c0 + ExpoLogBox: 10ba15b7428e0020da6743a309f53fd553165112 ExpoModulesCore: 1158e7941ddcff1677846dfdec27630e036e3904 ExpoModulesJSI: 455acaa72cb963ceb247df889c8e8cce3e6bbfe6 ExpoSecureStore: 3f1b632d6d40bcc62b4983ef9199cd079592a50a @@ -5006,18 +4989,18 @@ SPEC CHECKSUMS: RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8 RNGestureHandler: 4db26426b6098e3d87bd26d8c9a9afa3b6674123 RNGoogleSignin: 89877c73f0fbf6af2038fbdb7b73b5a25b8330cc - RNLiveMarkdown: 93e71e9e8623139368e0e9a8d9c54a2beb67e731 + RNLiveMarkdown: d9dba4a5f172a4d332680d6c4712d9773c8d884a RNLocalize: 05e367a873223683f0e268d0af9a8a8e6aed3b26 rnmapbox-maps: 392ac61c42a9ff01a51d4c2f6775d9131b5951fb RNNitroSQLite: fb251387cfbee73b100cd484a3c886fda681b3b5 RNPermissions: 518f0a0c439acc74e2b9937e0e7d29e5031ae949 RNReactNativeHapticFeedback: 5f1542065f0b24c9252bd8cf3e83bc9c548182e4 - RNReanimated: e79d7f42b76ba026e7dc5fb3e3f81991c590d3af + RNReanimated: fbcb7fd8da5b0b088401542c58fb5d266388f1cf RNScreens: 4f2aed147a2775017923789d8a0a2d377712ec2e RNSentry: 4832a7acd1fe48982149f585e1802f4d9fc7b00a RNShare: 1c1fde2c4134b9cf220ffebbd6df9c414036d382 - RNSVG: 94a1be05fab4043354bcf7104f0f9b0e2231ef05 - RNWorklets: 5dd32e6d649594b9a938cdd75673dffb2266e119 + RNSVG: 74eb75bd44d62ba9969941e80d8f9832971c681f + RNWorklets: 01efdd402d236a13651ea5ea5437ca85a44e7afa SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c From c2dadc8b6cdc47ca82e980e107f0e4984ca211bd Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 11:12:13 +0100 Subject: [PATCH 22/56] fix: typechesk --- package-lock.json | 6 ++- package.json | 2 +- ...e-web+0.19.2+001+align-with-rn-types.patch | 12 +++++ ...0.19.2+002+align-with-rn-types.patch.patch | 47 +++++++++++++++++++ .../isCurrentTargetInsideContainer.ts | 6 ++- .../VideoPlayer/BaseVideoPlayer.tsx | 3 +- .../NavigationAwareCamera/WebCamera.tsx | 2 +- 7 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-rn-types.patch create mode 100644 patches/@types/react-native-web/@types+react-native-web+0.19.2+002+align-with-rn-types.patch.patch diff --git a/package-lock.json b/package-lock.json index c1eb702a31c82..690e475769650 100644 --- a/package-lock.json +++ b/package-lock.json @@ -217,7 +217,7 @@ "@types/react-collapse": "^5.0.1", "@types/react-dom": "^19.2.0", "@types/react-is": "^18.3.0", - "@types/react-native-web": "^0.0.0", + "@types/react-native-web": "0.19.2", "@types/react-test-renderer": "^19.1.0", "@types/semver": "^7.5.4", "@types/setimmediate": "^1.0.2", @@ -16246,7 +16246,9 @@ } }, "node_modules/@types/react-native-web": { - "version": "0.0.0", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@types/react-native-web/-/react-native-web-0.19.2.tgz", + "integrity": "sha512-TAgyUi1XcYYUM5j3IwBDufPUD0NaOJiz8ftld6oJPtuIT5lc+uRZZmTcTdflpsVzCtiZ6AjSyLFZ/xD0OtCfJA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 35bd63f6227b4..56fc65ad1c8b0 100644 --- a/package.json +++ b/package.json @@ -286,7 +286,7 @@ "@types/react-collapse": "^5.0.1", "@types/react-dom": "^19.2.0", "@types/react-is": "^18.3.0", - "@types/react-native-web": "^0.0.0", + "@types/react-native-web": "0.19.2", "@types/react-test-renderer": "^19.1.0", "@types/semver": "^7.5.4", "@types/setimmediate": "^1.0.2", diff --git a/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-rn-types.patch b/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-rn-types.patch new file mode 100644 index 0000000000000..25acb2af6c1e0 --- /dev/null +++ b/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-rn-types.patch @@ -0,0 +1,12 @@ +diff --git a/node_modules/@types/react-native-web/index.d.ts b/node_modules/@types/react-native-web/index.d.ts +index dd91bb1..8d88bb5 100644 +--- a/node_modules/@types/react-native-web/index.d.ts ++++ b/node_modules/@types/react-native-web/index.d.ts +@@ -1481,6 +1481,7 @@ declare module "react-native" { + paddingRight?: CSSProperties["paddingRight"] | DimensionValue | undefined; + paddingBottom?: CSSProperties["paddingBottom"] | DimensionValue | undefined; + paddingLeft?: CSSProperties["paddingLeft"] | DimensionValue | undefined; ++ userSelect?: CSSProperties["userSelect"] | 'contain' | undefined; + } + + interface TextStyle extends WebStyle { diff --git a/patches/@types/react-native-web/@types+react-native-web+0.19.2+002+align-with-rn-types.patch.patch b/patches/@types/react-native-web/@types+react-native-web+0.19.2+002+align-with-rn-types.patch.patch new file mode 100644 index 0000000000000..beed404dc20c4 --- /dev/null +++ b/patches/@types/react-native-web/@types+react-native-web+0.19.2+002+align-with-rn-types.patch.patch @@ -0,0 +1,47 @@ +diff --git a/node_modules/@types/react-native-web/index.d.ts b/node_modules/@types/react-native-web/index.d.ts +index 8d88bb5..d97ca3c 100644 +--- a/node_modules/@types/react-native-web/index.d.ts ++++ b/node_modules/@types/react-native-web/index.d.ts +@@ -1389,14 +1389,36 @@ declare module "react-native" { + | AriaRole; + // @deprecated + accessibilityRole?: ++ | "none" + | "button" +- | "header" +- | "heading" +- | "label" ++ | "togglebutton" + | "link" +- | "listitem" +- | "none" +- | "text"; ++ | "search" ++ | "image" ++ | "keyboardkey" ++ | "text" ++ | "adjustable" ++ | "imagebutton" ++ | "header" ++ | "summary" ++ | "alert" ++ | "checkbox" ++ | "combobox" ++ | "menu" ++ | "menubar" ++ | "menuitem" ++ | "progressbar" ++ | "radio" ++ | "radiogroup" ++ | "scrollbar" ++ | "spinbutton" ++ | "switch" ++ | "tab" ++ | "tabbar" ++ | "tablist" ++ | "timer" ++ | "list" ++ | "toolbar"; + } + + /** diff --git a/src/components/AddressSearch/isCurrentTargetInsideContainer.ts b/src/components/AddressSearch/isCurrentTargetInsideContainer.ts index a50eb747b4008..03125affb30a9 100644 --- a/src/components/AddressSearch/isCurrentTargetInsideContainer.ts +++ b/src/components/AddressSearch/isCurrentTargetInsideContainer.ts @@ -1,4 +1,6 @@ -import type {IsCurrentTargetInsideContainerType} from './types'; +import type {ReadOnlyNode} from 'react-native'; +import type { IsCurrentTargetInsideContainerType } from './types'; + const isCurrentTargetInsideContainer: IsCurrentTargetInsideContainerType = (event, containerRef) => { // The related target check is required here @@ -8,7 +10,7 @@ const isCurrentTargetInsideContainer: IsCurrentTargetInsideContainerType = (even return false; } - return !!containerRef.current.contains(event.relatedTarget as Node); + return !!containerRef.current.contains(event.relatedTarget as Node & ReadOnlyNode); }; export default isCurrentTargetInsideContainer; diff --git a/src/components/VideoPlayer/BaseVideoPlayer.tsx b/src/components/VideoPlayer/BaseVideoPlayer.tsx index ad93e461345df..a5e70cd453dbc 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.tsx +++ b/src/components/VideoPlayer/BaseVideoPlayer.tsx @@ -479,8 +479,7 @@ function BaseVideoPlayer({ pointerEvents="none" > setIsInitialized(true)} + onUserMedia={() => setIsInitialized(true)} ref={ref as unknown as ForwardedRef} /> From cba89174f2fb3007a5400741ffcae16769658a08 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 13:37:08 +0100 Subject: [PATCH 23/56] fix: typecheck --- src/components/Picker/types.ts | 6 +++--- src/components/PopoverProvider/index.tsx | 4 ++-- src/components/VideoPlayer/BaseVideoPlayer.tsx | 10 ++++++++-- src/hooks/useThemePreference.ts | 2 +- src/libs/InputUtils/index.ts | 4 ++-- .../ComposerWithSuggestions.tsx | 13 +++++++++++-- .../TooltipStyleUtils/isOverlappingAtTop/index.ts | 2 +- 7 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/components/Picker/types.ts b/src/components/Picker/types.ts index 1ca1de570f7f1..5286ee233935e 100644 --- a/src/components/Picker/types.ts +++ b/src/components/Picker/types.ts @@ -1,9 +1,9 @@ -import type {ChangeEvent, Component, ForwardedRef, ReactElement} from 'react'; -import type {MeasureLayoutOnSuccessCallback, NativeMethods, StyleProp, ViewStyle} from 'react-native'; +import type {ChangeEvent, ForwardedRef, ReactElement} from 'react'; +import type {MeasureLayoutOnSuccessCallback, ReactNativeElement, StyleProp, ViewStyle} from 'react-native'; type MeasureLayoutOnFailCallback = () => void; -type RelativeToNativeComponentRef = (Component & Readonly) | number; +type RelativeToNativeComponentRef = ReactNativeElement | number; type BasePickerHandle = { focus: () => void; diff --git a/src/components/PopoverProvider/index.tsx b/src/components/PopoverProvider/index.tsx index ba5331029f70f..1d26af6b51604 100644 --- a/src/components/PopoverProvider/index.tsx +++ b/src/components/PopoverProvider/index.tsx @@ -1,7 +1,7 @@ import type {RefObject} from 'react'; import React, {createContext, useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react'; // eslint-disable-next-line no-restricted-imports -import type {Text, View} from 'react-native'; +import type {ReadOnlyNode, Text, View} from 'react-native'; import type {AnchorRef, PopoverContextProps} from './types'; type PopoverStateContextType = { @@ -31,7 +31,7 @@ const PopoverStateContext = createContext({ const PopoverActionsContext = createContext(defaultPopoverActionsContext); function elementContains(ref: RefObject | undefined, target: EventTarget | null) { - if (ref?.current && 'contains' in ref.current && ref?.current?.contains(target as Node)) { + if (ref?.current && 'contains' in ref.current && ref?.current?.contains(target as Node & ReadOnlyNode)) { return true; } return false; diff --git a/src/components/VideoPlayer/BaseVideoPlayer.tsx b/src/components/VideoPlayer/BaseVideoPlayer.tsx index a5e70cd453dbc..82f3d38cffc13 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.tsx +++ b/src/components/VideoPlayer/BaseVideoPlayer.tsx @@ -376,7 +376,10 @@ function BaseVideoPlayer({ if (!shouldUseSharedVideoElement) { if (newParentRef && 'childNodes' in newParentRef && newParentRef.childNodes[0]) { - newParentRef.childNodes[0]?.remove(); + const child = newParentRef.childNodes[0]; + if (child && 'remove' in child) { + child.remove(); + } } return; } @@ -404,7 +407,10 @@ function BaseVideoPlayer({ if (mountedVideoPlayersCurrentRef.current.filter((u) => u === url).length > 0) { return; } - newParentRef.childNodes[0]?.remove(); + const child = newParentRef.childNodes[0]; + if (child && 'remove' in child) { + child.remove(); + } }; }, [currentVideoPlayerRef, currentVideoViewRef, currentlyPlayingURL, isFullScreenRef, mountedVideoPlayersRef, originalParent, reportID, sharedElement, shouldUseSharedVideoElement, url]); diff --git a/src/hooks/useThemePreference.ts b/src/hooks/useThemePreference.ts index 69ec4b5cc0971..298c6d7742f63 100644 --- a/src/hooks/useThemePreference.ts +++ b/src/hooks/useThemePreference.ts @@ -12,7 +12,7 @@ function useThemePreference() { const theme = preferredThemeFromStorage ?? CONST.THEME.DEFAULT; // If the user chooses to use the device theme settings, set the theme preference to the system theme - return theme === CONST.THEME.SYSTEM ? (systemTheme ?? CONST.THEME.FALLBACK) : theme; + return theme === CONST.THEME.SYSTEM ? (systemTheme ?? CONST.THEME.FALLBACK) as 'light' | 'dark' : theme; }, [preferredThemeFromStorage, systemTheme]); return themePreference; diff --git a/src/libs/InputUtils/index.ts b/src/libs/InputUtils/index.ts index 55c3653082e56..b6a0a91be289e 100644 --- a/src/libs/InputUtils/index.ts +++ b/src/libs/InputUtils/index.ts @@ -5,7 +5,7 @@ const scrollToBottom: ScrollInput = (input) => { return; } // eslint-disable-next-line no-param-reassign - input.scrollTop = input.scrollHeight; + (input as HTMLInputElement).scrollTop = input.scrollHeight; }; const scrollToRight: ScrollInput = (input) => { @@ -14,7 +14,7 @@ const scrollToRight: ScrollInput = (input) => { } // Scroll to the far right // eslint-disable-next-line no-param-reassign - input.scrollLeft = input.scrollWidth; + (input as HTMLInputElement).scrollLeft = input.scrollWidth; }; const moveSelectionToEnd: MoveSelectionToEnd = (input) => { diff --git a/src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx b/src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx index 549bfef792233..0a8cd63e3e568 100644 --- a/src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx +++ b/src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx @@ -2,7 +2,16 @@ import {useIsFocused, useNavigation, useRoute} from '@react-navigation/native'; import lodashDebounce from 'lodash/debounce'; import type {Ref, RefObject} from 'react'; import React, {memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; -import type {BlurEvent, LayoutChangeEvent, MeasureInWindowOnSuccessCallback, TextInput, TextInputContentSizeChangeEvent, TextInputKeyPressEvent, TextInputScrollEvent} from 'react-native'; +import type { + BlurEvent, + LayoutChangeEvent, + MeasureInWindowOnSuccessCallback, + NativeMethods, + TextInput, + TextInputContentSizeChangeEvent, + TextInputKeyPressEvent, + TextInputScrollEvent, +} from 'react-native'; import {DeviceEventEmitter, InteractionManager, NativeModules, StyleSheet, View} from 'react-native'; import {useFocusedInputHandler} from 'react-native-keyboard-controller'; import type {OnyxEntry} from 'react-native-onyx'; @@ -308,7 +317,7 @@ function ComposerWithSuggestions({ isTransitioningToPreExistingReport.current = false; }, []); - const animatedRef = useAnimatedRef(); + const animatedRef = useAnimatedRef(); /** * Set the TextInput Ref */ diff --git a/src/styles/utils/generators/TooltipStyleUtils/isOverlappingAtTop/index.ts b/src/styles/utils/generators/TooltipStyleUtils/isOverlappingAtTop/index.ts index 081d1a0a693e0..49fd483bce00c 100644 --- a/src/styles/utils/generators/TooltipStyleUtils/isOverlappingAtTop/index.ts +++ b/src/styles/utils/generators/TooltipStyleUtils/isOverlappingAtTop/index.ts @@ -31,7 +31,7 @@ const isOverlappingAtTop: IsOverlappingAtTop = (tooltip, xOffset, yOffset, toolt const elementAtTargetCenterX = document.elementFromPoint(targetCenterX, yOffset); // Ensure it's not the already rendered element of this very tooltip, so the tooltip doesn't try to "avoid" itself - if (!elementAtTargetCenterX || ('contains' in tooltip && tooltip.contains(elementAtTargetCenterX))) { + if (!elementAtTargetCenterX || ('contains' in tooltip && (tooltip as HTMLDivElement).contains(elementAtTargetCenterX))) { return false; } From b60293f5f9cbc0ac79c4a9ec2f85a9570030f15b Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 15:45:05 +0100 Subject: [PATCH 24/56] fix: tests --- package-lock.json | 682 ++++++++-------------------------------------- package.json | 4 +- 2 files changed, 110 insertions(+), 576 deletions(-) diff --git a/package-lock.json b/package-lock.json index cef69493ce1ac..ceaf4bd7961d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", - "expo-image": "3.0.8", + "expo-image": "55.0.3", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", "expo-modules-core": "^55.0.4", @@ -264,7 +264,7 @@ "jest-circus": "29.7.0", "jest-cli": "29.7.0", "jest-environment-jsdom": "^29.7.0", - "jest-expo": "54.0.16", + "jest-expo": "55.0.6", "jest-transformer-svg": "^2.0.1", "jest-when": "^3.5.2", "link": "^2.1.1", @@ -2117,8 +2117,9 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", - "devOptional": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "chalk": "^2.4.2", @@ -5676,16 +5677,15 @@ } }, "node_modules/@expo/config": { - "version": "12.0.13", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", - "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", - "dev": true, + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", + "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~54.0.4", - "@expo/config-types": "^54.0.10", - "@expo/json-file": "^10.0.8", + "@babel/code-frame": "^7.20.0", + "@expo/config-plugins": "~55.0.4", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "^10.0.12", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", @@ -5862,32 +5862,20 @@ } }, "node_modules/@expo/config-types": { - "version": "54.0.10", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", - "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", - "dev": true, + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", + "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", "license": "MIT" }, - "node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/@expo/config/node_modules/@expo/config-plugins": { - "version": "54.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", - "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", - "dev": true, + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", + "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", "license": "MIT", "dependencies": { - "@expo/config-types": "^54.0.10", - "@expo/json-file": "~10.0.8", - "@expo/plist": "^0.4.8", + "@expo/config-types": "^55.0.4", + "@expo/json-file": "~10.0.12", + "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", @@ -5895,17 +5883,24 @@ "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", - "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, + "node_modules/@expo/config/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/@expo/config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -5917,11 +5912,34 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@expo/config/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/config/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -5938,7 +5956,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -5951,17 +5968,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/@expo/config/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", - "dev": true, + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", + "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", + "minimatch": "^10.2.0", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -5976,30 +5991,42 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/@expo/config/node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@expo/config/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "dev": true, + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/@expo/config/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "dev": true, + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -6012,7 +6039,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", @@ -6026,10 +6052,9 @@ } }, "node_modules/@expo/config/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6042,7 +6067,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6550,65 +6574,6 @@ "chalk": "^4.1.2" } }, - "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", - "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/json-file": "^10.0.12", - "deepmerge": "^4.3.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "resolve-workspace-root": "^2.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "~3.35.1" - } - }, - "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config-plugins": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", - "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^55.0.4", - "@expo/json-file": "~10.0.12", - "@expo/plist": "^0.5.2", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.5", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" - } - }, - "node_modules/@expo/local-build-cache-provider/node_modules/@expo/config-types": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", - "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", - "license": "MIT" - }, - "node_modules/@expo/local-build-cache-provider/node_modules/@expo/plist": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", - "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - } - }, "node_modules/@expo/local-build-cache-provider/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6658,23 +6623,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/@expo/local-build-cache-provider/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@expo/local-build-cache-provider/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -6684,58 +6632,6 @@ "node": ">=8" } }, - "node_modules/@expo/local-build-cache-provider/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@expo/local-build-cache-provider/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/local-build-cache-provider/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/local-build-cache-provider/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@expo/local-build-cache-provider/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6824,65 +6720,6 @@ } } }, - "node_modules/@expo/metro-config/node_modules/@expo/config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", - "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/json-file": "^10.0.12", - "deepmerge": "^4.3.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "resolve-workspace-root": "^2.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "~3.35.1" - } - }, - "node_modules/@expo/metro-config/node_modules/@expo/config-plugins": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", - "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^55.0.4", - "@expo/json-file": "~10.0.12", - "@expo/plist": "^0.5.2", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.5", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" - } - }, - "node_modules/@expo/metro-config/node_modules/@expo/config-types": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", - "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", - "license": "MIT" - }, - "node_modules/@expo/metro-config/node_modules/@expo/plist": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", - "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - } - }, "node_modules/@expo/metro-config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7037,18 +6874,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/metro-config/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@expo/metro-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7401,14 +7226,13 @@ } }, "node_modules/@expo/plist": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", - "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", - "dev": true, + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", "license": "MIT", "dependencies": { "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.2.3", + "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, @@ -7433,27 +7257,6 @@ "expo": "*" } }, - "node_modules/@expo/prebuild-config/node_modules/@expo/config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", - "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/json-file": "^10.0.12", - "deepmerge": "^4.3.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "resolve-workspace-root": "^2.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "~3.35.1" - } - }, "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { "version": "55.0.4", "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", @@ -7475,23 +7278,6 @@ "xml2js": "0.6.0" } }, - "node_modules/@expo/prebuild-config/node_modules/@expo/config-types": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", - "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", - "license": "MIT" - }, - "node_modules/@expo/prebuild-config/node_modules/@expo/plist": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", - "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - } - }, "node_modules/@expo/prebuild-config/node_modules/@react-native/normalize-colors": { "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", @@ -23316,204 +23102,6 @@ "react-native": "*" } }, - "node_modules/expo-constants/node_modules/@expo/config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", - "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/json-file": "^10.0.12", - "deepmerge": "^4.3.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "resolve-workspace-root": "^2.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "~3.35.1" - } - }, - "node_modules/expo-constants/node_modules/@expo/config-plugins": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", - "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^55.0.4", - "@expo/json-file": "~10.0.12", - "@expo/plist": "^0.5.2", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.5", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" - } - }, - "node_modules/expo-constants/node_modules/@expo/config-types": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", - "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", - "license": "MIT" - }, - "node_modules/expo-constants/node_modules/@expo/plist": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", - "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - } - }, - "node_modules/expo-constants/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expo-constants/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expo-constants/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expo-constants/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/expo-constants/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-constants/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/expo-constants/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/expo-constants/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-constants/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo-constants/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-constants/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/expo-file-system": { "version": "55.0.4", "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.4.tgz", @@ -23539,10 +23127,13 @@ } }, "node_modules/expo-image": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-3.0.8.tgz", - "integrity": "sha512-L83fTHVjvE5hACxUXPk3dpABteI/IypeqxKMeOAAcT2eB/jbqT53ddsYKEvKAP86eoByQ7+TCtw9AOUizEtaTQ==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", + "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.2.0" + }, "peerDependencies": { "expo": "*", "react": "*", @@ -23930,27 +23521,6 @@ } } }, - "node_modules/expo/node_modules/@expo/config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", - "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.20.0", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", - "@expo/json-file": "^10.0.12", - "deepmerge": "^4.3.1", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "resolve-workspace-root": "^2.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "~3.35.1" - } - }, "node_modules/expo/node_modules/@expo/config-plugins": { "version": "55.0.4", "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", @@ -23972,23 +23542,6 @@ "xml2js": "0.6.0" } }, - "node_modules/expo/node_modules/@expo/config-types": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", - "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", - "license": "MIT" - }, - "node_modules/expo/node_modules/@expo/plist": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", - "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - } - }, "node_modules/expo/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -28279,14 +27832,14 @@ } }, "node_modules/jest-expo": { - "version": "54.0.16", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-54.0.16.tgz", - "integrity": "sha512-wPV5dddlNMORNSA7ZjEjePA+ztks3G5iKCOHLIauURnKQPTscnaat5juXPboK1Bv2I+c/RDfkt4uZtAmXdlu/g==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", + "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", "dev": true, "license": "MIT", "dependencies": { - "@expo/config": "~12.0.12", - "@expo/json-file": "^10.0.8", + "@expo/config": "~55.0.4", + "@expo/json-file": "^10.0.12", "@jest/create-cache-key-function": "^29.2.1", "@jest/globals": "^29.2.1", "babel-jest": "^29.2.1", @@ -28296,7 +27849,7 @@ "jest-watch-typeahead": "2.2.1", "json5": "^2.2.3", "lodash": "^4.17.19", - "react-test-renderer": "19.1.0", + "react-test-renderer": "19.2.0", "server-only": "^0.0.1", "stacktrace-js": "^2.0.2" }, @@ -28306,7 +27859,7 @@ "peerDependencies": { "expo": "*", "react-native": "*", - "react-server-dom-webpack": "~19.0.3 || ~19.1.4 || ~19.2.3" + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" }, "peerDependenciesMeta": { "react-server-dom-webpack": { @@ -28481,34 +28034,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/jest-expo/node_modules/react-is": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.3.tgz", - "integrity": "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-expo/node_modules/react-test-renderer": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.1.0.tgz", - "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "react-is": "^19.1.0", - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.0" - } - }, - "node_modules/jest-expo/node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "dev": true, - "license": "MIT" - }, "node_modules/jest-expo/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -35917,6 +35442,15 @@ "version": "1.2.0", "license": "ISC" }, + "node_modules/sf-symbols-typescript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", + "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/sha.js": { "version": "2.4.11", "license": "(MIT AND BSD-3-Clause)", diff --git a/package.json b/package.json index 1d6fed125d876..2aacd14e81a21 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", - "expo-image": "3.0.8", + "expo-image": "55.0.3", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", "expo-modules-core": "^55.0.4", @@ -333,7 +333,7 @@ "jest-circus": "29.7.0", "jest-cli": "29.7.0", "jest-environment-jsdom": "^29.7.0", - "jest-expo": "54.0.16", + "jest-expo": "55.0.6", "jest-transformer-svg": "^2.0.1", "jest-when": "^3.5.2", "link": "^2.1.1", From 5c25f440bbfee4b06c834669f63e5e707de0f058 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 15:51:24 +0100 Subject: [PATCH 25/56] fix: patches --- ...tive-web+0.19.2+001+align-with-RN-types.patch} | 10 +++++++++- ...ative-web+0.19.2+001+align-with-rn-types.patch | 12 ------------ patches/@types/react-native-web/details.md | 15 +++++++++++++++ 3 files changed, 24 insertions(+), 13 deletions(-) rename patches/@types/react-native-web/{@types+react-native-web+0.19.2+002+align-with-rn-types.patch.patch => @types+react-native-web+0.19.2+001+align-with-RN-types.patch} (73%) delete mode 100644 patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-rn-types.patch create mode 100644 patches/@types/react-native-web/details.md diff --git a/patches/@types/react-native-web/@types+react-native-web+0.19.2+002+align-with-rn-types.patch.patch b/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-RN-types.patch similarity index 73% rename from patches/@types/react-native-web/@types+react-native-web+0.19.2+002+align-with-rn-types.patch.patch rename to patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-RN-types.patch index beed404dc20c4..d90d452e51c90 100644 --- a/patches/@types/react-native-web/@types+react-native-web+0.19.2+002+align-with-rn-types.patch.patch +++ b/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-RN-types.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@types/react-native-web/index.d.ts b/node_modules/@types/react-native-web/index.d.ts -index 8d88bb5..d97ca3c 100644 +index dd91bb1..d97ca3c 100644 --- a/node_modules/@types/react-native-web/index.d.ts +++ b/node_modules/@types/react-native-web/index.d.ts @@ -1389,14 +1389,36 @@ declare module "react-native" { @@ -45,3 +45,11 @@ index 8d88bb5..d97ca3c 100644 } /** +@@ -1481,6 +1503,7 @@ declare module "react-native" { + paddingRight?: CSSProperties["paddingRight"] | DimensionValue | undefined; + paddingBottom?: CSSProperties["paddingBottom"] | DimensionValue | undefined; + paddingLeft?: CSSProperties["paddingLeft"] | DimensionValue | undefined; ++ userSelect?: CSSProperties["userSelect"] | 'contain' | undefined; + } + + interface TextStyle extends WebStyle { diff --git a/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-rn-types.patch b/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-rn-types.patch deleted file mode 100644 index 25acb2af6c1e0..0000000000000 --- a/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-rn-types.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/node_modules/@types/react-native-web/index.d.ts b/node_modules/@types/react-native-web/index.d.ts -index dd91bb1..8d88bb5 100644 ---- a/node_modules/@types/react-native-web/index.d.ts -+++ b/node_modules/@types/react-native-web/index.d.ts -@@ -1481,6 +1481,7 @@ declare module "react-native" { - paddingRight?: CSSProperties["paddingRight"] | DimensionValue | undefined; - paddingBottom?: CSSProperties["paddingBottom"] | DimensionValue | undefined; - paddingLeft?: CSSProperties["paddingLeft"] | DimensionValue | undefined; -+ userSelect?: CSSProperties["userSelect"] | 'contain' | undefined; - } - - interface TextStyle extends WebStyle { diff --git a/patches/@types/react-native-web/details.md b/patches/@types/react-native-web/details.md new file mode 100644 index 0000000000000..db6e6580841fd --- /dev/null +++ b/patches/@types/react-native-web/details.md @@ -0,0 +1,15 @@ +# `@types/react-native-web` patches + +### [@types+react-native-web+0.19.2+001+align-with-RN-types.patch](@types+react-native-web+0.19.2+001+align-with-RN-types.patch) + +- Reason: + + ``` + Aligns @types/react-native-web type definitions with React Native 0.83 types. + 1. Extends `accessibilityRole` to include all roles defined in RN 0.83 (e.g. checkbox, switch, radio, menu, tab, etc.) instead of the limited subset (button, header, heading, label, link, listitem, none, text). + 2. Adds `userSelect` with 'contain' value support to `WebStyle`, matching the web implementation of React Native's style system. + ``` + +- Upstream PR/issue: TODO +- E/App issue: 🛑 +- PR introducing patch: https://github.com/Expensify/App/pull/79962 From 11fac92fa9aadb7b11a78efb2467caec4b309c19 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 15:59:33 +0100 Subject: [PATCH 26/56] fix: remove outdated patch --- patches/expo-image/details.md | 14 -------------- ...o-image+3.0.8+001+make-expo-53-compatible.patch | 13 ------------- 2 files changed, 27 deletions(-) delete mode 100644 patches/expo-image/details.md delete mode 100644 patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch diff --git a/patches/expo-image/details.md b/patches/expo-image/details.md deleted file mode 100644 index a554f6c1a1fbd..0000000000000 --- a/patches/expo-image/details.md +++ /dev/null @@ -1,14 +0,0 @@ -# `expo-image-manipulator` patches - -### [expo-image+3.0.8+001+make-expo-53-compatible.patch](expo-image+3.0.8+001+make-expo-53-compatible.patch) - -- Reason: - - ``` - The expo-image 3.0.8 doesn't support expo-modules-core of version < 3 which is required for expo 53. - We need expo-image 3.0.8+ for android 16kb pages compatibility - ``` - -- Upstream PR/issue: 🛑, commented in the App PR https://github.com/Expensify/App/issues/63871 -- E/App issue: https://github.com/Expensify/App/issues/63871 -- PR introducing patch: https://github.com/Expensify/App/pull/71774 \ No newline at end of file diff --git a/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch b/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch deleted file mode 100644 index 16fc2bdf6a8e3..0000000000000 --- a/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt b/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -index b1085fe..aac94db 100644 ---- a/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -+++ b/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -@@ -32,7 +32,7 @@ object ResourceIdHelper { - } - - fun getResourceUri(context: Context, name: String): Uri? { -- val drawableUri = ResourceDrawableIdHelper.getResourceDrawableUri(context, name) -+ val drawableUri = ResourceDrawableIdHelper.instance.getResourceDrawableUri(context, name) - if (drawableUri != Uri.EMPTY) { - return drawableUri - } From ac0f5efe4113e1b6e001d4ebc32565751027e9d6 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 15:59:53 +0100 Subject: [PATCH 27/56] chore: update podfile.lock --- ios/Podfile.lock | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ae9ca6434d809..470c974920bd3 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -127,7 +127,7 @@ PODS: - ExpoModulesCore - ExpoFont (14.0.8): - ExpoModulesCore - - ExpoImage (3.0.8): + - ExpoImage (55.0.3): - ExpoModulesCore - libavif/libdav1d - SDWebImage (~> 5.21.0) @@ -185,6 +185,8 @@ PODS: - UMAppLoader - ExpoVideo (55.0.3): - ExpoModulesCore + - ExpoWebBrowser (15.0.10): + - ExpoModulesCore - fast_float (8.0.0) - FBLazyVector (0.83.1) - Firebase/Analytics (11.13.0): @@ -4323,6 +4325,7 @@ DEPENDENCIES: - ExpoStoreReview (from `../node_modules/expo-store-review/ios`) - ExpoTaskManager (from `../node_modules/expo-task-manager/ios`) - ExpoVideo (from `../node_modules/expo-video/ios`) + - ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`) - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) @@ -4549,6 +4552,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-task-manager/ios" ExpoVideo: :path: "../node_modules/expo-video/ios" + ExpoWebBrowser: + :path: "../node_modules/expo-web-browser/ios" fast_float: :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: @@ -4831,7 +4836,7 @@ SPEC CHECKSUMS: ExpoAudio: 14c5909ec48267bfc514bb44c546fcf6fac93837 ExpoDomWebView: c0343b93dabed758db1e14ef1d1e570a1498562a ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 - ExpoImage: e88f500585913969b930e13a4be47277eb7c6de8 + ExpoImage: 8f835720453ed5be7764d9650aa1efde8109abc7 ExpoImageManipulator: ae244131e2c3da68a030332fcbd87287fbdd8f97 ExpoLocation: fec7703a4922c4748b380723669f771376ffbd05 ExpoLogBox: 10ba15b7428e0020da6743a309f53fd553165112 @@ -4841,6 +4846,7 @@ SPEC CHECKSUMS: ExpoStoreReview: 32bb43b6fae9c8db3e33cad69996dff3785eef5f ExpoTaskManager: 23d8ea66d21da98ddcef977f258d1fd62359c2db ExpoVideo: 17748c0ee95e746b6ec75d8522a714cb3e614fa1 + ExpoWebBrowser: 17b064c621789e41d4816c95c93f429b84971f52 fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 FBLazyVector: 309703e71d3f2f1ed7dc7889d58309c9d77a95a4 Firebase: 3435bc66b4d494c2f22c79fd3aae4c1db6662327 From 125e351ec876771c42ce149e8e4193b0f6894048 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 17:33:27 +0100 Subject: [PATCH 28/56] fix: jest setup --- jest/setup.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jest/setup.ts b/jest/setup.ts index 0ac7357d0e9a2..f32fce94ebcf1 100644 --- a/jest/setup.ts +++ b/jest/setup.ts @@ -3,6 +3,7 @@ import * as core from '@actions/core'; import '@shopify/flash-list/jestSetup'; import type {ReactNode} from 'react'; import {useMemo} from 'react'; +import {TextDecoder, TextEncoder} from 'util'; import type * as RNAppLogs from 'react-native-app-logs'; import type {ReadDirItem} from 'react-native-fs'; import 'react-native-gesture-handler/jestSetup'; @@ -23,6 +24,8 @@ if (!('GITHUB_REPOSITORY' in process.env)) { setupMockImages(); mockFSLibrary(); +Object.assign(global, {TextDecoder, TextEncoder}); + // This mock is required as per setup instructions for react-navigation testing // https://reactnavigation.org/docs/testing/#mocking-native-modules jest.mock('react-native/src/private/animated/NativeAnimatedHelper'); From 756fb4ddbcdc4eb098881177ee67adc63d27b114 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 18:02:53 +0100 Subject: [PATCH 29/56] fix: revert unrelated changes --- package-lock.json | 20 ++++--------------- package.json | 2 +- patches/expo-image/details.md | 14 +++++++++++++ ...ge+3.0.8+001+make-expo-53-compatible.patch | 13 ++++++++++++ 4 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 patches/expo-image/details.md create mode 100644 patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch diff --git a/package-lock.json b/package-lock.json index ceaf4bd7961d2..16f32cb3e680f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", - "expo-image": "55.0.3", + "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", "expo-modules-core": "^55.0.4", @@ -23127,13 +23127,10 @@ } }, "node_modules/expo-image": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", - "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-3.0.8.tgz", + "integrity": "sha512-L83fTHVjvE5hACxUXPk3dpABteI/IypeqxKMeOAAcT2eB/jbqT53ddsYKEvKAP86eoByQ7+TCtw9AOUizEtaTQ==", "license": "MIT", - "dependencies": { - "sf-symbols-typescript": "^2.2.0" - }, "peerDependencies": { "expo": "*", "react": "*", @@ -35442,15 +35439,6 @@ "version": "1.2.0", "license": "ISC" }, - "node_modules/sf-symbols-typescript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", - "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/sha.js": { "version": "2.4.11", "license": "(MIT AND BSD-3-Clause)", diff --git a/package.json b/package.json index 2aacd14e81a21..f1b83be3e2542 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", - "expo-image": "55.0.3", + "expo-image": "3.0.8", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", "expo-modules-core": "^55.0.4", diff --git a/patches/expo-image/details.md b/patches/expo-image/details.md new file mode 100644 index 0000000000000..2b735bf6a681a --- /dev/null +++ b/patches/expo-image/details.md @@ -0,0 +1,14 @@ +# `expo-image-manipulator` patches + +### [expo-image+3.0.8+001+make-expo-53-compatible.patch](expo-image+3.0.8+001+make-expo-53-compatible.patch) + +- Reason: + + ``` + The expo-image 3.0.8 doesn't support expo-modules-core of version < 3 which is required for expo 53. + We need expo-image 3.0.8+ for android 16kb pages compatibility + ``` + +- Upstream PR/issue: 🛑, commented in the App PR https://github.com/Expensify/App/issues/63871 +- E/App issue: https://github.com/Expensify/App/issues/63871 +- PR introducing patch: https://github.com/Expensify/App/pull/71774 diff --git a/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch b/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch new file mode 100644 index 0000000000000..16fc2bdf6a8e3 --- /dev/null +++ b/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt b/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt +index b1085fe..aac94db 100644 +--- a/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt ++++ b/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt +@@ -32,7 +32,7 @@ object ResourceIdHelper { + } + + fun getResourceUri(context: Context, name: String): Uri? { +- val drawableUri = ResourceDrawableIdHelper.getResourceDrawableUri(context, name) ++ val drawableUri = ResourceDrawableIdHelper.instance.getResourceDrawableUri(context, name) + if (drawableUri != Uri.EMPTY) { + return drawableUri + } From 29c3a64885d4962f7f5af7e3dd28fea832ee08dd Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 18:04:21 +0100 Subject: [PATCH 30/56] fix: prettier --- src/components/AddressSearch/isCurrentTargetInsideContainer.ts | 3 +-- src/hooks/useThemePreference.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/AddressSearch/isCurrentTargetInsideContainer.ts b/src/components/AddressSearch/isCurrentTargetInsideContainer.ts index 03125affb30a9..ffb82b3aac3e4 100644 --- a/src/components/AddressSearch/isCurrentTargetInsideContainer.ts +++ b/src/components/AddressSearch/isCurrentTargetInsideContainer.ts @@ -1,6 +1,5 @@ import type {ReadOnlyNode} from 'react-native'; -import type { IsCurrentTargetInsideContainerType } from './types'; - +import type {IsCurrentTargetInsideContainerType} from './types'; const isCurrentTargetInsideContainer: IsCurrentTargetInsideContainerType = (event, containerRef) => { // The related target check is required here diff --git a/src/hooks/useThemePreference.ts b/src/hooks/useThemePreference.ts index 298c6d7742f63..01ba751b4ca47 100644 --- a/src/hooks/useThemePreference.ts +++ b/src/hooks/useThemePreference.ts @@ -12,7 +12,7 @@ function useThemePreference() { const theme = preferredThemeFromStorage ?? CONST.THEME.DEFAULT; // If the user chooses to use the device theme settings, set the theme preference to the system theme - return theme === CONST.THEME.SYSTEM ? (systemTheme ?? CONST.THEME.FALLBACK) as 'light' | 'dark' : theme; + return theme === CONST.THEME.SYSTEM ? ((systemTheme ?? CONST.THEME.FALLBACK) as 'light' | 'dark') : theme; }, [preferredThemeFromStorage, systemTheme]); return themePreference; From 8be492c53fab03c9460f4943372ffed246908ed3 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 16 Feb 2026 18:22:20 +0100 Subject: [PATCH 31/56] fix: podfile --- ios/Podfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 470c974920bd3..1fee3e038d259 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -127,7 +127,7 @@ PODS: - ExpoModulesCore - ExpoFont (14.0.8): - ExpoModulesCore - - ExpoImage (55.0.3): + - ExpoImage (3.0.8): - ExpoModulesCore - libavif/libdav1d - SDWebImage (~> 5.21.0) @@ -4836,7 +4836,7 @@ SPEC CHECKSUMS: ExpoAudio: 14c5909ec48267bfc514bb44c546fcf6fac93837 ExpoDomWebView: c0343b93dabed758db1e14ef1d1e570a1498562a ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 - ExpoImage: 8f835720453ed5be7764d9650aa1efde8109abc7 + ExpoImage: e88f500585913969b930e13a4be47277eb7c6de8 ExpoImageManipulator: ae244131e2c3da68a030332fcbd87287fbdd8f97 ExpoLocation: fec7703a4922c4748b380723669f771376ffbd05 ExpoLogBox: 10ba15b7428e0020da6743a309f53fd553165112 From 872c74f2ec15a41c1ee52ed67162435cf2c102a6 Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 17 Feb 2026 09:33:42 +0100 Subject: [PATCH 32/56] fix: update `expo-image` to fix android release build error --- ios/Podfile.lock | 4 ++-- package-lock.json | 20 +++++++++++++++---- package.json | 2 +- patches/expo-image/details.md | 14 ------------- ...ge+3.0.8+001+make-expo-53-compatible.patch | 13 ------------ src/components/Image/BaseImage.native.tsx | 5 +++-- src/components/ImageSVG/index.android.tsx | 3 ++- src/components/ImageSVG/index.ios.tsx | 3 ++- .../BackgroundImage/index.native.tsx | 3 ++- 9 files changed, 28 insertions(+), 39 deletions(-) delete mode 100644 patches/expo-image/details.md delete mode 100644 patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 1fee3e038d259..470c974920bd3 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -127,7 +127,7 @@ PODS: - ExpoModulesCore - ExpoFont (14.0.8): - ExpoModulesCore - - ExpoImage (3.0.8): + - ExpoImage (55.0.3): - ExpoModulesCore - libavif/libdav1d - SDWebImage (~> 5.21.0) @@ -4836,7 +4836,7 @@ SPEC CHECKSUMS: ExpoAudio: 14c5909ec48267bfc514bb44c546fcf6fac93837 ExpoDomWebView: c0343b93dabed758db1e14ef1d1e570a1498562a ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 - ExpoImage: e88f500585913969b930e13a4be47277eb7c6de8 + ExpoImage: 8f835720453ed5be7764d9650aa1efde8109abc7 ExpoImageManipulator: ae244131e2c3da68a030332fcbd87287fbdd8f97 ExpoLocation: fec7703a4922c4748b380723669f771376ffbd05 ExpoLogBox: 10ba15b7428e0020da6743a309f53fd553165112 diff --git a/package-lock.json b/package-lock.json index 16f32cb3e680f..ceaf4bd7961d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", - "expo-image": "3.0.8", + "expo-image": "55.0.3", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", "expo-modules-core": "^55.0.4", @@ -23127,10 +23127,13 @@ } }, "node_modules/expo-image": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-3.0.8.tgz", - "integrity": "sha512-L83fTHVjvE5hACxUXPk3dpABteI/IypeqxKMeOAAcT2eB/jbqT53ddsYKEvKAP86eoByQ7+TCtw9AOUizEtaTQ==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", + "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.2.0" + }, "peerDependencies": { "expo": "*", "react": "*", @@ -35439,6 +35442,15 @@ "version": "1.2.0", "license": "ISC" }, + "node_modules/sf-symbols-typescript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", + "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/sha.js": { "version": "2.4.11", "license": "(MIT AND BSD-3-Clause)", diff --git a/package.json b/package.json index f1b83be3e2542..2aacd14e81a21 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", - "expo-image": "3.0.8", + "expo-image": "55.0.3", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", "expo-modules-core": "^55.0.4", diff --git a/patches/expo-image/details.md b/patches/expo-image/details.md deleted file mode 100644 index 2b735bf6a681a..0000000000000 --- a/patches/expo-image/details.md +++ /dev/null @@ -1,14 +0,0 @@ -# `expo-image-manipulator` patches - -### [expo-image+3.0.8+001+make-expo-53-compatible.patch](expo-image+3.0.8+001+make-expo-53-compatible.patch) - -- Reason: - - ``` - The expo-image 3.0.8 doesn't support expo-modules-core of version < 3 which is required for expo 53. - We need expo-image 3.0.8+ for android 16kb pages compatibility - ``` - -- Upstream PR/issue: 🛑, commented in the App PR https://github.com/Expensify/App/issues/63871 -- E/App issue: https://github.com/Expensify/App/issues/63871 -- PR introducing patch: https://github.com/Expensify/App/pull/71774 diff --git a/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch b/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch deleted file mode 100644 index 16fc2bdf6a8e3..0000000000000 --- a/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt b/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -index b1085fe..aac94db 100644 ---- a/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -+++ b/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -@@ -32,7 +32,7 @@ object ResourceIdHelper { - } - - fun getResourceUri(context: Context, name: String): Uri? { -- val drawableUri = ResourceDrawableIdHelper.getResourceDrawableUri(context, name) -+ val drawableUri = ResourceDrawableIdHelper.instance.getResourceDrawableUri(context, name) - if (drawableUri != Uri.EMPTY) { - return drawableUri - } diff --git a/src/components/Image/BaseImage.native.tsx b/src/components/Image/BaseImage.native.tsx index 7d2c4e716dbdc..0dcaf2a353b01 100644 --- a/src/components/Image/BaseImage.native.tsx +++ b/src/components/Image/BaseImage.native.tsx @@ -1,12 +1,12 @@ import {Image as ExpoImage} from 'expo-image'; -import type {ImageLoadEventData} from 'expo-image'; +import type {ImageLoadEventData, ImageProps as ExpoImageProps} from 'expo-image'; import {useCallback, useContext, useEffect, useRef} from 'react'; import type {AttachmentSource} from '@components/Attachments/types'; import getImageRecyclingKey from '@libs/getImageRecyclingKey'; import {AttachmentStateContext} from '@pages/media/AttachmentModalScreen/AttachmentModalBaseContent/AttachmentStateContextProvider'; import type {BaseImageProps} from './types'; -function BaseImage({onLoad, source, ...props}: BaseImageProps) { +function BaseImage({onLoad, source, style, ...props}: BaseImageProps) { const isLoadedRef = useRef(false); const attachmentContext = useContext(AttachmentStateContext); const {setAttachmentLoaded, isAttachmentLoaded} = attachmentContext || {}; @@ -48,6 +48,7 @@ function BaseImage({onLoad, source, ...props}: BaseImageProps) { onLoad={onLoad ? imageLoadedSuccessfully : undefined} source={source} recyclingKey={getImageRecyclingKey(source)} + style={style as ExpoImageProps['style']} // eslint-disable-next-line react/jsx-props-no-spreading {...props} /> diff --git a/src/components/ImageSVG/index.android.tsx b/src/components/ImageSVG/index.android.tsx index 616329f7b8a02..2da1574797226 100644 --- a/src/components/ImageSVG/index.android.tsx +++ b/src/components/ImageSVG/index.android.tsx @@ -1,4 +1,5 @@ import {Image} from 'expo-image'; +import type {ImageProps as ExpoImageProps} from 'expo-image'; import React, {useEffect} from 'react'; import getImageRecyclingKey from '@libs/getImageRecyclingKey'; import type ImageSVGProps from './types'; @@ -58,7 +59,7 @@ function ImageSVG({src, width = '100%', height = '100%', fill, contentFit = 'cov contentFit={contentFit} source={src} recyclingKey={getImageRecyclingKey(src)} - style={[{width, height}, style]} + style={[{width, height}, style as ExpoImageProps['style']]} // eslint-disable-next-line react/jsx-props-no-spreading {...tintColorProp} /> diff --git a/src/components/ImageSVG/index.ios.tsx b/src/components/ImageSVG/index.ios.tsx index eb059574dd54a..eef2a0ec17c56 100644 --- a/src/components/ImageSVG/index.ios.tsx +++ b/src/components/ImageSVG/index.ios.tsx @@ -1,4 +1,5 @@ import {Image} from 'expo-image'; +import type {ImageProps as ExpoImageProps} from 'expo-image'; import React, {useEffect} from 'react'; import getImageRecyclingKey from '@libs/getImageRecyclingKey'; import type ImageSVGProps from './types'; @@ -45,7 +46,7 @@ function ImageSVG({src, width = '100%', height = '100%', fill, contentFit = 'cov contentFit={contentFit} source={src} recyclingKey={getImageRecyclingKey(src)} - style={[{width, height}, style]} + style={[{width, height}, style as ExpoImageProps['style']]} // eslint-disable-next-line react/jsx-props-no-spreading {...tintColorProp} /> diff --git a/src/pages/signin/SignInPageLayout/BackgroundImage/index.native.tsx b/src/pages/signin/SignInPageLayout/BackgroundImage/index.native.tsx index 5f8630a821863..a2c9099b6a2de 100644 --- a/src/pages/signin/SignInPageLayout/BackgroundImage/index.native.tsx +++ b/src/pages/signin/SignInPageLayout/BackgroundImage/index.native.tsx @@ -1,4 +1,5 @@ import {Image} from 'expo-image'; +import type {ImageProps as ExpoImageProps} from 'expo-image'; import React, {useEffect, useState} from 'react'; import {InteractionManager} from 'react-native'; import type {ImageSourcePropType} from 'react-native'; @@ -58,7 +59,7 @@ function BackgroundImage({width}: BackgroundImageProps) { source={MobileBackgroundImage as ImageSourcePropType} onLoadEnd={() => setOpacityAnimation()} pointerEvents="none" - style={[styles.signInBackground, StyleUtils.getWidthStyle(width)]} + style={[styles.signInBackground, StyleUtils.getWidthStyle(width) as ExpoImageProps['style']]} transition={CONST.BACKGROUND_IMAGE_TRANSITION_DURATION} /> From 2036850cfbec4fa257b684b3b3a20ced854e21e3 Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 17 Feb 2026 09:56:40 +0100 Subject: [PATCH 33/56] chore: update patch --- patches/expo-audio/details.md | 2 +- ....patch => expo-audio+55.0.4+001+playsInSilentMode.patch} | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) rename patches/expo-audio/{expo-audio+1.1.1.patch => expo-audio+55.0.4+001+playsInSilentMode.patch} (94%) diff --git a/patches/expo-audio/details.md b/patches/expo-audio/details.md index 51596155b8270..ac638cb8481f2 100644 --- a/patches/expo-audio/details.md +++ b/patches/expo-audio/details.md @@ -1,6 +1,6 @@ # `expo-audio` patches -### [expo-audio+1.1.1.patch](expo-audio+1.1.1.patch) +### [expo-audio+55.0.4+001+playsInSilentMode.patch](expo-audio+55.0.4+001+playsInSilentMode.patch) - Reason: `playsInSilentMode` was only supported on iOS. On Android, the property was filtered out in `setAudioModeAsync` and had no effect. This patch adds Android support so apps can respect the device's silent/vibrate mode. - Upstream PR: https://github.com/expo/expo/pull/43117 diff --git a/patches/expo-audio/expo-audio+1.1.1.patch b/patches/expo-audio/expo-audio+55.0.4+001+playsInSilentMode.patch similarity index 94% rename from patches/expo-audio/expo-audio+1.1.1.patch rename to patches/expo-audio/expo-audio+55.0.4+001+playsInSilentMode.patch index 598b69ee317b1..b461f2add3c87 100644 --- a/patches/expo-audio/expo-audio+1.1.1.patch +++ b/patches/expo-audio/expo-audio+55.0.4+001+playsInSilentMode.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/expo-audio/android/src/main/java/expo/modules/audio/AudioModule.kt b/node_modules/expo-audio/android/src/main/java/expo/modules/audio/AudioModule.kt -index 49a53af..98b690d 100644 +index 7df93cf..ebcad0c 100644 --- a/node_modules/expo-audio/android/src/main/java/expo/modules/audio/AudioModule.kt +++ b/node_modules/expo-audio/android/src/main/java/expo/modules/audio/AudioModule.kt @@ -57,6 +57,7 @@ class AudioModule : Module() { @@ -12,13 +12,13 @@ index 49a53af..98b690d 100644 private val audioFocusChangeListener = AudioManager.OnAudioFocusChangeListener { focusChange -> @@ -184,6 +185,7 @@ class AudioModule : Module() { AsyncFunction("setAudioModeAsync") { mode: AudioMode -> - staysActiveInBackground = mode.shouldPlayInBackground + shouldPlayInBackground = mode.shouldPlayInBackground interruptionMode = mode.interruptionMode + playsInSilentMode = mode.playsInSilentMode updatePlaySoundThroughEarpiece(mode.shouldRouteThroughEarpiece ?: false) allowsBackgroundRecording = mode.allowsBackgroundRecording -@@ -390,6 +392,9 @@ class AudioModule : Module() { +@@ -391,6 +393,9 @@ class AudioModule : Module() { Log.e(TAG, "Audio has been disabled. Re-enable to start playing") return@Function } From 55557e5e609d31cf8aacd75765cf00457d8927c8 Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 17 Feb 2026 12:36:24 +0100 Subject: [PATCH 34/56] fix: android release build by updating firebase-crashlytics-gradle version --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index 81d07ee0be765..be06044183858 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -29,7 +29,7 @@ buildscript { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") classpath("com.google.gms:google-services:4.3.4") - classpath("com.google.firebase:firebase-crashlytics-gradle:2.7.1") + classpath("com.google.firebase:firebase-crashlytics-gradle:3.0.6") // Fullstory integration classpath ("com.fullstory:gradle-plugin-local:1.64.2") From f89c3784fb37442c5ca92105d37abfa02d9c5762 Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 25 Feb 2026 12:51:52 +0100 Subject: [PATCH 35/56] fix: fetching files on Android --- patches/react-native/details.md | 9 +- ....83.1+027+fix-fetching-files-android.patch | 158 ++++++++++++++++++ 2 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 patches/react-native/react-native+0.83.1+027+fix-fetching-files-android.patch diff --git a/patches/react-native/details.md b/patches/react-native/details.md index a40617ca078ec..18d5ef2640752 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -199,7 +199,14 @@ ### [react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch](react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch) -- Reason: This patch disables Hermes Young-Gen Garbage Collection (GC), which improves initial TTI and app startup time, by delaying GC for early allocated memory to the first Old-Gen GC run. +- Reason: This patch disables Hermes Young-Gen Garbage Collection (GC), which improves initial TTI and app startup time, by delaying GC for early allocated memory to the first Old-Gen GC run. - Upstream PR/issue: This is not intended to be upstreamed, since this is a low-level fix very specific to the Expensify app's requirements. - E/App issue: [#76859](https://github.com/Expensify/App/issues/76859) - PR introducing patch: [#76154](https://github.com/Expensify/App/pull/76154) + +### [react-native+0.83.1+027+fix-fetching-files-android.patch](react-native+0.83.1+027+fix-fetching-files-android.patch) + +- Reason: Fixes fetching files (blobs, file URIs) on Android +- Upstream PR/issue: https://github.com/facebook/react-native/pull/55706 +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR Introducing Patch: https://github.com/Expensify/App/pull/79962 diff --git a/patches/react-native/react-native+0.83.1+027+fix-fetching-files-android.patch b/patches/react-native/react-native+0.83.1+027+fix-fetching-files-android.patch new file mode 100644 index 0000000000000..7a8c2bc1060dd --- /dev/null +++ b/patches/react-native/react-native+0.83.1+027+fix-fetching-files-android.patch @@ -0,0 +1,158 @@ +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +index 3718d04..ead0540 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +@@ -63,7 +63,7 @@ public class BlobModule(reactContext: ReactApplicationContext) : + } + } + +- private val networkingUriHandler = ++ internal val networkingUriHandler = + object : NetworkingModule.UriHandler { + override fun supports(uri: Uri, responseType: String): Boolean { + val scheme = uri.scheme +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +index 2b4dee4..13fb374 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +@@ -19,9 +19,7 @@ import com.facebook.react.common.build.ReactBuildConfig + import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags + import java.net.SocketTimeoutException + import okhttp3.Headers +-import okhttp3.Protocol + import okhttp3.Request +-import okhttp3.Response + + /** + * Utility class for reporting network lifecycle events to JavaScript and InspectorNetworkReporter. +@@ -206,11 +204,12 @@ internal object NetworkEventUtil { + requestId: Int, + devToolsRequestId: String, + requestUrl: String?, +- response: Response, ++ statusCode: Int, ++ headers: Map, ++ contentLength: Long, + ) { +- val headersMap = okHttpHeadersToMap(response.headers()) + val headersBundle = Bundle() +- for ((headerName, headerValue) in headersMap) { ++ for ((headerName, headerValue) in headers) { + headersBundle.putString(headerName, headerValue) + } + +@@ -218,59 +217,23 @@ internal object NetworkEventUtil { + InspectorNetworkReporter.reportResponseStart( + devToolsRequestId, + requestUrl.orEmpty(), +- response.code(), +- headersMap, +- response.body()?.contentLength() ?: 0, ++ statusCode, ++ headers, ++ contentLength, + ) + } + reactContext?.emitDeviceEvent( + "didReceiveNetworkResponse", + Arguments.createArray().apply { + pushInt(requestId) +- pushInt(response.code()) ++ pushInt(statusCode) + pushMap(Arguments.fromBundle(headersBundle)) + pushString(requestUrl) + }, + ) + } + +- @Deprecated("Compatibility overload") +- @JvmStatic +- fun onResponseReceived( +- reactContext: ReactApplicationContext?, +- requestId: Int, +- devToolsRequestId: String, +- statusCode: Int, +- headers: WritableMap?, +- url: String?, +- ) { +- val headersBuilder = Headers.Builder() +- headers?.let { map -> +- val iterator = map.keySetIterator() +- while (iterator.hasNextKey()) { +- val key = iterator.nextKey() +- val value = map.getString(key) +- if (value != null) { +- headersBuilder.add(key, value) +- } +- } +- } +- onResponseReceived( +- reactContext, +- requestId, +- devToolsRequestId, +- url, +- Response.Builder() +- .protocol(Protocol.HTTP_1_1) +- .request(Request.Builder().url(url.orEmpty()).build()) +- .headers(headersBuilder.build()) +- .code(statusCode) +- .message("") +- .build(), +- ) +- } +- +- private fun okHttpHeadersToMap(headers: Headers): Map { ++ internal fun okHttpHeadersToMap(headers: Headers): Map { + val responseHeaders = mutableMapOf() + for (i in 0 until headers.size()) { + val headerName = headers.name(i) +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +index a762999..e4204b5 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +@@ -36,7 +36,6 @@ import okhttp3.JavaNetCookieJar + import okhttp3.MediaType + import okhttp3.MultipartBody + import okhttp3.OkHttpClient +-import okhttp3.Protocol + import okhttp3.Request + import okhttp3.RequestBody + import okhttp3.Response +@@ -310,21 +309,14 @@ public class NetworkingModule( + if (handler.supports(uri, responseType)) { + val (res, rawBody) = handler.fetch(uri) + val encodedDataLength = res.toString().toByteArray().size +- // fix: UriHandlers which are not using file:// scheme fail in whatwg-fetch at this line +- // https://github.com/JakeChampion/fetch/blob/main/fetch.js#L547 +- val response = +- Response.Builder() +- .protocol(Protocol.HTTP_1_1) +- .request(Request.Builder().url(url.orEmpty()).build()) +- .code(200) +- .message("OK") +- .build() + NetworkEventUtil.onResponseReceived( + reactApplicationContext, + requestId, + devToolsRequestId, + url, +- response, ++ 200, ++ emptyMap(), ++ encodedDataLength.toLong(), + ) + NetworkEventUtil.onDataReceived( + reactApplicationContext, +@@ -644,8 +636,10 @@ public class NetworkingModule( + reactApplicationContext, + requestId, + devToolsRequestId, +- url, +- response, ++ response.request().url().toString(), ++ response.code(), ++ NetworkEventUtil.okHttpHeadersToMap(response.headers()), ++ response.body()?.contentLength() ?: 0L, + ) + + try { From 6223687ecce90e983f8a654cd3d251ff80e9abe9 Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 25 Feb 2026 12:52:01 +0100 Subject: [PATCH 36/56] chore: update expo to 55 --- package-lock.json | 1040 +++++++++++++++++++++++++-------------------- package.json | 19 +- 2 files changed, 580 insertions(+), 479 deletions(-) diff --git a/package-lock.json b/package-lock.json index c889ae23ba57c..7cabed84c8cc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,14 +61,14 @@ "dom-serializer": "^0.2.2", "domhandler": "^5.0.3", "expensify-common": "2.0.171", - "expo": "55.0.0-preview.9", + "expo": "55.0.0", "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", "expo-image": "55.0.3", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", - "expo-modules-core": "^55.0.4", + "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", "expo-task-manager": "55.0.2", @@ -5669,24 +5669,22 @@ } }, "node_modules/@expo/config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.4.tgz", - "integrity": "sha512-DzLYn211jhUbMY3o3m682DC+J7lXTOAW4DiMQta+/klbIMRSA3EeSPpJcmciFGk5FRff1e6NY/gF+wu1Ok6kxg==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.8.tgz", + "integrity": "sha512-D7RYYHfErCgEllGxNwdYdkgzLna7zkzUECBV3snbUpf7RvIpB5l1LpCgzuVoc5KVew5h7N1Tn4LnT/tBSUZsQg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.20.0", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", + "@expo/config-plugins": "~55.0.6", + "@expo/config-types": "^55.0.5", "@expo/json-file": "^10.0.12", + "@expo/require-utils": "^55.0.2", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", - "require-from-string": "^2.0.2", "resolve-from": "^5.0.0", "resolve-workspace-root": "^2.0.0", "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "~3.35.1" + "slugify": "^1.3.4" } }, "node_modules/@expo/config-plugins": { @@ -5854,18 +5852,18 @@ } }, "node_modules/@expo/config-types": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.4.tgz", - "integrity": "sha512-bZZOqScX2WyOZT3ThpqKr7h7Dl81Qm0OUyVxmuBbSb7cOjXy5kgwFywItsPdvc9cjeXWjJf7ESUj/kNsKfjjXw==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.5.tgz", + "integrity": "sha512-sCmSUZG4mZ/ySXvfyyBdhjivz8Q539X1NondwDdYG7s3SBsk+wsgPJzYsqgAG/P9+l0xWjUD2F+kQ1cAJ6NNLg==", "license": "MIT" }, "node_modules/@expo/config/node_modules/@expo/config-plugins": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", - "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.6.tgz", + "integrity": "sha512-cIox6FjZlFaaX40rbQ3DvP9e87S5X85H9uw+BAxJE5timkMhuByy3GAlOsj1h96EyzSiol7Q6YIGgY1Jiz4M+A==", "license": "MIT", "dependencies": { - "@expo/config-types": "^55.0.4", + "@expo/config-types": "^55.0.5", "@expo/json-file": "~10.0.12", "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", @@ -5880,15 +5878,6 @@ "xml2js": "0.6.0" } }, - "node_modules/@expo/config/node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/@expo/config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -5905,27 +5894,24 @@ } }, "node_modules/@expo/config/node_modules/balanced-match": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", - "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "license": "MIT", - "dependencies": { - "jackspeak": "^4.2.3" - }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" } }, "node_modules/@expo/config/node_modules/brace-expansion": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", - "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" } }, "node_modules/@expo/config/node_modules/chalk": { @@ -5963,17 +5949,17 @@ "license": "MIT" }, "node_modules/@expo/config/node_modules/glob": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", - "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.2.0", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5988,21 +5974,6 @@ "node": ">=8" } }, - "node_modules/@expo/config/node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^9.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@expo/config/node_modules/lru-cache": { "version": "11.2.6", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", @@ -6013,31 +5984,31 @@ } }, "node_modules/@expo/config/node_modules/minimatch": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", - "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/config/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6178,9 +6149,9 @@ } }, "node_modules/@expo/dom-webview": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-55.0.2.tgz", - "integrity": "sha512-U+0tHSplJ+R+Uj3/wPtm82lzptOhKEPse5A+hKHrUIEt+1tPDxwAuxBZMi8xs8UqByMAz7C18BzS58LuWphA3A==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-55.0.3.tgz", + "integrity": "sha512-bY4/rfcZ0f43DvOtMn8/kmPlmo01tex5hRoc5hKbwBwQjqWQuQt0ACwu7akR9IHI4j0WNG48eL6cZB6dZUFrzg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -6189,16 +6160,17 @@ } }, "node_modules/@expo/env": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.11.tgz", - "integrity": "sha512-xV+ps6YCW7XIPVUwFVCRN2nox09dnRwy8uIjwHWTODu0zFw4kp4omnVkl0OOjuu2XOe7tdgAHxikrkJt9xB/7Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.1.1.tgz", + "integrity": "sha512-rVvHC4I6xlPcg+mAO09ydUi2Wjv1ZytpLmHOSzvXzBAz9mMrJggqCe4s4dubjJvi/Ino/xQCLhbaLCnTtLpikg==", "license": "MIT", "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", "getenv": "^2.0.0" + }, + "engines": { + "node": ">=20.12.0" } }, "node_modules/@expo/env/node_modules/ansi-styles": { @@ -6260,11 +6232,12 @@ } }, "node_modules/@expo/fingerprint": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.3.tgz", - "integrity": "sha512-abm2rm/3Tg1gPihTyDcy7kOWnjPdtpWHSI/VpWwLaAmqqa5hFASBcr8ge58ZEWsNiozUJbfflqOp5oTQqoumAA==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.5.tgz", + "integrity": "sha512-mLrcymtgkW9IJ/G1e8MH1Xt2VIb1MOS86ePY0ePcnV3nVyJqm7gfa/AXD1Hk+eZXvf8XhioYz6QZaamBdEzR3A==", "license": "MIT", "dependencies": { + "@expo/env": "^2.0.11", "@expo/spawn-async": "^1.7.2", "arg": "^5.0.2", "chalk": "^4.1.2", @@ -6272,7 +6245,7 @@ "getenv": "^2.0.0", "glob": "^13.0.0", "ignore": "^5.3.1", - "minimatch": "^9.0.0", + "minimatch": "^10.2.2", "resolve-from": "^5.0.0", "semver": "^7.6.0" }, @@ -6301,13 +6274,25 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "license": "MIT" }, + "node_modules/@expo/fingerprint/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@expo/fingerprint/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@expo/fingerprint/node_modules/chalk": { @@ -6345,32 +6330,17 @@ "license": "MIT" }, "node_modules/@expo/fingerprint/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6386,40 +6356,40 @@ } }, "node_modules/@expo/fingerprint/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/@expo/fingerprint/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/fingerprint/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6557,12 +6527,12 @@ } }, "node_modules/@expo/local-build-cache-provider": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.3.tgz", - "integrity": "sha512-wdpqOSpaqsY5CZ4rnC49U3jsdRaOfzbl6MlD7oSRH2slKmVoD/CiHH+9x9uuLsp65mGTp0a+FMUL6JfuvxRPIw==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.6.tgz", + "integrity": "sha512-4kfdv48sKzokijMqi07fINYA9/XprshmPgSLf8i69XgzIv2YdRyBbb70SzrufB7PDneFoltz8N83icW8gOOj1g==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.4", + "@expo/config": "~55.0.8", "chalk": "^4.1.2" } }, @@ -6637,17 +6607,17 @@ } }, "node_modules/@expo/log-box": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.5.tgz", - "integrity": "sha512-u0TV3mjCbBDClsk0PdZxLpZGov2LC93mMI+mXktomi1vbFr1xbOwkxFcy9dVAynC7ddv5F2g8DxR1MjIOK0QAw==", + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.7.tgz", + "integrity": "sha512-m7V1k2vlMp4NOj3fopjOg4zl/ANXyTRF3HMTMep2GZAKsPiDzgOQ41nm8CaU50/HlDIGXlCObss07gOn20UpHQ==", "license": "MIT", "dependencies": { - "@expo/dom-webview": "^55.0.2", + "@expo/dom-webview": "^55.0.3", "anser": "^1.4.9", "stacktrace-parser": "^0.1.10" }, "peerDependencies": { - "@expo/dom-webview": "^55.0.2", + "@expo/dom-webview": "^55.0.3", "expo": "*", "react": "*", "react-native": "*" @@ -6676,30 +6646,28 @@ } }, "node_modules/@expo/metro-config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.4.tgz", - "integrity": "sha512-cN5LqwvLtLUwvEkboZvWFYUZjAZheoJcqWzFQ/YCF9DG2eUVBfQHlcdws/rvGxQKhCwT0tu1eqJKxUVSid09jA==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.8.tgz", + "integrity": "sha512-rlWMzBcRKAcYhEogGZuv8iPHPdErH9h1rchCEFZMOmGX+aZS2q+VqqRo4Zm6oktX6KEqhuNbtcvCelV4aicnUQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.20.0", "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", - "@expo/config": "~55.0.4", - "@expo/env": "~2.0.11", + "@expo/config": "~55.0.8", + "@expo/env": "~2.1.1", "@expo/json-file": "~10.0.12", "@expo/metro": "~54.2.0", "@expo/spawn-async": "^1.7.2", "browserslist": "^4.25.0", "chalk": "^4.1.0", "debug": "^4.3.2", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", "getenv": "^2.0.0", "glob": "^13.0.0", "hermes-parser": "^0.29.1", "jsc-safe-url": "^0.2.4", "lightningcss": "^1.30.1", - "minimatch": "^9.0.0", + "picomatch": "^4.0.3", "postcss": "~8.4.32", "resolve-from": "^5.0.0" }, @@ -6727,13 +6695,25 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@expo/metro-config/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@expo/metro-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@expo/metro-config/node_modules/chalk": { @@ -6771,32 +6751,17 @@ "license": "MIT" }, "node_modules/@expo/metro-config/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6827,45 +6792,57 @@ } }, "node_modules/@expo/metro-config/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/@expo/metro-config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/metro-config/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@expo/metro-config/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@expo/metro-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7229,17 +7206,17 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.4.tgz", - "integrity": "sha512-1bp/S+w7KRRjegN6u0/jn2cHwzcAP1QbnA8DxW3ts1EdTIZee1X8bmR57JzRzGLuU3pTPV+gLYdUoycTiYtPHg==", + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.7.tgz", + "integrity": "sha512-NNfUmUss0ykzzITeIIZQrG/mQnFE6k3usMuUY0RQPoB4omUNHuHcPqEPmojVsIHFigD7CkAH6RvEL0/syuewBA==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.4", - "@expo/config-plugins": "~55.0.4", - "@expo/config-types": "^55.0.4", + "@expo/config": "~55.0.8", + "@expo/config-plugins": "~55.0.6", + "@expo/config-types": "^55.0.5", "@expo/image-utils": "^0.8.12", "@expo/json-file": "^10.0.12", - "@react-native/normalize-colors": "0.83.1", + "@react-native/normalize-colors": "0.83.2", "debug": "^4.3.1", "resolve-from": "^5.0.0", "semver": "^7.6.0", @@ -7250,12 +7227,12 @@ } }, "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", - "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.6.tgz", + "integrity": "sha512-cIox6FjZlFaaX40rbQ3DvP9e87S5X85H9uw+BAxJE5timkMhuByy3GAlOsj1h96EyzSiol7Q6YIGgY1Jiz4M+A==", "license": "MIT", "dependencies": { - "@expo/config-types": "^55.0.4", + "@expo/config-types": "^55.0.5", "@expo/json-file": "~10.0.12", "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", @@ -7271,9 +7248,9 @@ } }, "node_modules/@expo/prebuild-config/node_modules/@react-native/normalize-colors": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", - "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.2.tgz", + "integrity": "sha512-gkZAb9LoVVzNuYzzOviH7DiPTXQoZPHuiTH2+O2+VWNtOkiznjgvqpwYAhg58a5zfRq5GXlbBdf5mzRj5+3Y5Q==", "license": "MIT" }, "node_modules/@expo/prebuild-config/node_modules/ansi-styles": { @@ -7291,6 +7268,27 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@expo/prebuild-config/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/prebuild-config/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@expo/prebuild-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7326,17 +7324,17 @@ "license": "MIT" }, "node_modules/@expo/prebuild-config/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7352,40 +7350,40 @@ } }, "node_modules/@expo/prebuild-config/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/@expo/prebuild-config/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/prebuild-config/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7415,6 +7413,25 @@ "node": ">=8" } }, + "node_modules/@expo/require-utils": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-55.0.2.tgz", + "integrity": "sha512-dV5oCShQ1umKBKagMMT4B/N+SREsQe3lU4Zgmko5AO0rxKV0tynZT6xXs+e2JxuqT4Rz997atg7pki0BnZb4uw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@expo/schema-utils": { "version": "55.0.2", "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-55.0.2.tgz", @@ -7461,9 +7478,9 @@ "license": "MIT" }, "node_modules/@expo/xcpretty": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.4.0.tgz", - "integrity": "sha512-o2qDlTqJ606h4xR36H2zWTywmZ3v3842K6TU8Ik2n1mfW0S580VHlt3eItVYdLYz+klaPp7CXqanja8eASZjRw==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.4.1.tgz", + "integrity": "sha512-KZNxZvnGCtiM2aYYZ6Wz0Ix5r47dAvpNLApFtZWnSoERzAdOMzVBOPysBoM0JlF6FKWZ8GPqgn6qt3dV/8Zlpg==", "license": "BSD-3-Clause", "dependencies": { "@babel/code-frame": "^7.20.0", @@ -9048,27 +9065,6 @@ "node": ">=14" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "license": "ISC", @@ -12060,6 +12056,7 @@ "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", @@ -12073,6 +12070,7 @@ "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -12132,6 +12130,7 @@ "version": "0.32.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "devOptional": true, "license": "MIT", "dependencies": { "hermes-parser": "0.32.0" @@ -18073,11 +18072,12 @@ } }, "node_modules/babel-preset-expo": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.3.tgz", - "integrity": "sha512-aad7zQVoWfk5vgNPlKQQV5EXVC2H7uOPXKXbTnU3IMd6rV98SawoL38c7LwOYln728jcOPpHi6fpMXbFnJENlA==", + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.7.tgz", + "integrity": "sha512-mKXfwFGyDWdivbKm8/z3bHvzWo/ICytg3lfsY9/USaV9I27Vq5l/EmxkRIa3JVJFebsm9sKAFvU+r+WB8rBPPA==", "license": "MIT", "dependencies": { + "@babel/generator": "^7.20.5", "@babel/helper-module-imports": "^7.25.9", "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-export-default-from": "^7.24.7", @@ -18093,7 +18093,7 @@ "@babel/plugin-transform-runtime": "^7.24.7", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.83.1", + "@react-native/babel-preset": "0.83.2", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "~0.21.0", "babel-plugin-syntax-hermes-parser": "^0.29.1", @@ -18104,6 +18104,7 @@ "peerDependencies": { "@babel/runtime": "^7.20.0", "expo": "*", + "expo-widgets": "^55.0.0", "react-refresh": ">=0.14.0 <1.0.0" }, "peerDependenciesMeta": { @@ -18112,15 +18113,141 @@ }, "expo": { "optional": true + }, + "expo-widgets": { + "optional": true } } }, + "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.2.tgz", + "integrity": "sha512-XbcN/BEa64pVlb0Hb/E/Ph2SepjVN/FcNKrJcQvtaKZA6mBSO8pW8Eircdlr61/KBH94LihHbQoQDzkQFpeaTg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.83.2" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": { + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.2.tgz", + "integrity": "sha512-X/RAXDfe6W+om/Fw1i6htTxQXFhBJ2jgNOWx3WpI3KbjeIWbq7ib6vrpTeIAW2NUMg+K3mML1NzgD4dpZeqdjA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.83.2", + "babel-plugin-syntax-hermes-parser": "0.32.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", + "license": "MIT", + "dependencies": { + "hermes-parser": "0.32.0" + } + }, + "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.2.tgz", + "integrity": "sha512-9uK6X1miCXqtL4c759l74N/XbQeneWeQVjoV7SD2CGJuW7ZefxaoYenwGPs7rMoCdtS6wuIyR3hXQ+uWEBGYXA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.32.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, "node_modules/babel-preset-expo/node_modules/babel-plugin-react-native-web": { "version": "0.21.2", "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", "license": "MIT" }, + "node_modules/babel-preset-expo/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/babel-preset-jest": { "version": "29.6.3", "license": "MIT", @@ -21237,19 +21364,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/dotenv-expand": { - "version": "11.0.6", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.4" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "license": "MIT", @@ -21372,15 +21486,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/env-editor": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", - "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/env-paths": { "version": "2.2.1", "devOptional": true, @@ -22927,31 +23032,31 @@ } }, "node_modules/expo": { - "version": "55.0.0-preview.9", - "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0-preview.9.tgz", - "integrity": "sha512-/JtS2+U8Yq6wziNXIpG4tFpI4xLYtizlHrDe0biuZTY2UirtDSaCI3fBuGHQXKleUJpKArC9INEzXWLLFOPj+w==", + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0.tgz", + "integrity": "sha512-7/vIhW/gEa23r+BWMe81e2HnNFOp/gNhkkP7sFOoRhG7llcl85GJXgyxmvaapTTlzXY5u5RWqTKyXH5v6YD0QQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "55.0.6", - "@expo/config": "~55.0.4", - "@expo/config-plugins": "~55.0.4", + "@expo/cli": "55.0.11", + "@expo/config": "~55.0.8", + "@expo/config-plugins": "~55.0.6", "@expo/devtools": "55.0.2", - "@expo/fingerprint": "0.16.3", - "@expo/local-build-cache-provider": "55.0.3", - "@expo/log-box": "55.0.5", + "@expo/fingerprint": "0.16.5", + "@expo/local-build-cache-provider": "55.0.6", + "@expo/log-box": "55.0.7", "@expo/metro": "~54.2.0", - "@expo/metro-config": "55.0.4", + "@expo/metro-config": "55.0.8", "@expo/vector-icons": "^15.0.2", "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~55.0.3", - "expo-asset": "~55.0.3", - "expo-constants": "~55.0.3", - "expo-file-system": "~55.0.4", - "expo-font": "~55.0.3", - "expo-keep-awake": "~55.0.2", - "expo-modules-autolinking": "55.0.3", - "expo-modules-core": "55.0.7", + "babel-preset-expo": "~55.0.7", + "expo-asset": "~55.0.7", + "expo-constants": "~55.0.7", + "expo-file-system": "~55.0.9", + "expo-font": "~55.0.4", + "expo-keep-awake": "~55.0.4", + "expo-modules-autolinking": "55.0.8", + "expo-modules-core": "55.0.11", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", "whatwg-url-minimum": "^0.1.1" @@ -23008,13 +23113,13 @@ } }, "node_modules/expo-constants": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.3.tgz", - "integrity": "sha512-sIOWYnipMpgwz4X5lh7qBYW8pTgyn4ElylbVcUHaXWr9MTG7qEO2fwYGun/UxMMHPtcg8KDaBcdKlsL+sIfU3g==", + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.7.tgz", + "integrity": "sha512-kdcO4TsQRRqt0USvjaY5vgQMO9H52K3kBZ/ejC7F6rz70mv08GoowrZ1CYOr5O4JpPDRlIpQfZJUucaS/c+KWQ==", "license": "MIT", "dependencies": { - "@expo/config": "~55.0.4", - "@expo/env": "~2.0.11" + "@expo/config": "~55.0.8", + "@expo/env": "~2.1.1" }, "peerDependencies": { "expo": "*", @@ -23022,9 +23127,9 @@ } }, "node_modules/expo-file-system": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.4.tgz", - "integrity": "sha512-RdVqk2TZS3xfA13MI3GPzlvo435IS+y+po7B8lXA/3heWGqKgADPN3TOE/kAmeaDPaKoR4W3C3/IK3vbsSWu6g==", + "version": "55.0.9", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.9.tgz", + "integrity": "sha512-jJ0BMGSBk0YgyxG9GB71qLW+jSWqjWkRnOhSGn9ry98XL045faNKPJ7rq94ENmNjt98QLEm5I+NEvBxt/EYAdQ==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -23087,9 +23192,9 @@ } }, "node_modules/expo-keep-awake": { - "version": "55.0.2", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.2.tgz", - "integrity": "sha512-yxmmu0toMsszQN9ro8XuljicumudT4QwXiF7kswlDg5/48Y2HPfopod+8mOrIf7+UDUv99u6yH8NgSfWf0u+IA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.4.tgz", + "integrity": "sha512-vwfdMtMS5Fxaon8gC0AiE70SpxTsHJ+rjeoVJl8kdfdbxczF7OIaVmfjFJ5Gfigd/WZiLqxhfZk34VAkXF4PNg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -23109,16 +23214,15 @@ } }, "node_modules/expo-modules-autolinking": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.3.tgz", - "integrity": "sha512-C4Yc/D8BvQeZ2D30qOKVbMPAE5DzrVtdfYiSg44mCGZIKUNX1KELcAOxSOtzGbW5mFr+V0Og54TxM5TlT5Fr1g==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.8.tgz", + "integrity": "sha512-nrWB1pkNp7bR8ECUTgYUiJ2Pyh6AvxCBXZ+lyPlfl1TzEIGhwU1Yqr+d78eJDueXaW+9zKeE0HqrTZoLS3ve4A==", "license": "MIT", "dependencies": { + "@expo/require-utils": "^55.0.2", "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", - "commander": "^7.2.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0" + "commander": "^7.2.0" }, "bin": { "expo-modules-autolinking": "bin/expo-modules-autolinking.js" @@ -23226,9 +23330,9 @@ } }, "node_modules/expo-server": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.3.tgz", - "integrity": "sha512-DeFRWvLb7pcxqrvDFK95Eujh/VFddRfmTGbcTcPVMhYl6om7eKYe8CgpfqIi2mK0rOnLHw7DPymmcPXXWuFbFw==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.5.tgz", + "integrity": "sha512-cfoh1OwBjHPCwYD11wep12l5WGkVEmRbGSZEbE4u+08k1TkOyYhrWyI2o/iMcUMMT8u1sKsymHKsrC8Mv82V7A==", "license": "MIT", "engines": { "node": ">=20.16.0" @@ -23279,31 +23383,32 @@ } }, "node_modules/expo/node_modules/@expo/cli": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.6.tgz", - "integrity": "sha512-8FwxYr3Kqsdf+28iascenHZOf9VOEcqGk6e6jYg8YaG0C/ibIMpg/fL59cYOtOHiGNnjQAFTg3NW37qJNG656Q==", + "version": "55.0.11", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.11.tgz", + "integrity": "sha512-tSUQtJ1dr9G+N2+CS2ahP+JhYHuteoqfAzVJxCaRvMM6tuK13UWPfCCCY9X5fkkNs8EyUEGZ9bkpgeHaTt3rsA==", "license": "MIT", "dependencies": { "@expo/code-signing-certificates": "^0.0.6", - "@expo/config": "~55.0.4", - "@expo/config-plugins": "~55.0.4", + "@expo/config": "~55.0.8", + "@expo/config-plugins": "~55.0.6", "@expo/devcert": "^1.2.1", - "@expo/env": "~2.0.11", + "@expo/env": "~2.1.1", "@expo/image-utils": "^0.8.12", "@expo/json-file": "^10.0.12", - "@expo/log-box": "55.0.5", + "@expo/log-box": "55.0.7", "@expo/metro": "~54.2.0", - "@expo/metro-config": "~55.0.4", + "@expo/metro-config": "~55.0.8", "@expo/osascript": "^2.4.2", "@expo/package-manager": "^1.10.3", "@expo/plist": "^0.5.2", - "@expo/prebuild-config": "^55.0.4", - "@expo/router-server": "^55.0.5", + "@expo/prebuild-config": "^55.0.7", + "@expo/require-utils": "^55.0.2", + "@expo/router-server": "^55.0.8", "@expo/schema-utils": "^55.0.2", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", "@expo/xcpretty": "^4.4.0", - "@react-native/dev-middleware": "0.83.1", + "@react-native/dev-middleware": "0.83.2", "accepts": "^1.3.8", "arg": "^5.0.2", "better-opn": "~3.0.2", @@ -23314,24 +23419,20 @@ "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", - "dnssd-advertise": "^1.1.1", - "env-editor": "^0.4.1", - "expo-server": "^55.0.3", - "fetch-nodeshim": "^0.4.4", + "dnssd-advertise": "^1.1.3", + "expo-server": "^55.0.5", + "fetch-nodeshim": "^0.4.6", "getenv": "^2.0.0", "glob": "^13.0.0", - "lan-network": "^0.1.6", - "minimatch": "^9.0.0", + "lan-network": "^0.2.0", "multitars": "^0.2.3", "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", - "picomatch": "^3.0.1", + "picomatch": "^4.0.3", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", - "qrcode-terminal": "0.11.0", - "require-from-string": "^2.0.2", "resolve-from": "^5.0.0", "semver": "^7.6.0", "send": "^0.19.0", @@ -23340,6 +23441,7 @@ "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", "terminal-link": "^2.1.1", + "toqr": "^0.1.1", "wrap-ansi": "^7.0.0", "ws": "^8.12.1", "zod": "^3.25.76" @@ -23362,14 +23464,14 @@ } }, "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/metro-runtime": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.4.tgz", - "integrity": "sha512-WdZLtcOBqIiCWpuhWgH32VwjtqLn08VUxwJrYMPPtL3c19m9PnCANMhclctRTv4OStTo1xlKqSLdwDeJdd//ag==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.6.tgz", + "integrity": "sha512-l8VvgKN9md+URjeQDB+DnHVmvpcWI6zFLH6yv7GTv4sfRDKyaZ5zDXYjTP1phYdgW6ea2NrRtCGNIxylWhsgtg==", "license": "MIT", "optional": true, "peer": true, "dependencies": { - "@expo/log-box": "55.0.4", + "@expo/log-box": "55.0.7", "anser": "^1.4.9", "pretty-format": "^29.7.0", "stacktrace-parser": "^0.1.10", @@ -23387,40 +23489,21 @@ } } }, - "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/metro-runtime/node_modules/@expo/log-box": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.4.tgz", - "integrity": "sha512-H/PQ3hmueB20QXJ89pBG5Em1bcId0tJNjd8gELFRVzhye2Zl89hy7ezVOx2nBEpfexrvkPtnGtoIsfa7l9KrYQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@expo/dom-webview": "55.0.2", - "anser": "^1.4.9", - "stacktrace-parser": "^0.1.10" - }, - "peerDependencies": { - "@expo/dom-webview": "^55.0.2", - "expo": "*", - "react": "*", - "react-native": "*" - } - }, "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/router-server": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.5.tgz", - "integrity": "sha512-b23SgYujpeA0qHu2lZ/H1XXuvc4TaBo92VikPUZ48YtETXMlRnccPv5Rp7N2rS7Na51wOqBEv9auPihk3d8N+A==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.8.tgz", + "integrity": "sha512-kSyl6HliepOzuW6T78GtLSwmQ+XxtO9pG2boNbX7GW4oJqMsa0LbkG//5Xw/6HRrgSN0OlFbrZApN7yn7QJ6fw==", "license": "MIT", "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { - "@expo/metro-runtime": "^55.0.4", + "@expo/metro-runtime": "^55.0.6", "expo": "*", - "expo-constants": "^55.0.3", - "expo-font": "^55.0.3", + "expo-constants": "^55.0.7", + "expo-font": "^55.0.4", "expo-router": "*", - "expo-server": "^55.0.3", + "expo-server": "^55.0.5", "react": "*", "react-dom": "*", "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" @@ -23441,12 +23524,12 @@ } }, "node_modules/expo/node_modules/@expo/config-plugins": { - "version": "55.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.4.tgz", - "integrity": "sha512-7FBviIFvjVDxH3MKLY5fl+2hz4mZ1t7jcM1HXiFNEA2oNK5jD9TJtjfd+fnPGPTFDcE+aabCDWBHQmds3v1/Tw==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.6.tgz", + "integrity": "sha512-cIox6FjZlFaaX40rbQ3DvP9e87S5X85H9uw+BAxJE5timkMhuByy3GAlOsj1h96EyzSiol7Q6YIGgY1Jiz4M+A==", "license": "MIT", "dependencies": { - "@expo/config-types": "^55.0.4", + "@expo/config-types": "^55.0.5", "@expo/json-file": "~10.0.12", "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", @@ -23461,6 +23544,51 @@ "xml2js": "0.6.0" } }, + "node_modules/expo/node_modules/@react-native/debugger-frontend": { + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.2.tgz", + "integrity": "sha512-t4fYfa7xopbUF5S4+ihNEwgaq4wLZLKLY0Ms8z72lkMteVd3bOX2Foxa8E2wTfRvdhPOkSpOsTeNDmD8ON4DoQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/expo/node_modules/@react-native/debugger-shell": { + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.2.tgz", + "integrity": "sha512-z9go6NJMsLSDJT5MW6VGugRsZHjYvUTwxtsVc3uLt4U9W6T3J6FWI2wHpXIzd2dUkXRfAiRQ3Zi8ZQQ8fRFg9A==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/expo/node_modules/@react-native/dev-middleware": { + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.2.tgz", + "integrity": "sha512-Zi4EVaAm28+icD19NN07Gh8Pqg/84QQu+jn4patfWKNkcToRFP5vPEbbp0eLOGWS+BVB1d1Fn5lvMrJsBbFcOg==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.83.2", + "@react-native/debugger-shell": "0.83.2", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^7.5.10" + }, + "engines": { + "node": ">= 20.19.4" + } + }, "node_modules/expo/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23482,13 +23610,25 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "license": "MIT" }, + "node_modules/expo/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/expo/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/expo/node_modules/chalk": { @@ -23537,6 +23677,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/expo/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/expo/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -23547,13 +23696,13 @@ } }, "node_modules/expo/node_modules/expo-asset": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.3.tgz", - "integrity": "sha512-24orrYwSJuMvB8BfF+fPexe+Ily2wcgtUgLvb+izuANkP83iECXTXspzRVqo8uPB2EDF3uglnO3b04XQhjUpTQ==", + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.7.tgz", + "integrity": "sha512-MnL43vmzfk5yXsY4Y7Pbq1c4iM1Xo8Q/cRITfFiVQYkMDgcQ7OoBontHwJhAJCgu0IHQJz/2NsQT6iQ/oIy/kg==", "license": "MIT", "dependencies": { "@expo/image-utils": "^0.8.12", - "expo-constants": "~55.0.3" + "expo-constants": "~55.0.7" }, "peerDependencies": { "expo": "*", @@ -23562,9 +23711,9 @@ } }, "node_modules/expo/node_modules/expo-font": { - "version": "55.0.3", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.3.tgz", - "integrity": "sha512-DSyh0gzbVii5+Nb/0pAP3bL+CrB9u1N3YeKTx4wXQT8KUnuOlI4A0sEHIO25MfFpjjtovDn0WGzAtimbPkvJmg==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.4.tgz", + "integrity": "sha512-ZKeGTFffPygvY5dM/9ATM2p7QDkhsaHopH7wFAWgP2lKzqUMS9B/RxCvw5CaObr9Ro7x9YptyeRKX2HmgmMfrg==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" @@ -23576,9 +23725,9 @@ } }, "node_modules/expo/node_modules/expo-modules-core": { - "version": "55.0.7", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.7.tgz", - "integrity": "sha512-eoW4mfE4nXZQya1TuMbBGSvudqlSA/cg52tw7Mpmdu6WhZ2WQAmt8o/ltuHZRH19FFnoMtacClwcUgi6+z1LMg==", + "version": "55.0.11", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.11.tgz", + "integrity": "sha512-dD/Ea298aDX/Dk81XiD+VFMFU9tjcARgzfcvbFPvTvbGcimpM2sqNK3+ZiTweXYEgcx63CKKdo9pBZuPUypDXw==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -23589,32 +23738,17 @@ } }, "node_modules/expo/node_modules/glob": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz", - "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.2", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo/node_modules/glob/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -23704,9 +23838,9 @@ } }, "node_modules/expo/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -23722,15 +23856,15 @@ } }, "node_modules/expo/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -23828,28 +23962,28 @@ } }, "node_modules/expo/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/expo/node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -23880,6 +24014,21 @@ "node": ">=10" } }, + "node_modules/expo/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/expo/node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -24161,9 +24310,9 @@ "license": "MIT" }, "node_modules/fetch-nodeshim": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.5.tgz", - "integrity": "sha512-n6dRDiC+/TlluvZxGDBnyNYqPftkDFjJIvXluekSSGildXSXvMWXXo+1/yK363BOZlOI2Q+PitrcLcF5CSolEA==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.8.tgz", + "integrity": "sha512-YW5vG33rabBq6JpYosLNoXoaMN69/WH26MeeX2hkDVjN6UlvRGq3Wkazl9H0kisH95aMu/HtHL64JUvv/+Nv/g==", "license": "MIT" }, "node_modules/fflate": { @@ -29440,9 +29589,9 @@ } }, "node_modules/lan-network": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.1.7.tgz", - "integrity": "sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.2.0.tgz", + "integrity": "sha512-EZgbsXMrGS+oK+Ta12mCjzBFse+SIewGdwrSTr5g+MSymnjpox2x05ceI20PQejJOFvOgzcXrfDk/SdY7dSCtw==", "license": "MIT", "bin": { "lan-network": "dist/lan-network-cli.js" @@ -29775,6 +29924,7 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", + "devOptional": true, "license": "MIT" }, "node_modules/link": { @@ -30917,10 +31067,10 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -32776,14 +32926,6 @@ "node": ">=10.13.0" } }, - "node_modules/qrcode-terminal": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", - "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, "node_modules/qs": { "version": "6.13.0", "devOptional": true, @@ -36320,47 +36462,6 @@ "version": "0.1.3", "license": "MIT" }, - "node_modules/sucrase": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", - "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "tinyglobby": "^0.2.11", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/supercluster": { "version": "8.0.1", "license": "ISC", @@ -36905,6 +37006,7 @@ "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -36921,6 +37023,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -36938,6 +37041,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -36991,6 +37095,12 @@ "node": ">=0.6" } }, + "node_modules/toqr": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/toqr/-/toqr-0.1.1.tgz", + "integrity": "sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==", + "license": "MIT" + }, "node_modules/totalist": { "version": "3.0.1", "dev": true, @@ -37041,12 +37151,6 @@ "node": ">=6.10" } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" - }, "node_modules/ts-jest": { "version": "29.4.1", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.1.tgz", diff --git a/package.json b/package.json index 8853afc63d7e2..d22e6e83faead 100644 --- a/package.json +++ b/package.json @@ -124,14 +124,14 @@ "dom-serializer": "^0.2.2", "domhandler": "^5.0.3", "expensify-common": "2.0.171", - "expo": "55.0.0-preview.9", + "expo": "55.0.0", "expo-asset": "55.0.2", "expo-audio": "55.0.4", "expo-font": "14.0.8", "expo-image": "55.0.3", "expo-image-manipulator": "55.0.2", "expo-location": "55.0.3", - "expo-modules-core": "^55.0.4", + "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", "expo-task-manager": "55.0.2", @@ -392,25 +392,22 @@ }, "node-abi": "^3.78.0", "@fullstory/react-native": { - "expo": "55.0.0-preview.9" + "expo": "55.0.0" }, "@react-native-firebase/app": { - "expo": "55.0.0-preview.9" - }, - "@react-native-firebase/crashlytics": { - "expo": "55.0.0-preview.9" + "expo": "55.0.0" }, "@react-native-firebase/perf": { - "expo": "55.0.0-preview.9" + "expo": "55.0.0" }, "@react-native-google-signin/google-signin": { - "expo": "55.0.0-preview.9" + "expo": "55.0.0" }, "@rnmapbox/maps": { - "expo": "55.0.0-preview.9" + "expo": "55.0.0" }, "@sentry/react-native": { - "expo": "55.0.0-preview.9" + "expo": "55.0.0" } }, "expo": { From 22bc02da762cbc88efc0e3711d776d0f965145d3 Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 25 Feb 2026 15:57:07 +0100 Subject: [PATCH 37/56] chore: update Podfile.lock --- ios/Podfile.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 06a9e94929abb..532f4d1436baf 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -29,7 +29,7 @@ PODS: - AppLogs (0.1.0) - boost (1.84.0) - DoubleConversion (1.1.6) - - EXConstants (55.0.3): + - EXConstants (55.0.7): - ExpoModulesCore - expensify-react-native-background-task (0.0.0): - boost @@ -88,7 +88,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - Expo (55.0.0-preview.9): + - Expo (55.0.0): - boost - DoubleConversion - ExpoModulesCore @@ -123,7 +123,7 @@ PODS: - ExpoModulesCore - ExpoAudio (55.0.4): - ExpoModulesCore - - ExpoDomWebView (55.0.2): + - ExpoDomWebView (55.0.3): - ExpoModulesCore - ExpoFont (14.0.8): - ExpoModulesCore @@ -139,7 +139,7 @@ PODS: - SDWebImageWebPCoder - ExpoLocation (55.0.3): - ExpoModulesCore - - ExpoLogBox (55.0.5): + - ExpoLogBox (55.0.7): - React-Core - ExpoModulesCore (55.0.4): - boost @@ -4723,18 +4723,18 @@ SPEC CHECKSUMS: AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0 boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - EXConstants: 9b0ceaa3eb81fc2501ba4f857c1c108a5148c792 + EXConstants: b3c63be5f8648e4ab8e6ff5099b62f629247f969 expensify-react-native-background-task: 03c640e1f5649692d058cba48c0a138f024a6dd3 ExpensifyNitroUtils: 86109fe1ab88351ed63ffe11b760d537c70019d7 - Expo: 62d99b907188b1cef8c4386d7b75eec50d103119 + Expo: 941aee686e1fcc486956cdeb5961d9244e9da0aa ExpoAsset: afaa23466e93da462b918bff8d6a9fe15c646dc8 ExpoAudio: 14c5909ec48267bfc514bb44c546fcf6fac93837 - ExpoDomWebView: c0343b93dabed758db1e14ef1d1e570a1498562a + ExpoDomWebView: f101fb3db4b6eec4163fca51f7507189b7e48661 ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 ExpoImage: 8f835720453ed5be7764d9650aa1efde8109abc7 ExpoImageManipulator: ae244131e2c3da68a030332fcbd87287fbdd8f97 ExpoLocation: fec7703a4922c4748b380723669f771376ffbd05 - ExpoLogBox: 10ba15b7428e0020da6743a309f53fd553165112 + ExpoLogBox: 89b634d5a8a64c4a6a7caad8f9985a28463c7002 ExpoModulesCore: 1158e7941ddcff1677846dfdec27630e036e3904 ExpoModulesJSI: 455acaa72cb963ceb247df889c8e8cce3e6bbfe6 ExpoSecureStore: 3f1b632d6d40bcc62b4983ef9199cd079592a50a @@ -4881,7 +4881,7 @@ SPEC CHECKSUMS: RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8 RNGestureHandler: 4db26426b6098e3d87bd26d8c9a9afa3b6674123 RNGoogleSignin: 89877c73f0fbf6af2038fbdb7b73b5a25b8330cc - RNLiveMarkdown: 60621617bc0504ac39669e3a8d1e9cadf1ada34f + RNLiveMarkdown: 589e31da57c2cb6d98b37ac68ae8b0b256247172 RNLocalize: 05e367a873223683f0e268d0af9a8a8e6aed3b26 rnmapbox-maps: 392ac61c42a9ff01a51d4c2f6775d9131b5951fb RNNitroSQLite: fb251387cfbee73b100cd484a3c886fda681b3b5 From e7b14964454503c20fa9fa162d4e05e52bd8c20d Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 26 Feb 2026 14:15:17 +0100 Subject: [PATCH 38/56] fix: navigation to concierge --- .../GetStateForActionHandlers.ts | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts b/src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts index b9a8ad120b0c3..20d1452bcd7a4 100644 --- a/src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts +++ b/src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts @@ -114,6 +114,20 @@ function handleOpenDomainSplitAction( return prepareStateUnderWorkspaceOrDomainNavigator(state, configOptions, stackRouter, actionToPushDomainSplitNavigator, NAVIGATORS.DOMAIN_SPLIT_NAVIGATOR); } +/** + * Filters preloaded routes when navigating to a central screen of a split navigator on narrow layout. + * This removes the sidebar screen from the state so only the central screen is shown. + */ +function getStateWithFilteredPreloadedRoutes(state: StackNavigationState, navigatorName: string, targetScreen?: string) { + const shouldFilterPreloadedRoutes = + getIsNarrowLayout() && + isSplitNavigatorName(navigatorName) && + targetScreen !== SPLIT_TO_SIDEBAR[navigatorName] && + state.preloadedRoutes?.some((preloadedRoute) => preloadedRoute.name === navigatorName); + + return shouldFilterPreloadedRoutes ? {...state, preloadedRoutes: state.preloadedRoutes.filter((preloadedRoute) => preloadedRoute.name !== navigatorName)} : state; +} + function handlePushFullscreenAction( state: StackNavigationState, action: PushActionType, @@ -122,15 +136,7 @@ function handlePushFullscreenAction( ) { const targetScreen = action.payload?.params && 'screen' in action.payload.params ? (action.payload?.params?.screen as string) : undefined; const navigatorName = action.payload.name; - - // If we navigate to the central screen of the split navigator, we need to filter this navigator from preloadedRoutes to remove a sidebar screen from the state - const shouldFilterPreloadedRoutes = - getIsNarrowLayout() && - isSplitNavigatorName(navigatorName) && - targetScreen !== SPLIT_TO_SIDEBAR[navigatorName] && - state.preloadedRoutes?.some((preloadedRoute) => preloadedRoute.name === navigatorName); - - const adjustedState = shouldFilterPreloadedRoutes ? {...state, preloadedRoutes: state.preloadedRoutes.filter((preloadedRoute) => preloadedRoute.name !== navigatorName)} : state; + const adjustedState = getStateWithFilteredPreloadedRoutes(state, navigatorName, targetScreen); const stateWithNavigator = stackRouter.getStateForAction(adjustedState, action, configOptions); if (!stateWithNavigator) { @@ -154,7 +160,10 @@ function handleReplaceReportsSplitNavigatorAction( configOptions: RouterConfigOptions, stackRouter: Router, CommonActions.Action | StackActionType>, ) { - const stateWithReportsSplitNavigator = stackRouter.getStateForAction(state, action, configOptions); + const targetScreen = action.payload?.params && 'screen' in action.payload.params ? (action.payload?.params?.screen as string) : undefined; + const navigatorName = action.payload.name; + const adjustedState = getStateWithFilteredPreloadedRoutes(state, navigatorName, targetScreen); + const stateWithReportsSplitNavigator = stackRouter.getStateForAction(adjustedState, action, configOptions); if (!stateWithReportsSplitNavigator) { Log.hmmm('[handleReplaceReportsSplitNavigatorAction] ReportsSplitNavigator has not been found in the navigation state.'); From b0011ad4b00b4598292c8fc584f7f036cc474e18 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 2 Mar 2026 16:51:57 +0100 Subject: [PATCH 39/56] fix: textInput autofocus when navigating back --- patches/react-native/details.md | 7 +++++++ ...28+fix-view-stealing-first-responder.patch.patch | 13 +++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 patches/react-native/react-native+0.83.1+028+fix-view-stealing-first-responder.patch.patch diff --git a/patches/react-native/details.md b/patches/react-native/details.md index 18d5ef2640752..4b048848217e3 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -210,3 +210,10 @@ - Upstream PR/issue: https://github.com/facebook/react-native/pull/55706 - E/App issue: https://github.com/Expensify/App/issues/75120 - PR Introducing Patch: https://github.com/Expensify/App/pull/79962 + +### [react-native+0.83.1+028+fix-view-stealing-first-responder.patch](react-native+0.83.1+028+fix-view-stealing-first-responder.patch) + +- Reason: In RN 0.83, `RCTViewComponentView.canBecomeFirstResponder` unconditionally returns `YES` (added for the `enableImperativeFocus` feature). This causes UIKit to promote parent views to first responder after navigation transitions complete (`_promoteSelfOrDescendantToFirstResponderIfNecessary`), stealing focus from text inputs and triggering an immediate focus→blur cycle. The fix gates `canBecomeFirstResponder` behind the `enableImperativeFocus` feature flag, which defaults to `false`. +- Upstream PR/issue: 🛑 +- E/App issue: 🛑 +- PR Introducing Patch: 🛑 diff --git a/patches/react-native/react-native+0.83.1+028+fix-view-stealing-first-responder.patch.patch b/patches/react-native/react-native+0.83.1+028+fix-view-stealing-first-responder.patch.patch new file mode 100644 index 0000000000000..377917351e52c --- /dev/null +++ b/patches/react-native/react-native+0.83.1+028+fix-view-stealing-first-responder.patch.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +index 0b26c95..b898492 100644 +--- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm ++++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +@@ -1617,7 +1617,7 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view) + + - (BOOL)canBecomeFirstResponder + { +- return YES; ++ return ReactNativeFeatureFlags::enableImperativeFocus(); + } + + - (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args From c2f180372c33521fac85e476d2f6f783587b4dd4 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 2 Mar 2026 16:56:26 +0100 Subject: [PATCH 40/56] chore: rename patches --- ...atch => react-native+0.83.1+028+strip-hermes-debug-info.patch} | 0 ...tive+0.83.1+029+fix-view-stealing-first-responder.patch.patch} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename patches/react-native/{react-native+0.81.4+028+strip-hermes-debug-info.patch => react-native+0.83.1+028+strip-hermes-debug-info.patch} (100%) rename patches/react-native/{react-native+0.83.1+028+fix-view-stealing-first-responder.patch.patch => react-native+0.83.1+029+fix-view-stealing-first-responder.patch.patch} (100%) diff --git a/patches/react-native/react-native+0.81.4+028+strip-hermes-debug-info.patch b/patches/react-native/react-native+0.83.1+028+strip-hermes-debug-info.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+028+strip-hermes-debug-info.patch rename to patches/react-native/react-native+0.83.1+028+strip-hermes-debug-info.patch diff --git a/patches/react-native/react-native+0.83.1+028+fix-view-stealing-first-responder.patch.patch b/patches/react-native/react-native+0.83.1+029+fix-view-stealing-first-responder.patch.patch similarity index 100% rename from patches/react-native/react-native+0.83.1+028+fix-view-stealing-first-responder.patch.patch rename to patches/react-native/react-native+0.83.1+029+fix-view-stealing-first-responder.patch.patch From 1973b6ee0d527723c8aacdaadd1defd4c4b114a3 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 2 Mar 2026 17:13:03 +0100 Subject: [PATCH 41/56] chore: update @expo/metro-runtime --- package-lock.json | 35 +++++------------------------------ package.json | 2 +- 2 files changed, 6 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff02a3e0bc4c0..628021eb927b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@expensify/react-native-hybrid-app": "file:./modules/hybrid-app", "@expensify/react-native-live-markdown": "0.1.324", "@expensify/react-native-wallet": "0.1.11", - "@expo/metro-runtime": "^6.0.2", + "@expo/metro-runtime": "55.0.6", "@formatjs/intl-listformat": "^7.5.7", "@formatjs/intl-locale": "^4.0.0", "@formatjs/intl-numberformat": "^8.10.3", @@ -6857,11 +6857,12 @@ } }, "node_modules/@expo/metro-runtime": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-6.1.2.tgz", - "integrity": "sha512-nvM+Qv45QH7pmYvP8JB1G8JpScrWND3KrMA6ZKe62cwwNiX/BjHU28Ear0v/4bQWXlOY0mv6B8CDIm8JxXde9g==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.6.tgz", + "integrity": "sha512-l8VvgKN9md+URjeQDB+DnHVmvpcWI6zFLH6yv7GTv4sfRDKyaZ5zDXYjTP1phYdgW6ea2NrRtCGNIxylWhsgtg==", "license": "MIT", "dependencies": { + "@expo/log-box": "55.0.7", "anser": "^1.4.9", "pretty-format": "^29.7.0", "stacktrace-parser": "^0.1.10", @@ -23581,32 +23582,6 @@ } } }, - "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/metro-runtime": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.6.tgz", - "integrity": "sha512-l8VvgKN9md+URjeQDB+DnHVmvpcWI6zFLH6yv7GTv4sfRDKyaZ5zDXYjTP1phYdgW6ea2NrRtCGNIxylWhsgtg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@expo/log-box": "55.0.7", - "anser": "^1.4.9", - "pretty-format": "^29.7.0", - "stacktrace-parser": "^0.1.10", - "whatwg-fetch": "^3.0.0" - }, - "peerDependencies": { - "expo": "*", - "react": "*", - "react-dom": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/router-server": { "version": "55.0.8", "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.8.tgz", diff --git a/package.json b/package.json index fa301781468e2..d21594eeaea99 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "@expensify/react-native-hybrid-app": "file:./modules/hybrid-app", "@expensify/react-native-live-markdown": "0.1.324", "@expensify/react-native-wallet": "0.1.11", - "@expo/metro-runtime": "^6.0.2", + "@expo/metro-runtime": "55.0.6", "@formatjs/intl-listformat": "^7.5.7", "@formatjs/intl-locale": "^4.0.0", "@formatjs/intl-numberformat": "^8.10.3", From d35ec89ff1529be65abd8764c7ddc8a48bd353a0 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 2 Mar 2026 17:27:12 +0100 Subject: [PATCH 42/56] fix: prettier --- jest/setup.ts | 2 +- src/components/Image/BaseImage.native.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jest/setup.ts b/jest/setup.ts index 621123471a62b..c70512a75becb 100644 --- a/jest/setup.ts +++ b/jest/setup.ts @@ -4,7 +4,6 @@ import * as core from '@actions/core'; import '@shopify/flash-list/jestSetup'; import type {ReactNode} from 'react'; import {useMemo} from 'react'; -import {TextDecoder, TextEncoder} from 'util'; import type * as RNAppLogs from 'react-native-app-logs'; import type {ReadDirItem} from 'react-native-fs'; import 'react-native-gesture-handler/jestSetup'; @@ -12,6 +11,7 @@ import type * as RNKeyboardController from 'react-native-keyboard-controller'; import mockStorage from 'react-native-onyx/dist/storage/__mocks__'; import type Animated from 'react-native-reanimated'; import 'setimmediate'; +import {TextDecoder, TextEncoder} from 'util'; import * as MockedSecureStore from '@src/libs/MultifactorAuthentication/Biometrics/SecureStore/index.web'; import '@src/polyfills/PromiseWithResolvers'; import mockFSLibrary from './setupMockFullstoryLib'; diff --git a/src/components/Image/BaseImage.native.tsx b/src/components/Image/BaseImage.native.tsx index 0dcaf2a353b01..fd9a161847cf4 100644 --- a/src/components/Image/BaseImage.native.tsx +++ b/src/components/Image/BaseImage.native.tsx @@ -1,5 +1,5 @@ import {Image as ExpoImage} from 'expo-image'; -import type {ImageLoadEventData, ImageProps as ExpoImageProps} from 'expo-image'; +import type {ImageProps as ExpoImageProps, ImageLoadEventData} from 'expo-image'; import {useCallback, useContext, useEffect, useRef} from 'react'; import type {AttachmentSource} from '@components/Attachments/types'; import getImageRecyclingKey from '@libs/getImageRecyclingKey'; From 81f37359080fd041acd4f63ca9e8d04f103dc95e Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 2 Mar 2026 17:27:26 +0100 Subject: [PATCH 43/56] fix: rename patches --- patches/react-native/details.md | 4 ++-- ... => react-native+0.83.1+027+strip-hermes-debug-info.patch} | 0 ... react-native+0.83.1+028+fix-fetching-files-android.patch} | 0 ...native+0.83.1+029+fix-view-stealing-first-responder.patch} | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename patches/react-native/{react-native+0.83.1+028+strip-hermes-debug-info.patch => react-native+0.83.1+027+strip-hermes-debug-info.patch} (100%) rename patches/react-native/{react-native+0.83.1+027+fix-fetching-files-android.patch => react-native+0.83.1+028+fix-fetching-files-android.patch} (100%) rename patches/react-native/{react-native+0.83.1+029+fix-view-stealing-first-responder.patch.patch => react-native+0.83.1+029+fix-view-stealing-first-responder.patch} (100%) diff --git a/patches/react-native/details.md b/patches/react-native/details.md index 6295c2a9c5908..1f039eccf6743 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -204,14 +204,14 @@ - E/App issue: [#76859](https://github.com/Expensify/App/issues/76859) - PR introducing patch: [#76154](https://github.com/Expensify/App/pull/76154) -### [react-native+0.81.4+028+strip-hermes-debug-info.patch](react-native+0.81.4+028+strip-hermes-debug-info.patch) +### [react-native+0.83.1+027+strip-hermes-debug-info.patch](react-native+0.83.1+027+strip-hermes-debug-info.patch) - Reason: Always pass `-output-source-map` to `hermesc` for production iOS builds, stripping ~13.4MB of debug metadata from the Hermes bytecode. Previously this flag was only passed when `SOURCEMAP_FILE` was set; if the build environment didn't propagate that variable, debug info remained in the shipped bundle. - Upstream PR/issue: This should ideally be the default behavior upstream, but no PR has been filed yet. - E/App issue: [#83000](https://github.com/Expensify/App/issues/83000) - PR introducing patch: [#83256](https://github.com/Expensify/App/pull/83256) -### [react-native+0.83.1+027+fix-fetching-files-android.patch](react-native+0.83.1+027+fix-fetching-files-android.patch) +### [react-native+0.83.1+028+fix-fetching-files-android.patch](react-native+0.83.1+028+fix-fetching-files-android.patch) - Reason: Fixes fetching files (blobs, file URIs) on Android - Upstream PR/issue: https://github.com/facebook/react-native/pull/55706 diff --git a/patches/react-native/react-native+0.83.1+028+strip-hermes-debug-info.patch b/patches/react-native/react-native+0.83.1+027+strip-hermes-debug-info.patch similarity index 100% rename from patches/react-native/react-native+0.83.1+028+strip-hermes-debug-info.patch rename to patches/react-native/react-native+0.83.1+027+strip-hermes-debug-info.patch diff --git a/patches/react-native/react-native+0.83.1+027+fix-fetching-files-android.patch b/patches/react-native/react-native+0.83.1+028+fix-fetching-files-android.patch similarity index 100% rename from patches/react-native/react-native+0.83.1+027+fix-fetching-files-android.patch rename to patches/react-native/react-native+0.83.1+028+fix-fetching-files-android.patch diff --git a/patches/react-native/react-native+0.83.1+029+fix-view-stealing-first-responder.patch.patch b/patches/react-native/react-native+0.83.1+029+fix-view-stealing-first-responder.patch similarity index 100% rename from patches/react-native/react-native+0.83.1+029+fix-view-stealing-first-responder.patch.patch rename to patches/react-native/react-native+0.83.1+029+fix-view-stealing-first-responder.patch From a579a92a6bb4d751d443c95ba65df0cdace94f85 Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 3 Mar 2026 17:42:58 +0100 Subject: [PATCH 44/56] fix: lazy loading illustrations on Android dev --- patches/expo/details.md | 18 ++++++++++++++++++ ...0.0+001+fix-hmrclient-race-condition.patch | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 patches/expo/details.md create mode 100644 patches/expo/expo+55.0.0+001+fix-hmrclient-race-condition.patch diff --git a/patches/expo/details.md b/patches/expo/details.md new file mode 100644 index 0000000000000..31a20ce0b0a42 --- /dev/null +++ b/patches/expo/details.md @@ -0,0 +1,18 @@ +# `expo` patches + +### [expo+55.0.0+001+fix-hmrclient-race-condition.patch](expo+55.0.0+001+fix-hmrclient-race-condition.patch) + +- Reason: + + ``` + On native platforms, HMRClient.setup() is called asynchronously from native code (DevServerHelper.cpp), + but registerBundle() can be called synchronously during module loading when a dynamic import() triggers. + This race condition causes a crash: "Expected HMRClient.setup() call at startup." + The fix queues entry points in pendingEntryPoints when hmrClient is not yet initialized, + matching the existing pattern used by the log() method. Queued entry points are processed + when setup() eventually calls registerBundleEntryPoints(). + ``` + +- Upstream PR/issue: TODO +- E/App issue: TODO +- PR introducing patch: TODO \ No newline at end of file diff --git a/patches/expo/expo+55.0.0+001+fix-hmrclient-race-condition.patch b/patches/expo/expo+55.0.0+001+fix-hmrclient-race-condition.patch new file mode 100644 index 0000000000000..76df688308236 --- /dev/null +++ b/patches/expo/expo+55.0.0+001+fix-hmrclient-race-condition.patch @@ -0,0 +1,19 @@ +diff --git a/node_modules/expo/src/async-require/hmr.ts b/node_modules/expo/src/async-require/hmr.ts +index c0ea71e..811f667 100644 +--- a/node_modules/expo/src/async-require/hmr.ts ++++ b/node_modules/expo/src/async-require/hmr.ts +@@ -92,9 +92,12 @@ const HMRClient = { + }, + + registerBundle(requestUrl: string) { +- assert(hmrClient, 'Expected HMRClient.setup() call at startup.'); + pendingEntryPoints.push(requestUrl); +- registerBundleEntryPoints(hmrClient); ++ if (hmrClient) { ++ registerBundleEntryPoints(hmrClient); ++ } ++ // If hmrClient is not yet initialized, entry points will be ++ // processed when setup() calls registerBundleEntryPoints(). + }, + + log(level: LogLevel, data: any[]) { From fd2730f9480bd88dc8e8c7c616cbf598f3277f8c Mon Sep 17 00:00:00 2001 From: war-in Date: Tue, 3 Mar 2026 17:53:57 +0100 Subject: [PATCH 45/56] fix: package-lock.json --- package-lock.json | 370 +++++----------------------------------------- 1 file changed, 41 insertions(+), 329 deletions(-) diff --git a/package-lock.json b/package-lock.json index bb628b396f576..8f322fa93c0e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -457,27 +457,6 @@ "node": ">=6.0.0" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", @@ -4772,121 +4751,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "dev": true, @@ -20772,20 +20636,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -20996,47 +20846,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -26206,30 +26015,6 @@ "node": ">=8.0.0" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/http-proxy-middleware": { "version": "2.0.7", "dev": true, @@ -28061,6 +27846,21 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/jest-environment-jsdom/node_modules/jsdom": { "version": "20.0.3", "dev": true, @@ -28116,6 +27916,32 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/jest-environment-jsdom/node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom/node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/jest-environment-jsdom/node_modules/tr46": { "version": "3.0.0", "dev": true, @@ -28166,47 +27992,6 @@ "node": ">=12" } }, - "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/jest-environment-node": { "version": "29.7.0", "license": "MIT", @@ -35553,13 +35338,6 @@ "rock": "dist/src/bin.js" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, "node_modules/run-applescript": { "version": "7.0.0", "dev": true, @@ -37668,26 +37446,6 @@ "node": ">=14.0.0" } }, - "node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.86" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", - "dev": true, - "license": "MIT" - }, "node_modules/tmpl": { "version": "1.0.5", "license": "BSD-3-Clause" @@ -37723,19 +37481,6 @@ "node": ">=6" } }, - "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/tr46": { "version": "0.0.3", "license": "MIT" @@ -38519,19 +38264,6 @@ "pbf": "^3.2.1" } }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/wait-port": { "version": "0.2.14", "dev": true, @@ -39089,16 +38821,6 @@ "version": "3.6.2", "license": "MIT" }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/whatwg-url": { "version": "5.0.0", "license": "MIT", @@ -39480,16 +39202,6 @@ "node": ">=0.8" } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, "node_modules/xml2js": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", From e4ce62fa838018cacf2b25470fbe30e71e767734 Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 4 Mar 2026 15:04:19 +0100 Subject: [PATCH 46/56] chore: add RN patch details --- patches/react-native/details.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/react-native/details.md b/patches/react-native/details.md index 1f039eccf6743..53ec179f15b82 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -221,6 +221,6 @@ ### [react-native+0.83.1+029+fix-view-stealing-first-responder.patch](react-native+0.83.1+029+fix-view-stealing-first-responder.patch) - Reason: In RN 0.83, `RCTViewComponentView.canBecomeFirstResponder` unconditionally returns `YES` (added for the `enableImperativeFocus` feature). This causes UIKit to promote parent views to first responder after navigation transitions complete (`_promoteSelfOrDescendantToFirstResponderIfNecessary`), stealing focus from text inputs and triggering an immediate focus→blur cycle. The fix gates `canBecomeFirstResponder` behind the `enableImperativeFocus` feature flag, which defaults to `false`. -- Upstream PR/issue: 🛑 -- E/App issue: 🛑 -- PR Introducing Patch: 🛑 +- Upstream PR/issue: https://github.com/facebook/react-native/pull/55908 +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR Introducing Patch: https://github.com/Expensify/App/pull/79962 From 6e4cc2191de5ed517529e899835d85876d54a078 Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 5 Mar 2026 13:51:25 +0100 Subject: [PATCH 47/56] fix: wrong avatar image orientation --- patches/react-native/details.md | 7 +++ ...tive+0.83.1+030+fix-exif-orientation.patch | 57 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 patches/react-native/react-native+0.83.1+030+fix-exif-orientation.patch diff --git a/patches/react-native/details.md b/patches/react-native/details.md index 53ec179f15b82..4858930d28005 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -224,3 +224,10 @@ - Upstream PR/issue: https://github.com/facebook/react-native/pull/55908 - E/App issue: https://github.com/Expensify/App/issues/75120 - PR Introducing Patch: https://github.com/Expensify/App/pull/79962 + +### [react-native+0.83.1+030+fix-exif-orientation.patch](react-native+0.83.1+030+fix-exif-orientation.patch) + +- Reason: In RN 0.83, PR [#54127](https://github.com/facebook/react-native/pull/54127) changed `RCTDecodeImageWithData` to use `CGImageSourceCreateImageAtIndex` instead of `CGImageSourceCreateThumbnailAtIndex` for full-size images (to fix memory crashes with large images). However, `CGImageSourceCreateImageAtIndex` does NOT apply EXIF orientation transform to pixels, unlike the previous thumbnail API which used `kCGImageSourceCreateThumbnailWithTransform`. The code still hardcodes `UIImageOrientationUp`, so EXIF orientation is silently lost. This causes camera-captured images (which have EXIF orientation metadata) to appear rotated when processed by `expo-image-manipulator`. The fix reads the EXIF orientation from image properties and passes it to `UIImage` for the full-size code path. +- Upstream PR/issue: TBD +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR Introducing Patch: https://github.com/Expensify/App/pull/79962 diff --git a/patches/react-native/react-native+0.83.1+030+fix-exif-orientation.patch b/patches/react-native/react-native+0.83.1+030+fix-exif-orientation.patch new file mode 100644 index 0000000000000..c809e9cc8b1f3 --- /dev/null +++ b/patches/react-native/react-native+0.83.1+030+fix-exif-orientation.patch @@ -0,0 +1,57 @@ +diff --git a/node_modules/react-native/Libraries/Image/RCTImageUtils.mm b/node_modules/react-native/Libraries/Image/RCTImageUtils.mm +index d41a26f..5c19949 100644 +--- a/node_modules/react-native/Libraries/Image/RCTImageUtils.mm ++++ b/node_modules/react-native/Libraries/Image/RCTImageUtils.mm +@@ -55,6 +55,30 @@ static CGImagePropertyOrientation CGImagePropertyOrientationFromUIImageOrientati + } + } + ++static UIImageOrientation UIImageOrientationFromCGImagePropertyOrientation(CGImagePropertyOrientation cgOrientation) ++{ ++ switch (cgOrientation) { ++ case kCGImagePropertyOrientationUp: ++ return UIImageOrientationUp; ++ case kCGImagePropertyOrientationDown: ++ return UIImageOrientationDown; ++ case kCGImagePropertyOrientationLeft: ++ return UIImageOrientationLeft; ++ case kCGImagePropertyOrientationRight: ++ return UIImageOrientationRight; ++ case kCGImagePropertyOrientationUpMirrored: ++ return UIImageOrientationUpMirrored; ++ case kCGImagePropertyOrientationDownMirrored: ++ return UIImageOrientationDownMirrored; ++ case kCGImagePropertyOrientationLeftMirrored: ++ return UIImageOrientationLeftMirrored; ++ case kCGImagePropertyOrientationRightMirrored: ++ return UIImageOrientationRightMirrored; ++ default: ++ return UIImageOrientationUp; ++ } ++} ++ + CGRect RCTTargetRect(CGSize sourceSize, CGSize destSize, CGFloat destScale, RCTResizeMode resizeMode) + { + if (CGSizeEqualToSize(destSize, CGSizeZero)) { +@@ -270,6 +294,8 @@ UIImage *__nullable RCTDecodeImageWithData(NSData *data, CGSize destSize, CGFloa + NSNumber *width = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth); + NSNumber *height = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight); + CGSize sourceSize = {width.doubleValue, height.doubleValue}; ++ NSNumber *exifOrientation = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyOrientation); ++ CGImagePropertyOrientation cgOrientation = exifOrientation ? (CGImagePropertyOrientation)[exifOrientation integerValue] : kCGImagePropertyOrientationUp; + CFRelease(imageProperties); + + if (CGSizeEqualToSize(destSize, CGSizeZero)) { +@@ -321,7 +347,11 @@ UIImage *__nullable RCTDecodeImageWithData(NSData *data, CGSize destSize, CGFloa + } + + // Return image +- UIImage *image = [UIImage imageWithCGImage:imageRef scale:destScale orientation:UIImageOrientationUp]; ++ // For thumbnails, kCGImageSourceCreateThumbnailWithTransform already rotates pixels, so use Up. ++ // For full-size images, CGImageSourceCreateImageAtIndex does NOT apply EXIF transform, ++ // so we must preserve the original EXIF orientation for correct display. ++ UIImageOrientation orientation = createThumbnail ? UIImageOrientationUp : UIImageOrientationFromCGImagePropertyOrientation(cgOrientation); ++ UIImage *image = [UIImage imageWithCGImage:imageRef scale:destScale orientation:orientation]; + CGImageRelease(imageRef); + return image; + } From 79088915bd3392a3afb373b3bc3b7a5b6e648c51 Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 5 Mar 2026 14:29:23 +0100 Subject: [PATCH 48/56] chore: post-merge fixed --- package-lock.json | 1339 +++++++++++++++++++++++++++------------------ 1 file changed, 794 insertions(+), 545 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4836c7acef4d..5944bf50eea27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "9.3.31-2", + "version": "9.3.31-4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "9.3.31-2", + "version": "9.3.31-4", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -117,7 +117,7 @@ "react-native-localize": "^3.5.4", "react-native-nitro-modules": "0.29.4", "react-native-nitro-sqlite": "9.2.0", - "react-native-onyx": "3.0.41", + "react-native-onyx": "3.0.42", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", @@ -1675,9 +1675,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", - "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", @@ -1762,13 +1762,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", - "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -2124,12 +2124,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", - "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -3786,17 +3786,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", - "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/generator": "^7.28.6", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.6", + "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -3805,25 +3805,27 @@ }, "node_modules/@babel/traverse--for-generate-function-map": { "name": "@babel/traverse", - "version": "7.25.7", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", - "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -5904,9 +5906,9 @@ } }, "node_modules/@expo/config/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -5985,9 +5987,9 @@ } }, "node_modules/@expo/config/node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" @@ -6176,6 +6178,8 @@ }, "node_modules/@expo/env/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -6189,6 +6193,8 @@ }, "node_modules/@expo/env/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -6203,6 +6209,8 @@ }, "node_modules/@expo/env/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -6213,10 +6221,14 @@ }, "node_modules/@expo/env/node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/@expo/env/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { "node": ">=8" @@ -6224,6 +6236,8 @@ }, "node_modules/@expo/env/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6285,9 +6299,9 @@ } }, "node_modules/@expo/fingerprint/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -6366,9 +6380,9 @@ } }, "node_modules/@expo/fingerprint/node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" @@ -6706,9 +6720,9 @@ } }, "node_modules/@expo/metro-config/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -6802,9 +6816,9 @@ } }, "node_modules/@expo/metro-config/node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" @@ -6880,6 +6894,38 @@ } } }, + "node_modules/@expo/metro/node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/@expo/metro/node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, "node_modules/@expo/osascript": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.4.2.tgz", @@ -7208,9 +7254,9 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "55.0.7", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.7.tgz", - "integrity": "sha512-NNfUmUss0ykzzITeIIZQrG/mQnFE6k3usMuUY0RQPoB4omUNHuHcPqEPmojVsIHFigD7CkAH6RvEL0/syuewBA==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.8.tgz", + "integrity": "sha512-VJNJiOmmZgyDnR7JMmc3B8Z0ZepZ17I8Wtw+wAH/2+UCUsFg588XU+bwgYcFGw+is28kwGjY46z43kfufpxOnA==", "license": "MIT", "dependencies": { "@expo/config": "~55.0.8", @@ -7280,9 +7326,9 @@ } }, "node_modules/@expo/prebuild-config/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -7361,9 +7407,9 @@ } }, "node_modules/@expo/prebuild-config/node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" @@ -7463,9 +7509,9 @@ "license": "MIT" }, "node_modules/@expo/vector-icons": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.0.2.tgz", - "integrity": "sha512-IiBjg7ZikueuHNf40wSGCf0zS73a3guJLdZzKnDUxsauB8VWPLMeWnRIupc+7cFhLUkqyvyo0jLNlcxG5xPOuQ==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.1.1.tgz", + "integrity": "sha512-Iu2VkcoI5vygbtYngm7jb4ifxElNVXQYdDrYkT7UCEIiKLeWnQY0wf2ZhHZ+Wro6Sc5TaumpKUOqDRpLi5rkvw==", "license": "MIT", "peerDependencies": { "expo-font": ">=14.0.4", @@ -9162,6 +9208,8 @@ }, "node_modules/@isaacs/ttlcache": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", "license": "ISC", "engines": { "node": ">=12" @@ -12128,16 +12176,6 @@ "@babel/core": "*" } }, - "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", - "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "hermes-parser": "0.32.0" - } - }, "node_modules/@react-native/codegen": { "version": "0.83.1", "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", @@ -12163,7 +12201,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -12365,8 +12403,6 @@ }, "node_modules/@react-navigation/core": { "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.10.0.tgz", - "integrity": "sha512-qZBA5gGm+9liT4+EHk+kl9apwvqh7HqhLF1XeX6SQRmC/n2QI0u1B8OevKc+EPUDEM9Od15IuwT/GRbSs7/Umw==", "license": "MIT", "dependencies": { "@react-navigation/routers": "^7.4.0", @@ -12385,6 +12421,13 @@ "version": "19.1.0", "license": "MIT" }, + "node_modules/@react-navigation/core/node_modules/use-latest-callback": { + "version": "0.2.3", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, "node_modules/@react-navigation/devtools": { "version": "6.0.10", "dev": true, @@ -12463,10 +12506,15 @@ "react-native-screens": ">= 4.0.0" } }, + "node_modules/@react-navigation/native/node_modules/use-latest-callback": { + "version": "0.2.3", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, "node_modules/@react-navigation/routers": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", - "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", + "version": "7.4.0", "license": "MIT", "dependencies": { "nanoid": "^3.3.11" @@ -13030,6 +13078,40 @@ "node": ">=4" } }, + "node_modules/@rock-js/plugin-metro/node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "dev": true, + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/@rock-js/plugin-metro/node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, "node_modules/@rock-js/plugin-metro/node_modules/open": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", @@ -16236,9 +16318,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.8", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.8.tgz", - "integrity": "sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -18122,27 +18204,12 @@ "license": "MIT" }, "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", - "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.29.1" - } - }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", "license": "MIT", "dependencies": { - "hermes-estree": "0.29.1" + "hermes-parser": "0.32.0" } }, "node_modules/babel-plugin-transform-flow-enums": { @@ -18202,9 +18269,9 @@ } }, "node_modules/babel-preset-expo": { - "version": "55.0.7", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.7.tgz", - "integrity": "sha512-mKXfwFGyDWdivbKm8/z3bHvzWo/ICytg3lfsY9/USaV9I27Vq5l/EmxkRIa3JVJFebsm9sKAFvU+r+WB8rBPPA==", + "version": "55.0.10", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.10.tgz", + "integrity": "sha512-aRtW7qJKohGU2V0LUJ6IeP7py3+kVUo9zcc8+v1Kix8jGGuIvqvpo9S6W1Fmn9VFP2DBwkFDLiyzkCZS85urVA==", "license": "MIT", "dependencies": { "@babel/generator": "^7.20.5", @@ -18226,7 +18293,7 @@ "@react-native/babel-preset": "0.83.2", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "~0.21.0", - "babel-plugin-syntax-hermes-parser": "^0.29.1", + "babel-plugin-syntax-hermes-parser": "^0.32.0", "babel-plugin-transform-flow-enums": "^0.0.2", "debug": "^4.3.4", "resolve-from": "^5.0.0" @@ -18234,7 +18301,7 @@ "peerDependencies": { "@babel/runtime": "^7.20.0", "expo": "*", - "expo-widgets": "^55.0.0", + "expo-widgets": "^55.0.2", "react-refresh": ">=0.14.0 <1.0.0" }, "peerDependenciesMeta": { @@ -18321,15 +18388,6 @@ "@babel/core": "*" } }, - "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", - "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.32.0" - } - }, "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { "version": "0.83.2", "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.2.tgz", @@ -19098,6 +19156,8 @@ }, "node_modules/chrome-launcher": { "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", "license": "Apache-2.0", "dependencies": { "@types/node": "*", @@ -19121,6 +19181,8 @@ }, "node_modules/chromium-edge-launcher": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", "license": "Apache-2.0", "dependencies": { "@types/node": "*", @@ -22010,9 +22072,9 @@ }, "node_modules/eslint-config-airbnb-typescript/node_modules/eslint-config-airbnb-base": { "name": "eslint-config-expensify", - "version": "2.0.91", - "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.91.tgz", - "integrity": "sha512-sdVa7o7Cl9JIV2UiENQTue9nlt8sc45B7SyiKdtDizajY7tMK402PEa9ngPIkRt/0xzKOFC+jtPy8pMXg6OSeg==", + "version": "2.0.89", + "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.89.tgz", + "integrity": "sha512-fI57deNANpTwvq8LMKet7M/D1zGAnzzmsOsQ9m55Psun6MRK9lj1hhFZhV0Q1GGfC8la6adAoGJ7aQz96aWShg==", "dev": true, "license": "ISC", "dependencies": { @@ -22029,24 +22091,10 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-rulesdir": "^0.2.2", - "globals": "^15.14.0", "lodash": "^4.17.21", "underscore": "^1.13.6" } }, - "node_modules/eslint-config-airbnb-typescript/node_modules/eslint-config-airbnb-base/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint-config-airbnb-typescript/node_modules/eslint-plugin-react-hooks": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", @@ -23231,9 +23279,9 @@ } }, "node_modules/expo-file-system": { - "version": "55.0.9", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.9.tgz", - "integrity": "sha512-jJ0BMGSBk0YgyxG9GB71qLW+jSWqjWkRnOhSGn9ry98XL045faNKPJ7rq94ENmNjt98QLEm5I+NEvBxt/EYAdQ==", + "version": "55.0.10", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.10.tgz", + "integrity": "sha512-ysFdVdUgtfj2ApY0Cn+pBg+yK4xp+SNwcaH8j2B91JJQ4OXJmnyCSmrNZYz7J4mdYVuv2GzxIP+N/IGlHQG3Yw==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -23434,9 +23482,9 @@ } }, "node_modules/expo-server": { - "version": "55.0.5", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.5.tgz", - "integrity": "sha512-cfoh1OwBjHPCwYD11wep12l5WGkVEmRbGSZEbE4u+08k1TkOyYhrWyI2o/iMcUMMT8u1sKsymHKsrC8Mv82V7A==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.6.tgz", + "integrity": "sha512-xI72FTm469FfuuBL2R5aNtthgH+GR7ygOpsx/KcPS0K8AZaZd7VjtEExbzn9/qyyYkWW3T+3dAmCDKOMX8gdmQ==", "license": "MIT", "engines": { "node": ">=20.16.0" @@ -23567,10 +23615,31 @@ } } }, - "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/router-server": { - "version": "55.0.8", - "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.8.tgz", - "integrity": "sha512-kSyl6HliepOzuW6T78GtLSwmQ+XxtO9pG2boNbX7GW4oJqMsa0LbkG//5Xw/6HRrgSN0OlFbrZApN7yn7QJ6fw==", + "node_modules/expo/node_modules/@expo/config-plugins": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.6.tgz", + "integrity": "sha512-cIox6FjZlFaaX40rbQ3DvP9e87S5X85H9uw+BAxJE5timkMhuByy3GAlOsj1h96EyzSiol7Q6YIGgY1Jiz4M+A==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^55.0.5", + "@expo/json-file": "~10.0.12", + "@expo/plist": "^0.5.2", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/expo/node_modules/@expo/router-server": { + "version": "55.0.9", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.9.tgz", + "integrity": "sha512-LcCFi+P1qfZOsw0DO4JwNKRxtWt4u2bjTYj0PUe4WVf9NVG/NfUetAXYRbBS6P+gupfM6SC+/bdzdqCWQh7j8g==", "license": "MIT", "dependencies": { "debug": "^4.3.4" @@ -23581,7 +23650,7 @@ "expo-constants": "^55.0.7", "expo-font": "^55.0.4", "expo-router": "*", - "expo-server": "^55.0.5", + "expo-server": "^55.0.6", "react": "*", "react-dom": "*", "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" @@ -23601,27 +23670,6 @@ } } }, - "node_modules/expo/node_modules/@expo/config-plugins": { - "version": "55.0.6", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.6.tgz", - "integrity": "sha512-cIox6FjZlFaaX40rbQ3DvP9e87S5X85H9uw+BAxJE5timkMhuByy3GAlOsj1h96EyzSiol7Q6YIGgY1Jiz4M+A==", - "license": "MIT", - "dependencies": { - "@expo/config-types": "^55.0.5", - "@expo/json-file": "~10.0.12", - "@expo/plist": "^0.5.2", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.5", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" - } - }, "node_modules/expo/node_modules/@react-native/debugger-frontend": { "version": "0.83.2", "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.2.tgz", @@ -23698,9 +23746,9 @@ } }, "node_modules/expo/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -23774,9 +23822,9 @@ } }, "node_modules/expo/node_modules/expo-asset": { - "version": "55.0.7", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.7.tgz", - "integrity": "sha512-MnL43vmzfk5yXsY4Y7Pbq1c4iM1Xo8Q/cRITfFiVQYkMDgcQ7OoBontHwJhAJCgu0IHQJz/2NsQT6iQ/oIy/kg==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.8.tgz", + "integrity": "sha512-yEz2svDX67R0yiW2skx6dJmcE0q7sj9ECpGMcxBExMCbctc+nMoZCnjUuhzPl5vhClUsO5HFFXS5vIGmf1bgHQ==", "license": "MIT", "dependencies": { "@expo/image-utils": "^0.8.12", @@ -23934,9 +23982,9 @@ } }, "node_modules/expo/node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" @@ -24388,9 +24436,9 @@ "license": "MIT" }, "node_modules/fetch-nodeshim": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.8.tgz", - "integrity": "sha512-YW5vG33rabBq6JpYosLNoXoaMN69/WH26MeeX2hkDVjN6UlvRGq3Wkazl9H0kisH95aMu/HtHL64JUvv/+Nv/g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.9.tgz", + "integrity": "sha512-XIQWlB2A4RZ7NebXWGxS0uDMdvRHkiUDTghBVJKFg9yEOd45w/PP8cZANuPf2H08W6Cor3+2n7Q6TTZgAS3Fkw==", "license": "MIT" }, "node_modules/fflate": { @@ -25480,13 +25528,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/globals": { - "version": "11.12.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/globalthis": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", @@ -28043,18 +28084,6 @@ } } }, - "node_modules/jest-expo/node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, "node_modules/jest-expo/node_modules/ansi-regex": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", @@ -28131,54 +28160,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-expo/node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-expo/node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-expo/node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-expo/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/jest-expo/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -28189,49 +28170,6 @@ "node": ">=8" } }, - "node_modules/jest-expo/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-expo/node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jest-expo/node_modules/jest-watch-typeahead": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz", @@ -28313,65 +28251,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/jest-expo/node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-expo/node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/jest-expo/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -28385,92 +28264,6 @@ "node": ">=8" } }, - "node_modules/jest-expo/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-expo/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-expo/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/jest-expo/node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/jest-expo/node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-expo/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-expo/node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, "node_modules/jest-get-type": { "version": "29.6.3", "license": "MIT", @@ -30012,6 +29805,8 @@ }, "node_modules/lighthouse-logger": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", "license": "Apache-2.0", "dependencies": { "debug": "^2.6.9", @@ -30020,6 +29815,8 @@ }, "node_modules/lighthouse-logger/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -30027,12 +29824,14 @@ }, "node_modules/lighthouse-logger/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", - "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -30045,43 +29844,22 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.31.1", - "lightningcss-darwin-arm64": "1.31.1", - "lightningcss-darwin-x64": "1.31.1", - "lightningcss-freebsd-x64": "1.31.1", - "lightningcss-linux-arm-gnueabihf": "1.31.1", - "lightningcss-linux-arm64-gnu": "1.31.1", - "lightningcss-linux-arm64-musl": "1.31.1", - "lightningcss-linux-x64-gnu": "1.31.1", - "lightningcss-linux-x64-musl": "1.31.1", - "lightningcss-win32-arm64-msvc": "1.31.1", - "lightningcss-win32-x64-msvc": "1.31.1" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", - "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", - "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", "cpu": [ "arm64" ], @@ -30099,9 +29877,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", - "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", "cpu": [ "x64" ], @@ -30119,9 +29897,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", - "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", "cpu": [ "x64" ], @@ -30139,9 +29917,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", - "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", "cpu": [ "arm" ], @@ -30159,9 +29937,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", - "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", "cpu": [ "arm64" ], @@ -30179,9 +29957,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", - "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", "cpu": [ "arm64" ], @@ -30199,9 +29977,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", - "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", "cpu": [ "x64" ], @@ -30219,9 +29997,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", - "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", "cpu": [ "x64" ], @@ -30239,9 +30017,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", - "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", "cpu": [ "arm64" ], @@ -30259,9 +30037,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", - "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", "cpu": [ "x64" ], @@ -30676,7 +30454,9 @@ } }, "node_modules/marky": { - "version": "1.2.5", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", "license": "Apache-2.0" }, "node_modules/matcher": { @@ -30951,24 +30731,480 @@ } }, "node_modules/metro-config": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", - "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.5.tgz", + "integrity": "sha512-JQ/PAASXH7yczgV6OCUSRhZYME+NU8NYjI2RcaG5ga4QfQ3T/XdiLzpSb3awWZYlDCcQb36l4Vl7i0Zw7/Tf9w==", "license": "MIT", "dependencies": { "connect": "^3.6.5", "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.7.0", - "metro": "0.83.3", - "metro-cache": "0.83.3", - "metro-core": "0.83.3", - "metro-runtime": "0.83.3", + "metro": "0.83.5", + "metro-cache": "0.83.5", + "metro-core": "0.83.5", + "metro-runtime": "0.83.5", "yaml": "^2.6.1" }, "engines": { "node": ">=20.19.4" } }, + "node_modules/metro-config/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro-config/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/metro-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/metro-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/metro-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-config/node_modules/hermes-estree": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.33.3.tgz", + "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", + "license": "MIT" + }, + "node_modules/metro-config/node_modules/hermes-parser": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.33.3.tgz", + "integrity": "sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.33.3" + } + }, + "node_modules/metro-config/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/metro-config/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/metro-config/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/metro": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.5.tgz", + "integrity": "sha512-BgsXevY1MBac/3ZYv/RfNFf/4iuW9X7f4H8ZNkiH+r667HD9sVujxcmu4jvEzGCAm4/WyKdZCuyhAcyhTHOucQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "accepts": "^2.0.0", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.33.3", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.83.5", + "metro-cache": "0.83.5", + "metro-cache-key": "0.83.5", + "metro-config": "0.83.5", + "metro-core": "0.83.5", + "metro-file-map": "0.83.5", + "metro-resolver": "0.83.5", + "metro-runtime": "0.83.5", + "metro-source-map": "0.83.5", + "metro-symbolicate": "0.83.5", + "metro-transform-plugins": "0.83.5", + "metro-transform-worker": "0.83.5", + "mime-types": "^3.0.1", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-babel-transformer": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.5.tgz", + "integrity": "sha512-d9FfmgUEVejTiSb7bkQeLRGl6aeno2UpuPm3bo3rCYwxewj03ymvOn8s8vnS4fBqAPQ+cE9iQM40wh7nGXR+eA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.33.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-cache": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.5.tgz", + "integrity": "sha512-oH+s4U+IfZyg8J42bne2Skc90rcuESIYf86dYittcdWQtPfcaFXWpByPyTuWk3rR1Zz3Eh5HOrcVImfEhhJLng==", + "license": "MIT", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.83.5" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-cache-key": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.5.tgz", + "integrity": "sha512-Ycl8PBajB7bhbAI7Rt0xEyiF8oJ0RWX8EKkolV1KfCUlC++V/GStMSGpPLwnnBZXZWkCC5edBPzv1Hz1Yi0Euw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-core": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.5.tgz", + "integrity": "sha512-YcVcLCrf0ed4mdLa82Qob0VxYqfhmlRxUS8+TO4gosZo/gLwSvtdeOjc/Vt0pe/lvMNrBap9LlmvZM8FIsMgJQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.83.5" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-file-map": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.5.tgz", + "integrity": "sha512-ZEt8s3a1cnYbn40nyCD+CsZdYSlwtFh2kFym4lo+uvfM+UMMH+r/BsrC6rbNClSrt+B7rU9T+Te/sh/NL8ZZKQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-minify-terser": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.5.tgz", + "integrity": "sha512-Toe4Md1wS1PBqbvB0cFxBzKEVyyuYTUb0sgifAZh/mSvLH84qA1NAWik9sISWatzvfWf3rOGoUoO5E3f193a3Q==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-resolver": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.5.tgz", + "integrity": "sha512-7p3GtzVUpbAweJeCcUJihJeOQl1bDuimO5ueo1K0BUpUtR41q5EilbQ3klt16UTPPMpA+tISWBtsrqU556mY1A==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-source-map": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.5.tgz", + "integrity": "sha512-VT9bb2KO2/4tWY9Z2yeZqTUao7CicKAOps9LUg2aQzsz+04QyuXL3qgf1cLUVRjA/D6G5u1RJAlN1w9VNHtODQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.83.5", + "nullthrows": "^1.1.1", + "ob1": "0.83.5", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-symbolicate": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.5.tgz", + "integrity": "sha512-EMIkrjNRz/hF+p0RDdxoE60+dkaTLPN3vaaGkFmX5lvFdO6HPfHA/Ywznzkev+za0VhPQ5KSdz49/MALBRteHA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.83.5", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-transform-plugins": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.5.tgz", + "integrity": "sha512-KxYKzZL+lt3Os5H2nx7YkbkWVduLZL5kPrE/Yq+Prm/DE1VLhpfnO6HtPs8vimYFKOa58ncl60GpoX0h7Wm0Vw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-transform-worker": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.5.tgz", + "integrity": "sha512-8N4pjkNXc6ytlP9oAM6MwqkvUepNSW39LKYl9NjUMpRDazBQ7oBpQDc8Sz4aI8jnH6AGhF7s1m/ayxkN1t04yA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "metro": "0.83.5", + "metro-babel-transformer": "0.83.5", + "metro-cache": "0.83.5", + "metro-cache-key": "0.83.5", + "metro-minify-terser": "0.83.5", + "metro-source-map": "0.83.5", + "metro-transform-plugins": "0.83.5", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro-config/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/metro-config/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro-config/node_modules/ob1": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.5.tgz", + "integrity": "sha512-vNKPYC8L5ycVANANpF/S+WZHpfnRWKx/F3AYP4QMn6ZJTh+l2HOrId0clNkEmua58NB9vmI9Qh7YOoV/4folYg==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-config/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/metro-core": { "version": "0.83.3", "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", @@ -31068,9 +31304,9 @@ } }, "node_modules/metro-runtime": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", - "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.5.tgz", + "integrity": "sha512-f+b3ue9AWTVlZe2Xrki6TAoFtKIqw30jwfk7GQ1rDUBQaE0ZQ+NkiMEtb9uwH7uAjJ87U7Tdx1Jg1OJqUfEVlA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", @@ -31274,6 +31510,38 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/metro/node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro/node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, "node_modules/metro/node_modules/serialize-error": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", @@ -31446,6 +31714,8 @@ }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -31593,18 +31863,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/nitrogen/node_modules/react-native-nitro-modules": { - "version": "0.29.8", - "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.29.8.tgz", - "integrity": "sha512-SyKIR+MmAZadqFEPwD+wiHoG5Lem3EMtAyzLOJ+mU0JB+1+vHxxLLhcV0THoXoxbMSbf5zWOQYVb+JPCEhNtXg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, "node_modules/nitrogen/node_modules/zod": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", @@ -34240,9 +34498,9 @@ } }, "node_modules/react-native-onyx": { - "version": "3.0.41", - "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-3.0.41.tgz", - "integrity": "sha512-GLgBKioP/u5q53Zayl8pjwHXgezVVOZ4YrBZ25RKuJQZaCXbBtUfnZKULXtDRt/6H9L7CJvnLU/IXaHHVI8Qxg==", + "version": "3.0.42", + "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-3.0.42.tgz", + "integrity": "sha512-+JM4+2s3JNd6PIPuM/sWBZgKKeS7/LXav90rNq7OwizpbOBRvqEcnYIouKOWLbsYm2996zOvXUGcSiuxSUbXYw==", "license": "MIT", "dependencies": { "ascii-table": "0.0.9", @@ -34549,6 +34807,13 @@ "react-native-pager-view": ">= 6.0.0" } }, + "node_modules/react-native-tab-view/node_modules/use-latest-callback": { + "version": "0.2.3", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, "node_modules/react-native-url-polyfill": { "version": "2.0.0", "license": "MIT", @@ -34681,15 +34946,6 @@ "node": ">=8" } }, - "node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", - "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.32.0" - } - }, "node_modules/react-native/node_modules/glob": { "version": "7.2.3", "license": "ISC", @@ -34805,9 +35061,9 @@ } }, "node_modules/react-test-renderer/node_modules/react-is": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.3.tgz", - "integrity": "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", "dev": true, "license": "MIT" }, @@ -35225,9 +35481,9 @@ } }, "node_modules/resolve-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz", - "integrity": "sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", + "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", "license": "MIT" }, "node_modules/resolve.exports": { @@ -38125,15 +38381,6 @@ "extraneous": true, "license": "MIT" }, - "node_modules/use-latest-callback": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", - "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8" - } - }, "node_modules/use-sync-external-store": { "version": "1.5.0", "license": "MIT", @@ -38239,6 +38486,8 @@ }, "node_modules/vlq": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "license": "MIT" }, "node_modules/vscode-languageserver-textdocument": { From dd674aa4ef02579ba548d7a5bdaf200a5a8aa5d9 Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 5 Mar 2026 14:30:16 +0100 Subject: [PATCH 49/56] chore: fix patch --- ...ters+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch} | 0 patches/react-navigation/details.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename patches/react-navigation/{@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch => @react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch} (100%) diff --git a/patches/react-navigation/@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch b/patches/react-navigation/@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch similarity index 100% rename from patches/react-navigation/@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch rename to patches/react-navigation/@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch diff --git a/patches/react-navigation/details.md b/patches/react-navigation/details.md index 95d9fc0fcf6ed..b5b7e5d9de4bf 100644 --- a/patches/react-navigation/details.md +++ b/patches/react-navigation/details.md @@ -6,7 +6,7 @@ #### [@react-navigation+material-top-tabs+7.2.13+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+material-top-tabs+7.2.13+001+fix-failing-jest-by-disabling-esmodule.patch) #### [@react-navigation+native-stack+7.3.14+002+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+native-stack+7.3.14+002+fix-failing-jest-by-disabling-esmodule.patch) #### [@react-navigation+native+7.1.10+002+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+native+7.1.10+002+fix-failing-jest-by-disabling-esmodule.patch) -#### [@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+routers+7.5.3+001+fix-failing-jest-by-disabling-esmodule.patch) +#### [@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+routers+7.4.0+001+fix-failing-jest-by-disabling-esmodule.patch) #### [@react-navigation+stack+7.3.3+004+fix-failing-jest-by-disabling-esmodule.patch](@react-navigation+stack+7.3.3+004+fix-failing-jest-by-disabling-esmodule.patch) - Reason: Necessary to run Jest with the obligatory `--experimental-vm-modules` flag. Currently we transpile all the code to `commonjs`, but Jest looks up to individual `package.jsons` to see whether the package is `commonjs` or `ESModule`. That causes a conflict, which can be solved by removing `{"type":"module"}` from `lib/module/package.json`. This might be an issue with Jest, but it would require much more investigation. More: https://github.com/react-navigation/react-navigation/issues/12637 From 84cc7948c3944efa30b790b8a62fc5ab71bd2cc8 Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 5 Mar 2026 14:46:14 +0100 Subject: [PATCH 50/56] chore: fix typecheck --- package-lock.json | 26 +++++++++++++------------- src/components/Image/BaseImage.tsx | 5 +++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5944bf50eea27..c052e17d115f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22134,19 +22134,6 @@ "underscore": "^1.13.6" } }, - "node_modules/eslint-config-expensify/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint-config-prettier": { "version": "9.1.0", "dev": true, @@ -25528,6 +25515,19 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globalthis": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", diff --git a/src/components/Image/BaseImage.tsx b/src/components/Image/BaseImage.tsx index 7a20a332cb3dd..d3fe7e14ca16f 100644 --- a/src/components/Image/BaseImage.tsx +++ b/src/components/Image/BaseImage.tsx @@ -1,12 +1,12 @@ import {Image as ExpoImage} from 'expo-image'; -import type {ImageLoadEventData} from 'expo-image'; +import type {ImageProps as ExpoImageProps, ImageLoadEventData} from 'expo-image'; import React, {useCallback, useContext, useEffect} from 'react'; import type {AttachmentSource} from '@components/Attachments/types'; import getImageRecyclingKey from '@libs/getImageRecyclingKey'; import {AttachmentStateContext} from '@pages/media/AttachmentModalScreen/AttachmentModalBaseContent/AttachmentStateContextProvider'; import type {BaseImageProps} from './types'; -function BaseImage({onLoad, onLoadStart, source, ...props}: BaseImageProps) { +function BaseImage({onLoad, onLoadStart, source, style, ...props}: BaseImageProps) { const {setAttachmentLoaded, isAttachmentLoaded} = useContext(AttachmentStateContext); useEffect(() => { if (isAttachmentLoaded?.(source as AttachmentSource)) { @@ -45,6 +45,7 @@ function BaseImage({onLoad, onLoadStart, source, ...props}: BaseImageProps) { onLoad={onLoad ? imageLoadedSuccessfully : undefined} source={source} recyclingKey={getImageRecyclingKey(source)} + style={style as ExpoImageProps['style']} // eslint-disable-next-line react/jsx-props-no-spreading {...props} /> From f6a5af74c18671493c7a1a15d81bafff294ae68e Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 5 Mar 2026 15:26:58 +0100 Subject: [PATCH 51/56] chore: add upstream PR --- patches/react-native/details.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/react-native/details.md b/patches/react-native/details.md index 4858930d28005..0fa7490749d1b 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -228,6 +228,6 @@ ### [react-native+0.83.1+030+fix-exif-orientation.patch](react-native+0.83.1+030+fix-exif-orientation.patch) - Reason: In RN 0.83, PR [#54127](https://github.com/facebook/react-native/pull/54127) changed `RCTDecodeImageWithData` to use `CGImageSourceCreateImageAtIndex` instead of `CGImageSourceCreateThumbnailAtIndex` for full-size images (to fix memory crashes with large images). However, `CGImageSourceCreateImageAtIndex` does NOT apply EXIF orientation transform to pixels, unlike the previous thumbnail API which used `kCGImageSourceCreateThumbnailWithTransform`. The code still hardcodes `UIImageOrientationUp`, so EXIF orientation is silently lost. This causes camera-captured images (which have EXIF orientation metadata) to appear rotated when processed by `expo-image-manipulator`. The fix reads the EXIF orientation from image properties and passes it to `UIImage` for the full-size code path. -- Upstream PR/issue: TBD +- Upstream PR/issue: https://github.com/facebook/react-native/pull/55934 - E/App issue: https://github.com/Expensify/App/issues/75120 - PR Introducing Patch: https://github.com/Expensify/App/pull/79962 From 4a51d12128bff4f32caa11b59de5b49a9ac58f27 Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 5 Mar 2026 15:30:25 +0100 Subject: [PATCH 52/56] fix: gh actions check --- .../javascript/authorChecklist/index.js | 1968 ++++++++--------- 1 file changed, 922 insertions(+), 1046 deletions(-) diff --git a/.github/actions/javascript/authorChecklist/index.js b/.github/actions/javascript/authorChecklist/index.js index 5b01c3f42ac33..50bb5a3021566 100644 --- a/.github/actions/javascript/authorChecklist/index.js +++ b/.github/actions/javascript/authorChecklist/index.js @@ -16349,7 +16349,7 @@ function highlight(text) { let deprecationWarningShown = false; const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; -function getMarkerLines(loc, source, opts) { +function getMarkerLines(loc, source, opts, startLineBaseZero) { const startLoc = Object.assign({ column: 0, line: -1 @@ -16359,9 +16359,9 @@ function getMarkerLines(loc, source, opts) { linesAbove = 2, linesBelow = 3 } = opts || {}; - const startLine = startLoc.line; + const startLine = startLoc.line - startLineBaseZero; const startColumn = startLoc.column; - const endLine = endLoc.line; + const endLine = endLoc.line - startLineBaseZero; const endColumn = endLoc.column; let start = Math.max(startLine - (linesAbove + 1), 0); let end = Math.min(source.length, endLine + linesBelow); @@ -16407,19 +16407,20 @@ function getMarkerLines(loc, source, opts) { } function codeFrameColumns(rawLines, loc, opts = {}) { const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode; + const startLineBaseZero = (opts.startLine || 1) - 1; const defs = getDefs(shouldHighlight); const lines = rawLines.split(NEWLINE); const { start, end, markerLines - } = getMarkerLines(loc, lines, opts); + } = getMarkerLines(loc, lines, opts, startLineBaseZero); const hasColumns = loc.start && typeof loc.start.column === "number"; - const numberMaxWidth = String(end).length; + const numberMaxWidth = String(end + startLineBaseZero).length; const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines; let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { const number = start + 1 + index; - const paddedNumber = ` ${number}`.slice(-numberMaxWidth); + const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth); const gutter = ` ${paddedNumber} |`; const hasMarker = markerLines[number]; const lastMarkerLine = !markerLines[number + 1]; @@ -16487,6 +16488,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; +const spaceIndents = []; +for (let i = 0; i < 32; i++) { + spaceIndents.push(" ".repeat(i * 2)); +} class Buffer { constructor(map, indentChar) { this._map = null; @@ -16494,11 +16499,9 @@ class Buffer { this._str = ""; this._appendCount = 0; this._last = 0; - this._queue = []; - this._queueCursor = 0; this._canMarkIdName = true; this._indentChar = ""; - this._fastIndentations = []; + this._queuedChar = 0; this._position = { line: 1, column: 0 @@ -16512,55 +16515,32 @@ class Buffer { }; this._map = map; this._indentChar = indentChar; - for (let i = 0; i < 64; i++) { - this._fastIndentations.push(indentChar.repeat(i)); - } - this._allocQueue(); - } - _allocQueue() { - const queue = this._queue; - for (let i = 0; i < 16; i++) { - queue.push({ - char: 0, - repeat: 1, - line: undefined, - column: undefined, - identifierName: undefined, - identifierNamePos: undefined, - filename: "" - }); - } } - _pushQueue(char, repeat, line, column, filename) { - const cursor = this._queueCursor; - if (cursor === this._queue.length) { - this._allocQueue(); + get() { + const { + _map, + _last + } = this; + if (this._queuedChar !== 32) { + this._flush(); } - const item = this._queue[cursor]; - item.char = char; - item.repeat = repeat; - item.line = line; - item.column = column; - item.filename = filename; - this._queueCursor++; - } - _popQueue() { - if (this._queueCursor === 0) { - throw new Error("Cannot pop from empty queue"); + const code = _last === 10 ? (this._buf + this._str).trimRight() : this._buf + this._str; + if (_map === null) { + return { + code: code, + decodedMap: undefined, + map: null, + rawMappings: undefined + }; } - return this._queue[--this._queueCursor]; - } - get() { - this._flush(); - const map = this._map; const result = { - code: (this._buf + this._str).trimRight(), - decodedMap: map == null ? void 0 : map.getDecoded(), + code: code, + decodedMap: _map.getDecoded(), get __mergedMap() { return this.map; }, get map() { - const resultMap = map ? map.get() : null; + const resultMap = _map.get(); result.map = resultMap; return resultMap; }, @@ -16571,7 +16551,7 @@ class Buffer { }); }, get rawMappings() { - const mappings = map == null ? void 0 : map.getRawMappings(); + const mappings = _map.getRawMappings(); result.rawMappings = mappings; return mappings; }, @@ -16586,66 +16566,57 @@ class Buffer { } append(str, maybeNewline) { this._flush(); - this._append(str, this._sourcePosition, maybeNewline); + this._append(str, maybeNewline); } appendChar(char) { this._flush(); - this._appendChar(char, 1, this._sourcePosition); + this._appendChar(char, 1, true); } queue(char) { - if (char === 10) { - while (this._queueCursor !== 0) { - const char = this._queue[this._queueCursor - 1].char; - if (char !== 32 && char !== 9) { - break; - } - this._queueCursor--; - } - } - const sourcePosition = this._sourcePosition; - this._pushQueue(char, 1, sourcePosition.line, sourcePosition.column, sourcePosition.filename); - } - queueIndentation(repeat) { - if (repeat === 0) return; - this._pushQueue(-1, repeat, undefined, undefined, undefined); + this._flush(); + this._queuedChar = char; } _flush() { - const queueCursor = this._queueCursor; - const queue = this._queue; - for (let i = 0; i < queueCursor; i++) { - const item = queue[i]; - this._appendChar(item.char, item.repeat, item); + const queuedChar = this._queuedChar; + if (queuedChar !== 0) { + this._appendChar(queuedChar, 1, true); + this._queuedChar = 0; } - this._queueCursor = 0; } - _appendChar(char, repeat, sourcePos) { + _appendChar(char, repeat, useSourcePos) { this._last = char; if (char === -1) { - const fastIndentation = this._fastIndentations[repeat]; - if (fastIndentation !== undefined) { - this._str += fastIndentation; - } else { - this._str += repeat > 1 ? this._indentChar.repeat(repeat) : this._indentChar; - } + const indent = repeat >= 64 ? this._indentChar.repeat(repeat) : spaceIndents[repeat / 2]; + this._str += indent; } else { this._str += repeat > 1 ? String.fromCharCode(char).repeat(repeat) : String.fromCharCode(char); } + const isSpace = char === 32; + const position = this._position; if (char !== 10) { - this._mark(sourcePos.line, sourcePos.column, sourcePos.identifierName, sourcePos.identifierNamePos, sourcePos.filename); - this._position.column += repeat; + if (this._map) { + const sourcePos = this._sourcePosition; + if (useSourcePos && sourcePos) { + this._map.mark(position, sourcePos.line, sourcePos.column, isSpace ? undefined : sourcePos.identifierName, isSpace ? undefined : sourcePos.identifierNamePos, sourcePos.filename); + if (!isSpace && this._canMarkIdName) { + sourcePos.identifierName = undefined; + sourcePos.identifierNamePos = undefined; + } + } else { + this._map.mark(position); + } + } + position.column += repeat; } else { - this._position.line++; - this._position.column = 0; - } - if (this._canMarkIdName) { - sourcePos.identifierName = undefined; - sourcePos.identifierNamePos = undefined; + position.line++; + position.column = 0; } } - _append(str, sourcePos, maybeNewline) { + _append(str, maybeNewline) { const len = str.length; const position = this._position; - this._last = str.charCodeAt(len - 1); + const sourcePos = this._sourcePosition; + this._last = -1; if (++this._appendCount > 4096) { +this._str; this._buf += this._str; @@ -16654,7 +16625,8 @@ class Buffer { } else { this._str += str; } - if (!maybeNewline && !this._map) { + const hasMap = this._map !== null; + if (!maybeNewline && !hasMap) { position.column += len; return; } @@ -16671,67 +16643,40 @@ class Buffer { } let i = str.indexOf("\n"); let last = 0; - if (i !== 0) { - this._mark(line, column, identifierName, identifierNamePos, filename); + if (hasMap && i !== 0) { + this._map.mark(position, line, column, identifierName, identifierNamePos, filename); } while (i !== -1) { position.line++; position.column = 0; last = i + 1; if (last < len && line !== undefined) { - this._mark(++line, 0, undefined, undefined, filename); + line++; + if (hasMap) { + this._map.mark(position, line, 0, undefined, undefined, filename); + } } i = str.indexOf("\n", last); } position.column += len - last; } - _mark(line, column, identifierName, identifierNamePos, filename) { - var _this$_map; - (_this$_map = this._map) == null || _this$_map.mark(this._position, line, column, identifierName, identifierNamePos, filename); - } - removeTrailingNewline() { - const queueCursor = this._queueCursor; - if (queueCursor !== 0 && this._queue[queueCursor - 1].char === 10) { - this._queueCursor--; - } - } removeLastSemicolon() { - const queueCursor = this._queueCursor; - if (queueCursor !== 0 && this._queue[queueCursor - 1].char === 59) { - this._queueCursor--; + if (this._queuedChar === 59) { + this._queuedChar = 0; } } - getLastChar() { - const queueCursor = this._queueCursor; - return queueCursor !== 0 ? this._queue[queueCursor - 1].char : this._last; - } - getNewlineCount() { - const queueCursor = this._queueCursor; - let count = 0; - if (queueCursor === 0) return this._last === 10 ? 1 : 0; - for (let i = queueCursor - 1; i >= 0; i--) { - if (this._queue[i].char !== 10) { - break; - } - count++; + getLastChar(checkQueue) { + if (!checkQueue) { + return this._last; } - return count === queueCursor && this._last === 10 ? count + 1 : count; + const queuedChar = this._queuedChar; + return queuedChar !== 0 ? queuedChar : this._last; } - endsWithCharAndNewline() { - const queue = this._queue; - const queueCursor = this._queueCursor; - if (queueCursor !== 0) { - const lastCp = queue[queueCursor - 1].char; - if (lastCp !== 10) return; - if (queueCursor > 1) { - return queue[queueCursor - 2].char; - } else { - return this._last; - } - } + getNewlineCount() { + return this._queuedChar === 0 && this._last === 10 ? 1 : 0; } hasContent() { - return this._queueCursor !== 0 || !!this._last; + return this._last !== 0; } exactSource(loc, cb) { if (!this._map) { @@ -16741,12 +16686,12 @@ class Buffer { this.source("start", loc); const identifierName = loc.identifierName; const sourcePos = this._sourcePosition; - if (identifierName) { + if (identifierName != null) { this._canMarkIdName = false; sourcePos.identifierName = identifierName; } cb(); - if (identifierName) { + if (identifierName != null) { this._canMarkIdName = true; sourcePos.identifierName = undefined; sourcePos.identifierNamePos = undefined; @@ -16762,6 +16707,7 @@ class Buffer { this._normalizePosition(prop, loc, columnOffset); } _normalizePosition(prop, loc, columnOffset) { + this._flush(); const pos = loc[prop]; const target = this._sourcePosition; if (pos) { @@ -16771,28 +16717,10 @@ class Buffer { } } getCurrentColumn() { - const queue = this._queue; - const queueCursor = this._queueCursor; - let lastIndex = -1; - let len = 0; - for (let i = 0; i < queueCursor; i++) { - const item = queue[i]; - if (item.char === 10) { - lastIndex = len; - } - len += item.repeat; - } - return lastIndex === -1 ? this._position.column + len : len - 1 - lastIndex; + return this._position.column + (this._queuedChar ? 1 : 0); } getCurrentLine() { - let count = 0; - const queue = this._queue; - for (let i = 0; i < this._queueCursor; i++) { - if (queue[i].char === 10) { - count++; - } - } - return this._position.line + count; + return this._position.line; } } exports["default"] = Buffer; @@ -16826,13 +16754,12 @@ function File(node) { } function Program(node) { var _node$directives; - this.noIndentInnerCommentsHere(); - this.printInnerComments(); + this.printInnerComments(false); const directivesLen = (_node$directives = node.directives) == null ? void 0 : _node$directives.length; if (directivesLen) { var _node$directives$trai; const newline = node.body.length ? 2 : 1; - this.printSequence(node.directives, undefined, newline); + this.printSequence(node.directives, undefined, undefined, newline); if (!((_node$directives$trai = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai.length)) { this.newline(newline); } @@ -16842,18 +16769,18 @@ function Program(node) { function BlockStatement(node) { var _node$directives2; this.tokenChar(123); - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); const directivesLen = (_node$directives2 = node.directives) == null ? void 0 : _node$directives2.length; if (directivesLen) { var _node$directives$trai2; const newline = node.body.length ? 2 : 1; - this.printSequence(node.directives, true, newline); + this.printSequence(node.directives, true, true, newline); if (!((_node$directives$trai2 = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai2.length)) { this.newline(newline); } } - this.printSequence(node.body, true); - exit(); + this.printSequence(node.body, true, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightBrace(node); } function Directive(node) { @@ -16881,7 +16808,7 @@ function DirectiveLiteral(node) { } function InterpreterDirective(node) { this.token(`#!${node.value}`); - this.newline(1, true); + this._newline(); } function Placeholder(node) { this.token("%%"); @@ -16916,13 +16843,17 @@ exports.ClassProperty = ClassProperty; exports.StaticBlock = StaticBlock; exports._classMethodHead = _classMethodHead; var _t = __nccwpck_require__(7912); +var _expressions = __nccwpck_require__(2961); +var _typescript = __nccwpck_require__(6140); +var _flow = __nccwpck_require__(5529); +var _methods = __nccwpck_require__(3208); const { isExportDefaultDeclaration, isExportNamedDeclaration } = _t; function ClassDeclaration(node, parent) { const inExport = isExportDefaultDeclaration(parent) || isExportNamedDeclaration(parent); - if (!inExport || !this._shouldPrintDecoratorsBeforeExport(parent)) { + if (!inExport || !_expressions._shouldPrintDecoratorsBeforeExport.call(this, parent)) { this.printJoin(node.decorators); } if (node.declare) { @@ -16960,12 +16891,11 @@ function ClassBody(node) { if (node.body.length === 0) { this.tokenChar(125); } else { - this.newline(); const separator = classBodyEmptySemicolonsPrinter(this, node); separator == null || separator(-1); - const exit = this.enterDelimited(); - this.printJoin(node.body, true, true, separator, true); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.printJoin(node.body, true, true, separator, true, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; if (!this.endsWith(10)) this.newline(); this.rightBrace(node); } @@ -16993,7 +16923,7 @@ function classBodyEmptySemicolonsPrinter(printer, node) { const end = nextLocIndex === node.body.length ? node.end : node.body[nextLocIndex].start; let tok; while (k < indexes.length && printer.tokenMap.matchesOriginal(tok = printer._tokens[indexes[k]], ";") && tok.start < end) { - printer.token(";", undefined, occurrenceCount++); + printer.tokenChar(59, occurrenceCount++); k++; } }; @@ -17005,13 +16935,13 @@ function ClassProperty(node) { const endLine = (_node$key$loc = node.key.loc) == null || (_node$key$loc = _node$key$loc.end) == null ? void 0 : _node$key$loc.line; if (endLine) this.catchUp(endLine); } - this.tsPrintClassMemberModifiers(node); + _typescript._tsPrintClassMemberModifiers.call(this, node); if (node.computed) { this.tokenChar(91); this.print(node.key); this.tokenChar(93); } else { - this._variance(node); + _flow._variance.call(this, node); this.print(node.key); } if (node.optional) { @@ -17034,7 +16964,7 @@ function ClassAccessorProperty(node) { this.printJoin(node.decorators); const endLine = (_node$key$loc2 = node.key.loc) == null || (_node$key$loc2 = _node$key$loc2.end) == null ? void 0 : _node$key$loc2.line; if (endLine) this.catchUp(endLine); - this.tsPrintClassMemberModifiers(node); + _typescript._tsPrintClassMemberModifiers.call(this, node); this.word("accessor", true); this.space(); if (node.computed) { @@ -17042,7 +16972,7 @@ function ClassAccessorProperty(node) { this.print(node.key); this.tokenChar(93); } else { - this._variance(node); + _flow._variance.call(this, node); this.print(node.key); } if (node.optional) { @@ -17062,7 +16992,7 @@ function ClassAccessorProperty(node) { } function ClassPrivateProperty(node) { this.printJoin(node.decorators); - this.tsPrintClassMemberModifiers(node); + _typescript._tsPrintClassMemberModifiers.call(this, node); this.print(node.key); if (node.optional) { this.tokenChar(63); @@ -17080,12 +17010,12 @@ function ClassPrivateProperty(node) { this.semicolon(); } function ClassMethod(node) { - this._classMethodHead(node); + _classMethodHead.call(this, node); this.space(); this.print(node.body); } function ClassPrivateMethod(node) { - this._classMethodHead(node); + _classMethodHead.call(this, node); this.space(); this.print(node.body); } @@ -17096,8 +17026,8 @@ function _classMethodHead(node) { const endLine = (_node$key$loc3 = node.key.loc) == null || (_node$key$loc3 = _node$key$loc3.end) == null ? void 0 : _node$key$loc3.line; if (endLine) this.catchUp(endLine); } - this.tsPrintClassMemberModifiers(node); - this._methodHead(node); + _typescript._tsPrintClassMemberModifiers.call(this, node); + _methods._methodHead.call(this, node); } function StaticBlock(node) { this.word("static"); @@ -17126,72 +17056,71 @@ function StaticBlock(node) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.addDeprecatedGenerators = addDeprecatedGenerators; -function addDeprecatedGenerators(PrinterClass) { - const deprecatedBabel7Generators = { - Noop() {}, - TSExpressionWithTypeArguments(node) { - this.print(node.expression); - this.print(node.typeParameters); - }, - DecimalLiteral(node) { - const raw = this.getPossibleRaw(node); - if (!this.format.minified && raw !== undefined) { - this.word(raw); - return; - } - this.word(node.value + "m"); - }, - RecordExpression(node) { - const props = node.properties; - let startToken; - let endToken; - if (this.format.recordAndTupleSyntaxType === "bar") { - startToken = "{|"; - endToken = "|}"; - } else if (this.format.recordAndTupleSyntaxType !== "hash" && this.format.recordAndTupleSyntaxType != null) { - throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`); - } else { - startToken = "#{"; - endToken = "}"; - } - this.token(startToken); - if (props.length) { - this.space(); - this.printList(props, this.shouldPrintTrailingComma(endToken), true, true); - this.space(); - } - this.token(endToken); - }, - TupleExpression(node) { - const elems = node.elements; - const len = elems.length; - let startToken; - let endToken; - if (this.format.recordAndTupleSyntaxType === "bar") { - startToken = "[|"; - endToken = "|]"; - } else if (this.format.recordAndTupleSyntaxType === "hash") { - startToken = "#["; - endToken = "]"; - } else { - throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`); - } - this.token(startToken); - for (let i = 0; i < elems.length; i++) { - const elem = elems[i]; - if (elem) { - if (i > 0) this.space(); - this.print(elem); - if (i < len - 1 || this.shouldPrintTrailingComma(endToken)) { - this.token(",", false, i); - } - } +exports.DecimalLiteral = DecimalLiteral; +exports.Noop = Noop; +exports.RecordExpression = RecordExpression; +exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments; +exports.TupleExpression = TupleExpression; +function Noop() {} +function TSExpressionWithTypeArguments(node) { + this.print(node.expression); + this.print(node.typeParameters); +} +function DecimalLiteral(node) { + const raw = this.getPossibleRaw(node); + if (!this.format.minified && raw !== undefined) { + this.word(raw); + return; + } + this.word(node.value + "m"); +} +function RecordExpression(node) { + const props = node.properties; + let startToken; + let endToken; + if (this.format.recordAndTupleSyntaxType === "bar") { + startToken = "{|"; + endToken = "|}"; + } else if (this.format.recordAndTupleSyntaxType !== "hash" && this.format.recordAndTupleSyntaxType != null) { + throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`); + } else { + startToken = "#{"; + endToken = "}"; + } + this.token(startToken); + if (props.length) { + this.space(); + this.printList(props, this.shouldPrintTrailingComma(endToken), true, true); + this.space(); + } + this.token(endToken); +} +function TupleExpression(node) { + const elems = node.elements; + const len = elems.length; + let startToken; + let endToken; + if (this.format.recordAndTupleSyntaxType === "bar") { + startToken = "[|"; + endToken = "|]"; + } else if (this.format.recordAndTupleSyntaxType === "hash") { + startToken = "#["; + endToken = "]"; + } else { + throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`); + } + this.token(startToken); + for (let i = 0; i < elems.length; i++) { + const elem = elems[i]; + if (elem) { + if (i > 0) this.space(); + this.print(elem); + if (i < len - 1 || this.shouldPrintTrailingComma(endToken)) { + this.token(",", false, i); } - this.token(endToken); } - }; - Object.assign(PrinterClass.prototype, deprecatedBabel7Generators); + } + this.token(endToken); } //# sourceMappingURL=deprecated.js.map @@ -17208,9 +17137,10 @@ function addDeprecatedGenerators(PrinterClass) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; +exports.LogicalExpression = exports.AssignmentExpression = AssignmentExpression; exports.AssignmentPattern = AssignmentPattern; exports.AwaitExpression = AwaitExpression; +exports.BinaryExpression = BinaryExpression; exports.BindExpression = BindExpression; exports.CallExpression = CallExpression; exports.ConditionalExpression = ConditionalExpression; @@ -17248,11 +17178,12 @@ function UnaryExpression(node) { const { operator } = node; - if (operator === "void" || operator === "delete" || operator === "typeof" || operator === "throw") { + const firstChar = operator.charCodeAt(0); + if (firstChar >= 97 && firstChar <= 122) { this.word(operator); this.space(); } else { - this.token(operator); + this.tokenChar(firstChar); } this.print(node.argument); } @@ -17267,18 +17198,18 @@ function DoExpression(node) { } function ParenthesizedExpression(node) { this.tokenChar(40); - const exit = this.enterDelimited(); - this.print(node.expression); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.print(node.expression, undefined, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightParens(node); } function UpdateExpression(node) { if (node.prefix) { - this.token(node.operator); + this.token(node.operator, false, 0, true); this.print(node.argument); } else { this.print(node.argument, true); - this.token(node.operator); + this.token(node.operator, false, 0, true); } } function ConditionalExpression(node) { @@ -17310,9 +17241,9 @@ function NewExpression(node, parent) { return; } this.tokenChar(40); - const exit = this.enterDelimited(); - this.printList(node.arguments, this.shouldPrintTrailingComma(")")); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.printList(node.arguments, this.shouldPrintTrailingComma(")"), undefined, undefined, undefined, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightParens(node); } function SequenceExpression(node) { @@ -17332,7 +17263,10 @@ function _shouldPrintDecoratorsBeforeExport(node) { } function Decorator(node) { this.tokenChar(64); - this.print(node.expression); + const { + expression + } = node; + this.print(expression); this.newline(); } function OptionalMemberExpression(node) { @@ -17372,9 +17306,9 @@ function OptionalCallExpression(node) { } this.print(node.typeArguments); this.tokenChar(40); - const exit = this.enterDelimited(); - this.printList(node.arguments); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.printList(node.arguments, undefined, undefined, undefined, undefined, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightParens(node); } function CallExpression(node) { @@ -17382,9 +17316,9 @@ function CallExpression(node) { this.print(node.typeArguments); this.print(node.typeParameters); this.tokenChar(40); - const exit = this.enterDelimited(); - this.printList(node.arguments, this.shouldPrintTrailingComma(")")); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.printList(node.arguments, this.shouldPrintTrailingComma(")"), undefined, undefined, undefined, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightParens(node); } function Import() { @@ -17433,11 +17367,21 @@ function AssignmentPattern(node) { function AssignmentExpression(node) { this.print(node.left); this.space(); - if (node.operator === "in" || node.operator === "instanceof") { - this.word(node.operator); + this.token(node.operator, false, 0, true); + this.space(); + this.print(node.right); +} +function BinaryExpression(node) { + this.print(node.left); + this.space(); + const { + operator + } = node; + if (operator.charCodeAt(0) === 105) { + this.word(operator); } else { - this.token(node.operator); - this._endsWithDiv = node.operator === "/"; + this.token(operator, false, 0, true); + this.setLastChar(operator.charCodeAt(operator.length - 1)); } this.space(); this.print(node.right); @@ -17457,11 +17401,11 @@ function MemberExpression(node) { computed = true; } if (computed) { - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); this.tokenChar(91); - this.print(node.property); + this.print(node.property, undefined, true); this.tokenChar(93); - exit(); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; } else { this.tokenChar(46); this.print(node.property); @@ -17616,7 +17560,7 @@ function DeclareClass(node, parent) { } this.word("class"); this.space(); - this._interfaceish(node); + _interfaceish.call(this, node); } function DeclareFunction(node, parent) { if (!isDeclareExportDeclaration(parent)) { @@ -17647,7 +17591,7 @@ function DeclaredPredicate(node) { function DeclareInterface(node) { this.word("declare"); this.space(); - this.InterfaceDeclaration(node); + InterfaceDeclaration.call(this, node); } function DeclareModule(node) { this.word("declare"); @@ -17669,14 +17613,14 @@ function DeclareModuleExports(node) { function DeclareTypeAlias(node) { this.word("declare"); this.space(); - this.TypeAlias(node); + TypeAlias.call(this, node); } function DeclareOpaqueType(node, parent) { if (!isDeclareExportDeclaration(parent)) { this.word("declare"); this.space(); } - this.OpaqueType(node); + OpaqueType.call(this, node); } function DeclareVariable(node, parent) { if (!isDeclareExportDeclaration(parent)) { @@ -17904,7 +17848,7 @@ function _variance(node) { function InterfaceDeclaration(node) { this.word("interface"); this.space(); - this._interfaceish(node); + _interfaceish.call(this, node); } function andSeparator(occurrenceCount) { this.space(); @@ -17982,7 +17926,7 @@ function TypeParameterInstantiation(node) { this.tokenChar(62); } function TypeParameter(node) { - this._variance(node); + _variance.call(this, node); this.word(node.name); if (node.bound) { this.print(node.bound); @@ -18024,12 +17968,12 @@ function ObjectTypeAnnotation(node) { if (props.length) { this.newline(); this.space(); - this.printJoin(props, true, true, undefined, undefined, () => { + this.printJoin(props, true, true, () => { if (props.length !== 1 || node.inexact) { this.tokenChar(44); this.space(); } - }); + }, true); this.space(); } if (node.inexact) { @@ -18075,7 +18019,7 @@ function ObjectTypeIndexer(node) { this.word("static"); this.space(); } - this._variance(node); + _variance.call(this, node); this.tokenChar(91); if (node.id) { this.print(node.id); @@ -18101,7 +18045,7 @@ function ObjectTypeProperty(node) { this.word(node.kind); this.space(); } - this._variance(node); + _variance.call(this, node); this.print(node.key); if (node.optional) this.tokenChar(63); if (!node.method) { @@ -18458,39 +18402,40 @@ var _index = __nccwpck_require__(9223); const { isIdentifier } = _t; -function _params(node, idNode, parentNode) { +function _params(node, noLineTerminator, idNode, parentNode) { this.print(node.typeParameters); - const nameInfo = _getFuncIdName.call(this, idNode, parentNode); - if (nameInfo) { - this.sourceIdentifierName(nameInfo.name, nameInfo.pos); + if (idNode !== undefined || parentNode !== undefined) { + const nameInfo = _getFuncIdName.call(this, idNode, parentNode); + if (nameInfo) { + this.sourceIdentifierName(nameInfo.name, nameInfo.pos); + } } this.tokenChar(40); - this._parameters(node.params, ")"); - const noLineTerminator = node.type === "ArrowFunctionExpression"; + _parameters.call(this, node.params, 41); this.print(node.returnType, noLineTerminator); this._noLineTerminator = noLineTerminator; } function _parameters(parameters, endToken) { - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); const trailingComma = this.shouldPrintTrailingComma(endToken); const paramLength = parameters.length; for (let i = 0; i < paramLength; i++) { - this._param(parameters[i]); + _param.call(this, parameters[i]); if (trailingComma || i < paramLength - 1) { - this.token(",", undefined, i); + this.tokenChar(44, i); this.space(); } } - this.token(endToken); - exit(); + this.tokenChar(endToken); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; } function _param(parameter) { - this.printJoin(parameter.decorators); - this.print(parameter); + this.printJoin(parameter.decorators, undefined, undefined, undefined, undefined, true); + this.print(parameter, undefined, true); if (parameter.optional) { this.tokenChar(63); } - this.print(parameter.typeAnnotation); + this.print(parameter.typeAnnotation, undefined, true); } function _methodHead(node) { const kind = node.kind; @@ -18518,7 +18463,11 @@ function _methodHead(node) { if (node.optional) { this.tokenChar(63); } - this._params(node, node.computed && node.key.type !== "StringLiteral" ? undefined : node.key); + if (this._buf._map) { + _params.call(this, node, false, node.computed && node.key.type !== "StringLiteral" ? undefined : node.key); + } else { + _params.call(this, node, false); + } } function _predicate(node, noLineTerminatorAfter) { if (node.predicate) { @@ -18529,18 +18478,18 @@ function _predicate(node, noLineTerminatorAfter) { this.print(node.predicate, noLineTerminatorAfter); } } -function _functionHead(node, parent) { +function _functionHead(node, parent, hasPredicate) { if (node.async) { this.word("async"); if (!this.format.preserveFormat) { - this._endsWithInnerRaw = false; + this._innerCommentsState = 0; } this.space(); } this.word("function"); if (node.generator) { if (!this.format.preserveFormat) { - this._endsWithInnerRaw = false; + this._innerCommentsState = 0; } this.tokenChar(42); } @@ -18548,13 +18497,17 @@ function _functionHead(node, parent) { if (node.id) { this.print(node.id); } - this._params(node, node.id, parent); - if (node.type !== "TSDeclareFunction") { - this._predicate(node); + if (this._buf._map) { + _params.call(this, node, false, node.id, parent); + } else { + _params.call(this, node, false); + } + if (hasPredicate) { + _predicate.call(this, node); } } function FunctionExpression(node, parent) { - this._functionHead(node, parent); + _functionHead.call(this, node, parent, true); this.space(); this.print(node.body); } @@ -18563,12 +18516,12 @@ function ArrowFunctionExpression(node, parent) { this.word("async", true); this.space(); } - if (this._shouldPrintArrowParamsParens(node)) { - this._params(node, undefined, parent); + if (_shouldPrintArrowParamsParens.call(this, node)) { + _params.call(this, node, true, undefined, this._buf._map ? parent : undefined); } else { this.print(node.params[0], true); } - this._predicate(node, true); + _predicate.call(this, node, true); this.space(); this.printInnerComments(); this.token("=>"); @@ -18665,6 +18618,7 @@ exports.ImportSpecifier = ImportSpecifier; exports._printAttributes = _printAttributes; var _t = __nccwpck_require__(7912); var _index = __nccwpck_require__(9223); +var _expressions = __nccwpck_require__(2961); const { isClassDeclaration, isExportDefaultSpecifier, @@ -18763,14 +18717,14 @@ function ExportAllDeclaration(node) { if ((_node$attributes = node.attributes) != null && _node$attributes.length || (_node$assertions = node.assertions) != null && _node$assertions.length) { this.print(node.source, true); this.space(); - this._printAttributes(node, false); + _printAttributes.call(this, node, false); } else { this.print(node.source); } this.semicolon(); } function maybePrintDecoratorsBeforeExport(printer, node) { - if (isClassDeclaration(node.declaration) && printer._shouldPrintDecoratorsBeforeExport(node)) { + if (isClassDeclaration(node.declaration) && _expressions._shouldPrintDecoratorsBeforeExport.call(printer, node)) { printer.printJoin(node.declaration.decorators); } } @@ -18821,7 +18775,7 @@ function ExportNamedDeclaration(node) { if ((_node$attributes2 = node.attributes) != null && _node$attributes2.length || (_node$assertions2 = node.assertions) != null && _node$assertions2.length) { this.print(node.source, true); this.space(); - this._printAttributes(node, hasBrace); + _printAttributes.call(this, node, hasBrace); } else { this.print(node.source); } @@ -18894,7 +18848,7 @@ function ImportDeclaration(node) { if ((_node$attributes3 = node.attributes) != null && _node$attributes3.length || (_node$assertions3 = node.assertions) != null && _node$assertions3.length) { this.print(node.source, true); this.space(); - this._printAttributes(node, hasBrace); + _printAttributes.call(this, node, hasBrace); } else { this.print(node.source); } @@ -18952,7 +18906,8 @@ exports.CatchClause = CatchClause; exports.ContinueStatement = ContinueStatement; exports.DebuggerStatement = DebuggerStatement; exports.DoWhileStatement = DoWhileStatement; -exports.ForOfStatement = exports.ForInStatement = void 0; +exports.ForInStatement = ForInStatement; +exports.ForOfStatement = ForOfStatement; exports.ForStatement = ForStatement; exports.IfStatement = IfStatement; exports.LabeledStatement = LabeledStatement; @@ -18966,9 +18921,9 @@ exports.VariableDeclarator = VariableDeclarator; exports.WhileStatement = WhileStatement; exports.WithStatement = WithStatement; var _t = __nccwpck_require__(7912); +var _index = __nccwpck_require__(9223); const { isFor, - isForStatement, isIfStatement, isStatement } = _t; @@ -18978,7 +18933,7 @@ function WithStatement(node) { this.tokenChar(40); this.print(node.object); this.tokenChar(41); - this.printBlock(node); + this.printBlock(node.body); } function IfStatement(node) { this.word("if"); @@ -19019,23 +18974,21 @@ function ForStatement(node) { this.word("for"); this.space(); this.tokenChar(40); - { - const exit = this.enterForStatementInit(); - this.print(node.init); - exit(); - } + this.tokenContext |= _index.TokenContext.forInitHead | _index.TokenContext.forInOrInitHeadAccumulate; + this.print(node.init); + this.tokenContext = _index.TokenContext.normal; this.tokenChar(59); if (node.test) { this.space(); this.print(node.test); } - this.token(";", false, 1); + this.tokenChar(59, 1); if (node.update) { this.space(); this.print(node.update); } this.tokenChar(41); - this.printBlock(node); + this.printBlock(node.body); } function WhileStatement(node) { this.word("while"); @@ -19043,32 +18996,41 @@ function WhileStatement(node) { this.tokenChar(40); this.print(node.test); this.tokenChar(41); - this.printBlock(node); + this.printBlock(node.body); } -function ForXStatement(node) { +function ForInStatement(node) { this.word("for"); this.space(); - const isForOf = node.type === "ForOfStatement"; - if (isForOf && node.await) { + this.noIndentInnerCommentsHere(); + this.tokenChar(40); + this.tokenContext |= _index.TokenContext.forInHead | _index.TokenContext.forInOrInitHeadAccumulate; + this.print(node.left); + this.tokenContext = _index.TokenContext.normal; + this.space(); + this.word("in"); + this.space(); + this.print(node.right); + this.tokenChar(41); + this.printBlock(node.body); +} +function ForOfStatement(node) { + this.word("for"); + this.space(); + if (node.await) { this.word("await"); this.space(); } this.noIndentInnerCommentsHere(); this.tokenChar(40); - { - const exit = this.enterForXStatementInit(isForOf); - this.print(node.left); - exit == null || exit(); - } + this.tokenContext |= _index.TokenContext.forOfHead; + this.print(node.left); this.space(); - this.word(isForOf ? "of" : "in"); + this.word("of"); this.space(); this.print(node.right); this.tokenChar(41); - this.printBlock(node); + this.printBlock(node.body); } -const ForInStatement = exports.ForInStatement = ForXStatement; -const ForOfStatement = exports.ForOfStatement = ForXStatement; function DoWhileStatement(node) { this.word("do"); this.space(); @@ -19169,6 +19131,10 @@ function DebuggerStatement() { this.word("debugger"); this.semicolon(); } +function commaSeparatorWithNewline(occurrenceCount) { + this.tokenChar(44, occurrenceCount); + this.newline(); +} function VariableDeclaration(node, parent) { if (node.declare) { this.word("declare"); @@ -19177,12 +19143,15 @@ function VariableDeclaration(node, parent) { const { kind } = node; - if (kind === "await using") { - this.word("await"); - this.space(); - this.word("using", true); - } else { - this.word(kind, kind === "using"); + switch (kind) { + case "await using": + this.word("await"); + this.space(); + case "using": + this.word("using", true); + break; + default: + this.word(kind); } this.space(); let hasInits = false; @@ -19190,18 +19159,23 @@ function VariableDeclaration(node, parent) { for (const declar of node.declarations) { if (declar.init) { hasInits = true; + break; } } } - this.printList(node.declarations, undefined, undefined, node.declarations.length > 1, hasInits ? function (occurrenceCount) { - this.token(",", false, occurrenceCount); - this.newline(); - } : undefined); - if (isFor(parent)) { - if (isForStatement(parent)) { - if (parent.init === node) return; - } else { - if (parent.left === node) return; + this.printList(node.declarations, undefined, undefined, node.declarations.length > 1, hasInits ? commaSeparatorWithNewline : undefined); + if (parent != null) { + switch (parent.type) { + case "ForStatement": + if (parent.init === node) { + return; + } + break; + case "ForInStatement": + case "ForOfStatement": + if (parent.left === node) { + return; + } } } this.semicolon(); @@ -19261,7 +19235,7 @@ function _printTemplate(node, substitutions) { this.token(partRaw + "`", true); } function TemplateLiteral(node) { - this._printTemplate(node, node.expressions); + _printTemplate.call(this, node, node.expressions); } //# sourceMappingURL=template-literals.js.map @@ -19299,15 +19273,13 @@ exports.VoidPattern = VoidPattern; exports._getRawIdentifier = _getRawIdentifier; var _t = __nccwpck_require__(7912); var _jsesc = __nccwpck_require__(5733); +var _methods = __nccwpck_require__(3208); const { isAssignmentPattern, isIdentifier } = _t; -let lastRawIdentNode = null; let lastRawIdentResult = ""; function _getRawIdentifier(node) { - if (node === lastRawIdentNode) return lastRawIdentResult; - lastRawIdentNode = node; const { name } = node; @@ -19319,9 +19291,11 @@ function _getRawIdentifier(node) { return lastRawIdentResult = node.name; } function Identifier(node) { - var _node$loc; - this.sourceIdentifierName(((_node$loc = node.loc) == null ? void 0 : _node$loc.identifierName) || node.name); - this.word(this.tokenMap ? this._getRawIdentifier(node) : node.name); + if (this._buf._map) { + var _node$loc; + this.sourceIdentifierName(((_node$loc = node.loc) == null ? void 0 : _node$loc.identifierName) || node.name); + } + this.word(this.tokenMap ? lastRawIdentResult : node.name); } function ArgumentPlaceholder() { this.tokenChar(63); @@ -19334,18 +19308,17 @@ function ObjectExpression(node) { const props = node.properties; this.tokenChar(123); if (props.length) { - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); this.space(); - this.printList(props, this.shouldPrintTrailingComma("}"), true, true); + this.printList(props, this.shouldPrintTrailingComma("}"), true, true, undefined, true); this.space(); - exit(); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; } - this.sourceWithOffset("end", node.loc, -1); - this.tokenChar(125); + this.rightBrace(node); } function ObjectMethod(node) { this.printJoin(node.decorators); - this._methodHead(node); + _methods._methodHead.call(this, node); this.space(); this.print(node.body); } @@ -19373,24 +19346,24 @@ function ArrayExpression(node) { const elems = node.elements; const len = elems.length; this.tokenChar(91); - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); for (let i = 0; i < elems.length; i++) { const elem = elems[i]; if (elem) { if (i > 0) this.space(); - this.print(elem); + this.print(elem, undefined, true); if (i < len - 1 || this.shouldPrintTrailingComma("]")) { - this.token(",", false, i); + this.tokenChar(44, i); } } else { - this.token(",", false, i); + this.tokenChar(44, i); } } - exit(); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.tokenChar(93); } function RegExpLiteral(node) { - this.word(`/${node.pattern}/${node.flags}`); + this.word(`/${node.pattern}/${node.flags}`, false); } function BooleanLiteral(node) { this.word(node.value ? "true" : "false"); @@ -19462,7 +19435,7 @@ function VoidPattern() { /***/ }), /***/ 6140: -/***/ ((__unused_webpack_module, exports) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -19472,7 +19445,7 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.TSAnyKeyword = TSAnyKeyword; exports.TSArrayType = TSArrayType; -exports.TSSatisfiesExpression = exports.TSAsExpression = TSTypeExpression; +exports.TSAsExpression = TSAsExpression; exports.TSBigIntKeyword = TSBigIntKeyword; exports.TSBooleanKeyword = TSBooleanKeyword; exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration; @@ -19516,6 +19489,7 @@ exports.TSParenthesizedType = TSParenthesizedType; exports.TSPropertySignature = TSPropertySignature; exports.TSQualifiedName = TSQualifiedName; exports.TSRestType = TSRestType; +exports.TSSatisfiesExpression = TSSatisfiesExpression; exports.TSStringKeyword = TSStringKeyword; exports.TSSymbolKeyword = TSSymbolKeyword; exports.TSTemplateLiteralType = TSTemplateLiteralType; @@ -19535,10 +19509,10 @@ exports.TSUndefinedKeyword = TSUndefinedKeyword; exports.TSUnionType = TSUnionType; exports.TSUnknownKeyword = TSUnknownKeyword; exports.TSVoidKeyword = TSVoidKeyword; -exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers; -exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType; -exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName; -exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase; +exports._tsPrintClassMemberModifiers = _tsPrintClassMemberModifiers; +var _methods = __nccwpck_require__(3208); +var _classes = __nccwpck_require__(8860); +var _templateLiterals = __nccwpck_require__(2893); function TSTypeAnnotation(node, parent) { this.token((parent.type === "TSFunctionType" || parent.type === "TSConstructorType") && parent.typeAnnotation === node ? "=>" : ":"); this.space(); @@ -19591,18 +19565,18 @@ function TSParameterProperty(node) { this.word("readonly"); this.space(); } - this._param(node.parameter); + _methods._param.call(this, node.parameter); } function TSDeclareFunction(node, parent) { if (node.declare) { this.word("declare"); this.space(); } - this._functionHead(node, parent); + _methods._functionHead.call(this, node, parent, false); this.semicolon(); } function TSDeclareMethod(node) { - this._classMethodHead(node); + _classes._classMethodHead.call(this, node); this.semicolon(); } function TSQualifiedName(node) { @@ -19611,7 +19585,7 @@ function TSQualifiedName(node) { this.print(node.right); } function TSCallSignatureDeclaration(node) { - this.tsPrintSignatureDeclarationBase(node); + tsPrintSignatureDeclarationBase.call(this, node); maybePrintTrailingCommaOrSemicolon(this, node); } function maybePrintTrailingCommaOrSemicolon(printer, node) { @@ -19628,7 +19602,7 @@ function maybePrintTrailingCommaOrSemicolon(printer, node) { function TSConstructSignatureDeclaration(node) { this.word("new"); this.space(); - this.tsPrintSignatureDeclarationBase(node); + tsPrintSignatureDeclarationBase.call(this, node); maybePrintTrailingCommaOrSemicolon(this, node); } function TSPropertySignature(node) { @@ -19639,7 +19613,7 @@ function TSPropertySignature(node) { this.word("readonly"); this.space(); } - this.tsPrintPropertyOrMethodName(node); + tsPrintPropertyOrMethodName.call(this, node); this.print(node.typeAnnotation); maybePrintTrailingCommaOrSemicolon(this, node); } @@ -19663,8 +19637,8 @@ function TSMethodSignature(node) { this.word(kind); this.space(); } - this.tsPrintPropertyOrMethodName(node); - this.tsPrintSignatureDeclarationBase(node); + tsPrintPropertyOrMethodName.call(this, node); + tsPrintSignatureDeclarationBase.call(this, node); maybePrintTrailingCommaOrSemicolon(this, node); } function TSIndexSignature(node) { @@ -19681,7 +19655,7 @@ function TSIndexSignature(node) { this.space(); } this.tokenChar(91); - this._parameters(node.parameters, "]"); + _methods._parameters.call(this, node.parameters, 93); this.print(node.typeAnnotation); maybePrintTrailingCommaOrSemicolon(this, node); } @@ -19728,7 +19702,7 @@ function TSThisType() { this.word("this"); } function TSFunctionType(node) { - this.tsPrintFunctionOrConstructorType(node); + tsPrintFunctionOrConstructorType.call(this, node); } function TSConstructorType(node) { if (node.abstract) { @@ -19737,7 +19711,7 @@ function TSConstructorType(node) { } this.word("new"); this.space(); - this.tsPrintFunctionOrConstructorType(node); + tsPrintFunctionOrConstructorType.call(this, node); } function tsPrintFunctionOrConstructorType(node) { const { @@ -19746,7 +19720,7 @@ function tsPrintFunctionOrConstructorType(node) { const parameters = node.parameters; this.print(typeParameters); this.tokenChar(40); - this._parameters(parameters, ")"); + _methods._parameters.call(this, parameters, 41); this.space(); const returnType = node.typeAnnotation; this.print(returnType); @@ -19779,7 +19753,7 @@ function TSTypeQuery(node) { } } function TSTypeLiteral(node) { - printBraced(this, node, () => this.printJoin(node.members, true, true)); + printBraced(this, node, () => this.printJoin(node.members, true, true, undefined, undefined, true)); } function TSArrayType(node) { this.print(node.elementType, true); @@ -19868,7 +19842,7 @@ function TSMappedType(node) { typeAnnotation } = node; this.tokenChar(123); - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); this.space(); if (readonly) { tokenIfPlusMinus(this, readonly); @@ -19880,12 +19854,12 @@ function TSMappedType(node) { this.space(); this.word("in"); this.space(); - this.print(node.typeParameter.constraint); + this.print(node.typeParameter.constraint, undefined, true); if (nameType) { this.space(); this.word("as"); this.space(); - this.print(nameType); + this.print(nameType, undefined, true); } this.tokenChar(93); if (optional) { @@ -19895,10 +19869,10 @@ function TSMappedType(node) { if (typeAnnotation) { this.tokenChar(58); this.space(); - this.print(typeAnnotation); + this.print(typeAnnotation, undefined, true); } this.space(); - exit(); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.tokenChar(125); } function tokenIfPlusMinus(self, tok) { @@ -19907,7 +19881,7 @@ function tokenIfPlusMinus(self, tok) { } } function TSTemplateLiteralType(node) { - this._printTemplate(node, node.types); + _templateLiterals._printTemplate.call(this, node, node.types); } function TSLiteralType(node) { this.print(node.literal); @@ -19942,7 +19916,7 @@ function TSInterfaceDeclaration(node) { this.print(body); } function TSInterfaceBody(node) { - printBraced(this, node, () => this.printJoin(node.body, true, true)); + printBraced(this, node, () => this.printJoin(node.body, true, true, undefined, undefined, true)); } function TSTypeAliasDeclaration(node) { const { @@ -19965,15 +19939,25 @@ function TSTypeAliasDeclaration(node) { this.print(typeAnnotation); this.semicolon(); } -function TSTypeExpression(node) { +function TSAsExpression(node) { const { - type, expression, typeAnnotation } = node; this.print(expression, true); this.space(); - this.word(type === "TSAsExpression" ? "as" : "satisfies"); + this.word("as"); + this.space(); + this.print(typeAnnotation); +} +function TSSatisfiesExpression(node) { + const { + expression, + typeAnnotation + } = node; + this.print(expression, true); + this.space(); + this.word("satisfies"); this.space(); this.print(typeAnnotation); } @@ -20015,7 +19999,7 @@ function TSEnumDeclaration(node) { function TSEnumBody(node) { printBraced(this, node, () => { var _this$shouldPrintTrai; - return this.printList(node.members, (_this$shouldPrintTrai = this.shouldPrintTrailingComma("}")) != null ? _this$shouldPrintTrai : true, true, true); + return this.printList(node.members, (_this$shouldPrintTrai = this.shouldPrintTrailingComma("}")) != null ? _this$shouldPrintTrai : true, true, true, undefined, true); }); } function TSEnumMember(node) { @@ -20060,7 +20044,7 @@ function TSModuleDeclaration(node) { this.print(body); } function TSModuleBlock(node) { - printBraced(this, node, () => this.printSequence(node.body, true)); + printBraced(this, node, () => this.printSequence(node.body, true, true)); } function TSImportType(node) { const { @@ -20110,6 +20094,7 @@ function TSExternalModuleReference(node) { function TSNonNullExpression(node) { this.print(node.expression); this.tokenChar(33); + this.setLastChar(33); } function TSExportAssignment(node) { this.word("export"); @@ -20136,11 +20121,11 @@ function tsPrintSignatureDeclarationBase(node) { const parameters = node.parameters; this.print(typeParameters); this.tokenChar(40); - this._parameters(parameters, ")"); + _methods._parameters.call(this, parameters, 41); const returnType = node.typeAnnotation; this.print(returnType); } -function tsPrintClassMemberModifiers(node) { +function _tsPrintClassMemberModifiers(node) { const isPrivateField = node.type === "ClassPrivateProperty"; const isPublicField = node.type === "ClassAccessorProperty" || node.type === "ClassProperty"; printModifiersList(this, node, [isPublicField && node.declare && "declare", !isPrivateField && node.accessibility]); @@ -20152,9 +20137,9 @@ function tsPrintClassMemberModifiers(node) { } function printBraced(printer, node, cb) { printer.token("{"); - const exit = printer.enterDelimited(); + const oldNoLineTerminatorAfterNode = printer.enterDelimited(); cb(); - exit(); + printer._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; printer.rightBrace(node); } function printModifiersList(printer, node, modifiers) { @@ -20310,22 +20295,12 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.TokenContext = void 0; exports.isLastChild = isLastChild; -exports.needsParens = needsParens; -exports.needsWhitespace = needsWhitespace; -exports.needsWhitespaceAfter = needsWhitespaceAfter; -exports.needsWhitespaceBefore = needsWhitespaceBefore; -var whitespace = __nccwpck_require__(5850); +exports.parentNeedsParens = parentNeedsParens; var parens = __nccwpck_require__(8444); var _t = __nccwpck_require__(7912); +var _nodes = __nccwpck_require__(5644); const { - FLIPPED_ALIAS_KEYS, - VISITOR_KEYS, - isCallExpression, - isDecorator, - isExpressionStatement, - isMemberExpression, - isNewExpression, - isParenthesizedExpression + VISITOR_KEYS } = _t; const TokenContext = exports.TokenContext = { normal: 0, @@ -20339,63 +20314,32 @@ const TokenContext = exports.TokenContext = { forInOrInitHeadAccumulate: 128, forInOrInitHeadAccumulatePassThroughMask: 128 }; -function expandAliases(obj) { - const map = new Map(); - function add(type, func) { - const fn = map.get(type); - map.set(type, fn ? function (node, parent, stack, getRawIdentifier) { - var _fn; - return (_fn = fn(node, parent, stack, getRawIdentifier)) != null ? _fn : func(node, parent, stack, getRawIdentifier); - } : func); - } - for (const type of Object.keys(obj)) { - const aliases = FLIPPED_ALIAS_KEYS[type]; - if (aliases) { - for (const alias of aliases) { - add(alias, obj[type]); - } - } else { - add(type, obj[type]); - } +for (const type of Object.keys(parens)) { + const func = parens[type]; + if (_nodes.generatorInfosMap.has(type)) { + _nodes.generatorInfosMap.get(type)[2] = func; } - return map; } -const expandedParens = expandAliases(parens); -const expandedWhitespaceNodes = expandAliases(whitespace.nodes); function isOrHasCallExpression(node) { - if (isCallExpression(node)) { - return true; - } - return isMemberExpression(node) && isOrHasCallExpression(node.object); -} -function needsWhitespace(node, parent, type) { - var _expandedWhitespaceNo; - if (!node) return false; - if (isExpressionStatement(node)) { - node = node.expression; - } - const flag = (_expandedWhitespaceNo = expandedWhitespaceNodes.get(node.type)) == null ? void 0 : _expandedWhitespaceNo(node, parent); - if (typeof flag === "number") { - return (flag & type) !== 0; + switch (node.type) { + case "CallExpression": + return true; + case "MemberExpression": + return isOrHasCallExpression(node.object); } return false; } -function needsWhitespaceBefore(node, parent) { - return needsWhitespace(node, parent, 1); -} -function needsWhitespaceAfter(node, parent) { - return needsWhitespace(node, parent, 2); -} -function needsParens(node, parent, tokenContext, getRawIdentifier) { - var _expandedParens$get; - if (!parent) return false; - if (isNewExpression(parent) && parent.callee === node) { - if (isOrHasCallExpression(node)) return true; - } - if (isDecorator(parent)) { - return !isDecoratorMemberExpression(node) && !(isCallExpression(node) && isDecoratorMemberExpression(node.callee)) && !isParenthesizedExpression(node); +function parentNeedsParens(node, parent, parentId) { + switch (parentId) { + case 112: + if (parent.callee === node) { + if (isOrHasCallExpression(node)) return true; + } + break; + case 42: + return !isDecoratorMemberExpression(node) && !(node.type === "CallExpression" && isDecoratorMemberExpression(node.callee)) && node.type !== "ParenthesizedExpression"; } - return ((_expandedParens$get = expandedParens.get(node.type)) == null ? void 0 : _expandedParens$get(node, parent, tokenContext, getRawIdentifier)) || false; + return false; } function isDecoratorMemberExpression(node) { switch (node.type) { @@ -20439,7 +20383,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.AssignmentExpression = AssignmentExpression; -exports.Binary = Binary; exports.BinaryExpression = BinaryExpression; exports.ClassExpression = ClassExpression; exports.ArrowFunctionExpression = exports.ConditionalExpression = ConditionalExpression; @@ -20459,7 +20402,7 @@ exports.TSConstructorType = exports.TSFunctionType = TSFunctionType; exports.TSInferType = TSInferType; exports.TSInstantiationExpression = TSInstantiationExpression; exports.TSIntersectionType = TSIntersectionType; -exports.UnaryLike = exports.TSTypeAssertion = UnaryLike; +exports.SpreadElement = exports.UnaryExpression = exports.TSTypeAssertion = UnaryLike; exports.TSTypeOperator = TSTypeOperator; exports.TSUnionType = TSUnionType; exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation; @@ -20468,229 +20411,267 @@ exports.AwaitExpression = exports.YieldExpression = YieldExpression; var _t = __nccwpck_require__(7912); var _index = __nccwpck_require__(9223); const { - isArrayTypeAnnotation, - isBinaryExpression, - isCallExpression, - isForOfStatement, - isIndexedAccessType, isMemberExpression, - isObjectPattern, isOptionalMemberExpression, isYieldExpression, isStatement } = _t; -const PRECEDENCE = new Map([["||", 0], ["??", 0], ["|>", 0], ["&&", 1], ["|", 2], ["^", 3], ["&", 4], ["==", 5], ["===", 5], ["!=", 5], ["!==", 5], ["<", 6], [">", 6], ["<=", 6], [">=", 6], ["in", 6], ["instanceof", 6], [">>", 7], ["<<", 7], [">>>", 7], ["+", 8], ["-", 8], ["*", 9], ["/", 9], ["%", 9], ["**", 10]]); -function getBinaryPrecedence(node, nodeType) { - if (nodeType === "BinaryExpression" || nodeType === "LogicalExpression") { - return PRECEDENCE.get(node.operator); - } - if (nodeType === "TSAsExpression" || nodeType === "TSSatisfiesExpression") { - return PRECEDENCE.get("in"); - } +const PRECEDENCE = new Map([["||", 0], ["??", 1], ["&&", 2], ["|", 3], ["^", 4], ["&", 5], ["==", 6], ["===", 6], ["!=", 6], ["!==", 6], ["<", 7], [">", 7], ["<=", 7], [">=", 7], ["in", 7], ["instanceof", 7], [">>", 8], ["<<", 8], [">>>", 8], ["+", 9], ["-", 9], ["*", 10], ["/", 10], ["%", 10], ["**", 11]]); +function isTSTypeExpression(nodeId) { + return nodeId === 156 || nodeId === 201 || nodeId === 209; } -function isTSTypeExpression(nodeType) { - return nodeType === "TSAsExpression" || nodeType === "TSSatisfiesExpression" || nodeType === "TSTypeAssertion"; -} -const isClassExtendsClause = (node, parent) => { - const parentType = parent.type; - return (parentType === "ClassDeclaration" || parentType === "ClassExpression") && parent.superClass === node; +const isClassExtendsClause = (node, parent, parentId) => { + return (parentId === 21 || parentId === 22) && parent.superClass === node; }; -const hasPostfixPart = (node, parent) => { - const parentType = parent.type; - return (parentType === "MemberExpression" || parentType === "OptionalMemberExpression") && parent.object === node || (parentType === "CallExpression" || parentType === "OptionalCallExpression" || parentType === "NewExpression") && parent.callee === node || parentType === "TaggedTemplateExpression" && parent.tag === node || parentType === "TSNonNullExpression"; +const hasPostfixPart = (node, parent, parentId) => { + switch (parentId) { + case 108: + case 132: + return parent.object === node; + case 17: + case 130: + case 112: + return parent.callee === node; + case 222: + return parent.tag === node; + case 191: + return true; + } + return false; }; -function NullableTypeAnnotation(node, parent) { - return isArrayTypeAnnotation(parent); +function NullableTypeAnnotation(node, parent, parentId) { + return parentId === 4; } -function FunctionTypeAnnotation(node, parent, tokenContext) { - const parentType = parent.type; - return (parentType === "UnionTypeAnnotation" || parentType === "IntersectionTypeAnnotation" || parentType === "ArrayTypeAnnotation" || Boolean(tokenContext & _index.TokenContext.arrowFlowReturnType) +function FunctionTypeAnnotation(node, parent, parentId, tokenContext) { + return (parentId === 239 || parentId === 90 || parentId === 4 || (tokenContext & _index.TokenContext.arrowFlowReturnType) > 0 ); } -function UpdateExpression(node, parent) { - return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent); +function UpdateExpression(node, parent, parentId) { + return hasPostfixPart(node, parent, parentId) || isClassExtendsClause(node, parent, parentId); } function needsParenBeforeExpressionBrace(tokenContext) { - return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.arrowBody)); + return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.arrowBody)) > 0; } -function ObjectExpression(node, parent, tokenContext) { +function ObjectExpression(node, parent, parentId, tokenContext) { return needsParenBeforeExpressionBrace(tokenContext); } -function DoExpression(node, parent, tokenContext) { - return !node.async && Boolean(tokenContext & _index.TokenContext.expressionStatement); +function DoExpression(node, parent, parentId, tokenContext) { + return (tokenContext & _index.TokenContext.expressionStatement) > 0 && !node.async; } -function Binary(node, parent) { - const parentType = parent.type; - if (node.type === "BinaryExpression" && node.operator === "**" && parentType === "BinaryExpression" && parent.operator === "**") { - return parent.left === node; - } - if (isClassExtendsClause(node, parent)) { +function BinaryLike(node, parent, parentId, nodeType) { + if (isClassExtendsClause(node, parent, parentId)) { return true; } - if (hasPostfixPart(node, parent) || parentType === "UnaryExpression" || parentType === "SpreadElement" || parentType === "AwaitExpression") { + if (hasPostfixPart(node, parent, parentId) || parentId === 238 || parentId === 145 || parentId === 8) { return true; } - const parentPos = getBinaryPrecedence(parent, parentType); - if (parentPos != null) { - const nodePos = getBinaryPrecedence(node, node.type); - if (parentPos === nodePos && parentType === "BinaryExpression" && parent.right === node || parentPos > nodePos) { + let parentPos; + switch (parentId) { + case 10: + case 107: + parentPos = PRECEDENCE.get(parent.operator); + break; + case 156: + case 201: + parentPos = 7; + } + if (parentPos !== undefined) { + const nodePos = nodeType === 2 ? 7 : PRECEDENCE.get(node.operator); + if (parentPos > nodePos) return true; + if (parentPos === nodePos && parentId === 10 && (nodePos === 11 ? parent.left === node : parent.right === node)) { + return true; + } + if (nodeType === 1 && parentId === 107 && (nodePos === 1 && parentPos !== 1 || parentPos === 1 && nodePos !== 1)) { return true; } } + return false; } -function UnionTypeAnnotation(node, parent) { - const parentType = parent.type; - return parentType === "ArrayTypeAnnotation" || parentType === "NullableTypeAnnotation" || parentType === "IntersectionTypeAnnotation" || parentType === "UnionTypeAnnotation"; +function UnionTypeAnnotation(node, parent, parentId) { + switch (parentId) { + case 4: + case 115: + case 90: + case 239: + return true; + } + return false; } -function OptionalIndexedAccessType(node, parent) { - return isIndexedAccessType(parent) && parent.objectType === node; +function OptionalIndexedAccessType(node, parent, parentId) { + return parentId === 84 && parent.objectType === node; } -function TSAsExpression(node, parent) { - if ((parent.type === "AssignmentExpression" || parent.type === "AssignmentPattern") && parent.left === node) { +function TSAsExpression(node, parent, parentId) { + if ((parentId === 6 || parentId === 7) && parent.left === node) { return true; } - if (parent.type === "BinaryExpression" && (parent.operator === "|" || parent.operator === "&") && node === parent.left) { + if (parentId === 10 && (parent.operator === "|" || parent.operator === "&") && node === parent.left) { return true; } - return Binary(node, parent); + return BinaryLike(node, parent, parentId, 2); } -function TSConditionalType(node, parent) { - const parentType = parent.type; - if (parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType" || parentType === "TSTypeOperator" || parentType === "TSTypeParameter") { - return true; - } - if ((parentType === "TSIntersectionType" || parentType === "TSUnionType") && parent.types[0] === node) { - return true; - } - if (parentType === "TSConditionalType" && (parent.checkType === node || parent.extendsType === node)) { - return true; +function TSConditionalType(node, parent, parentId) { + switch (parentId) { + case 155: + case 195: + case 211: + case 212: + return true; + case 175: + return parent.objectType === node; + case 181: + case 219: + return parent.types[0] === node; + case 161: + return parent.checkType === node || parent.extendsType === node; } return false; } -function TSUnionType(node, parent) { - const parentType = parent.type; - return parentType === "TSIntersectionType" || parentType === "TSTypeOperator" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +function TSUnionType(node, parent, parentId) { + switch (parentId) { + case 181: + case 211: + case 155: + case 195: + return true; + case 175: + return parent.objectType === node; + } + return false; } -function TSIntersectionType(node, parent) { - const parentType = parent.type; - return parentType === "TSTypeOperator" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +function TSIntersectionType(node, parent, parentId) { + return parentId === 211 || TSTypeOperator(node, parent, parentId); } -function TSInferType(node, parent) { - const parentType = parent.type; - if (parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType") { +function TSInferType(node, parent, parentId) { + if (TSTypeOperator(node, parent, parentId)) { + return true; + } + if ((parentId === 181 || parentId === 219) && node.typeParameter.constraint && parent.types[0] === node) { return true; } - if (node.typeParameter.constraint) { - if ((parentType === "TSIntersectionType" || parentType === "TSUnionType") && parent.types[0] === node) { + return false; +} +function TSTypeOperator(node, parent, parentId) { + switch (parentId) { + case 155: + case 195: return true; - } + case 175: + if (parent.objectType === node) { + return true; + } } return false; } -function TSTypeOperator(node, parent) { - const parentType = parent.type; - return parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +function TSInstantiationExpression(node, parent, parentId) { + switch (parentId) { + case 17: + case 130: + case 112: + case 177: + return (parent.typeParameters + ) != null; + } + return false; } -function TSInstantiationExpression(node, parent) { - const parentType = parent.type; - return (parentType === "CallExpression" || parentType === "OptionalCallExpression" || parentType === "NewExpression" || parentType === "TSInstantiationExpression") && !!parent.typeParameters; +function TSFunctionType(node, parent, parentId) { + if (TSUnionType(node, parent, parentId)) return true; + return parentId === 219 || parentId === 161 && (parent.checkType === node || parent.extendsType === node); } -function TSFunctionType(node, parent) { - const parentType = parent.type; - return parentType === "TSIntersectionType" || parentType === "TSUnionType" || parentType === "TSTypeOperator" || parentType === "TSOptionalType" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSConditionalType" && (parent.checkType === node || parent.extendsType === node); +function BinaryExpression(node, parent, parentId, tokenContext) { + if (BinaryLike(node, parent, parentId, 0)) return true; + return (tokenContext & _index.TokenContext.forInOrInitHeadAccumulate) > 0 && node.operator === "in"; } -function BinaryExpression(node, parent, tokenContext) { - return node.operator === "in" && Boolean(tokenContext & _index.TokenContext.forInOrInitHeadAccumulate); +function LogicalExpression(node, parent, parentId) { + return BinaryLike(node, parent, parentId, 1); } -function SequenceExpression(node, parent) { - const parentType = parent.type; - if (parentType === "SequenceExpression" || parentType === "ParenthesizedExpression" || parentType === "MemberExpression" && parent.property === node || parentType === "OptionalMemberExpression" && parent.property === node || parentType === "TemplateLiteral") { +function SequenceExpression(node, parent, parentId) { + if (parentId === 144 || parentId === 133 || parentId === 108 && parent.property === node || parentId === 132 && parent.property === node || parentId === 224) { return false; } - if (parentType === "ClassDeclaration") { + if (parentId === 21) { return true; } - if (parentType === "ForOfStatement") { + if (parentId === 68) { return parent.right === node; } - if (parentType === "ExportDefaultDeclaration") { + if (parentId === 60) { return true; } return !isStatement(parent); } -function YieldExpression(node, parent) { - const parentType = parent.type; - return parentType === "BinaryExpression" || parentType === "LogicalExpression" || parentType === "UnaryExpression" || parentType === "SpreadElement" || hasPostfixPart(node, parent) || parentType === "AwaitExpression" && isYieldExpression(node) || parentType === "ConditionalExpression" && node === parent.test || isClassExtendsClause(node, parent) || isTSTypeExpression(parentType); +function YieldExpression(node, parent, parentId) { + return parentId === 10 || parentId === 107 || parentId === 238 || parentId === 145 || hasPostfixPart(node, parent, parentId) || parentId === 8 && isYieldExpression(node) || parentId === 28 && node === parent.test || isClassExtendsClause(node, parent, parentId) || isTSTypeExpression(parentId); } -function ClassExpression(node, parent, tokenContext) { - return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)); +function ClassExpression(node, parent, parentId, tokenContext) { + return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)) > 0; } -function UnaryLike(node, parent) { - return hasPostfixPart(node, parent) || isBinaryExpression(parent) && parent.operator === "**" && parent.left === node || isClassExtendsClause(node, parent); +function UnaryLike(node, parent, parentId) { + return hasPostfixPart(node, parent, parentId) || parentId === 10 && parent.operator === "**" && parent.left === node || isClassExtendsClause(node, parent, parentId); } -function FunctionExpression(node, parent, tokenContext) { - return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)); +function FunctionExpression(node, parent, parentId, tokenContext) { + return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)) > 0; } -function ConditionalExpression(node, parent) { - const parentType = parent.type; - if (parentType === "UnaryExpression" || parentType === "SpreadElement" || parentType === "BinaryExpression" || parentType === "LogicalExpression" || parentType === "ConditionalExpression" && parent.test === node || parentType === "AwaitExpression" || isTSTypeExpression(parentType)) { +function ConditionalExpression(node, parent, parentId) { + switch (parentId) { + case 238: + case 145: + case 10: + case 107: + case 8: + return true; + case 28: + if (parent.test === node) { + return true; + } + } + if (isTSTypeExpression(parentId)) { return true; } - return UnaryLike(node, parent); -} -function OptionalMemberExpression(node, parent) { - return isCallExpression(parent) && parent.callee === node || isMemberExpression(parent) && parent.object === node; + return UnaryLike(node, parent, parentId); } -function AssignmentExpression(node, parent, tokenContext) { - if (needsParenBeforeExpressionBrace(tokenContext) && isObjectPattern(node.left)) { - return true; - } else { - return ConditionalExpression(node, parent); +function OptionalMemberExpression(node, parent, parentId) { + switch (parentId) { + case 17: + return parent.callee === node; + case 108: + return parent.object === node; } + return false; } -function LogicalExpression(node, parent) { - const parentType = parent.type; - if (isTSTypeExpression(parentType)) return true; - if (parentType !== "LogicalExpression") return false; - switch (node.operator) { - case "||": - return parent.operator === "??" || parent.operator === "&&"; - case "&&": - return parent.operator === "??"; - case "??": - return parent.operator !== "??"; +function AssignmentExpression(node, parent, parentId, tokenContext) { + if (needsParenBeforeExpressionBrace(tokenContext) && node.left.type === "ObjectPattern") { + return true; } + return ConditionalExpression(node, parent, parentId); } -function Identifier(node, parent, tokenContext, getRawIdentifier) { +function Identifier(node, parent, parentId, tokenContext, getRawIdentifier) { var _node$extra; - const parentType = parent.type; - if ((_node$extra = node.extra) != null && _node$extra.parenthesized && parentType === "AssignmentExpression" && parent.left === node) { + if (getRawIdentifier && getRawIdentifier(node) !== node.name) { + return false; + } + if (parentId === 6 && (_node$extra = node.extra) != null && _node$extra.parenthesized && parent.left === node) { const rightType = parent.right.type; if ((rightType === "FunctionExpression" || rightType === "ClassExpression") && parent.right.id == null) { return true; } } - if (getRawIdentifier && getRawIdentifier(node) !== node.name) { - return false; - } - if (node.name === "let") { - const isFollowedByBracket = isMemberExpression(parent, { - object: node, - computed: true - }) || isOptionalMemberExpression(parent, { - object: node, - computed: true, - optional: false - }); - if (isFollowedByBracket && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forInitHead | _index.TokenContext.forInHead)) { - return true; + if (tokenContext & _index.TokenContext.forOfHead || (parentId === 108 || parentId === 132) && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forInitHead | _index.TokenContext.forInHead)) { + if (node.name === "let") { + const isFollowedByBracket = isMemberExpression(parent, { + object: node, + computed: true + }) || isOptionalMemberExpression(parent, { + object: node, + computed: true, + optional: false + }); + if (isFollowedByBracket && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forInitHead | _index.TokenContext.forInHead)) { + return true; + } + return (tokenContext & _index.TokenContext.forOfHead) > 0; } - return Boolean(tokenContext & _index.TokenContext.forOfHead); } - return node.name === "async" && isForOfStatement(parent, { - left: node, - await: false - }); + return parentId === 68 && parent.left === node && node.name === "async" && !parent.await; } //# sourceMappingURL=parentheses.js.map @@ -20698,7 +20679,7 @@ function Identifier(node, parent, tokenContext, getRawIdentifier) { /***/ }), -/***/ 5850: +/***/ 5644: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -20707,157 +20688,20 @@ function Identifier(node, parent, tokenContext, getRawIdentifier) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.nodes = void 0; -var _t = __nccwpck_require__(7912); -const { - FLIPPED_ALIAS_KEYS, - isArrayExpression, - isAssignmentExpression, - isBinary, - isBlockStatement, - isCallExpression, - isFunction, - isIdentifier, - isLiteral, - isMemberExpression, - isObjectExpression, - isOptionalCallExpression, - isOptionalMemberExpression, - isStringLiteral -} = _t; -function crawlInternal(node, state) { - if (!node) return state; - if (isMemberExpression(node) || isOptionalMemberExpression(node)) { - crawlInternal(node.object, state); - if (node.computed) crawlInternal(node.property, state); - } else if (isBinary(node) || isAssignmentExpression(node)) { - crawlInternal(node.left, state); - crawlInternal(node.right, state); - } else if (isCallExpression(node) || isOptionalCallExpression(node)) { - state.hasCall = true; - crawlInternal(node.callee, state); - } else if (isFunction(node)) { - state.hasFunction = true; - } else if (isIdentifier(node)) { - state.hasHelper = state.hasHelper || node.callee && isHelper(node.callee); - } - return state; -} -function crawl(node) { - return crawlInternal(node, { - hasCall: false, - hasFunction: false, - hasHelper: false - }); -} -function isHelper(node) { - if (!node) return false; - if (isMemberExpression(node)) { - return isHelper(node.object) || isHelper(node.property); - } else if (isIdentifier(node)) { - return node.name === "require" || node.name.charCodeAt(0) === 95; - } else if (isCallExpression(node)) { - return isHelper(node.callee); - } else if (isBinary(node) || isAssignmentExpression(node)) { - return isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right); - } else { - return false; - } +exports.generatorInfosMap = void 0; +var generatorFunctions = __nccwpck_require__(8312); +var deprecatedGeneratorFunctions = __nccwpck_require__(342); +const generatorInfosMap = exports.generatorInfosMap = new Map(); +let index = 0; +for (const key of Object.keys(generatorFunctions).sort()) { + if (key.startsWith("_")) continue; + generatorInfosMap.set(key, [generatorFunctions[key], index++, undefined]); } -function isType(node) { - return isLiteral(node) || isObjectExpression(node) || isArrayExpression(node) || isIdentifier(node) || isMemberExpression(node); +for (const key of Object.keys(deprecatedGeneratorFunctions)) { + generatorInfosMap.set(key, [deprecatedGeneratorFunctions[key], index++, undefined]); } -const nodes = exports.nodes = { - AssignmentExpression(node) { - const state = crawl(node.right); - if (state.hasCall && state.hasHelper || state.hasFunction) { - return state.hasFunction ? 1 | 2 : 2; - } - return 0; - }, - SwitchCase(node, parent) { - return (!!node.consequent.length || parent.cases[0] === node ? 1 : 0) | (!node.consequent.length && parent.cases[parent.cases.length - 1] === node ? 2 : 0); - }, - LogicalExpression(node) { - if (isFunction(node.left) || isFunction(node.right)) { - return 2; - } - return 0; - }, - Literal(node) { - if (isStringLiteral(node) && node.value === "use strict") { - return 2; - } - return 0; - }, - CallExpression(node) { - if (isFunction(node.callee) || isHelper(node)) { - return 1 | 2; - } - return 0; - }, - OptionalCallExpression(node) { - if (isFunction(node.callee)) { - return 1 | 2; - } - return 0; - }, - VariableDeclaration(node) { - for (let i = 0; i < node.declarations.length; i++) { - const declar = node.declarations[i]; - let enabled = isHelper(declar.id) && !isType(declar.init); - if (!enabled && declar.init) { - const state = crawl(declar.init); - enabled = isHelper(declar.init) && state.hasCall || state.hasFunction; - } - if (enabled) { - return 1 | 2; - } - } - return 0; - }, - IfStatement(node) { - if (isBlockStatement(node.consequent)) { - return 1 | 2; - } - return 0; - } -}; -nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) { - if (parent.properties[0] === node) { - return 1; - } - return 0; -}; -nodes.ObjectTypeCallProperty = function (node, parent) { - var _parent$properties; - if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) { - return 1; - } - return 0; -}; -nodes.ObjectTypeIndexer = function (node, parent) { - var _parent$properties2, _parent$callPropertie; - if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) { - return 1; - } - return 0; -}; -nodes.ObjectTypeInternalSlot = function (node, parent) { - var _parent$properties3, _parent$callPropertie2, _parent$indexers; - if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) { - return 1; - } - return 0; -}; -[["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) { - [type].concat(FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) { - const ret = amounts ? 1 | 2 : 0; - nodes[type] = () => ret; - }); -}); -//# sourceMappingURL=whitespace.js.map +//# sourceMappingURL=nodes.js.map /***/ }), @@ -20874,11 +20718,10 @@ Object.defineProperty(exports, "__esModule", ({ exports["default"] = void 0; var _buffer = __nccwpck_require__(260); var _index = __nccwpck_require__(9223); -var n = _index; +var _nodes = __nccwpck_require__(5644); var _t = __nccwpck_require__(7912); var _tokenMap = __nccwpck_require__(6737); -var generatorFunctions = __nccwpck_require__(8312); -var _deprecated = __nccwpck_require__(342); +var _types2 = __nccwpck_require__(3817); const { isExpression, isFunction, @@ -20894,15 +20737,13 @@ const HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\n\r\u2028\u2029]|\*\//; function commentIsNewline(c) { return c.type === "CommentLine" || HAS_NEWLINE.test(c.value); } -const { - needsParens -} = n; class Printer { constructor(format, map, tokens = null, originalCode = null) { this.tokenContext = _index.TokenContext.normal; this._tokens = null; this._originalCode = null; this._currentNode = null; + this._currentTypeId = null; this._indent = 0; this._indentRepeat = 0; this._insideAux = false; @@ -20910,14 +20751,11 @@ class Printer { this._noLineTerminatorAfterNode = null; this._printAuxAfterOnNextUserNode = false; this._printedComments = new Set(); - this._endsWithInteger = false; - this._endsWithWord = false; - this._endsWithDiv = false; this._lastCommentLine = 0; - this._endsWithInnerRaw = false; - this._indentInnerComments = true; + this._innerCommentsState = 0; + this._flags = 0; this.tokenMap = null; - this._boundGetRawIdentifier = this._getRawIdentifier.bind(this); + this._boundGetRawIdentifier = null; this._printSemicolonBeforeNextNode = -1; this._printSemicolonBeforeNextToken = -1; this.format = format; @@ -20926,67 +20764,66 @@ class Printer { this._indentRepeat = format.indent.style.length; this._inputMap = (map == null ? void 0 : map._inputMap) || null; this._buf = new _buffer.default(map, format.indent.style[0]); - } - enterForStatementInit() { - this.tokenContext |= _index.TokenContext.forInitHead | _index.TokenContext.forInOrInitHeadAccumulate; - return () => this.tokenContext = _index.TokenContext.normal; - } - enterForXStatementInit(isForOf) { - if (isForOf) { - this.tokenContext |= _index.TokenContext.forOfHead; - return null; - } else { - this.tokenContext |= _index.TokenContext.forInHead | _index.TokenContext.forInOrInitHeadAccumulate; - return () => this.tokenContext = _index.TokenContext.normal; + const { + preserveFormat, + compact, + concise, + retainLines, + retainFunctionParens + } = format; + if (preserveFormat) { + this._flags |= 1; + } + if (compact) { + this._flags |= 2; + } + if (concise) { + this._flags |= 4; + } + if (retainLines) { + this._flags |= 8; + } + if (retainFunctionParens) { + this._flags |= 16; + } + if (format.auxiliaryCommentBefore || format.auxiliaryCommentAfter) { + this._flags |= 32; } } enterDelimited() { - const oldTokenContext = this.tokenContext; const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode; - if (!(oldTokenContext & _index.TokenContext.forInOrInitHeadAccumulate) && oldNoLineTerminatorAfterNode === null) { - return () => {}; + if (oldNoLineTerminatorAfterNode !== null) { + this._noLineTerminatorAfterNode = null; } - this._noLineTerminatorAfterNode = null; - this.tokenContext = _index.TokenContext.normal; - return () => { - this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; - this.tokenContext = oldTokenContext; - }; + return oldNoLineTerminatorAfterNode; } generate(ast) { if (this.format.preserveFormat) { this.tokenMap = new _tokenMap.TokenMap(ast, this._tokens, this._originalCode); + this._boundGetRawIdentifier = _types2._getRawIdentifier.bind(this); } this.print(ast); this._maybeAddAuxComment(); return this._buf.get(); } - indent() { - const { - format - } = this; - if (format.preserveFormat || format.compact || format.concise) { + indent(flags = this._flags) { + if (flags & (1 | 2 | 4)) { return; } - this._indent++; + this._indent += this._indentRepeat; } - dedent() { - const { - format - } = this; - if (format.preserveFormat || format.compact || format.concise) { + dedent(flags = this._flags) { + if (flags & (1 | 2 | 4)) { return; } - this._indent--; + this._indent -= this._indentRepeat; } semicolon(force = false) { - this._maybeAddAuxComment(); - if (force) { - this._appendChar(59); - this._noLineTerminator = false; - return; + const flags = this._flags; + if (flags & 32) { + this._maybeAddAuxComment(); } - if (this.tokenMap) { + if (flags & 1) { const node = this._currentNode; if (node.start != null && node.end != null) { if (!this.tokenMap.endMatches(node, ";")) { @@ -20997,7 +20834,11 @@ class Printer { this._catchUpTo(this._tokens[indexes[indexes.length - 1]].loc.start); } } - this._queue(59); + if (force) { + this._appendChar(59); + } else { + this._queue(59); + } this._noLineTerminator = false; } rightBrace(node) { @@ -21012,15 +20853,14 @@ class Printer { this.tokenChar(41); } space(force = false) { - const { - format - } = this; - if (format.compact || format.preserveFormat) return; + if (this._flags & (1 | 2)) { + return; + } if (force) { this._space(); - } else if (this._buf.hasContent()) { - const lastCp = this.getLastChar(); - if (lastCp !== 32 && lastCp !== 10) { + } else { + const lastCp = this.getLastChar(true); + if (lastCp !== 0 && lastCp !== 32 && lastCp !== 10) { this._space(); } } @@ -21028,13 +20868,17 @@ class Printer { word(str, noLineTerminatorAfter = false) { this.tokenContext &= _index.TokenContext.forInOrInitHeadAccumulatePassThroughMask; this._maybePrintInnerComments(str); - this._maybeAddAuxComment(); - if (this.tokenMap) this._catchUpToCurrentToken(str); - if (this._endsWithWord || this._endsWithDiv && str.charCodeAt(0) === 47) { + const flags = this._flags; + if (flags & 32) { + this._maybeAddAuxComment(); + } + if (flags & 1) this._catchUpToCurrentToken(str); + const lastChar = this.getLastChar(); + if (lastChar === -2 || lastChar === -3 || lastChar === 47 && str.charCodeAt(0) === 47) { this._space(); } this._append(str, false); - this._endsWithWord = true; + this.setLastChar(-3); this._noLineTerminator = noLineTerminatorAfter; } number(str, number) { @@ -21046,61 +20890,68 @@ class Printer { return false; } this.word(str); - this._endsWithInteger = Number.isInteger(number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46; + if (Number.isInteger(number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46) { + this.setLastChar(-2); + } } - token(str, maybeNewline = false, occurrenceCount = 0) { + token(str, maybeNewline = false, occurrenceCount = 0, mayNeedSpace = false) { this.tokenContext &= _index.TokenContext.forInOrInitHeadAccumulatePassThroughMask; this._maybePrintInnerComments(str, occurrenceCount); - this._maybeAddAuxComment(); - if (this.tokenMap) this._catchUpToCurrentToken(str, occurrenceCount); - const lastChar = this.getLastChar(); - const strFirst = str.charCodeAt(0); - if (lastChar === 33 && (str === "--" || strFirst === 61) || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) { - this._space(); + const flags = this._flags; + if (flags & 32) { + this._maybeAddAuxComment(); + } + if (flags & 1) { + this._catchUpToCurrentToken(str, occurrenceCount); + } + if (mayNeedSpace) { + const strFirst = str.charCodeAt(0); + if ((strFirst === 45 && str === "--" || strFirst === 61) && this.getLastChar() === 33 || strFirst === 43 && this.getLastChar() === 43 || strFirst === 45 && this.getLastChar() === 45 || strFirst === 46 && this.getLastChar() === -2) { + this._space(); + } } this._append(str, maybeNewline); this._noLineTerminator = false; } - tokenChar(char) { + tokenChar(char, occurrenceCount = 0) { this.tokenContext &= _index.TokenContext.forInOrInitHeadAccumulatePassThroughMask; - const str = String.fromCharCode(char); - this._maybePrintInnerComments(str); - this._maybeAddAuxComment(); - if (this.tokenMap) this._catchUpToCurrentToken(str); - const lastChar = this.getLastChar(); - if (char === 43 && lastChar === 43 || char === 45 && lastChar === 45 || char === 46 && this._endsWithInteger) { + this._maybePrintInnerComments(char, occurrenceCount); + const flags = this._flags; + if (flags & 32) { + this._maybeAddAuxComment(); + } + if (flags & 1) { + this._catchUpToCurrentToken(char, occurrenceCount); + } + if (char === 43 && this.getLastChar() === 43 || char === 45 && this.getLastChar() === 45 || char === 46 && this.getLastChar() === -2) { this._space(); } this._appendChar(char); this._noLineTerminator = false; } - newline(i = 1, force) { + newline(i = 1, flags = this._flags) { if (i <= 0) return; - if (!force) { - if (this.format.retainLines || this.format.compact) return; - if (this.format.concise) { - this.space(); - return; - } + if (flags & (8 | 2)) { + return; + } + if (flags & 4) { + this.space(); + return; } if (i > 2) i = 2; i -= this._buf.getNewlineCount(); for (let j = 0; j < i; j++) { this._newline(); } - return; } endsWith(char) { - return this.getLastChar() === char; + return this.getLastChar(true) === char; } - getLastChar() { - return this._buf.getLastChar(); + getLastChar(checkQueue) { + return this._buf.getLastChar(checkQueue); } - endsWithCharAndNewline() { - return this._buf.endsWithCharAndNewline(); - } - removeTrailingNewline() { - this._buf.removeTrailingNewline(); + setLastChar(char) { + this._buf._last = char; } exactSource(loc, cb) { if (!loc) { @@ -21130,49 +20981,40 @@ class Printer { this._queue(32); } _newline() { - this._queue(10); + if (this._buf._queuedChar === 32) this._buf._queuedChar = 0; + this._appendChar(10, true); } _catchUpToCurrentToken(str, occurrenceCount = 0) { const token = this.tokenMap.findMatching(this._currentNode, str, occurrenceCount); if (token) this._catchUpTo(token.loc.start); if (this._printSemicolonBeforeNextToken !== -1 && this._printSemicolonBeforeNextToken === this._buf.getCurrentLine()) { - this._buf.appendChar(59); - this._endsWithWord = false; - this._endsWithInteger = false; - this._endsWithDiv = false; + this._appendChar(59, true); } this._printSemicolonBeforeNextToken = -1; this._printSemicolonBeforeNextNode = -1; } _append(str, maybeNewline) { - this._maybeIndent(str.charCodeAt(0)); + this._maybeIndent(); this._buf.append(str, maybeNewline); - this._endsWithWord = false; - this._endsWithInteger = false; - this._endsWithDiv = false; } - _appendChar(char) { - this._maybeIndent(char); + _appendChar(char, noIndent) { + if (!noIndent) { + this._maybeIndent(); + } this._buf.appendChar(char); - this._endsWithWord = false; - this._endsWithInteger = false; - this._endsWithDiv = false; } _queue(char) { - this._maybeIndent(char); this._buf.queue(char); - this._endsWithWord = false; - this._endsWithInteger = false; + this.setLastChar(-1); } - _maybeIndent(firstChar) { - if (this._indent && firstChar !== 10 && this.endsWith(10)) { - this._buf.queueIndentation(this._getIndent()); + _maybeIndent() { + const indent = this._shouldIndent(); + if (indent > 0) { + this._buf._appendChar(-1, indent, false); } } - _shouldIndent(firstChar) { - if (this._indent && firstChar !== 10 && this.endsWith(10)) { - return true; - } + _shouldIndent() { + return this.endsWith(10) ? this._indent : 0; } catchUp(line) { if (!this.format.retainLines) return; @@ -21182,11 +21024,9 @@ class Printer { } } _catchUp(prop, loc) { - const { - format - } = this; - if (!format.preserveFormat) { - if (format.retainLines && loc != null && loc[prop]) { + const flags = this._flags; + if ((flags & 1) === 0) { + if (flags & 8 && loc != null && loc[prop]) { this.catchUp(loc[prop].line); } return; @@ -21210,64 +21050,80 @@ class Printer { if (spacesCount > 0) { const spaces = this._originalCode ? this._originalCode.slice(index - spacesCount, index).replace(/[^\t\x0B\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]/gu, " ") : " ".repeat(spacesCount); this._append(spaces, false); + this.setLastChar(32); } } - _getIndent() { - return this._indentRepeat * this._indent; - } printTerminatorless(node) { this._noLineTerminator = true; this.print(node); } - print(node, noLineTerminatorAfter = false, trailingCommentsLineOffset) { - var _node$extra, _node$leadingComments, _node$leadingComments2; + print(node, noLineTerminatorAfter = false, resetTokenContext = false, trailingCommentsLineOffset) { + var _node$leadingComments, _node$leadingComments2; if (!node) return; - this._endsWithInnerRaw = false; - const nodeType = node.type; - const format = this.format; - const oldConcise = format.concise; + this._innerCommentsState = 0; + const { + type, + loc, + extra + } = node; + const flags = this._flags; + let changedFlags = false; if (node._compact) { - format.concise = true; + this._flags |= 4; + changedFlags = true; } - const printMethod = this[nodeType]; - if (printMethod === undefined) { - throw new ReferenceError(`unknown node of type ${JSON.stringify(nodeType)} with constructor ${JSON.stringify(node.constructor.name)}`); + const nodeInfo = _nodes.generatorInfosMap.get(type); + if (nodeInfo === undefined) { + throw new ReferenceError(`unknown node of type ${JSON.stringify(type)} with constructor ${JSON.stringify(node.constructor.name)}`); } + const [printMethod, nodeId, needsParens] = nodeInfo; const parent = this._currentNode; + const parentId = this._currentTypeId; this._currentNode = node; - if (this.tokenMap) { + this._currentTypeId = nodeId; + if (flags & 1) { this._printSemicolonBeforeNextToken = this._printSemicolonBeforeNextNode; } - const oldInAux = this._insideAux; - this._insideAux = node.loc == null; - this._maybeAddAuxComment(this._insideAux && !oldInAux); - const parenthesized = (_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized; - let shouldPrintParens = parenthesized && format.preserveFormat || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this.tokenContext, format.preserveFormat ? this._boundGetRawIdentifier : undefined); + let oldInAux; + if (flags & 32) { + oldInAux = this._insideAux; + this._insideAux = loc == null; + this._maybeAddAuxComment(this._insideAux && !oldInAux); + } + let oldTokenContext = 0; + if (resetTokenContext) { + oldTokenContext = this.tokenContext; + if (oldTokenContext & _index.TokenContext.forInOrInitHeadAccumulate) { + this.tokenContext = 0; + } else { + oldTokenContext = 0; + } + } + const parenthesized = extra != null && extra.parenthesized; + let shouldPrintParens = parenthesized && flags & 1 || parenthesized && flags & 16 && nodeId === 71 || parent && ((0, _index.parentNeedsParens)(node, parent, parentId) || needsParens != null && needsParens(node, parent, parentId, this.tokenContext, flags & 1 ? this._boundGetRawIdentifier : undefined)); if (!shouldPrintParens && parenthesized && (_node$leadingComments = node.leadingComments) != null && _node$leadingComments.length && node.leadingComments[0].type === "CommentBlock") { - const parentType = parent == null ? void 0 : parent.type; - switch (parentType) { - case "ExpressionStatement": - case "VariableDeclarator": - case "AssignmentExpression": - case "ReturnStatement": + switch (parentId) { + case 65: + case 243: + case 6: + case 143: break; - case "CallExpression": - case "OptionalCallExpression": - case "NewExpression": + case 17: + case 130: + case 112: if (parent.callee !== node) break; default: shouldPrintParens = true; } } let indentParenthesized = false; - if (!shouldPrintParens && this._noLineTerminator && ((_node$leadingComments2 = node.leadingComments) != null && _node$leadingComments2.some(commentIsNewline) || this.format.retainLines && node.loc && node.loc.start.line > this._buf.getCurrentLine())) { + if (!shouldPrintParens && this._noLineTerminator && ((_node$leadingComments2 = node.leadingComments) != null && _node$leadingComments2.some(commentIsNewline) || flags & 8 && loc && loc.start.line > this._buf.getCurrentLine())) { shouldPrintParens = true; indentParenthesized = true; } let oldNoLineTerminatorAfterNode; - let oldTokenContext; if (!shouldPrintParens) { - noLineTerminatorAfter || (noLineTerminatorAfter = !!parent && this._noLineTerminatorAfterNode === parent && n.isLastChild(parent, node)); + noLineTerminatorAfter || (noLineTerminatorAfter = !!parent && this._noLineTerminatorAfterNode === parent && (0, _index.isLastChild)(parent, node)); if (noLineTerminatorAfter) { var _node$trailingComment; if ((_node$trailingComment = node.trailingComments) != null && _node$trailingComment.some(commentIsNewline)) { @@ -21281,18 +21137,18 @@ class Printer { if (shouldPrintParens) { this.tokenChar(40); if (indentParenthesized) this.indent(); - this._endsWithInnerRaw = false; - if (this.tokenContext & _index.TokenContext.forInOrInitHeadAccumulate) { + this._innerCommentsState = 0; + if (!resetTokenContext) { oldTokenContext = this.tokenContext; - this.tokenContext = _index.TokenContext.normal; + } + if (oldTokenContext & _index.TokenContext.forInOrInitHeadAccumulate) { + this.tokenContext = 0; } oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode; this._noLineTerminatorAfterNode = null; } - this._lastCommentLine = 0; this._printLeadingComments(node, parent); - const loc = nodeType === "Program" || nodeType === "File" ? null : node.loc; - this.exactSource(loc, printMethod.bind(this, node, parent)); + this.exactSource(nodeId === 139 || nodeId === 66 ? null : loc, printMethod.bind(this, node, parent)); if (shouldPrintParens) { this._printTrailingComments(node, parent); if (indentParenthesized) { @@ -21301,20 +21157,25 @@ class Printer { } this.tokenChar(41); this._noLineTerminator = noLineTerminatorAfter; - if (oldTokenContext) this.tokenContext = oldTokenContext; } else if (noLineTerminatorAfter && !this._noLineTerminator) { this._noLineTerminator = true; this._printTrailingComments(node, parent); } else { this._printTrailingComments(node, parent, trailingCommentsLineOffset); } + if (oldTokenContext) this.tokenContext = oldTokenContext; this._currentNode = parent; - format.concise = oldConcise; - this._insideAux = oldInAux; - if (oldNoLineTerminatorAfterNode !== undefined) { + this._currentTypeId = parentId; + if (changedFlags) { + this._flags = flags; + } + if (flags & 32) { + this._insideAux = oldInAux; + } + if (oldNoLineTerminatorAfterNode != null) { this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; } - this._endsWithInnerRaw = false; + this._innerCommentsState = 0; } _maybeAddAuxComment(enteredPositionlessNode) { if (enteredPositionlessNode) this._printAuxBeforeComment(); @@ -21348,46 +21209,46 @@ class Printer { return extra.raw; } } - printJoin(nodes, statement, indent, separator, printTrailingSeparator, iterator, trailingCommentsLineOffset) { + printJoin(nodes, statement, indent, separator, printTrailingSeparator, resetTokenContext, trailingCommentsLineOffset) { if (!(nodes != null && nodes.length)) return; - if (indent == null && this.format.retainLines) { + const flags = this._flags; + if (indent == null && flags & 8) { var _nodes$0$loc; const startLine = (_nodes$0$loc = nodes[0].loc) == null ? void 0 : _nodes$0$loc.start.line; if (startLine != null && startLine !== this._buf.getCurrentLine()) { indent = true; } } - if (indent) this.indent(); - const newlineOpts = { - nextNodeStartLine: 0 - }; - const boundSeparator = separator == null ? void 0 : separator.bind(this); + if (indent) this.indent(flags); const len = nodes.length; for (let i = 0; i < len; i++) { const node = nodes[i]; if (!node) continue; - if (statement) this._printNewline(i === 0, newlineOpts); - this.print(node, undefined, trailingCommentsLineOffset || 0); - iterator == null || iterator(node, i); - if (boundSeparator != null) { - if (i < len - 1) boundSeparator(i, false);else if (printTrailingSeparator) boundSeparator(i, true); + if (statement && i === 0 && this._buf.hasContent()) { + this.newline(1, flags); + } + this.print(node, false, resetTokenContext, trailingCommentsLineOffset || 0); + if (separator != null) { + if (i < len - 1) separator.call(this, i, false);else if (printTrailingSeparator) separator.call(this, i, true); } if (statement) { - var _node$trailingComment2; - if (!((_node$trailingComment2 = node.trailingComments) != null && _node$trailingComment2.length)) { - this._lastCommentLine = 0; - } if (i + 1 === len) { - this.newline(1); + this.newline(1, flags); } else { - var _nextNode$loc; - const nextNode = nodes[i + 1]; - newlineOpts.nextNodeStartLine = ((_nextNode$loc = nextNode.loc) == null ? void 0 : _nextNode$loc.start.line) || 0; - this._printNewline(true, newlineOpts); + const lastCommentLine = this._lastCommentLine; + if (lastCommentLine > 0) { + var _nodes$loc; + const offset = (((_nodes$loc = nodes[i + 1].loc) == null ? void 0 : _nodes$loc.start.line) || 0) - lastCommentLine; + if (offset >= 0) { + this.newline(offset || 1, flags); + continue; + } + } + this.newline(1, flags); } } } - if (indent) this.dedent(); + if (indent) this.dedent(flags); } printAndIndentOnComments(node) { const indent = node.leadingComments && node.leadingComments.length > 0; @@ -21395,12 +21256,11 @@ class Printer { this.print(node); if (indent) this.dedent(); } - printBlock(parent) { - const node = parent.body; - if (node.type !== "EmptyStatement") { + printBlock(body) { + if (body.type !== "EmptyStatement") { this.space(); } - this.print(node); + this.print(body); } _printTrailingComments(node, parent, lineOffset) { const { @@ -21412,6 +21272,8 @@ class Printer { } if (trailingComments != null && trailingComments.length) { this._printComments(2, trailingComments, node, parent, lineOffset); + } else { + this._lastCommentLine = 0; } } _printLeadingComments(node, parent) { @@ -21420,65 +21282,48 @@ class Printer { this._printComments(0, comments, node, parent); } _maybePrintInnerComments(nextTokenStr, nextTokenOccurrenceCount) { - if (this._endsWithInnerRaw) { - var _this$tokenMap; - this.printInnerComments((_this$tokenMap = this.tokenMap) == null ? void 0 : _this$tokenMap.findMatching(this._currentNode, nextTokenStr, nextTokenOccurrenceCount)); + var _this$tokenMap; + const state = this._innerCommentsState; + switch (state & 3) { + case 0: + this._innerCommentsState = 1 | 4; + return; + case 1: + this.printInnerComments((state & 4) > 0, (_this$tokenMap = this.tokenMap) == null ? void 0 : _this$tokenMap.findMatching(this._currentNode, nextTokenStr, nextTokenOccurrenceCount)); } - this._endsWithInnerRaw = true; - this._indentInnerComments = true; } - printInnerComments(nextToken) { + printInnerComments(indent = true, nextToken) { const node = this._currentNode; const comments = node.innerComments; - if (!(comments != null && comments.length)) return; + if (!(comments != null && comments.length)) { + this._innerCommentsState = 2; + return; + } const hasSpace = this.endsWith(32); - const indent = this._indentInnerComments; - const printedCommentsCount = this._printedComments.size; if (indent) this.indent(); - this._printComments(1, comments, node, undefined, undefined, nextToken); - if (hasSpace && printedCommentsCount !== this._printedComments.size) { - this.space(); + switch (this._printComments(1, comments, node, undefined, undefined, nextToken)) { + case 2: + this._innerCommentsState = 2; + case 1: + if (hasSpace) this.space(); } if (indent) this.dedent(); } noIndentInnerCommentsHere() { - this._indentInnerComments = false; + this._innerCommentsState &= ~4; } - printSequence(nodes, indent, trailingCommentsLineOffset) { - this.printJoin(nodes, true, indent != null ? indent : false, undefined, undefined, undefined, trailingCommentsLineOffset); + printSequence(nodes, indent, resetTokenContext, trailingCommentsLineOffset) { + this.printJoin(nodes, true, indent != null ? indent : false, undefined, undefined, resetTokenContext, trailingCommentsLineOffset); } - printList(items, printTrailingSeparator, statement, indent, separator, iterator) { - this.printJoin(items, statement, indent, separator != null ? separator : commaSeparator, printTrailingSeparator, iterator); + printList(items, printTrailingSeparator, statement, indent, separator, resetTokenContext) { + this.printJoin(items, statement, indent, separator != null ? separator : commaSeparator, printTrailingSeparator, resetTokenContext); } shouldPrintTrailingComma(listEnd) { if (!this.tokenMap) return null; - const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token => this.tokenMap.matchesOriginal(token, listEnd)); + const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token => this.tokenMap.matchesOriginal(token, typeof listEnd === "number" ? String.fromCharCode(listEnd) : listEnd)); if (listEndIndex <= 0) return null; return this.tokenMap.matchesOriginal(this._tokens[listEndIndex - 1], ","); } - _printNewline(newLine, opts) { - const format = this.format; - if (format.retainLines || format.compact) return; - if (format.concise) { - this.space(); - return; - } - if (!newLine) { - return; - } - const startLine = opts.nextNodeStartLine; - const lastCommentLine = this._lastCommentLine; - if (startLine > 0 && lastCommentLine > 0) { - const offset = startLine - lastCommentLine; - if (offset >= 0) { - this.newline(offset || 1); - return; - } - } - if (this._buf.hasContent()) { - this.newline(1); - } - } _shouldPrintComment(comment, nextToken) { if (comment.ignore) return 0; if (this._printedComments.has(comment)) return 0; @@ -21500,13 +21345,19 @@ class Printer { _printComment(comment, skipNewLines) { const noLineTerminator = this._noLineTerminator; const isBlockComment = comment.type === "CommentBlock"; - const printNewLines = isBlockComment && skipNewLines !== 1 && !this._noLineTerminator; + const printNewLines = isBlockComment && skipNewLines !== 1 && !noLineTerminator; if (printNewLines && this._buf.hasContent() && skipNewLines !== 2) { this.newline(1); } - const lastCharCode = this.getLastChar(); - if (lastCharCode !== 91 && lastCharCode !== 123 && lastCharCode !== 40) { - this.space(); + switch (this.getLastChar(true)) { + case 47: + this._space(); + case 91: + case 123: + case 40: + break; + default: + this.space(); } let val; if (isBlockComment) { @@ -21518,12 +21369,12 @@ class Printer { const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); val = val.replace(newlineRegex, "\n"); } - if (this.format.concise) { + if (this._flags & 4) { val = val.replace(/\n(?!$)/g, `\n`); } else { let indentSize = this.format.retainLines ? 0 : this._buf.getCurrentColumn(); - if (this._shouldIndent(47) || this.format.retainLines) { - indentSize += this._getIndent(); + if (this._shouldIndent() || this.format.retainLines) { + indentSize += this._indent; } val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`); } @@ -21533,24 +21384,10 @@ class Printer { } else { val = `/*${comment.value}*/`; } - if (this._endsWithDiv) this._space(); - if (this.tokenMap) { - const { - _printSemicolonBeforeNextToken, - _printSemicolonBeforeNextNode - } = this; - this._printSemicolonBeforeNextToken = -1; - this._printSemicolonBeforeNextNode = -1; - this.source("start", comment.loc); - this._append(val, isBlockComment); - this._printSemicolonBeforeNextNode = _printSemicolonBeforeNextNode; - this._printSemicolonBeforeNextToken = _printSemicolonBeforeNextToken; - } else { - this.source("start", comment.loc); - this._append(val, isBlockComment); - } + this.source("start", comment.loc); + this._append(val, isBlockComment); if (!isBlockComment && !noLineTerminator) { - this.newline(1, true); + this._newline(); } if (printNewLines && skipNewLines !== 3) { this.newline(1); @@ -21564,13 +21401,15 @@ class Printer { const nodeEndLine = hasLoc ? nodeLoc.end.line : 0; let lastLine = 0; let leadingCommentNewline = 0; - const maybeNewline = this._noLineTerminator ? function () {} : this.newline.bind(this); + const { + _noLineTerminator, + _flags + } = this; for (let i = 0; i < len; i++) { const comment = comments[i]; const shouldPrint = this._shouldPrintComment(comment, nextToken); if (shouldPrint === 2) { - hasLoc = false; - break; + return i === 0 ? 0 : 1; } if (hasLoc && comment.loc && shouldPrint === 1) { const commentStartLine = comment.loc.start.line; @@ -21585,25 +21424,37 @@ class Printer { offset = commentStartLine - lastLine; } lastLine = commentEndLine; - maybeNewline(offset); + if (offset > 0 && !_noLineTerminator) { + this.newline(offset, _flags); + } this._printComment(comment, 1); if (i + 1 === len) { - maybeNewline(Math.max(nodeStartLine - lastLine, leadingCommentNewline)); + const count = Math.max(nodeStartLine - lastLine, leadingCommentNewline); + if (count > 0 && !_noLineTerminator) { + this.newline(count, _flags); + } lastLine = nodeStartLine; } } else if (type === 1) { const offset = commentStartLine - (i === 0 ? nodeStartLine : lastLine); lastLine = commentEndLine; - maybeNewline(offset); + if (offset > 0 && !_noLineTerminator) { + this.newline(offset, _flags); + } this._printComment(comment, 1); if (i + 1 === len) { - maybeNewline(Math.min(1, nodeEndLine - lastLine)); + const count = Math.min(1, nodeEndLine - lastLine); + if (count > 0 && !_noLineTerminator) { + this.newline(count, _flags); + } lastLine = nodeEndLine; } } else { const offset = commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine); lastLine = commentEndLine; - maybeNewline(offset); + if (offset > 0 && !_noLineTerminator) { + this.newline(offset, _flags); + } this._printComment(comment, 1); } } else { @@ -21615,9 +21466,7 @@ class Printer { const singleLine = comment.loc ? comment.loc.start.line === comment.loc.end.line : !HAS_NEWLINE.test(comment.value); const shouldSkipNewline = singleLine && !isStatement(node) && !isClassBody(parent) && !isTSInterfaceBody(parent) && !isTSEnumMember(node); if (type === 0) { - this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction(parent, { - body: node - }) ? 1 : 0); + this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction(parent) && parent.body === node ? 1 : 0); } else if (shouldSkipNewline && type === 2) { this._printComment(comment, 1); } else { @@ -21633,13 +21482,12 @@ class Printer { if (type === 2 && hasLoc && lastLine) { this._lastCommentLine = lastLine; } + return 2; } } -Object.assign(Printer.prototype, generatorFunctions); -(0, _deprecated.addDeprecatedGenerators)(Printer); var _default = exports["default"] = Printer; function commaSeparator(occurrenceCount, last) { - this.token(",", false, occurrenceCount); + this.tokenChar(44, occurrenceCount); if (!last) this.space(); } @@ -21803,6 +21651,9 @@ class TokenMap { findMatching(node, test, occurrenceCount = 0) { const indexes = this._nodesToTokenIndexes.get(node); if (indexes) { + if (typeof test === "number") { + test = String.fromCharCode(test); + } let i = 0; const count = occurrenceCount; if (count > 1) { @@ -31683,7 +31534,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { return this.finishCallExpression(node, state.optionalChainMember); } const tokenType = this.state.type; - if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenType !== 93 && tokenType !== 120 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { return; } const node = this.startNodeAt(startLoc); @@ -32158,8 +32009,18 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } parseClassSuper(node) { super.parseClassSuper(node); - if (node.superClass && (this.match(47) || this.match(51))) { - node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + if (node.superClass) { + if (node.superClass.type === "TSInstantiationExpression") { + const tsInstantiationExpression = node.superClass; + const superClass = tsInstantiationExpression.expression; + this.takeSurroundingComments(superClass, superClass.start, superClass.end); + const superTypeArguments = tsInstantiationExpression.typeParameters; + this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end); + node.superClass = superClass; + node.superTypeParameters = superTypeArguments; + } else if (this.match(47) || this.match(51)) { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } } if (this.eatContextual(113)) { node.implements = this.tsParseHeritageClause("implements"); @@ -37749,6 +37610,7 @@ exports["default"] = void 0; var _index = __nccwpck_require__(8877); var _t = __nccwpck_require__(7912); var _context = __nccwpck_require__(4108); +var _hub = __nccwpck_require__(9817); const { VISITOR_KEYS } = _t; @@ -37775,12 +37637,17 @@ class TraversalContext { return false; } create(node, container, key, listKey) { + const { + parentPath + } = this; + const hub = parentPath == null ? node.type === "Program" || node.type === "File" ? new _hub.default() : undefined : parentPath.hub; return _index.default.get({ - parentPath: this.parentPath, + parentPath, parent: node, container, key: key, - listKey + listKey, + hub }); } maybeQueue(path, notPriority) { @@ -43239,6 +43106,9 @@ const renameVisitor = { path.requeueComputedKeyAndDecorators(); } } + if (path.isSwitchStatement()) { + path.context.maybeQueue(path.get("discriminant")); + } } }, ObjectProperty({ @@ -43667,7 +43537,7 @@ function verify$1(visitor) { } if (shouldIgnoreKey(nodeType)) continue; if (!TYPES.includes(nodeType)) { - throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${"7.28.6"}`); + throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${"7.29.0"}`); } const visitors = visitor[nodeType]; if (typeof visitors === "object") { @@ -46127,13 +45997,15 @@ function classDeclaration(id = null, superClass = null, body, decorators = null) validate(defs.decorators, node, "decorators", decorators, 1); return node; } -function exportAllDeclaration(source) { +function exportAllDeclaration(source, attributes = null) { const node = { type: "ExportAllDeclaration", - source + source, + attributes }; const defs = NODE_FIELDS.ExportAllDeclaration; validate(defs.source, node, "source", source, 1); + validate(defs.attributes, node, "attributes", attributes, 1); return node; } function exportDefaultDeclaration(declaration) { @@ -46145,17 +46017,19 @@ function exportDefaultDeclaration(declaration) { validate(defs.declaration, node, "declaration", declaration, 1); return node; } -function exportNamedDeclaration(declaration = null, specifiers = [], source = null) { +function exportNamedDeclaration(declaration = null, specifiers = [], source = null, attributes = null) { const node = { type: "ExportNamedDeclaration", declaration, specifiers, - source + source, + attributes }; const defs = NODE_FIELDS.ExportNamedDeclaration; validate(defs.declaration, node, "declaration", declaration, 1); validate(defs.specifiers, node, "specifiers", specifiers, 1); validate(defs.source, node, "source", source, 1); + validate(defs.attributes, node, "attributes", attributes, 1); return node; } function exportSpecifier(local, exported) { @@ -46184,15 +46058,17 @@ function forOfStatement(left, right, body, _await = false) { validate(defs.await, node, "await", _await); return node; } -function importDeclaration(specifiers, source) { +function importDeclaration(specifiers, source, attributes = null) { const node = { type: "ImportDeclaration", specifiers, - source + source, + attributes }; const defs = NODE_FIELDS.ImportDeclaration; validate(defs.specifiers, node, "specifiers", specifiers, 1); validate(defs.source, node, "source", source, 1); + validate(defs.attributes, node, "attributes", attributes, 1); return node; } function importDefaultSpecifier(local) { @@ -50481,7 +50357,7 @@ importAttributes.assertions = { validate: (0, _utils.arrayOfType)("ImportAttribute") }; defineType("ExportAllDeclaration", { - builder: ["source"], + builder: ["source", "attributes"], visitor: ["source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], fields: Object.assign({ @@ -50500,7 +50376,7 @@ defineType("ExportDefaultDeclaration", { } }); defineType("ExportNamedDeclaration", { - builder: ["declaration", "specifiers", "source"], + builder: ["declaration", "specifiers", "source", "attributes"], visitor: ["declaration", "specifiers", "source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], fields: Object.assign({ @@ -50590,7 +50466,7 @@ defineType("ForOfStatement", { } }); defineType("ImportDeclaration", { - builder: ["specifiers", "source"], + builder: ["specifiers", "source", "attributes"], visitor: ["specifiers", "source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"], fields: Object.assign({}, importAttributes, { From 3e1e3fd05d4ec3e696ec8fcc5a7e64d351adc9f9 Mon Sep 17 00:00:00 2001 From: war-in Date: Thu, 5 Mar 2026 15:40:24 +0100 Subject: [PATCH 53/56] fix: lint --- src/libs/SearchUIUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 18b0f424ef6bf..5d3541d6402cf 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -3250,8 +3250,8 @@ function getSortedReportData( // When sorting by total, apply the backend logic: // IOU reports have positive amounts, expense reports have negative amounts if (sortingProperty === 'total' && typeof aValue === 'number' && typeof bValue === 'number') { - aValue = a.type === CONST.REPORT.TYPE.IOU ? aValue : -(aValue as number); - bValue = b.type === CONST.REPORT.TYPE.IOU ? bValue : -(bValue as number); + aValue = a.type === CONST.REPORT.TYPE.IOU ? aValue : -aValue; + bValue = b.type === CONST.REPORT.TYPE.IOU ? bValue : -bValue; } return compareValues(aValue, bValue, sortOrder, sortingProperty, localeCompare); From dc6a4e179f557a6b5ee4d47c24b88b7df0d06e68 Mon Sep 17 00:00:00 2001 From: war-in Date: Mon, 9 Mar 2026 11:45:15 +0100 Subject: [PATCH 54/56] chore: fix locks --- ios/NewExpensify.xcodeproj/project.pbxproj | 38 +-- ios/Podfile.lock | 16 +- package-lock.json | 370 +++------------------ 3 files changed, 61 insertions(+), 363 deletions(-) diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index 04f28d957a713..a9f7925ffeb9b 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -673,25 +673,6 @@ shellPath = /bin/sh; shellScript = "if [ \"$CONFIGURATION\" != \"DebugDevelopment\" ]; then\n \"${PODS_ROOT}/FullStory/tools/FullStoryCommandLine\" \"${CONFIGURATION_BUILD_DIR}/${WRAPPER_NAME}\"\nelse\n echo \"Skipping FullStory Asset Uploader phase for DebugDevelopment scheme.\"\nfi\n"; }; - 87174A5CC3CF40CC94B76870 /* Strip Debug Symbols */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Strip Debug Symbols"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "bash \"${PROJECT_DIR}/../scripts/strip-ios-debug-symbols.sh\"\n"; - }; 5124824122A346BD617AD428 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -756,6 +737,25 @@ shellPath = /bin/sh; shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-NewExpensify/expo-configure-project.sh\"\n"; }; + 87174A5CC3CF40CC94B76870 /* Strip Debug Symbols */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Strip Debug Symbols"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "bash \"${PROJECT_DIR}/../scripts/strip-ios-debug-symbols.sh\"\n"; + }; 87667FE2684C0D1946DE7329 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index fefbba5d105a7..532f4d1436baf 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -490,7 +490,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -516,7 +515,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -541,7 +539,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -568,7 +565,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -594,7 +590,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -620,7 +615,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -646,7 +640,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -672,7 +665,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -698,7 +690,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -724,7 +715,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -750,7 +740,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -776,7 +765,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -802,7 +790,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -828,7 +815,6 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils @@ -4735,7 +4721,7 @@ SPEC CHECKSUMS: AirshipServiceExtension: 50d11b2f62c4a490d4e81a1c36f70e2ecb70a27e AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0 - boost: 659a89341ea4ab3df8259733813b52f26d8be9a5 + boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb EXConstants: b3c63be5f8648e4ab8e6ff5099b62f629247f969 expensify-react-native-background-task: 03c640e1f5649692d058cba48c0a138f024a6dd3 diff --git a/package-lock.json b/package-lock.json index e91b86ce42945..0a78150c7d712 100644 --- a/package-lock.json +++ b/package-lock.json @@ -457,27 +457,6 @@ "node": ">=6.0.0" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", @@ -4774,121 +4753,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "dev": true, @@ -20834,20 +20698,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -21058,47 +20908,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -26247,30 +26056,6 @@ "node": ">=8.0.0" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/http-proxy-middleware": { "version": "2.0.7", "dev": true, @@ -28102,6 +27887,21 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/jest-environment-jsdom/node_modules/jsdom": { "version": "20.0.3", "dev": true, @@ -28157,6 +27957,32 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/jest-environment-jsdom/node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom/node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/jest-environment-jsdom/node_modules/tr46": { "version": "3.0.0", "dev": true, @@ -28207,47 +28033,6 @@ "node": ">=12" } }, - "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/jest-environment-node": { "version": "29.7.0", "license": "MIT", @@ -35809,13 +35594,6 @@ "rock": "dist/src/bin.js" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, "node_modules/run-applescript": { "version": "7.0.0", "dev": true, @@ -37924,26 +37702,6 @@ "node": ">=14.0.0" } }, - "node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.86" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", - "dev": true, - "license": "MIT" - }, "node_modules/tmpl": { "version": "1.0.5", "license": "BSD-3-Clause" @@ -37979,19 +37737,6 @@ "node": ">=6" } }, - "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/tr46": { "version": "0.0.3", "license": "MIT" @@ -38768,19 +38513,6 @@ "pbf": "^3.2.1" } }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/wait-port": { "version": "0.2.14", "dev": true, @@ -39338,16 +39070,6 @@ "version": "3.6.2", "license": "MIT" }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/whatwg-url": { "version": "5.0.0", "license": "MIT", @@ -39729,16 +39451,6 @@ "node": ">=0.8" } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, "node_modules/xml2js": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", From 681fa9e5b383e0c53c9a2b2bdd095aef6a438eb7 Mon Sep 17 00:00:00 2001 From: war-in Date: Wed, 11 Mar 2026 16:42:36 +0100 Subject: [PATCH 55/56] chore: add upstream PRs --- patches/@types/react-native-web/details.md | 4 ++-- patches/expo/details.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/patches/@types/react-native-web/details.md b/patches/@types/react-native-web/details.md index db6e6580841fd..1d6983e0b4843 100644 --- a/patches/@types/react-native-web/details.md +++ b/patches/@types/react-native-web/details.md @@ -10,6 +10,6 @@ 2. Adds `userSelect` with 'contain' value support to `WebStyle`, matching the web implementation of React Native's style system. ``` -- Upstream PR/issue: TODO -- E/App issue: 🛑 +- Upstream PR/issue: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/74673 +- E/App issue: https://github.com/Expensify/App/issues/75120 - PR introducing patch: https://github.com/Expensify/App/pull/79962 diff --git a/patches/expo/details.md b/patches/expo/details.md index 9199cea195a70..deb303d5da081 100644 --- a/patches/expo/details.md +++ b/patches/expo/details.md @@ -13,6 +13,6 @@ when setup() eventually calls registerBundleEntryPoints(). ``` -- Upstream PR/issue: TODO -- E/App issue: TODO -- PR introducing patch: TODO +- Upstream PR/issue: https://github.com/expo/expo/pull/43864 +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR introducing patch: https://github.com/Expensify/App/pull/79962 From b074b922824ead8df49367ddd9fdacec3a061114 Mon Sep 17 00:00:00 2001 From: war-in Date: Fri, 13 Mar 2026 16:28:40 +0100 Subject: [PATCH 56/56] chore: post-merge fixes --- package-lock.json | 9 +++++++++ ...+028+log-soft-exception-if-viewState-not-found.patch} | 8 ++++---- ...t-native+0.83.1+029+fix-fetching-files-android.patch} | 0 ...e+0.83.1+030+fix-view-stealing-first-responder.patch} | 0 ...> react-native+0.83.1+031+fix-exif-orientation.patch} | 0 5 files changed, 13 insertions(+), 4 deletions(-) rename patches/react-native/{react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch => react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch} (80%) rename patches/react-native/{react-native+0.83.1+028+fix-fetching-files-android.patch => react-native+0.83.1+029+fix-fetching-files-android.patch} (100%) rename patches/react-native/{react-native+0.83.1+029+fix-view-stealing-first-responder.patch => react-native+0.83.1+030+fix-view-stealing-first-responder.patch} (100%) rename patches/react-native/{react-native+0.83.1+030+fix-exif-orientation.patch => react-native+0.83.1+031+fix-exif-orientation.patch} (100%) diff --git a/package-lock.json b/package-lock.json index dd972876fc7d1..67f67f3d3aded 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38382,6 +38382,15 @@ "version": "1.13.6", "license": "MIT" }, + "node_modules/undici": { + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.0.tgz", + "integrity": "sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, "node_modules/undici-types": { "version": "6.21.0", "license": "MIT" diff --git a/patches/react-native/react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch b/patches/react-native/react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch similarity index 80% rename from patches/react-native/react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch rename to patches/react-native/react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch index 6a39a1946748c..4b6276f42b28b 100644 --- a/patches/react-native/react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch +++ b/patches/react-native/react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java -index cdcd812..03e09d4 100644 +index 3c0b281..30ba711 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java -@@ -685,7 +685,14 @@ public class SurfaceMountingManager { +@@ -786,7 +786,14 @@ public class SurfaceMountingManager { return; } @@ -15,6 +15,6 @@ index cdcd812..03e09d4 100644 + "Unable to find viewState for tag: " + reactTag + " for updateProps")); + return; + } - viewState.mCurrentProps = new ReactStylesDiffMap(props); - View view = viewState.mView; + if (ReactNativeFeatureFlags.overrideBySynchronousMountPropsAtMountingAndroid() + && !shouldSkipSynchronousMountPropsOverride diff --git a/patches/react-native/react-native+0.83.1+028+fix-fetching-files-android.patch b/patches/react-native/react-native+0.83.1+029+fix-fetching-files-android.patch similarity index 100% rename from patches/react-native/react-native+0.83.1+028+fix-fetching-files-android.patch rename to patches/react-native/react-native+0.83.1+029+fix-fetching-files-android.patch diff --git a/patches/react-native/react-native+0.83.1+029+fix-view-stealing-first-responder.patch b/patches/react-native/react-native+0.83.1+030+fix-view-stealing-first-responder.patch similarity index 100% rename from patches/react-native/react-native+0.83.1+029+fix-view-stealing-first-responder.patch rename to patches/react-native/react-native+0.83.1+030+fix-view-stealing-first-responder.patch diff --git a/patches/react-native/react-native+0.83.1+030+fix-exif-orientation.patch b/patches/react-native/react-native+0.83.1+031+fix-exif-orientation.patch similarity index 100% rename from patches/react-native/react-native+0.83.1+030+fix-exif-orientation.patch rename to patches/react-native/react-native+0.83.1+031+fix-exif-orientation.patch